diff --git a/.backportrc.json b/.backportrc.json index 8c673a14a80da..d388b1554d817 100644 --- a/.backportrc.json +++ b/.backportrc.json @@ -3,6 +3,7 @@ "repoName": "kibana", "targetBranchChoices": [ "main", + "8.13", "8.12", "8.11", "8.10", @@ -49,7 +50,7 @@ "backport" ], "branchLabelMapping": { - "^v8.13.0$": "main", + "^v8.14.0$": "main", "^v(\\d+).(\\d+).\\d+$": "$1.$2" }, "autoMerge": true, diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index e909a09509804..eabff5152596c 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -527,10 +527,12 @@ enabled: - x-pack/test/security_solution_api_integration/test_suites/detections_response/telemetry/trial_license_complete_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/user_roles/trial_license_complete_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/detections_response/user_roles/trial_license_complete_tier/configs/serverless.config.ts - - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/ess.config.ts - - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/genai/invoke_ai/trial_license_complete_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/genai/invoke_ai/trial_license_complete_tier/configs/serverless.config.ts + - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/ess.config.ts + - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/serverless.config.ts + - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/ess.config.ts + - x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/lists_and_exception_lists/exception_lists_items/trial_license_complete_tier/configs/ess.config.ts - x-pack/test/security_solution_api_integration/test_suites/lists_and_exception_lists/exception_lists_items/trial_license_complete_tier/configs/serverless.config.ts - x-pack/test/security_solution_api_integration/test_suites/lists_and_exception_lists/lists_items/trial_license_complete_tier/configs/ess.config.ts diff --git a/.buildkite/pipelines/es_serverless/emergency_relelease_branch_testing.yml b/.buildkite/pipelines/es_serverless/emergency_release_branch_testing.yml similarity index 100% rename from .buildkite/pipelines/es_serverless/emergency_relelease_branch_testing.yml rename to .buildkite/pipelines/es_serverless/emergency_release_branch_testing.yml diff --git a/.buildkite/pipelines/performance/daily.yml b/.buildkite/pipelines/performance/daily.yml index 8a28ed2a561c3..a58deb281d2c5 100644 --- a/.buildkite/pipelines/performance/daily.yml +++ b/.buildkite/pipelines/performance/daily.yml @@ -22,12 +22,6 @@ steps: depends_on: build key: tests timeout_in_minutes: 90 - retry: - automatic: - - exit_status: '-1' - limit: 2 - - exit_status: '*' - limit: 1 - label: '📈 Report performance metrics to ci-stats' command: .buildkite/scripts/steps/functional/report_performance_metrics.sh diff --git a/.buildkite/pipelines/security_solution/security_solution_cypress.yml b/.buildkite/pipelines/security_solution/security_solution_cypress.yml index 69ac04e1c8a23..87816474d40f3 100644 --- a/.buildkite/pipelines/security_solution/security_solution_cypress.yml +++ b/.buildkite/pipelines/security_solution/security_solution_cypress.yml @@ -50,53 +50,53 @@ steps: # - exit_status: '*' # limit: 1 - # - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:rule_management - # label: 'Serverless MKI QA Rule Management - Security Solution Cypress Tests' - # agents: - # queue: n2-4-spot - # # TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate. - # timeout_in_minutes: 300 - # parallelism: 8 - # retry: - # automatic: - # - exit_status: '*' - # limit: 1 + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:rule_management + label: 'Serverless MKI QA Rule Management - Security Solution Cypress Tests' + agents: + queue: n2-4-spot + # TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate. + timeout_in_minutes: 300 + parallelism: 8 + retry: + automatic: + - exit_status: '*' + limit: 1 - # - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:rule_management:prebuilt_rules - # label: 'Serverless MKI QA Rule Management - Prebuilt Rules - Security Solution Cypress Tests' - # agents: - # queue: n2-4-spot - # # TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate. - # timeout_in_minutes: 300 - # parallelism: 2 - # retry: - # automatic: - # - exit_status: '*' - # limit: 1 + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:rule_management:prebuilt_rules + label: 'Serverless MKI QA Rule Management - Prebuilt Rules - Security Solution Cypress Tests' + agents: + queue: n2-4-spot + # TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate. + timeout_in_minutes: 300 + parallelism: 4 + retry: + automatic: + - exit_status: '*' + limit: 1 - # - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine - # label: 'Serverless MKI QA Detection Engine - Security Solution Cypress Tests' - # agents: - # queue: n2-4-spot - # # TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate. - # timeout_in_minutes: 300 - # parallelism: 8 - # retry: - # automatic: - # - exit_status: '*' - # limit: 1 + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine + label: 'Serverless MKI QA Detection Engine - Security Solution Cypress Tests' + agents: + queue: n2-4-spot + # TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate. + timeout_in_minutes: 300 + parallelism: 8 + retry: + automatic: + - exit_status: '*' + limit: 1 - # - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine:exceptions - # label: 'Serverless MKI QA Detection Engine - Exceptions - Security Solution Cypress Tests' - # agents: - # queue: n2-4-spot - # # TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate. - # timeout_in_minutes: 300 - # parallelism: 6 - # retry: - # automatic: - # - exit_status: '*' - # limit: 1 + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:detection_engine:exceptions + label: 'Serverless MKI QA Detection Engine - Exceptions - Security Solution Cypress Tests' + agents: + queue: n2-4-spot + # TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate. + timeout_in_minutes: 300 + parallelism: 6 + retry: + automatic: + - exit_status: '*' + limit: 1 - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:ai_assistant label: 'Serverless MKI QA AI Assistant - Security Solution Cypress Tests' diff --git a/.buildkite/scripts/lifecycle/post_command.sh b/.buildkite/scripts/lifecycle/post_command.sh index 479608ca33259..91854422855a4 100755 --- a/.buildkite/scripts/lifecycle/post_command.sh +++ b/.buildkite/scripts/lifecycle/post_command.sh @@ -33,6 +33,7 @@ if [[ "$IS_TEST_EXECUTION_STEP" == "true" ]]; then buildkite-agent artifact upload 'x-pack/test/**/screenshots/session/*.png' buildkite-agent artifact upload 'x-pack/test_serverless/**/screenshots/failure/*.png' buildkite-agent artifact upload 'x-pack/test_serverless/**/screenshots/session/*.png' + buildkite-agent artifact upload 'x-pack/test_serverless/**/failure_debug/html/*.html' buildkite-agent artifact upload 'x-pack/test/functional/apps/reporting/reports/session/*.pdf' buildkite-agent artifact upload 'x-pack/test/functional/failure_debug/html/*.html' buildkite-agent artifact upload '.es/**/*.hprof' diff --git a/.buildkite/scripts/pipelines/pull_request/pipeline.ts b/.buildkite/scripts/pipelines/pull_request/pipeline.ts index 25539aecb0707..df912b10bbb3e 100644 --- a/.buildkite/scripts/pipelines/pull_request/pipeline.ts +++ b/.buildkite/scripts/pipelines/pull_request/pipeline.ts @@ -81,7 +81,8 @@ const uploadPipeline = (pipelineContent: string | object) => { } if ( - (await doAnyChangesMatch([/^x-pack\/plugins\/apm/, /^packages\/kbn-apm-synthtrace/])) || + // Failing: See https://github.com/elastic/kibana/issues/177084 + // (await doAnyChangesMatch([/^x-pack\/plugins\/apm/, /^packages\/kbn-apm-synthtrace/])) || GITHUB_PR_LABELS.includes('ci:all-cypress-suites') ) { pipeline.push(getPipeline('.buildkite/pipelines/pull_request/apm_cypress.yml')); diff --git a/.buildkite/scripts/serverless/create_deploy_tag/create_fix_tag.sh b/.buildkite/scripts/serverless/create_deploy_tag/create_fix_tag.sh index ed1fab966ac49..ac302f43c9599 100755 --- a/.buildkite/scripts/serverless/create_deploy_tag/create_fix_tag.sh +++ b/.buildkite/scripts/serverless/create_deploy_tag/create_fix_tag.sh @@ -2,14 +2,14 @@ set -euo pipefail -echo "--- Verify $BUILDKITE_COMMIT exists in $BUILDKITE_BRANCH" +echo "--- Verify $BUILDKITE_COMMIT exists in origin/$BUILDKITE_BRANCH" # Step 1: Check if the commit is in the specific named branch -if git merge-base --is-ancestor $BUILDKITE_COMMIT $BUILDKITE_BRANCH; then +if git merge-base --is-ancestor $BUILDKITE_COMMIT origin/$BUILDKITE_BRANCH; then echo "Commit $BUILDKITE_COMMIT is part of the $BUILDKITE_BRANCH branch" # Step 2: Check if the commit is also part of any other branches # This command lists all branches containing the commit and counts them - branches_containing_commit=$(git branch --contains $BUILDKITE_COMMIT | wc -l) + branches_containing_commit=$(git branch -r --contains $BUILDKITE_COMMIT | wc -l) # If the commit is in more than one branch, exit with non-zero if [[ $branches_containing_commit -gt 1 ]]; then diff --git a/.buildkite/scripts/steps/functional/performance_playwright.sh b/.buildkite/scripts/steps/functional/performance_playwright.sh index 5c8e86f48506b..de92e00092b17 100644 --- a/.buildkite/scripts/steps/functional/performance_playwright.sh +++ b/.buildkite/scripts/steps/functional/performance_playwright.sh @@ -30,3 +30,12 @@ if [ -d "$JOURNEY_SCREENSHOTS_DIR" ]; then buildkite-agent artifact upload "**/*fullscreen*.png" cd "$KIBANA_DIR" fi + +echo "--- Upload server logs" +JOURNEY_SERVER_LOGS_REL_PATH=".ftr/journey_server_logs" +JOURNEY_SERVER_LOGS_DIR="${KIBANA_DIR}/${JOURNEY_SERVER_LOGS_REL_PATH}" +if [ -d "$JOURNEY_SERVER_LOGS_DIR" ]; then + cd "$KIBANA_DIR" + tar -czf server-logs.tar.gz $JOURNEY_SERVER_LOGS_REL_PATH/**/* + buildkite-agent artifact upload server-logs.tar.gz +fi diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index dab17346d99ab..0b7c1a124e724 100644 --- a/api_docs/actions.mdx +++ b/api_docs/actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/actions title: "actions" image: https://source.unsplash.com/400x175/?github description: API docs for the actions plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'actions'] --- import actionsObj from './actions.devdocs.json'; diff --git a/api_docs/advanced_settings.mdx b/api_docs/advanced_settings.mdx index 249bc1bee47d5..ec2a51e46ea77 100644 --- a/api_docs/advanced_settings.mdx +++ b/api_docs/advanced_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/advancedSettings title: "advancedSettings" image: https://source.unsplash.com/400x175/?github description: API docs for the advancedSettings plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_observability.mdx b/api_docs/ai_assistant_management_observability.mdx index 4fe6082036097..7cfd4aea5c33f 100644 --- a/api_docs/ai_assistant_management_observability.mdx +++ b/api_docs/ai_assistant_management_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementObservability title: "aiAssistantManagementObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementObservability plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementObservability'] --- import aiAssistantManagementObservabilityObj from './ai_assistant_management_observability.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index ba4178dba10a6..38336715f14bf 100644 --- a/api_docs/ai_assistant_management_selection.mdx +++ b/api_docs/ai_assistant_management_selection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiAssistantManagementSelection title: "aiAssistantManagementSelection" image: https://source.unsplash.com/400x175/?github description: API docs for the aiAssistantManagementSelection plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiAssistantManagementSelection'] --- import aiAssistantManagementSelectionObj from './ai_assistant_management_selection.devdocs.json'; diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 8dedb83bb134f..d0fda14c342a0 100644 --- a/api_docs/aiops.mdx +++ b/api_docs/aiops.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/aiops title: "aiops" image: https://source.unsplash.com/400x175/?github description: API docs for the aiops plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 325581e583a0d..d6c85c577dc51 100644 --- a/api_docs/alerting.mdx +++ b/api_docs/alerting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/alerting title: "alerting" image: https://source.unsplash.com/400x175/?github description: API docs for the alerting plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 2a7fb63182718..c731b3700983a 100644 --- a/api_docs/apm.mdx +++ b/api_docs/apm.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apm title: "apm" image: https://source.unsplash.com/400x175/?github description: API docs for the apm plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/apm_data_access.mdx b/api_docs/apm_data_access.mdx index 8c277bc60e816..7f7c58080f95b 100644 --- a/api_docs/apm_data_access.mdx +++ b/api_docs/apm_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/apmDataAccess title: "apmDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the apmDataAccess plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index f5380bbe77fbd..510092a989adc 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 380fff676f7a0..b3ceef1a15e8d 100644 --- a/api_docs/banners.mdx +++ b/api_docs/banners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/banners title: "banners" image: https://source.unsplash.com/400x175/?github description: API docs for the banners plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'banners'] --- import bannersObj from './banners.devdocs.json'; diff --git a/api_docs/bfetch.mdx b/api_docs/bfetch.mdx index f6b1a1524b6c2..cc802272bc91f 100644 --- a/api_docs/bfetch.mdx +++ b/api_docs/bfetch.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/bfetch title: "bfetch" image: https://source.unsplash.com/400x175/?github description: API docs for the bfetch plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'bfetch'] --- import bfetchObj from './bfetch.devdocs.json'; diff --git a/api_docs/canvas.mdx b/api_docs/canvas.mdx index 98f38ebb0e7a5..2870a3e251071 100644 --- a/api_docs/canvas.mdx +++ b/api_docs/canvas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/canvas title: "canvas" image: https://source.unsplash.com/400x175/?github description: API docs for the canvas plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index f488fad109745..784b5897b5e13 100644 --- a/api_docs/cases.mdx +++ b/api_docs/cases.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cases title: "cases" image: https://source.unsplash.com/400x175/?github description: API docs for the cases plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index b91227d8dafae..b8f192b4dca89 100644 --- a/api_docs/charts.mdx +++ b/api_docs/charts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/charts title: "charts" image: https://source.unsplash.com/400x175/?github description: API docs for the charts plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'charts'] --- import chartsObj from './charts.devdocs.json'; diff --git a/api_docs/cloud.mdx b/api_docs/cloud.mdx index 26e8c91cd8091..d0b411b9d05a2 100644 --- a/api_docs/cloud.mdx +++ b/api_docs/cloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloud title: "cloud" image: https://source.unsplash.com/400x175/?github description: API docs for the cloud plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 071c834a9f0b8..13df73a0ee97c 100644 --- a/api_docs/cloud_data_migration.mdx +++ b/api_docs/cloud_data_migration.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDataMigration title: "cloudDataMigration" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDataMigration plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDataMigration'] --- import cloudDataMigrationObj from './cloud_data_migration.devdocs.json'; diff --git a/api_docs/cloud_defend.mdx b/api_docs/cloud_defend.mdx index 93b4f23a6c6e1..c18b85ea8def7 100644 --- a/api_docs/cloud_defend.mdx +++ b/api_docs/cloud_defend.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudDefend title: "cloudDefend" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudDefend plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudDefend'] --- import cloudDefendObj from './cloud_defend.devdocs.json'; diff --git a/api_docs/cloud_experiments.mdx b/api_docs/cloud_experiments.mdx index 6c42c77a9ce52..cfdbd5532be87 100644 --- a/api_docs/cloud_experiments.mdx +++ b/api_docs/cloud_experiments.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudExperiments title: "cloudExperiments" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudExperiments plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudExperiments'] --- import cloudExperimentsObj from './cloud_experiments.devdocs.json'; diff --git a/api_docs/cloud_security_posture.mdx b/api_docs/cloud_security_posture.mdx index 65f30fec76679..f734c924ea4a2 100644 --- a/api_docs/cloud_security_posture.mdx +++ b/api_docs/cloud_security_posture.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudSecurityPosture title: "cloudSecurityPosture" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudSecurityPosture plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudSecurityPosture'] --- import cloudSecurityPostureObj from './cloud_security_posture.devdocs.json'; diff --git a/api_docs/console.mdx b/api_docs/console.mdx index 0ba332bd00091..22ceb3647e734 100644 --- a/api_docs/console.mdx +++ b/api_docs/console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/console title: "console" image: https://source.unsplash.com/400x175/?github description: API docs for the console plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'console'] --- import consoleObj from './console.devdocs.json'; diff --git a/api_docs/content_management.mdx b/api_docs/content_management.mdx index 373c9329da589..a8157989afa82 100644 --- a/api_docs/content_management.mdx +++ b/api_docs/content_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/contentManagement title: "contentManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the contentManagement plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'contentManagement'] --- import contentManagementObj from './content_management.devdocs.json'; diff --git a/api_docs/controls.mdx b/api_docs/controls.mdx index 50dc08dc20f56..d579d50f9a3d3 100644 --- a/api_docs/controls.mdx +++ b/api_docs/controls.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/controls title: "controls" image: https://source.unsplash.com/400x175/?github description: API docs for the controls plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'controls'] --- import controlsObj from './controls.devdocs.json'; diff --git a/api_docs/custom_integrations.mdx b/api_docs/custom_integrations.mdx index 6ce5d6cd4af1e..cd5dc89065a72 100644 --- a/api_docs/custom_integrations.mdx +++ b/api_docs/custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/customIntegrations title: "customIntegrations" image: https://source.unsplash.com/400x175/?github description: API docs for the customIntegrations plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'customIntegrations'] --- import customIntegrationsObj from './custom_integrations.devdocs.json'; diff --git a/api_docs/dashboard.mdx b/api_docs/dashboard.mdx index 3ade7ceddc894..df958d579bd0c 100644 --- a/api_docs/dashboard.mdx +++ b/api_docs/dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboard title: "dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboard plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboard'] --- import dashboardObj from './dashboard.devdocs.json'; diff --git a/api_docs/dashboard_enhanced.mdx b/api_docs/dashboard_enhanced.mdx index d6aa50c337ba4..5f3841e899202 100644 --- a/api_docs/dashboard_enhanced.mdx +++ b/api_docs/dashboard_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dashboardEnhanced title: "dashboardEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the dashboardEnhanced plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 4b947670775f6..bce0255d7ae1b 100644 --- a/api_docs/data.mdx +++ b/api_docs/data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data title: "data" image: https://source.unsplash.com/400x175/?github description: API docs for the data plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 485c4fe417536..25d18a0ba7764 100644 --- a/api_docs/data_query.mdx +++ b/api_docs/data_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-query title: "data.query" image: https://source.unsplash.com/400x175/?github description: API docs for the data.query plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 7f40457664a0c..37bd58275fb8d 100644 --- a/api_docs/data_search.mdx +++ b/api_docs/data_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/data-search title: "data.search" image: https://source.unsplash.com/400x175/?github description: API docs for the data.search plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 9fbc2ab5fdc19..c7186530bc979 100644 --- a/api_docs/data_view_editor.mdx +++ b/api_docs/data_view_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewEditor title: "dataViewEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewEditor plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewEditor'] --- import dataViewEditorObj from './data_view_editor.devdocs.json'; diff --git a/api_docs/data_view_field_editor.mdx b/api_docs/data_view_field_editor.mdx index 2db82e3b113df..aa294aff9d701 100644 --- a/api_docs/data_view_field_editor.mdx +++ b/api_docs/data_view_field_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewFieldEditor title: "dataViewFieldEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewFieldEditor plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewFieldEditor'] --- import dataViewFieldEditorObj from './data_view_field_editor.devdocs.json'; diff --git a/api_docs/data_view_management.mdx b/api_docs/data_view_management.mdx index 38ed3cf06a099..cc39ecf728a2f 100644 --- a/api_docs/data_view_management.mdx +++ b/api_docs/data_view_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViewManagement title: "dataViewManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViewManagement plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index cdbcbfd982b8d..eba3e52019938 100644 --- a/api_docs/data_views.mdx +++ b/api_docs/data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataViews title: "dataViews" image: https://source.unsplash.com/400x175/?github description: API docs for the dataViews plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index a12ea54a994be..b26b01c18977f 100644 --- a/api_docs/data_visualizer.mdx +++ b/api_docs/data_visualizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataVisualizer title: "dataVisualizer" image: https://source.unsplash.com/400x175/?github description: API docs for the dataVisualizer plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/dataset_quality.mdx b/api_docs/dataset_quality.mdx index b0765e9cb0107..0813ba27b8c05 100644 --- a/api_docs/dataset_quality.mdx +++ b/api_docs/dataset_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/datasetQuality title: "datasetQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the datasetQuality plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'datasetQuality'] --- import datasetQualityObj from './dataset_quality.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index 640f840a365ad..47948c888c5ed 100644 --- a/api_docs/deprecations_by_api.mdx +++ b/api_docs/deprecations_by_api.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByApi slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-api title: Deprecated API usage by API description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -22,6 +22,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | actions, ml, savedObjectsTagging, enterpriseSearch | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, visualizations, aiops, ml, dataVisualizer, dashboardEnhanced, graph, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | | | @kbn/core, savedObjects, embeddable, visualizations, canvas, graph, ml, @kbn/core-saved-objects-common, @kbn/core-saved-objects-server, actions, alerting, savedSearch, enterpriseSearch, securitySolution, taskManager, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-api-server | - | +| | @kbn/core-saved-objects-base-server-internal, @kbn/core-saved-objects-migration-server-internal, @kbn/core-saved-objects-server-internal, @kbn/core-ui-settings-server-internal, @kbn/core-usage-data-server-internal, taskManager, spaces, actions, @kbn/core-saved-objects-migration-server-mocks, share, dataViews, data, alerting, lens, cases, observability, apmDataAccess, ml, fleet, visualizations, apm, savedSearch, canvas, cloudSecurityPosture, logsShared, graph, infra, lists, maps, securitySolution, synthetics, uptime, dashboard, eventAnnotation, links, savedObjectsManagement, @kbn/core-test-helpers-so-type-serializer, @kbn/core-saved-objects-api-server-internal | - | | | stackAlerts, alerting, securitySolution, inputControlVis | - | | | stackAlerts, graph, inputControlVis, securitySolution, savedObjects | - | | | dashboard, dataVisualizer, stackAlerts, expressionPartitionVis | - | @@ -94,6 +95,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/core-root-browser-internal, @kbn/core-saved-objects-browser-mocks | - | | | @kbn/core-saved-objects-api-server-internal | - | | | @kbn/core-saved-objects-api-server-internal | - | +| | @kbn/core-saved-objects-api-server-internal, spaces, data, visualizations, savedSearch, cloudSecurityPosture, dashboard, @kbn/core-test-helpers-so-type-serializer | - | | | visTypeTimeseries, graph, dataViewManagement, dataViews | - | | | visTypeTimeseries, graph, dataViewManagement, dataViews | - | | | visTypeTimeseries, graph, dataViewManagement | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 19498e7865b4e..0bbb83f79a565 100644 --- a/api_docs/deprecations_by_plugin.mdx +++ b/api_docs/deprecations_by_plugin.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsByPlugin slug: /kibana-dev-docs/api-meta/deprecated-api-list-by-plugin title: Deprecated API usage by plugin description: A list of deprecated APIs, which plugins are still referencing them, and when they need to be removed by. -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -148,6 +148,16 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [increment_counter_internal.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/internals/increment_counter_internal.ts#:~:text=migrationVersion), [increment_counter.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/increment_counter.test.ts#:~:text=migrationVersion) | - | | | [bulk_create.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/bulk_create.ts#:~:text=migrationVersion), [repository.test.common.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/test_helpers/repository.test.common.ts#:~:text=migrationVersion) | - | | | [create.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/create.ts#:~:text=migrationVersion), [create.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/create.test.ts#:~:text=migrationVersion), [create.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/create.test.ts#:~:text=migrationVersion), [create.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/create.test.ts#:~:text=migrationVersion) | - | +| | [kibana_migrator.mock.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/kibana_migrator.mock.ts#:~:text=migrations), [repository.test.common.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/test_helpers/repository.test.common.ts#:~:text=migrations), [repository_create_repository.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_create_repository.test.ts#:~:text=migrations), [repository_create_repository.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_create_repository.test.ts#:~:text=migrations), [repository_create_repository.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_create_repository.test.ts#:~:text=migrations) | - | +| | [validation.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation.ts#:~:text=schemas), [validation.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation.ts#:~:text=schemas), [validation.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation.ts#:~:text=schemas), [repository.test.common.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/test_helpers/repository.test.common.ts#:~:text=schemas), [validation_fixtures.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation_fixtures.ts#:~:text=schemas), [validation_fixtures.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation_fixtures.ts#:~:text=schemas), [validation_fixtures.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation_fixtures.ts#:~:text=schemas) | - | + + + +## @kbn/core-saved-objects-base-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [version_map.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.ts#:~:text=migrations), [version_map.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.ts#:~:text=migrations), [version_map.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.ts#:~:text=migrations), [saved_objects_type_registry.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_type_registry.test.ts#:~:text=migrations), [saved_objects_type_registry.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_type_registry.test.ts#:~:text=migrations), [saved_objects_type_registry.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_type_registry.test.ts#:~:text=migrations), [saved_objects_type_registry.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_type_registry.test.ts#:~:text=migrations), [version_map.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts#:~:text=migrations), [version_map.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts#:~:text=migrations), [version_map.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts#:~:text=migrations)+ 8 more | - | @@ -246,10 +256,19 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [validate_migrations.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts#:~:text=migrations), [validate_migrations.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts#:~:text=migrations), [validate_migrations.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts#:~:text=migrations), [validate_migrations.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts#:~:text=migrations), [validate_migrations.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts#:~:text=migrations), [build_active_migrations.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.ts#:~:text=migrations), [build_active_migrations.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.ts#:~:text=migrations), [build_active_migrations.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.ts#:~:text=migrations), [kibana_migrator.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts#:~:text=migrations), [kibana_migrator.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts#:~:text=migrations)+ 62 more | - | | | [utils.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/utils.ts#:~:text=convertToMultiNamespaceTypeVersion), [internal_transforms.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/internal_transforms.ts#:~:text=convertToMultiNamespaceTypeVersion), [internal_transforms.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/internal_transforms.ts#:~:text=convertToMultiNamespaceTypeVersion), [internal_transforms.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/internal_transforms.ts#:~:text=convertToMultiNamespaceTypeVersion), [validate_migrations.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts#:~:text=convertToMultiNamespaceTypeVersion), [validate_migrations.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts#:~:text=convertToMultiNamespaceTypeVersion), [document_migrator.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts#:~:text=convertToMultiNamespaceTypeVersion), [document_migrator.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts#:~:text=convertToMultiNamespaceTypeVersion), [document_migrator.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts#:~:text=convertToMultiNamespaceTypeVersion), [document_migrator.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts#:~:text=convertToMultiNamespaceTypeVersion)+ 18 more | - | +## @kbn/core-saved-objects-migration-server-mocks + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [kibana_migrator.mock.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/kibana_migrator.mock.ts#:~:text=migrations) | - | + + + ## @kbn/core-saved-objects-server | Deprecated API | Reference location(s) | Remove By | @@ -265,6 +284,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [import_dashboards.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts#:~:text=migrationVersion) | - | | | [import_dashboards.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts#:~:text=migrationVersion), [import_dashboards.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts#:~:text=migrationVersion), [import_dashboards.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts#:~:text=migrationVersion), [import_dashboards.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/import_dashboards.ts#:~:text=migrationVersion) | - | | | [collect_references_deep.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts#:~:text=SavedObjectAttributes), [collect_references_deep.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts#:~:text=SavedObjectAttributes), [collect_references_deep.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts#:~:text=SavedObjectAttributes), [collect_references_deep.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-server-internal/src/routes/legacy_import_export/lib/collect_references_deep.test.ts#:~:text=SavedObjectAttributes) | - | +| | [registration.ts](https://github.com/elastic/kibana/tree/main/packages/core/saved-objects/core-saved-objects-server-internal/src/object_types/registration.ts#:~:text=migrations) | - | @@ -272,6 +292,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| +| | [extract_migration_info.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts#:~:text=migrations), [extract_migration_info.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts#:~:text=migrations), [extract_migration_info.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts#:~:text=migrations), [extract_migration_info.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts#:~:text=migrations), [extract_migration_info.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts#:~:text=migrations), [extract_migration_info.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts#:~:text=migrations), [extract_migration_info.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts#:~:text=migrations), [get_migration_hash.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts#:~:text=migrations), [get_migration_hash.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts#:~:text=migrations), [get_migration_hash.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts#:~:text=migrations)+ 5 more | - | +| | [extract_migration_info.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts#:~:text=schemas), [extract_migration_info.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts#:~:text=schemas), [extract_migration_info.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts#:~:text=schemas), [extract_migration_info.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts#:~:text=schemas), [extract_migration_info.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts#:~:text=schemas), [extract_migration_info.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts#:~:text=schemas), [get_migration_hash.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts#:~:text=schemas), [get_migration_hash.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts#:~:text=schemas), [get_migration_hash.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts#:~:text=schemas), [get_migration_hash.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts#:~:text=schemas)+ 4 more | - | | | [extract_migration_info.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts#:~:text=convertToMultiNamespaceTypeVersion), [extract_migration_info.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts#:~:text=convertToMultiNamespaceTypeVersion), [get_migration_hash.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts#:~:text=convertToMultiNamespaceTypeVersion), [get_migration_hash.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -281,6 +303,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [transforms.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/ui-settings/core-ui-settings-server-internal/src/saved_objects/transforms.test.ts#:~:text=SavedObject), [transforms.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/ui-settings/core-ui-settings-server-internal/src/saved_objects/transforms.test.ts#:~:text=SavedObject), [transforms.test.ts](https://github.com/elastic/kibana/tree/main/packages/core/ui-settings/core-ui-settings-server-internal/src/saved_objects/transforms.test.ts#:~:text=SavedObject) | - | +| | [ui_settings.ts](https://github.com/elastic/kibana/tree/main/packages/core/ui-settings/core-ui-settings-server-internal/src/saved_objects/ui_settings.ts#:~:text=migrations) | - | + + + +## @kbn/core-usage-data-server-internal + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [core_usage_stats.ts](https://github.com/elastic/kibana/tree/main/packages/core/usage-data/core-usage-data-server-internal/src/saved_objects/core_usage_stats.ts#:~:text=migrations) | - | @@ -338,6 +369,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/plugin.ts#:~:text=authz) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/plugin.ts#:~:text=index) | - | | | [actions_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/actions_client/actions_client.ts#:~:text=SavedObjectAttributes), [actions_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/actions_client/actions_client.ts#:~:text=SavedObjectAttributes), [actions_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/actions_client/actions_client.ts#:~:text=SavedObjectAttributes), [actions_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/actions_client/actions_client.ts#:~:text=SavedObjectAttributes), [actions_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/actions_client/actions_client.ts#:~:text=SavedObjectAttributes), [actions_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/actions_client/actions_client.ts#:~:text=SavedObjectAttributes), [actions_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/actions_client/actions_client.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/types.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/types.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/types.ts#:~:text=SavedObjectAttributes)+ 10 more | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/saved_objects/index.ts#:~:text=migrations), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/saved_objects/index.ts#:~:text=migrations) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/saved_objects/index.ts#:~:text=convertToMultiNamespaceTypeVersion), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/actions/server/saved_objects/index.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -368,6 +400,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/plugin.ts#:~:text=license%24), [license_state.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/license_state.test.ts#:~:text=license%24), [license_state.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/lib/license_state.test.ts#:~:text=license%24) | 8.8.0 | | | [task.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/usage/task.ts#:~:text=index) | - | | | [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes), [rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/common/rule.ts#:~:text=SavedObjectAttributes)+ 56 more | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/saved_objects/index.ts#:~:text=migrations) | - | | | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/alerting/server/saved_objects/index.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -381,6 +414,15 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 | | | [license_context.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/public/context/license/license_context.tsx#:~:text=license%24) | 8.8.0 | | | [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode), [license_check.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/common/license_check.test.ts#:~:text=mode)+ 2 more | 8.8.0 | +| | [apm_service_groups.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm/server/saved_objects/apm_service_groups.ts#:~:text=migrations) | - | + + + +## apmDataAccess + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [apm_indices.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/apm_data_access/server/saved_objects/apm_indices.ts#:~:text=migrations) | - | @@ -411,6 +453,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/custom_elements/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/custom_elements/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/workpad/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/workpad/find.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/shareable_runtime/types.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/shareable_runtime/types.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/custom_elements/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/custom_elements/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/workpad/find.ts#:~:text=SavedObjectAttributes), [find.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/routes/workpad/find.ts#:~:text=SavedObjectAttributes) | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/shareable_runtime/types.ts#:~:text=SavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/shareable_runtime/types.ts#:~:text=SavedObject), [workpad.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/services/kibana/workpad.ts#:~:text=SavedObject), [workpad.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/services/kibana/workpad.ts#:~:text=SavedObject), [use_upload_workpad.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/home/hooks/use_upload_workpad.ts#:~:text=SavedObject), [use_upload_workpad.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/public/components/home/hooks/use_upload_workpad.ts#:~:text=SavedObject) | - | | | [saved_lens.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=SavedObjectReference), [saved_lens.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts#:~:text=SavedObjectReference), [saved_map.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_map.ts#:~:text=SavedObjectReference), [saved_map.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_map.ts#:~:text=SavedObjectReference), [saved_search.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_search.ts#:~:text=SavedObjectReference), [saved_search.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_search.ts#:~:text=SavedObjectReference), [saved_visualization.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_visualization.ts#:~:text=SavedObjectReference), [saved_visualization.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_visualization.ts#:~:text=SavedObjectReference), [embeddable.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts#:~:text=SavedObjectReference), [embeddable.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/canvas_plugin_src/functions/external/embeddable.ts#:~:text=SavedObjectReference) | - | +| | [workpad.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/saved_objects/workpad.ts#:~:text=migrations), [custom_element.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/saved_objects/custom_element.ts#:~:text=migrations), [workpad_template.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/saved_objects/workpad_template.ts#:~:text=migrations) | - | | | [workpad.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/saved_objects/workpad.ts#:~:text=convertToMultiNamespaceTypeVersion), [custom_element.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/canvas/server/saved_objects/custom_element.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -422,6 +465,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [use_cases_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/common/use_cases_toast.tsx#:~:text=toMountPoint), [use_cases_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/common/use_cases_toast.tsx#:~:text=toMountPoint), [use_cases_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/common/use_cases_toast.tsx#:~:text=toMountPoint), [add_to_new_case.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.tsx#:~:text=toMountPoint), [add_to_new_case.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/components/visualizations/actions/add_to_new_case.tsx#:~:text=toMountPoint), [add_to_existing_case.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx#:~:text=toMountPoint), [add_to_existing_case.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx#:~:text=toMountPoint) | - | | | [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/public/application.tsx#:~:text=KibanaThemeProvider) | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/common/ui/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/common/ui/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/common/ui/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/common/ui/types.ts#:~:text=ResolvedSimpleSavedObject) | - | +| | [cases.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/cases/cases.ts#:~:text=migrations), [configure.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/configure.ts#:~:text=migrations), [comments.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/comments.ts#:~:text=migrations), [user_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/user_actions.ts#:~:text=migrations), [connector_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/connector_mappings.ts#:~:text=migrations) | - | | | [cases.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/cases/cases.ts#:~:text=convertToMultiNamespaceTypeVersion), [configure.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/configure.ts#:~:text=convertToMultiNamespaceTypeVersion), [comments.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/comments.ts#:~:text=convertToMultiNamespaceTypeVersion), [user_actions.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/user_actions.ts#:~:text=convertToMultiNamespaceTypeVersion), [connector_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cases/server/saved_object_types/connector_mappings.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -456,6 +500,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | ---------------|-----------|-----------| | | [overview_tab.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx#:~:text=indexPatternId) | - | | | [take_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx#:~:text=toMountPoint), [take_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx#:~:text=toMountPoint), [take_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx#:~:text=toMountPoint) | - | +| | [csp_benchmark_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts#:~:text=migrations) | - | +| | [csp_benchmark_rule.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts#:~:text=schemas), [csp_settings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts#:~:text=schemas) | - | @@ -499,6 +545,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [duplicate_dashboard_panel.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/duplicate_dashboard_panel.test.ts#:~:text=find) | - | | | [duplicate_dashboard_panel.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/duplicate_dashboard_panel.test.ts#:~:text=get) | - | | | [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/common/bwc/types.ts#:~:text=SavedObjectReference), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/common/bwc/types.ts#:~:text=SavedObjectReference) | - | +| | [dashboard_saved_object.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts#:~:text=migrations) | - | +| | [dashboard_saved_object.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts#:~:text=schemas) | - | | | [dashboard_saved_object.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -525,6 +573,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [session_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/search/session/session_service.ts#:~:text=authc) | - | | | [data_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/utils/table_inspector_view/components/data_table.tsx#:~:text=executeTriggerActions), [data_table.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/data/public/utils/table_inspector_view/components/data_table.tsx#:~:text=executeTriggerActions) | - | | | [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/filters/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/filters/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/filters/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/persistable_state.ts#:~:text=SavedObjectReference), [persistable_state.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/common/query/persistable_state.ts#:~:text=SavedObjectReference) | - | +| | [query.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/saved_objects/query.ts#:~:text=migrations), [search_telemetry.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/saved_objects/search_telemetry.ts#:~:text=migrations), [search_session.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/search/saved_objects/search_session.ts#:~:text=migrations) | - | +| | [query.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/saved_objects/query.ts#:~:text=schemas), [kql_telemetry.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/saved_objects/kql_telemetry.ts#:~:text=schemas), [search_telemetry.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/saved_objects/search_telemetry.ts#:~:text=schemas), [search_session.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/search/saved_objects/search_session.ts#:~:text=schemas) | - | | | [query.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data/server/saved_objects/query.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -574,6 +624,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [delete_scripted_field.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/server/rest_api_routes/public/scripted_fields/delete_scripted_field.ts#:~:text=removeScriptedField), [data_view.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=removeScriptedField) | - | | | [data_view.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getNonScriptedFields) | - | | | [data_view.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/common/data_views/data_view.ts#:~:text=getScriptedFields), [data_view.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/common/data_views/data_view.ts#:~:text=getScriptedFields), [data_views.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/common/data_views/data_views.ts#:~:text=getScriptedFields), [data_view.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getScriptedFields), [data_view.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getScriptedFields), [data_view.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getScriptedFields), [data_view.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getScriptedFields), [data_view.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/common/data_views/data_view.test.ts#:~:text=getScriptedFields) | - | +| | [data_views.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/server/saved_objects/data_views.ts#:~:text=migrations) | - | | | [data_views.ts](https://github.com/elastic/kibana/tree/main/src/plugins/data_views/server/saved_objects/data_views.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -667,6 +718,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | ---------------|-----------|-----------| | | [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=SimpleSavedObject), [service.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.test.ts#:~:text=SimpleSavedObject) | - | | | [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectReference), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectReference), [service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/public/event_annotation_service/service.tsx#:~:text=SavedObjectReference) | - | +| | [saved_objects.ts](https://github.com/elastic/kibana/tree/main/src/plugins/event_annotation/server/saved_objects.ts#:~:text=migrations) | - | @@ -832,6 +884,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode) | 8.8.0 | | | [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_config.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/common/services/agent_policy_config.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode), [agent_policy_watch.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/services/agent_policy_watch.test.ts#:~:text=mode) | 8.8.0 | | | [index.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/public/applications/integrations/index.tsx#:~:text=appBasePath) | 8.8.0 | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/saved_objects/index.ts#:~:text=migrations), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/saved_objects/index.ts#:~:text=migrations), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/saved_objects/index.ts#:~:text=migrations), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/saved_objects/index.ts#:~:text=migrations), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/fleet/server/saved_objects/index.ts#:~:text=migrations) | - | @@ -863,6 +916,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [use_workspace_loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/use_workspace_loader.ts#:~:text=ResolvedSimpleSavedObject), [use_workspace_loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/use_workspace_loader.ts#:~:text=ResolvedSimpleSavedObject), [use_workspace_loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/use_workspace_loader.ts#:~:text=ResolvedSimpleSavedObject), [use_workspace_loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/use_workspace_loader.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [saved_workspace_references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/saved_workspace_references.ts#:~:text=SavedObjectAttributes), [saved_workspace_references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/saved_workspace_references.ts#:~:text=SavedObjectAttributes), [saved_workspace_utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_workspace_utils.ts#:~:text=SavedObjectAttributes), [saved_workspace_utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_workspace_utils.ts#:~:text=SavedObjectAttributes) | - | | | [saved_workspace_references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/saved_workspace_references.ts#:~:text=SavedObjectReference), [saved_workspace_references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/saved_workspace_references.ts#:~:text=SavedObjectReference), [saved_workspace_references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/services/persistence/saved_workspace_references.ts#:~:text=SavedObjectReference), [persistence.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/types/persistence.ts#:~:text=SavedObjectReference), [persistence.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/types/persistence.ts#:~:text=SavedObjectReference) | - | +| | [graph_workspace.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/server/saved_objects/graph_workspace.ts#:~:text=migrations) | - | | | [graph_workspace.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/server/saved_objects/graph_workspace.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -928,6 +982,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | ---------------|-----------|-----------| | | [log_threshold_executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/server/lib/alerting/log_threshold/log_threshold_executor.ts#:~:text=alertFactory), [log_threshold_executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/server/lib/alerting/log_threshold/log_threshold_executor.ts#:~:text=alertFactory), [log_threshold_executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/server/lib/alerting/log_threshold/log_threshold_executor.ts#:~:text=alertFactory), [inventory_metric_threshold_executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts#:~:text=alertFactory) | - | | | [common_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/apps/common_providers.tsx#:~:text=KibanaThemeProvider), [common_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/apps/common_providers.tsx#:~:text=KibanaThemeProvider), [common_providers.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/public/apps/common_providers.tsx#:~:text=KibanaThemeProvider) | - | +| | [saved_object_type.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/infra/server/lib/sources/saved_object_type.ts#:~:text=migrations) | - | @@ -994,6 +1049,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/types.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_objects_utils/find_object_by_title.test.ts#:~:text=simpleSavedObjectMock), [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_objects_utils/find_object_by_title.test.ts#:~:text=simpleSavedObjectMock) | - | | | [saved_object_store.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_object_store.ts#:~:text=SavedObjectReference), [saved_object_store.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_object_store.ts#:~:text=SavedObjectReference), [saved_object_store.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/persistence/saved_object_store.ts#:~:text=SavedObjectReference), [selectors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/state_management/selectors.ts#:~:text=SavedObjectReference), [selectors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/state_management/selectors.ts#:~:text=SavedObjectReference), [selectors.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/state_management/selectors.ts#:~:text=SavedObjectReference), [state_helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts#:~:text=SavedObjectReference), [state_helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts#:~:text=SavedObjectReference), [state_helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts#:~:text=SavedObjectReference), [state_helpers.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/public/editor_frame_service/editor_frame/state_helpers.ts#:~:text=SavedObjectReference)+ 51 more | - | +| | [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/server/saved_objects.ts#:~:text=migrations) | - | | | [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lens/server/saved_objects.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -1020,6 +1076,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [save_to_library.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/links/public/content_management/save_to_library.tsx#:~:text=SavedObjectSaveModal), [save_to_library.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/links/public/content_management/save_to_library.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | +| | [links.ts](https://github.com/elastic/kibana/tree/main/src/plugins/links/server/saved_objects/links.ts#:~:text=migrations) | - | @@ -1030,6 +1087,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [exception_list_client.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts#:~:text=migrationVersion) | - | | | [exception_list_client.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts#:~:text=migrationVersion), [exception_list_client.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts#:~:text=migrationVersion), [exception_list_client.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts#:~:text=migrationVersion), [exception_list_client.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts#:~:text=migrationVersion) | - | | | [exception_list_client.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts#:~:text=SavedObject), [exception_list_client.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts#:~:text=SavedObject), [exception_list_client.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts#:~:text=SavedObject), [exception_list_client.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts#:~:text=SavedObject), [exception_list_client.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/exception_list_client.mock.ts#:~:text=SavedObject) | - | +| | [exception_list.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/saved_objects/exception_list.ts#:~:text=migrations), [exception_list.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/saved_objects/exception_list.ts#:~:text=migrations) | - | | | [exception_list.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/saved_objects/exception_list.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | | | [create_endpoint_trusted_apps_list.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_trusted_apps_list.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [create_endpoint_trusted_apps_list.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_trusted_apps_list.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [create_endpoint_trusted_apps_list.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_trusted_apps_list.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/saved_objects/migrations.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/saved_objects/migrations.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/saved_objects/migrations.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [exception_list_schema.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/common/schemas/response/exception_list_schema.mock.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [exception_list_schema.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/common/schemas/response/exception_list_schema.mock.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [migrations.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/saved_objects/migrations.test.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [migrations.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/saved_objects/migrations.test.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID)+ 7 more | - | | | [create_endpoint_trusted_apps_list.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_trusted_apps_list.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [create_endpoint_trusted_apps_list.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/server/services/exception_lists/create_endpoint_trusted_apps_list.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [exception_list_schema.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/common/schemas/response/exception_list_schema.mock.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [exception_list_schema.mock.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/lists/common/schemas/response/exception_list_schema.mock.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME) | - | @@ -1038,6 +1096,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## logsShared + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [log_view_saved_object.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/logs_shared/server/saved_objects/log_view/log_view_saved_object.ts#:~:text=migrations) | - | + + + ## logstash | Deprecated API | Reference location(s) | Remove By | @@ -1068,6 +1134,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [map_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx#:~:text=KibanaThemeProvider), [map_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx#:~:text=KibanaThemeProvider), [map_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/embeddable/map_embeddable.tsx#:~:text=KibanaThemeProvider), [render_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/render_app.tsx#:~:text=KibanaThemeProvider), [render_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/render_app.tsx#:~:text=KibanaThemeProvider), [render_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/render_app.tsx#:~:text=KibanaThemeProvider) | - | | | [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=ResolvedSimpleSavedObject), [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=ResolvedSimpleSavedObject), [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=ResolvedSimpleSavedObject), [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/common/migrations/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/common/migrations/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/common/migrations/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/common/migrations/references.ts#:~:text=SavedObjectReference), [references.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/common/migrations/references.ts#:~:text=SavedObjectReference), [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=SavedObjectReference), [map_attribute_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/public/map_attribute_service.ts#:~:text=SavedObjectReference) | - | +| | [setup_saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/server/saved_objects/setup_saved_objects.ts#:~:text=migrations) | - | | | [setup_saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/maps/server/saved_objects/setup_saved_objects.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -1101,6 +1168,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [initialization.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/saved_objects/initialization/initialization.ts#:~:text=authz), [sync_task.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/saved_objects/sync_task.ts#:~:text=authz), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/plugin.ts#:~:text=authz), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/plugin.ts#:~:text=authz) | - | | | [kibana.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/common/types/kibana.ts#:~:text=SimpleSavedObject), [kibana.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/common/types/kibana.ts#:~:text=SimpleSavedObject) | - | | | [modules.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/common/types/modules.ts#:~:text=SavedObjectAttributes), [modules.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/common/types/modules.ts#:~:text=SavedObjectAttributes) | - | +| | [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/saved_objects/saved_objects.ts#:~:text=migrations), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/saved_objects/saved_objects.ts#:~:text=migrations), [saved_objects.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/saved_objects/saved_objects.ts#:~:text=migrations) | - | @@ -1128,6 +1196,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | ---------------|-----------|-----------| | | [custom_threshold_executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts#:~:text=alertFactory), [custom_threshold_executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts#:~:text=alertFactory), [executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/server/lib/rules/slo_burn_rate/executor.ts#:~:text=alertFactory), [executor.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/server/lib/rules/slo_burn_rate/executor.test.ts#:~:text=alertFactory) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [slo.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability/server/saved_objects/slo.ts#:~:text=migrations) | - | @@ -1262,6 +1331,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [find_relationships.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/server/lib/find_relationships.test.ts#:~:text=SavedObject), [find_relationships.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/server/lib/find_relationships.test.ts#:~:text=SavedObject), [find_relationships.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/server/lib/find_relationships.test.ts#:~:text=SavedObject), [find_relationships.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/server/lib/find_relationships.test.ts#:~:text=SavedObject) | - | | | [record.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/services/types/record.ts#:~:text=SavedObjectReference), [record.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/services/types/record.ts#:~:text=SavedObjectReference) | - | | | [resolve_import_errors.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/public/lib/resolve_import_errors.ts#:~:text=createNewCopy) | - | +| | [management.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_objects_management/server/services/management.test.ts#:~:text=migrations) | - | @@ -1294,6 +1364,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | ---------------|-----------|-----------| | | [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/public/services/saved_searches/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/public/services/saved_searches/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/public/services/saved_searches/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/public/services/saved_searches/types.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [search_migrations.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search_migrations.ts#:~:text=SavedObjectAttributes), [search_migrations.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search_migrations.ts#:~:text=SavedObjectAttributes), [search_migrations.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search_migrations.ts#:~:text=SavedObjectAttributes), [search_migrations.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search_migrations.ts#:~:text=SavedObjectAttributes) | - | +| | [search.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search.ts#:~:text=migrations) | - | +| | [search.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search.ts#:~:text=schemas) | - | | | [search.ts](https://github.com/elastic/kibana/tree/main/src/plugins/saved_search/server/saved_objects/search.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | @@ -1361,6 +1433,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/hooks/types.ts#:~:text=SimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/common/hooks/types.ts#:~:text=SimpleSavedObject) | - | | | [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_types.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes), [legacy_migrations.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_migrations.ts#:~:text=SavedObjectAttributes) | - | | | [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [host_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/host_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject), [user_risk_score_dashboards.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/risk_score/prebuilt_saved_objects/saved_object/user_risk_score_dashboards.ts#:~:text=SavedObject) | - | +| | [timelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts#:~:text=migrations), [notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts#:~:text=migrations), [pinned_events.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts#:~:text=migrations), [legacy_saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts#:~:text=migrations), [saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts#:~:text=migrations) | - | | | [timelines.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts#:~:text=convertToMultiNamespaceTypeVersion), [notes.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts#:~:text=convertToMultiNamespaceTypeVersion), [pinned_events.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts#:~:text=convertToMultiNamespaceTypeVersion), [legacy_saved_object_mappings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | | | [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [lists.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/endpoint/lib/artifacts/lists.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_app_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/trusted_app_validator.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [trusted_app_validator.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/server/lists_integration/endpoint/validators/trusted_app_validator.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [policy_hooks.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_hooks.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID), [api_client.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/service/api_client.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_ID)+ 25 more | - | | | [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [constants.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/management/pages/trusted_apps/constants.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME), [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/scripts/endpoint/trusted_apps/index.ts#:~:text=ENDPOINT_TRUSTED_APPS_LIST_NAME) | - | @@ -1390,6 +1463,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [share_menu_manager.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/services/share_menu_manager.tsx#:~:text=KibanaThemeProvider), [share_menu_manager.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/services/share_menu_manager.tsx#:~:text=KibanaThemeProvider), [share_menu_manager.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/share/public/services/share_menu_manager.tsx#:~:text=KibanaThemeProvider) | - | +| | [register_url_service_saved_object_type.ts](https://github.com/elastic/kibana/tree/main/src/plugins/share/server/url_service/saved_objects/register_url_service_saved_object_type.ts#:~:text=migrations), [register_url_service_saved_object_type.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/share/server/url_service/saved_objects/register_url_service_saved_object_type.test.ts#:~:text=migrations), [register_url_service_saved_object_type.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/share/server/url_service/saved_objects/register_url_service_saved_object_type.test.ts#:~:text=migrations) | - | @@ -1411,6 +1485,8 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [spaces_usage_collector.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/plugin.ts#:~:text=license%24), [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/plugin.ts#:~:text=license%24), [spaces_usage_collector.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/usage_collection/spaces_usage_collector.test.ts#:~:text=license%24) | 8.8.0 | | | [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/legacy_urls/types.ts#:~:text=ResolvedSimpleSavedObject), [types.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/legacy_urls/types.ts#:~:text=ResolvedSimpleSavedObject) | - | | | [copy_to_space_flyout_internal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/public/copy_saved_objects_to_space/components/copy_to_space_flyout_internal.tsx#:~:text=createNewCopy) | - | +| | [saved_objects_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/saved_objects/saved_objects_service.ts#:~:text=migrations), [saved_objects_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/saved_objects/saved_objects_service.ts#:~:text=migrations) | - | +| | [saved_objects_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/spaces/server/saved_objects/saved_objects_service.ts#:~:text=schemas) | - | @@ -1434,6 +1510,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [stderr_logs.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/common/components/stderr_logs.tsx#:~:text=indexPatternId) | - | | | [toast_title.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx#:~:text=toMountPoint), [toast_title.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/state/monitor_list/toast_title.tsx#:~:text=toMountPoint), [browser_test_results.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx#:~:text=toMountPoint), [browser_test_results.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/test_now_mode/manual_test_run_mode/browser_test_results.tsx#:~:text=toMountPoint), [delete_monitor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx#:~:text=toMountPoint), [delete_monitor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx#:~:text=toMountPoint), [delete_monitor.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/monitors_page/management/monitor_list_table/delete_monitor.tsx#:~:text=toMountPoint), [delete_param.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx#:~:text=toMountPoint), [delete_param.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx#:~:text=toMountPoint), [delete_param.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/components/settings/global_params/delete_param.tsx#:~:text=toMountPoint)+ 6 more | - | | | [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=KibanaThemeProvider), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=KibanaThemeProvider), [synthetics_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/public/apps/synthetics/synthetics_app.tsx#:~:text=KibanaThemeProvider) | - | +| | [synthetics_monitor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/synthetics/server/saved_objects/synthetics_monitor.ts#:~:text=migrations) | - | @@ -1442,6 +1519,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes), [task_store.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/task_store.test.ts#:~:text=SavedObjectAttributes) | - | +| | [index.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/task_manager/server/saved_objects/index.ts#:~:text=migrations) | - | @@ -1479,7 +1557,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [bulk_get_maintenance_windows.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/apis/bulk_get_maintenance_windows.ts#:~:text=MaintenanceWindow), [bulk_get_maintenance_windows.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/apis/bulk_get_maintenance_windows.ts#:~:text=MaintenanceWindow), [bulk_get_maintenance_windows.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/apis/bulk_get_maintenance_windows.ts#:~:text=MaintenanceWindow), [bulk_get_maintenance_windows.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/apis/bulk_get_maintenance_windows.ts#:~:text=MaintenanceWindow), [bulk_get_maintenance_windows.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/apis/bulk_get_maintenance_windows.ts#:~:text=MaintenanceWindow), [use_bulk_get_maintenance_windows.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_get_maintenance_windows.tsx#:~:text=MaintenanceWindow), [use_bulk_get_maintenance_windows.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/hooks/use_bulk_get_maintenance_windows.tsx#:~:text=MaintenanceWindow), [tooltip_content.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/maintenance_windows/tooltip_content.tsx#:~:text=MaintenanceWindow), [tooltip_content.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/maintenance_windows/tooltip_content.tsx#:~:text=MaintenanceWindow), [cell.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/alerts_table/maintenance_windows/cell.tsx#:~:text=MaintenanceWindow)+ 11 more | - | | | [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_edit_response.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [use_bulk_operation_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_operation_toast.tsx#:~:text=toMountPoint), [rule_add.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx#:~:text=toMountPoint), [rule_add.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_add.tsx#:~:text=toMountPoint), [rule_edit.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx#:~:text=toMountPoint), [rule_edit.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_edit.tsx#:~:text=toMountPoint)+ 6 more | - | | | [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [connectors_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx#:~:text=KibanaThemeProvider), [alerts_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/alerts_app.tsx#:~:text=KibanaThemeProvider), [alerts_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/alerts_app.tsx#:~:text=KibanaThemeProvider), [alerts_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/alerts_app.tsx#:~:text=KibanaThemeProvider), [test_utils.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/test_utils.tsx#:~:text=KibanaThemeProvider)+ 2 more | - | -| | [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute) | - | +| | [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute), [rule_reducer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts#:~:text=SavedObjectAttribute) | - | @@ -1528,6 +1606,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [common.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/common.ts#:~:text=alertFactory), [status_check.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/status_check.ts#:~:text=alertFactory), [tls.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/tls.ts#:~:text=alertFactory), [duration_anomaly.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/alerts/duration_anomaly.ts#:~:text=alertFactory) | - | | | [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=toMountPoint), [alert_messages.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/lib/alert_types/alert_messages.tsx#:~:text=toMountPoint), [ml_flyout_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx#:~:text=toMountPoint), [ml_flyout_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx#:~:text=toMountPoint), [ml_flyout_container.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx#:~:text=toMountPoint) | - | | | [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=KibanaThemeProvider), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=KibanaThemeProvider), [uptime_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/public/legacy_uptime/app/uptime_app.tsx#:~:text=KibanaThemeProvider) | - | +| | [uptime_settings.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts#:~:text=migrations) | - | @@ -1626,6 +1705,8 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | | [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectAttribute), [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectAttribute) | - | | | [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectAttributes), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectAttributes), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=SavedObjectAttributes), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=SavedObjectAttributes), [visualize_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable_factory.tsx#:~:text=SavedObjectAttributes), [visualize_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable_factory.tsx#:~:text=SavedObjectAttributes) | - | | | [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectReference), [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectReference), [saved_visualization_references.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualization_references/saved_visualization_references.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [saved_visualize_utils.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_visualize_utils.ts#:~:text=SavedObjectReference), [visualize_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable_factory.tsx#:~:text=SavedObjectReference)+ 10 more | - | +| | [visualization.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/server/saved_objects/visualization.ts#:~:text=migrations) | - | +| | [visualization.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/server/saved_objects/visualization.ts#:~:text=schemas) | - | | | [visualization.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/server/saved_objects/visualization.ts#:~:text=convertToMultiNamespaceTypeVersion) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index c8af9a6ac646b..a866a642fc42a 100644 --- a/api_docs/deprecations_by_team.mdx +++ b/api_docs/deprecations_by_team.mdx @@ -7,7 +7,7 @@ id: kibDevDocsDeprecationsDueByTeam slug: /kibana-dev-docs/api-meta/deprecations-due-by-team title: Deprecated APIs due to be removed, by team description: Lists the teams that are referencing deprecated APIs with a remove by date. -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index a4c1584b7f239..e5117fe5c7dcf 100644 --- a/api_docs/dev_tools.mdx +++ b/api_docs/dev_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/devTools title: "devTools" image: https://source.unsplash.com/400x175/?github description: API docs for the devTools plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 674d720ba246e..22d4c9dba6697 100644 --- a/api_docs/discover.mdx +++ b/api_docs/discover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discover title: "discover" image: https://source.unsplash.com/400x175/?github description: API docs for the discover plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 388c3a26117ec..16495b49bafd5 100644 --- a/api_docs/discover_enhanced.mdx +++ b/api_docs/discover_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverEnhanced title: "discoverEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverEnhanced plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 8b7163031a7db..26bebc9cbacd9 100644 --- a/api_docs/ecs_data_quality_dashboard.mdx +++ b/api_docs/ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ecsDataQualityDashboard title: "ecsDataQualityDashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the ecsDataQualityDashboard plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/elastic_assistant.mdx b/api_docs/elastic_assistant.mdx index c9cefa9c1e39e..2cda3a63c593d 100644 --- a/api_docs/elastic_assistant.mdx +++ b/api_docs/elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/elasticAssistant title: "elasticAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the elasticAssistant plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 4c0b61e4b31f3..43408e599e6da 100644 --- a/api_docs/embeddable.mdx +++ b/api_docs/embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddable title: "embeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddable plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 2856f25e1caae..b4323c8b30221 100644 --- a/api_docs/embeddable_enhanced.mdx +++ b/api_docs/embeddable_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/embeddableEnhanced title: "embeddableEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the embeddableEnhanced plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddableEnhanced'] --- import embeddableEnhancedObj from './embeddable_enhanced.devdocs.json'; diff --git a/api_docs/encrypted_saved_objects.mdx b/api_docs/encrypted_saved_objects.mdx index 044f5f130a140..18c4dd654310e 100644 --- a/api_docs/encrypted_saved_objects.mdx +++ b/api_docs/encrypted_saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/encryptedSavedObjects title: "encryptedSavedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the encryptedSavedObjects plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'encryptedSavedObjects'] --- import encryptedSavedObjectsObj from './encrypted_saved_objects.devdocs.json'; diff --git a/api_docs/enterprise_search.mdx b/api_docs/enterprise_search.mdx index 7b6ce99b552e3..86291bb90656b 100644 --- a/api_docs/enterprise_search.mdx +++ b/api_docs/enterprise_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/enterpriseSearch title: "enterpriseSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the enterpriseSearch plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index ef3488cb95fe7..71263d7e09be4 100644 --- a/api_docs/es_ui_shared.mdx +++ b/api_docs/es_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esUiShared title: "esUiShared" image: https://source.unsplash.com/400x175/?github description: API docs for the esUiShared plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index 22eca9f5eb2eb..a5d677aedd1df 100644 --- a/api_docs/event_annotation.mdx +++ b/api_docs/event_annotation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotation title: "eventAnnotation" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotation plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.devdocs.json'; diff --git a/api_docs/event_annotation_listing.mdx b/api_docs/event_annotation_listing.mdx index fa4558122b8f2..16ebdcb12cf43 100644 --- a/api_docs/event_annotation_listing.mdx +++ b/api_docs/event_annotation_listing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventAnnotationListing title: "eventAnnotationListing" image: https://source.unsplash.com/400x175/?github description: API docs for the eventAnnotationListing plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotationListing'] --- import eventAnnotationListingObj from './event_annotation_listing.devdocs.json'; diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index a57738c7195eb..b21f7fa056374 100644 --- a/api_docs/event_log.mdx +++ b/api_docs/event_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/eventLog title: "eventLog" image: https://source.unsplash.com/400x175/?github description: API docs for the eventLog plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.devdocs.json'; diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 3425e18a42966..d87f1d87898c7 100644 --- a/api_docs/exploratory_view.mdx +++ b/api_docs/exploratory_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/exploratoryView title: "exploratoryView" image: https://source.unsplash.com/400x175/?github description: API docs for the exploratoryView plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'exploratoryView'] --- import exploratoryViewObj from './exploratory_view.devdocs.json'; diff --git a/api_docs/expression_error.mdx b/api_docs/expression_error.mdx index a9c826f704de0..1d68b5d994ded 100644 --- a/api_docs/expression_error.mdx +++ b/api_docs/expression_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionError title: "expressionError" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionError plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 664604084e3e6..f53ce837b4cbf 100644 --- a/api_docs/expression_gauge.mdx +++ b/api_docs/expression_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionGauge title: "expressionGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionGauge plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index 28ab54cdd1f3f..eda2439ca9ddc 100644 --- a/api_docs/expression_heatmap.mdx +++ b/api_docs/expression_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionHeatmap title: "expressionHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionHeatmap plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionHeatmap'] --- import expressionHeatmapObj from './expression_heatmap.devdocs.json'; diff --git a/api_docs/expression_image.mdx b/api_docs/expression_image.mdx index 8ff6b5b963fa3..5d8ebc48f212d 100644 --- a/api_docs/expression_image.mdx +++ b/api_docs/expression_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionImage title: "expressionImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionImage plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionImage'] --- import expressionImageObj from './expression_image.devdocs.json'; diff --git a/api_docs/expression_legacy_metric_vis.mdx b/api_docs/expression_legacy_metric_vis.mdx index 2337566689ce1..6b56c97d0b594 100644 --- a/api_docs/expression_legacy_metric_vis.mdx +++ b/api_docs/expression_legacy_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionLegacyMetricVis title: "expressionLegacyMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionLegacyMetricVis plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionLegacyMetricVis'] --- import expressionLegacyMetricVisObj from './expression_legacy_metric_vis.devdocs.json'; diff --git a/api_docs/expression_metric.mdx b/api_docs/expression_metric.mdx index 0ccf47d0567e5..0a8b0d87cd9c1 100644 --- a/api_docs/expression_metric.mdx +++ b/api_docs/expression_metric.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetric title: "expressionMetric" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetric plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 0bd0ca128d98f..a53ff4cc468e2 100644 --- a/api_docs/expression_metric_vis.mdx +++ b/api_docs/expression_metric_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionMetricVis title: "expressionMetricVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionMetricVis plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetricVis'] --- import expressionMetricVisObj from './expression_metric_vis.devdocs.json'; diff --git a/api_docs/expression_partition_vis.mdx b/api_docs/expression_partition_vis.mdx index fff707dfa9f95..e020e777a426a 100644 --- a/api_docs/expression_partition_vis.mdx +++ b/api_docs/expression_partition_vis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionPartitionVis title: "expressionPartitionVis" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionPartitionVis plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionPartitionVis'] --- import expressionPartitionVisObj from './expression_partition_vis.devdocs.json'; diff --git a/api_docs/expression_repeat_image.mdx b/api_docs/expression_repeat_image.mdx index 6a6f5629d6119..466ae3c800c00 100644 --- a/api_docs/expression_repeat_image.mdx +++ b/api_docs/expression_repeat_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRepeatImage title: "expressionRepeatImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRepeatImage plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRepeatImage'] --- import expressionRepeatImageObj from './expression_repeat_image.devdocs.json'; diff --git a/api_docs/expression_reveal_image.mdx b/api_docs/expression_reveal_image.mdx index 4529d461be3f2..7333c69d10fe8 100644 --- a/api_docs/expression_reveal_image.mdx +++ b/api_docs/expression_reveal_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionRevealImage title: "expressionRevealImage" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionRevealImage plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionRevealImage'] --- import expressionRevealImageObj from './expression_reveal_image.devdocs.json'; diff --git a/api_docs/expression_shape.mdx b/api_docs/expression_shape.mdx index 71290946aa638..536a0fc7e5f31 100644 --- a/api_docs/expression_shape.mdx +++ b/api_docs/expression_shape.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionShape title: "expressionShape" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionShape plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionShape'] --- import expressionShapeObj from './expression_shape.devdocs.json'; diff --git a/api_docs/expression_tagcloud.mdx b/api_docs/expression_tagcloud.mdx index 45a87a7202738..1b5e17ef8c976 100644 --- a/api_docs/expression_tagcloud.mdx +++ b/api_docs/expression_tagcloud.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionTagcloud title: "expressionTagcloud" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionTagcloud plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index 52ce40a10d2c0..fc53199cf9f50 100644 --- a/api_docs/expression_x_y.mdx +++ b/api_docs/expression_x_y.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressionXY title: "expressionXY" image: https://source.unsplash.com/400x175/?github description: API docs for the expressionXY plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionXY'] --- import expressionXYObj from './expression_x_y.devdocs.json'; diff --git a/api_docs/expressions.mdx b/api_docs/expressions.mdx index f08448b722c90..c2d6e143b5845 100644 --- a/api_docs/expressions.mdx +++ b/api_docs/expressions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/expressions title: "expressions" image: https://source.unsplash.com/400x175/?github description: API docs for the expressions plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressions'] --- import expressionsObj from './expressions.devdocs.json'; diff --git a/api_docs/features.mdx b/api_docs/features.mdx index 5ab1f52a5a8b7..d6377a99ffda8 100644 --- a/api_docs/features.mdx +++ b/api_docs/features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/features title: "features" image: https://source.unsplash.com/400x175/?github description: API docs for the features plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'features'] --- import featuresObj from './features.devdocs.json'; diff --git a/api_docs/field_formats.mdx b/api_docs/field_formats.mdx index 73fc277cf61ed..78671d4ca1edd 100644 --- a/api_docs/field_formats.mdx +++ b/api_docs/field_formats.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldFormats title: "fieldFormats" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldFormats plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index b7a6124b8c827..7f7f9df12f7f3 100644 --- a/api_docs/file_upload.mdx +++ b/api_docs/file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fileUpload title: "fileUpload" image: https://source.unsplash.com/400x175/?github description: API docs for the fileUpload plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 01191d1bacd8f..885fb9280e599 100644 --- a/api_docs/files.mdx +++ b/api_docs/files.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/files title: "files" image: https://source.unsplash.com/400x175/?github description: API docs for the files plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'files'] --- import filesObj from './files.devdocs.json'; diff --git a/api_docs/files_management.mdx b/api_docs/files_management.mdx index 05fb6aaf80e76..5e68522ddeb01 100644 --- a/api_docs/files_management.mdx +++ b/api_docs/files_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/filesManagement title: "filesManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the filesManagement plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'filesManagement'] --- import filesManagementObj from './files_management.devdocs.json'; diff --git a/api_docs/fleet.mdx b/api_docs/fleet.mdx index c0c42d858d83a..02e4416ba9926 100644 --- a/api_docs/fleet.mdx +++ b/api_docs/fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fleet title: "fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the fleet plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fleet'] --- import fleetObj from './fleet.devdocs.json'; diff --git a/api_docs/global_search.mdx b/api_docs/global_search.mdx index 6acbe751e7784..3189cebc134e4 100644 --- a/api_docs/global_search.mdx +++ b/api_docs/global_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/globalSearch title: "globalSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the globalSearch plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'globalSearch'] --- import globalSearchObj from './global_search.devdocs.json'; diff --git a/api_docs/guided_onboarding.mdx b/api_docs/guided_onboarding.mdx index a691b883eb797..07d1eebdf3edb 100644 --- a/api_docs/guided_onboarding.mdx +++ b/api_docs/guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/guidedOnboarding title: "guidedOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the guidedOnboarding plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'guidedOnboarding'] --- import guidedOnboardingObj from './guided_onboarding.devdocs.json'; diff --git a/api_docs/home.mdx b/api_docs/home.mdx index b949473fbcf77..e878d867f2dd6 100644 --- a/api_docs/home.mdx +++ b/api_docs/home.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/home title: "home" image: https://source.unsplash.com/400x175/?github description: API docs for the home plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'home'] --- import homeObj from './home.devdocs.json'; diff --git a/api_docs/image_embeddable.mdx b/api_docs/image_embeddable.mdx index ca7fdb74dcbed..44d015ecf236c 100644 --- a/api_docs/image_embeddable.mdx +++ b/api_docs/image_embeddable.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/imageEmbeddable title: "imageEmbeddable" image: https://source.unsplash.com/400x175/?github description: API docs for the imageEmbeddable plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'imageEmbeddable'] --- import imageEmbeddableObj from './image_embeddable.devdocs.json'; diff --git a/api_docs/index_lifecycle_management.mdx b/api_docs/index_lifecycle_management.mdx index 0b25be10b4049..13f124c3843ce 100644 --- a/api_docs/index_lifecycle_management.mdx +++ b/api_docs/index_lifecycle_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexLifecycleManagement title: "indexLifecycleManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexLifecycleManagement plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 8e945f7cd8ce2..9204d3f82da18 100644 --- a/api_docs/index_management.mdx +++ b/api_docs/index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/indexManagement title: "indexManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the indexManagement plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index ce74b3b3559e0..0b35e5f7721dd 100644 --- a/api_docs/infra.mdx +++ b/api_docs/infra.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/infra title: "infra" image: https://source.unsplash.com/400x175/?github description: API docs for the infra plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/ingest_pipelines.mdx b/api_docs/ingest_pipelines.mdx index 81b6c524bb10d..b9c7e3da3d59b 100644 --- a/api_docs/ingest_pipelines.mdx +++ b/api_docs/ingest_pipelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ingestPipelines title: "ingestPipelines" image: https://source.unsplash.com/400x175/?github description: API docs for the ingestPipelines plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ingestPipelines'] --- import ingestPipelinesObj from './ingest_pipelines.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index f415cbf188e53..e0ae1936b1164 100644 --- a/api_docs/inspector.mdx +++ b/api_docs/inspector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inspector title: "inspector" image: https://source.unsplash.com/400x175/?github description: API docs for the inspector plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index 517a0e3cd1d42..00269ee74fa6b 100644 --- a/api_docs/interactive_setup.mdx +++ b/api_docs/interactive_setup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/interactiveSetup title: "interactiveSetup" image: https://source.unsplash.com/400x175/?github description: API docs for the interactiveSetup plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 4b3ed636f97d0..56e704c139ba5 100644 --- a/api_docs/kbn_ace.mdx +++ b/api_docs/kbn_ace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ace title: "@kbn/ace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ace plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_actions_types.mdx b/api_docs/kbn_actions_types.mdx index 5a4e6d8c53d92..49fca4eff4f97 100644 --- a/api_docs/kbn_actions_types.mdx +++ b/api_docs/kbn_actions_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-actions-types title: "@kbn/actions-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/actions-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index d44e75a1d2368..666449aa54ee5 100644 --- a/api_docs/kbn_aiops_components.mdx +++ b/api_docs/kbn_aiops_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-components title: "@kbn/aiops-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-components plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 8d6aab8d5d3a3..0ba44348e03c0 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 03b1ac933155a..25f71418db3d5 100644 --- a/api_docs/kbn_alerting_api_integration_helpers.mdx +++ b/api_docs/kbn_alerting_api_integration_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-api-integration-helpers title: "@kbn/alerting-api-integration-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-api-integration-helpers plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-api-integration-helpers'] --- import kbnAlertingApiIntegrationHelpersObj from './kbn_alerting_api_integration_helpers.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 3cf2a9dfb9712..49ad67ba52c4d 100644 --- a/api_docs/kbn_alerting_state_types.mdx +++ b/api_docs/kbn_alerting_state_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-state-types title: "@kbn/alerting-state-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-state-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerting_types.mdx b/api_docs/kbn_alerting_types.mdx index 55e7489dfee14..79785d7d434ad 100644 --- a/api_docs/kbn_alerting_types.mdx +++ b/api_docs/kbn_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-types title: "@kbn/alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-types'] --- import kbnAlertingTypesObj from './kbn_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index 28f2a08780883..2b9911d72798b 100644 --- a/api_docs/kbn_alerts_as_data_utils.mdx +++ b/api_docs/kbn_alerts_as_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-as-data-utils title: "@kbn/alerts-as-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-as-data-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index ebe46c234bd84..391dc439809ec 100644 --- a/api_docs/kbn_alerts_ui_shared.mdx +++ b/api_docs/kbn_alerts_ui_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-ui-shared title: "@kbn/alerts-ui-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-ui-shared plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-ui-shared'] --- import kbnAlertsUiSharedObj from './kbn_alerts_ui_shared.devdocs.json'; diff --git a/api_docs/kbn_analytics.mdx b/api_docs/kbn_analytics.mdx index e2008f645ca1d..d9944a48beb76 100644 --- a/api_docs/kbn_analytics.mdx +++ b/api_docs/kbn_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics title: "@kbn/analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 01b03fd1897b5..9d066c3639de3 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index c12794c138d59..ad188a08a8f7c 100644 --- a/api_docs/kbn_analytics_collection_utils.mdx +++ b/api_docs/kbn_analytics_collection_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-collection-utils title: "@kbn/analytics-collection-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-collection-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index dfc5903296b6c..4ec17e0b795da 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index be0ae96477491..21b89602fb000 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index 98216bc91d08c..6562a412799ee 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index b0e108f8b063d..7c369bffa881d 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index d738e7e4cdbe7..6e4382a283957 100644 --- a/api_docs/kbn_apm_config_loader.mdx +++ b/api_docs/kbn_apm_config_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-config-loader title: "@kbn/apm-config-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-config-loader plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 899f7b461160f..b64c1a5c7c8ce 100644 --- a/api_docs/kbn_apm_synthtrace.mdx +++ b/api_docs/kbn_apm_synthtrace.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace title: "@kbn/apm-synthtrace" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace'] --- import kbnApmSynthtraceObj from './kbn_apm_synthtrace.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace_client.mdx b/api_docs/kbn_apm_synthtrace_client.mdx index 14632bc47e922..5206e507701dc 100644 --- a/api_docs/kbn_apm_synthtrace_client.mdx +++ b/api_docs/kbn_apm_synthtrace_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-synthtrace-client title: "@kbn/apm-synthtrace-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-synthtrace-client plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 83564f354d2be..01496d6623127 100644 --- a/api_docs/kbn_apm_utils.mdx +++ b/api_docs/kbn_apm_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-utils title: "@kbn/apm-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 3620f3fb9f31c..0f528c0688816 100644 --- a/api_docs/kbn_axe_config.mdx +++ b/api_docs/kbn_axe_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-axe-config title: "@kbn/axe-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/axe-config plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_bfetch_error.mdx b/api_docs/kbn_bfetch_error.mdx index 2012457b87041..d6d6720aabd92 100644 --- a/api_docs/kbn_bfetch_error.mdx +++ b/api_docs/kbn_bfetch_error.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-bfetch-error title: "@kbn/bfetch-error" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/bfetch-error plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/bfetch-error'] --- import kbnBfetchErrorObj from './kbn_bfetch_error.devdocs.json'; diff --git a/api_docs/kbn_calculate_auto.mdx b/api_docs/kbn_calculate_auto.mdx index 62ac787665ec0..1d6b12dcbaabd 100644 --- a/api_docs/kbn_calculate_auto.mdx +++ b/api_docs/kbn_calculate_auto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-auto title: "@kbn/calculate-auto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-auto plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-auto'] --- import kbnCalculateAutoObj from './kbn_calculate_auto.devdocs.json'; diff --git a/api_docs/kbn_calculate_width_from_char_count.mdx b/api_docs/kbn_calculate_width_from_char_count.mdx index f2b3648f51f1e..0994d0ebbe19d 100644 --- a/api_docs/kbn_calculate_width_from_char_count.mdx +++ b/api_docs/kbn_calculate_width_from_char_count.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-calculate-width-from-char-count title: "@kbn/calculate-width-from-char-count" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/calculate-width-from-char-count plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/calculate-width-from-char-count'] --- import kbnCalculateWidthFromCharCountObj from './kbn_calculate_width_from_char_count.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 3f43d59cc604e..30ab3823e774e 100644 --- a/api_docs/kbn_cases_components.mdx +++ b/api_docs/kbn_cases_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cases-components title: "@kbn/cases-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cases-components plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cases-components'] --- import kbnCasesComponentsObj from './kbn_cases_components.devdocs.json'; diff --git a/api_docs/kbn_cell_actions.mdx b/api_docs/kbn_cell_actions.mdx index 9e1145a58aa6d..915456e154e75 100644 --- a/api_docs/kbn_cell_actions.mdx +++ b/api_docs/kbn_cell_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cell-actions title: "@kbn/cell-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cell-actions plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cell-actions'] --- import kbnCellActionsObj from './kbn_cell_actions.devdocs.json'; diff --git a/api_docs/kbn_chart_expressions_common.mdx b/api_docs/kbn_chart_expressions_common.mdx index 16919daa9ce00..e682954686df0 100644 --- a/api_docs/kbn_chart_expressions_common.mdx +++ b/api_docs/kbn_chart_expressions_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-expressions-common title: "@kbn/chart-expressions-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-expressions-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index 46b654569565b..95aca98a7080b 100644 --- a/api_docs/kbn_chart_icons.mdx +++ b/api_docs/kbn_chart_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-chart-icons title: "@kbn/chart-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/chart-icons plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index a594f238233fa..694af348c1c6e 100644 --- a/api_docs/kbn_ci_stats_core.mdx +++ b/api_docs/kbn_ci_stats_core.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-core title: "@kbn/ci-stats-core" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-core plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-core'] --- import kbnCiStatsCoreObj from './kbn_ci_stats_core.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_performance_metrics.mdx b/api_docs/kbn_ci_stats_performance_metrics.mdx index 14fb90475818f..a204a81abea89 100644 --- a/api_docs/kbn_ci_stats_performance_metrics.mdx +++ b/api_docs/kbn_ci_stats_performance_metrics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-performance-metrics title: "@kbn/ci-stats-performance-metrics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-performance-metrics plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-performance-metrics'] --- import kbnCiStatsPerformanceMetricsObj from './kbn_ci_stats_performance_metrics.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_reporter.mdx b/api_docs/kbn_ci_stats_reporter.mdx index eff05f2ab6be9..33789388f5c45 100644 --- a/api_docs/kbn_ci_stats_reporter.mdx +++ b/api_docs/kbn_ci_stats_reporter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ci-stats-reporter title: "@kbn/ci-stats-reporter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ci-stats-reporter plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ci-stats-reporter'] --- import kbnCiStatsReporterObj from './kbn_ci_stats_reporter.devdocs.json'; diff --git a/api_docs/kbn_cli_dev_mode.mdx b/api_docs/kbn_cli_dev_mode.mdx index 4f7c749d1cf67..fe664524aa12c 100644 --- a/api_docs/kbn_cli_dev_mode.mdx +++ b/api_docs/kbn_cli_dev_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cli-dev-mode title: "@kbn/cli-dev-mode" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cli-dev-mode plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cli-dev-mode'] --- import kbnCliDevModeObj from './kbn_cli_dev_mode.devdocs.json'; diff --git a/api_docs/kbn_code_editor.mdx b/api_docs/kbn_code_editor.mdx index b03254785167e..b099541e5a18b 100644 --- a/api_docs/kbn_code_editor.mdx +++ b/api_docs/kbn_code_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor title: "@kbn/code-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mock.mdx b/api_docs/kbn_code_editor_mock.mdx index cd2913f4e8b79..497be11d220ff 100644 --- a/api_docs/kbn_code_editor_mock.mdx +++ b/api_docs/kbn_code_editor_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mock title: "@kbn/code-editor-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mock plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mock'] --- import kbnCodeEditorMockObj from './kbn_code_editor_mock.devdocs.json'; diff --git a/api_docs/kbn_code_owners.mdx b/api_docs/kbn_code_owners.mdx index 70eaeeb24155a..680dfb9860fcb 100644 --- a/api_docs/kbn_code_owners.mdx +++ b/api_docs/kbn_code_owners.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-owners title: "@kbn/code-owners" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-owners plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-owners'] --- import kbnCodeOwnersObj from './kbn_code_owners.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 6e66fbd7079cf..222d928441d68 100644 --- a/api_docs/kbn_coloring.mdx +++ b/api_docs/kbn_coloring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-coloring title: "@kbn/coloring" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/coloring plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/coloring'] --- import kbnColoringObj from './kbn_coloring.devdocs.json'; diff --git a/api_docs/kbn_config.mdx b/api_docs/kbn_config.mdx index c1057899c2b0d..6e5b20cbeda76 100644 --- a/api_docs/kbn_config.mdx +++ b/api_docs/kbn_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config title: "@kbn/config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config'] --- import kbnConfigObj from './kbn_config.devdocs.json'; diff --git a/api_docs/kbn_config_mocks.mdx b/api_docs/kbn_config_mocks.mdx index d64dc6ff61bf4..530a498ab71c0 100644 --- a/api_docs/kbn_config_mocks.mdx +++ b/api_docs/kbn_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-mocks title: "@kbn/config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-mocks'] --- import kbnConfigMocksObj from './kbn_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_config_schema.mdx b/api_docs/kbn_config_schema.mdx index 994bdb93790ed..bfc8ff62659a6 100644 --- a/api_docs/kbn_config_schema.mdx +++ b/api_docs/kbn_config_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-config-schema title: "@kbn/config-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/config-schema plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/config-schema'] --- import kbnConfigSchemaObj from './kbn_config_schema.devdocs.json'; diff --git a/api_docs/kbn_content_management_content_editor.mdx b/api_docs/kbn_content_management_content_editor.mdx index 8c6a0422243b8..cad29a84672bc 100644 --- a/api_docs/kbn_content_management_content_editor.mdx +++ b/api_docs/kbn_content_management_content_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-content-editor title: "@kbn/content-management-content-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-content-editor plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 8101dd956668f..62315366780f7 100644 --- a/api_docs/kbn_content_management_tabbed_table_list_view.mdx +++ b/api_docs/kbn_content_management_tabbed_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-tabbed-table-list-view title: "@kbn/content-management-tabbed-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-tabbed-table-list-view plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-tabbed-table-list-view'] --- import kbnContentManagementTabbedTableListViewObj from './kbn_content_management_tabbed_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view.mdx b/api_docs/kbn_content_management_table_list_view.mdx index 150b4c570028b..aaf3ec5f2ef22 100644 --- a/api_docs/kbn_content_management_table_list_view.mdx +++ b/api_docs/kbn_content_management_table_list_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view title: "@kbn/content-management-table-list-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view'] --- import kbnContentManagementTableListViewObj from './kbn_content_management_table_list_view.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_common.mdx b/api_docs/kbn_content_management_table_list_view_common.mdx index dcfd69f3871c7..0d8fc9957b3d2 100644 --- a/api_docs/kbn_content_management_table_list_view_common.mdx +++ b/api_docs/kbn_content_management_table_list_view_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-common title: "@kbn/content-management-table-list-view-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-common'] --- import kbnContentManagementTableListViewCommonObj from './kbn_content_management_table_list_view_common.devdocs.json'; diff --git a/api_docs/kbn_content_management_table_list_view_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index bfc540e4f154c..028139cce14e4 100644 --- a/api_docs/kbn_content_management_table_list_view_table.mdx +++ b/api_docs/kbn_content_management_table_list_view_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-table-list-view-table title: "@kbn/content-management-table-list-view-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-table-list-view-table plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 77ee77d61c10b..062da2de3a638 100644 --- a/api_docs/kbn_content_management_utils.mdx +++ b/api_docs/kbn_content_management_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-utils title: "@kbn/content-management-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index facb9b63f8ad5..3fa5cc0b6a6eb 100644 --- a/api_docs/kbn_core_analytics_browser.mdx +++ b/api_docs/kbn_core_analytics_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser title: "@kbn/core-analytics-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser'] --- import kbnCoreAnalyticsBrowserObj from './kbn_core_analytics_browser.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_internal.mdx b/api_docs/kbn_core_analytics_browser_internal.mdx index 836f356d5ee7d..9736580cf5017 100644 --- a/api_docs/kbn_core_analytics_browser_internal.mdx +++ b/api_docs/kbn_core_analytics_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-internal title: "@kbn/core-analytics-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-internal'] --- import kbnCoreAnalyticsBrowserInternalObj from './kbn_core_analytics_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_browser_mocks.mdx b/api_docs/kbn_core_analytics_browser_mocks.mdx index 1fc6c7b13d262..66f1259269dec 100644 --- a/api_docs/kbn_core_analytics_browser_mocks.mdx +++ b/api_docs/kbn_core_analytics_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-browser-mocks title: "@kbn/core-analytics-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-browser-mocks'] --- import kbnCoreAnalyticsBrowserMocksObj from './kbn_core_analytics_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server.mdx b/api_docs/kbn_core_analytics_server.mdx index 5216c72e031dd..21ebc20f36051 100644 --- a/api_docs/kbn_core_analytics_server.mdx +++ b/api_docs/kbn_core_analytics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server title: "@kbn/core-analytics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server'] --- import kbnCoreAnalyticsServerObj from './kbn_core_analytics_server.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_internal.mdx b/api_docs/kbn_core_analytics_server_internal.mdx index b8b595cd1e277..898cba054efb1 100644 --- a/api_docs/kbn_core_analytics_server_internal.mdx +++ b/api_docs/kbn_core_analytics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-internal title: "@kbn/core-analytics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-internal'] --- import kbnCoreAnalyticsServerInternalObj from './kbn_core_analytics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_analytics_server_mocks.mdx b/api_docs/kbn_core_analytics_server_mocks.mdx index da8dd9f6cd955..de99fdfaab054 100644 --- a/api_docs/kbn_core_analytics_server_mocks.mdx +++ b/api_docs/kbn_core_analytics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-analytics-server-mocks title: "@kbn/core-analytics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-analytics-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-analytics-server-mocks'] --- import kbnCoreAnalyticsServerMocksObj from './kbn_core_analytics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser.mdx b/api_docs/kbn_core_application_browser.mdx index b06e11d74c13f..35ff236e94928 100644 --- a/api_docs/kbn_core_application_browser.mdx +++ b/api_docs/kbn_core_application_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser title: "@kbn/core-application-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser'] --- import kbnCoreApplicationBrowserObj from './kbn_core_application_browser.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_internal.mdx b/api_docs/kbn_core_application_browser_internal.mdx index 816f16c77ece9..0b8963d12d8ca 100644 --- a/api_docs/kbn_core_application_browser_internal.mdx +++ b/api_docs/kbn_core_application_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-internal title: "@kbn/core-application-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-internal'] --- import kbnCoreApplicationBrowserInternalObj from './kbn_core_application_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_application_browser_mocks.mdx b/api_docs/kbn_core_application_browser_mocks.mdx index 56114928b5b76..09945b6bfbc5d 100644 --- a/api_docs/kbn_core_application_browser_mocks.mdx +++ b/api_docs/kbn_core_application_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-browser-mocks title: "@kbn/core-application-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-browser-mocks'] --- import kbnCoreApplicationBrowserMocksObj from './kbn_core_application_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_application_common.mdx b/api_docs/kbn_core_application_common.mdx index 53016744a661b..c49d30b5b18a5 100644 --- a/api_docs/kbn_core_application_common.mdx +++ b/api_docs/kbn_core_application_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-application-common title: "@kbn/core-application-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-application-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-application-common'] --- import kbnCoreApplicationCommonObj from './kbn_core_application_common.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_internal.mdx b/api_docs/kbn_core_apps_browser_internal.mdx index 7eec0815dfabb..245b6c20fc331 100644 --- a/api_docs/kbn_core_apps_browser_internal.mdx +++ b/api_docs/kbn_core_apps_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-internal title: "@kbn/core-apps-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-internal'] --- import kbnCoreAppsBrowserInternalObj from './kbn_core_apps_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_apps_browser_mocks.mdx b/api_docs/kbn_core_apps_browser_mocks.mdx index 5707098a0869e..02f6b11a916a9 100644 --- a/api_docs/kbn_core_apps_browser_mocks.mdx +++ b/api_docs/kbn_core_apps_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-browser-mocks title: "@kbn/core-apps-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-browser-mocks'] --- import kbnCoreAppsBrowserMocksObj from './kbn_core_apps_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_apps_server_internal.mdx b/api_docs/kbn_core_apps_server_internal.mdx index c7e83ec78902a..f36a212938afd 100644 --- a/api_docs/kbn_core_apps_server_internal.mdx +++ b/api_docs/kbn_core_apps_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-apps-server-internal title: "@kbn/core-apps-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-apps-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-apps-server-internal'] --- import kbnCoreAppsServerInternalObj from './kbn_core_apps_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_browser_mocks.mdx b/api_docs/kbn_core_base_browser_mocks.mdx index 8274b62810670..971f0d3bbd5ba 100644 --- a/api_docs/kbn_core_base_browser_mocks.mdx +++ b/api_docs/kbn_core_base_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-browser-mocks title: "@kbn/core-base-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-browser-mocks'] --- import kbnCoreBaseBrowserMocksObj from './kbn_core_base_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_base_common.mdx b/api_docs/kbn_core_base_common.mdx index df2192f0cf821..c9bb1bd4fe232 100644 --- a/api_docs/kbn_core_base_common.mdx +++ b/api_docs/kbn_core_base_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-common title: "@kbn/core-base-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-common'] --- import kbnCoreBaseCommonObj from './kbn_core_base_common.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_internal.mdx b/api_docs/kbn_core_base_server_internal.mdx index 146223bf79d85..64d8858f5dcc3 100644 --- a/api_docs/kbn_core_base_server_internal.mdx +++ b/api_docs/kbn_core_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-internal title: "@kbn/core-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-internal'] --- import kbnCoreBaseServerInternalObj from './kbn_core_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_base_server_mocks.mdx b/api_docs/kbn_core_base_server_mocks.mdx index fd58e78e9d5e1..3730c77239586 100644 --- a/api_docs/kbn_core_base_server_mocks.mdx +++ b/api_docs/kbn_core_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-base-server-mocks title: "@kbn/core-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-base-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-base-server-mocks'] --- import kbnCoreBaseServerMocksObj from './kbn_core_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_browser_mocks.mdx b/api_docs/kbn_core_capabilities_browser_mocks.mdx index f76445a9982c7..46deab5b6c157 100644 --- a/api_docs/kbn_core_capabilities_browser_mocks.mdx +++ b/api_docs/kbn_core_capabilities_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-browser-mocks title: "@kbn/core-capabilities-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-browser-mocks'] --- import kbnCoreCapabilitiesBrowserMocksObj from './kbn_core_capabilities_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_common.mdx b/api_docs/kbn_core_capabilities_common.mdx index 79b8c0d5e8e34..f0457ec9d3584 100644 --- a/api_docs/kbn_core_capabilities_common.mdx +++ b/api_docs/kbn_core_capabilities_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-common title: "@kbn/core-capabilities-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-common'] --- import kbnCoreCapabilitiesCommonObj from './kbn_core_capabilities_common.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server.mdx b/api_docs/kbn_core_capabilities_server.mdx index ffd875ed30265..7783fd51bf87a 100644 --- a/api_docs/kbn_core_capabilities_server.mdx +++ b/api_docs/kbn_core_capabilities_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server title: "@kbn/core-capabilities-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server'] --- import kbnCoreCapabilitiesServerObj from './kbn_core_capabilities_server.devdocs.json'; diff --git a/api_docs/kbn_core_capabilities_server_mocks.mdx b/api_docs/kbn_core_capabilities_server_mocks.mdx index 3a1851b890984..b6bef0ab8ca34 100644 --- a/api_docs/kbn_core_capabilities_server_mocks.mdx +++ b/api_docs/kbn_core_capabilities_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-capabilities-server-mocks title: "@kbn/core-capabilities-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-capabilities-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-capabilities-server-mocks'] --- import kbnCoreCapabilitiesServerMocksObj from './kbn_core_capabilities_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser.mdx b/api_docs/kbn_core_chrome_browser.mdx index ea9bcbea5c8c0..d4d8b5b980ea8 100644 --- a/api_docs/kbn_core_chrome_browser.mdx +++ b/api_docs/kbn_core_chrome_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser title: "@kbn/core-chrome-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser'] --- import kbnCoreChromeBrowserObj from './kbn_core_chrome_browser.devdocs.json'; diff --git a/api_docs/kbn_core_chrome_browser_mocks.mdx b/api_docs/kbn_core_chrome_browser_mocks.mdx index c5f0c9ee6a8b2..326f412054e74 100644 --- a/api_docs/kbn_core_chrome_browser_mocks.mdx +++ b/api_docs/kbn_core_chrome_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-chrome-browser-mocks title: "@kbn/core-chrome-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-chrome-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-chrome-browser-mocks'] --- import kbnCoreChromeBrowserMocksObj from './kbn_core_chrome_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_config_server_internal.mdx b/api_docs/kbn_core_config_server_internal.mdx index 4ca3735c75eb4..13c0236357725 100644 --- a/api_docs/kbn_core_config_server_internal.mdx +++ b/api_docs/kbn_core_config_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-config-server-internal title: "@kbn/core-config-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-config-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-config-server-internal'] --- import kbnCoreConfigServerInternalObj from './kbn_core_config_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser.mdx b/api_docs/kbn_core_custom_branding_browser.mdx index 3e1ed9d9bfdb6..17f489f53d2fc 100644 --- a/api_docs/kbn_core_custom_branding_browser.mdx +++ b/api_docs/kbn_core_custom_branding_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser title: "@kbn/core-custom-branding-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser'] --- import kbnCoreCustomBrandingBrowserObj from './kbn_core_custom_branding_browser.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_internal.mdx b/api_docs/kbn_core_custom_branding_browser_internal.mdx index 166b73aebe259..6dcc3fe6f47ee 100644 --- a/api_docs/kbn_core_custom_branding_browser_internal.mdx +++ b/api_docs/kbn_core_custom_branding_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-internal title: "@kbn/core-custom-branding-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-internal'] --- import kbnCoreCustomBrandingBrowserInternalObj from './kbn_core_custom_branding_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_browser_mocks.mdx b/api_docs/kbn_core_custom_branding_browser_mocks.mdx index 8b6270187cf33..0f3c2564b6842 100644 --- a/api_docs/kbn_core_custom_branding_browser_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-browser-mocks title: "@kbn/core-custom-branding-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-browser-mocks'] --- import kbnCoreCustomBrandingBrowserMocksObj from './kbn_core_custom_branding_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_common.mdx b/api_docs/kbn_core_custom_branding_common.mdx index bfc41d5b2895b..fe091d8410f2b 100644 --- a/api_docs/kbn_core_custom_branding_common.mdx +++ b/api_docs/kbn_core_custom_branding_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-common title: "@kbn/core-custom-branding-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-common'] --- import kbnCoreCustomBrandingCommonObj from './kbn_core_custom_branding_common.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server.mdx b/api_docs/kbn_core_custom_branding_server.mdx index 9eb88052b135a..e96754983054e 100644 --- a/api_docs/kbn_core_custom_branding_server.mdx +++ b/api_docs/kbn_core_custom_branding_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server title: "@kbn/core-custom-branding-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server'] --- import kbnCoreCustomBrandingServerObj from './kbn_core_custom_branding_server.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_internal.mdx b/api_docs/kbn_core_custom_branding_server_internal.mdx index 069acbb6ff409..6e51612d0a1e6 100644 --- a/api_docs/kbn_core_custom_branding_server_internal.mdx +++ b/api_docs/kbn_core_custom_branding_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-internal title: "@kbn/core-custom-branding-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-internal'] --- import kbnCoreCustomBrandingServerInternalObj from './kbn_core_custom_branding_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_custom_branding_server_mocks.mdx b/api_docs/kbn_core_custom_branding_server_mocks.mdx index cf11a948c664d..7c9047323a3ff 100644 --- a/api_docs/kbn_core_custom_branding_server_mocks.mdx +++ b/api_docs/kbn_core_custom_branding_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-custom-branding-server-mocks title: "@kbn/core-custom-branding-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-custom-branding-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-custom-branding-server-mocks'] --- import kbnCoreCustomBrandingServerMocksObj from './kbn_core_custom_branding_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser.mdx b/api_docs/kbn_core_deprecations_browser.mdx index 8739a45b2adc5..a30d17671fbbb 100644 --- a/api_docs/kbn_core_deprecations_browser.mdx +++ b/api_docs/kbn_core_deprecations_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser title: "@kbn/core-deprecations-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser'] --- import kbnCoreDeprecationsBrowserObj from './kbn_core_deprecations_browser.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_internal.mdx b/api_docs/kbn_core_deprecations_browser_internal.mdx index ec4d2e3569285..e2e4174191bbc 100644 --- a/api_docs/kbn_core_deprecations_browser_internal.mdx +++ b/api_docs/kbn_core_deprecations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-internal title: "@kbn/core-deprecations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-internal'] --- import kbnCoreDeprecationsBrowserInternalObj from './kbn_core_deprecations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_browser_mocks.mdx b/api_docs/kbn_core_deprecations_browser_mocks.mdx index 6a1011a2f3636..1e4c352d6ed52 100644 --- a/api_docs/kbn_core_deprecations_browser_mocks.mdx +++ b/api_docs/kbn_core_deprecations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-browser-mocks title: "@kbn/core-deprecations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-browser-mocks'] --- import kbnCoreDeprecationsBrowserMocksObj from './kbn_core_deprecations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_common.mdx b/api_docs/kbn_core_deprecations_common.mdx index 5d57bd026e1b2..a3e5facec45cf 100644 --- a/api_docs/kbn_core_deprecations_common.mdx +++ b/api_docs/kbn_core_deprecations_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-common title: "@kbn/core-deprecations-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-common'] --- import kbnCoreDeprecationsCommonObj from './kbn_core_deprecations_common.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server.mdx b/api_docs/kbn_core_deprecations_server.mdx index 0248fa6087516..18d676963a456 100644 --- a/api_docs/kbn_core_deprecations_server.mdx +++ b/api_docs/kbn_core_deprecations_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server title: "@kbn/core-deprecations-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server'] --- import kbnCoreDeprecationsServerObj from './kbn_core_deprecations_server.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_internal.mdx b/api_docs/kbn_core_deprecations_server_internal.mdx index 1aacb435d0332..61fe178da72a5 100644 --- a/api_docs/kbn_core_deprecations_server_internal.mdx +++ b/api_docs/kbn_core_deprecations_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-internal title: "@kbn/core-deprecations-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-internal'] --- import kbnCoreDeprecationsServerInternalObj from './kbn_core_deprecations_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_deprecations_server_mocks.mdx b/api_docs/kbn_core_deprecations_server_mocks.mdx index 0c5defd892ba8..588ba3f7f5fd9 100644 --- a/api_docs/kbn_core_deprecations_server_mocks.mdx +++ b/api_docs/kbn_core_deprecations_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-deprecations-server-mocks title: "@kbn/core-deprecations-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-deprecations-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-deprecations-server-mocks'] --- import kbnCoreDeprecationsServerMocksObj from './kbn_core_deprecations_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser.mdx b/api_docs/kbn_core_doc_links_browser.mdx index 70731680fd033..c85cef02e3de7 100644 --- a/api_docs/kbn_core_doc_links_browser.mdx +++ b/api_docs/kbn_core_doc_links_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser title: "@kbn/core-doc-links-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser'] --- import kbnCoreDocLinksBrowserObj from './kbn_core_doc_links_browser.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_browser_mocks.mdx b/api_docs/kbn_core_doc_links_browser_mocks.mdx index a9ace30657d71..13009e2e0e2b7 100644 --- a/api_docs/kbn_core_doc_links_browser_mocks.mdx +++ b/api_docs/kbn_core_doc_links_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-browser-mocks title: "@kbn/core-doc-links-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-browser-mocks'] --- import kbnCoreDocLinksBrowserMocksObj from './kbn_core_doc_links_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server.mdx b/api_docs/kbn_core_doc_links_server.mdx index 09e00e110cd5e..24ddcf8db08d8 100644 --- a/api_docs/kbn_core_doc_links_server.mdx +++ b/api_docs/kbn_core_doc_links_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server title: "@kbn/core-doc-links-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server'] --- import kbnCoreDocLinksServerObj from './kbn_core_doc_links_server.devdocs.json'; diff --git a/api_docs/kbn_core_doc_links_server_mocks.mdx b/api_docs/kbn_core_doc_links_server_mocks.mdx index c46f55d2788aa..efcac4a651bb3 100644 --- a/api_docs/kbn_core_doc_links_server_mocks.mdx +++ b/api_docs/kbn_core_doc_links_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-doc-links-server-mocks title: "@kbn/core-doc-links-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-doc-links-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-doc-links-server-mocks'] --- import kbnCoreDocLinksServerMocksObj from './kbn_core_doc_links_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx index b0f0a65e9f3e5..b15d741a81172 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-internal title: "@kbn/core-elasticsearch-client-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-internal'] --- import kbnCoreElasticsearchClientServerInternalObj from './kbn_core_elasticsearch_client_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx index 7c257717aeb40..524f6971805e3 100644 --- a/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_client_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-client-server-mocks title: "@kbn/core-elasticsearch-client-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-client-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-client-server-mocks'] --- import kbnCoreElasticsearchClientServerMocksObj from './kbn_core_elasticsearch_client_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server.mdx b/api_docs/kbn_core_elasticsearch_server.mdx index 7758b2b26471d..fd7236f5d934b 100644 --- a/api_docs/kbn_core_elasticsearch_server.mdx +++ b/api_docs/kbn_core_elasticsearch_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server title: "@kbn/core-elasticsearch-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server'] --- import kbnCoreElasticsearchServerObj from './kbn_core_elasticsearch_server.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_internal.mdx b/api_docs/kbn_core_elasticsearch_server_internal.mdx index 2650544a2757b..2fcac91a099ca 100644 --- a/api_docs/kbn_core_elasticsearch_server_internal.mdx +++ b/api_docs/kbn_core_elasticsearch_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-internal title: "@kbn/core-elasticsearch-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-internal'] --- import kbnCoreElasticsearchServerInternalObj from './kbn_core_elasticsearch_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_elasticsearch_server_mocks.mdx b/api_docs/kbn_core_elasticsearch_server_mocks.mdx index cb2eb879e7f84..bc7af21cff64c 100644 --- a/api_docs/kbn_core_elasticsearch_server_mocks.mdx +++ b/api_docs/kbn_core_elasticsearch_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-elasticsearch-server-mocks title: "@kbn/core-elasticsearch-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-elasticsearch-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-elasticsearch-server-mocks'] --- import kbnCoreElasticsearchServerMocksObj from './kbn_core_elasticsearch_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_internal.mdx b/api_docs/kbn_core_environment_server_internal.mdx index 4b328024f7c0a..1025c0ca30991 100644 --- a/api_docs/kbn_core_environment_server_internal.mdx +++ b/api_docs/kbn_core_environment_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-internal title: "@kbn/core-environment-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-internal'] --- import kbnCoreEnvironmentServerInternalObj from './kbn_core_environment_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_environment_server_mocks.mdx b/api_docs/kbn_core_environment_server_mocks.mdx index 230b495905e37..5e6480692d902 100644 --- a/api_docs/kbn_core_environment_server_mocks.mdx +++ b/api_docs/kbn_core_environment_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-environment-server-mocks title: "@kbn/core-environment-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-environment-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-environment-server-mocks'] --- import kbnCoreEnvironmentServerMocksObj from './kbn_core_environment_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser.mdx b/api_docs/kbn_core_execution_context_browser.mdx index aef1f9fa7e017..7ae24623c3093 100644 --- a/api_docs/kbn_core_execution_context_browser.mdx +++ b/api_docs/kbn_core_execution_context_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser title: "@kbn/core-execution-context-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser'] --- import kbnCoreExecutionContextBrowserObj from './kbn_core_execution_context_browser.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_internal.mdx b/api_docs/kbn_core_execution_context_browser_internal.mdx index 22a9041a8705a..591f3a75b099e 100644 --- a/api_docs/kbn_core_execution_context_browser_internal.mdx +++ b/api_docs/kbn_core_execution_context_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-internal title: "@kbn/core-execution-context-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-internal'] --- import kbnCoreExecutionContextBrowserInternalObj from './kbn_core_execution_context_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_browser_mocks.mdx b/api_docs/kbn_core_execution_context_browser_mocks.mdx index 6c80afa26353b..1b37932830296 100644 --- a/api_docs/kbn_core_execution_context_browser_mocks.mdx +++ b/api_docs/kbn_core_execution_context_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-browser-mocks title: "@kbn/core-execution-context-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-browser-mocks'] --- import kbnCoreExecutionContextBrowserMocksObj from './kbn_core_execution_context_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_common.mdx b/api_docs/kbn_core_execution_context_common.mdx index ac5aa9b6fd1be..bed14b882f54b 100644 --- a/api_docs/kbn_core_execution_context_common.mdx +++ b/api_docs/kbn_core_execution_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-common title: "@kbn/core-execution-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-common'] --- import kbnCoreExecutionContextCommonObj from './kbn_core_execution_context_common.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server.mdx b/api_docs/kbn_core_execution_context_server.mdx index bc3916ca461b9..378e0b329c887 100644 --- a/api_docs/kbn_core_execution_context_server.mdx +++ b/api_docs/kbn_core_execution_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server title: "@kbn/core-execution-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server'] --- import kbnCoreExecutionContextServerObj from './kbn_core_execution_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_internal.mdx b/api_docs/kbn_core_execution_context_server_internal.mdx index be171955b0293..b73772025c985 100644 --- a/api_docs/kbn_core_execution_context_server_internal.mdx +++ b/api_docs/kbn_core_execution_context_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-internal title: "@kbn/core-execution-context-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-internal'] --- import kbnCoreExecutionContextServerInternalObj from './kbn_core_execution_context_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_execution_context_server_mocks.mdx b/api_docs/kbn_core_execution_context_server_mocks.mdx index 0e1a45d455a2c..32046b046798e 100644 --- a/api_docs/kbn_core_execution_context_server_mocks.mdx +++ b/api_docs/kbn_core_execution_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-execution-context-server-mocks title: "@kbn/core-execution-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-execution-context-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-execution-context-server-mocks'] --- import kbnCoreExecutionContextServerMocksObj from './kbn_core_execution_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser.mdx b/api_docs/kbn_core_fatal_errors_browser.mdx index 4b5ba34057653..3ef00431962c8 100644 --- a/api_docs/kbn_core_fatal_errors_browser.mdx +++ b/api_docs/kbn_core_fatal_errors_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser title: "@kbn/core-fatal-errors-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser'] --- import kbnCoreFatalErrorsBrowserObj from './kbn_core_fatal_errors_browser.devdocs.json'; diff --git a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx index 66ef580f2fa5a..f6b44165272bc 100644 --- a/api_docs/kbn_core_fatal_errors_browser_mocks.mdx +++ b/api_docs/kbn_core_fatal_errors_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-fatal-errors-browser-mocks title: "@kbn/core-fatal-errors-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-fatal-errors-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-fatal-errors-browser-mocks'] --- import kbnCoreFatalErrorsBrowserMocksObj from './kbn_core_fatal_errors_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser.mdx b/api_docs/kbn_core_http_browser.mdx index 932d60f1c1daa..b504a2c005a69 100644 --- a/api_docs/kbn_core_http_browser.mdx +++ b/api_docs/kbn_core_http_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser title: "@kbn/core-http-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser'] --- import kbnCoreHttpBrowserObj from './kbn_core_http_browser.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_internal.mdx b/api_docs/kbn_core_http_browser_internal.mdx index 1a02b59c0bd9a..842cd2c7e8b1b 100644 --- a/api_docs/kbn_core_http_browser_internal.mdx +++ b/api_docs/kbn_core_http_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-internal title: "@kbn/core-http-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-internal'] --- import kbnCoreHttpBrowserInternalObj from './kbn_core_http_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_browser_mocks.mdx b/api_docs/kbn_core_http_browser_mocks.mdx index 094d25f06c4b8..be0a03176eb76 100644 --- a/api_docs/kbn_core_http_browser_mocks.mdx +++ b/api_docs/kbn_core_http_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-browser-mocks title: "@kbn/core-http-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-browser-mocks'] --- import kbnCoreHttpBrowserMocksObj from './kbn_core_http_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_common.mdx b/api_docs/kbn_core_http_common.mdx index 0b6eeca5c73a3..3d0df580ee740 100644 --- a/api_docs/kbn_core_http_common.mdx +++ b/api_docs/kbn_core_http_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-common title: "@kbn/core-http-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-common'] --- import kbnCoreHttpCommonObj from './kbn_core_http_common.devdocs.json'; diff --git a/api_docs/kbn_core_http_context_server_mocks.mdx b/api_docs/kbn_core_http_context_server_mocks.mdx index 82cf083792fb4..46a3532296f80 100644 --- a/api_docs/kbn_core_http_context_server_mocks.mdx +++ b/api_docs/kbn_core_http_context_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-context-server-mocks title: "@kbn/core-http-context-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-context-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-context-server-mocks'] --- import kbnCoreHttpContextServerMocksObj from './kbn_core_http_context_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_request_handler_context_server.mdx b/api_docs/kbn_core_http_request_handler_context_server.mdx index a11915b259740..f006dc1d2a777 100644 --- a/api_docs/kbn_core_http_request_handler_context_server.mdx +++ b/api_docs/kbn_core_http_request_handler_context_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-request-handler-context-server title: "@kbn/core-http-request-handler-context-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-request-handler-context-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-request-handler-context-server'] --- import kbnCoreHttpRequestHandlerContextServerObj from './kbn_core_http_request_handler_context_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server.mdx b/api_docs/kbn_core_http_resources_server.mdx index e1cd8d91af733..04c3ead2e6624 100644 --- a/api_docs/kbn_core_http_resources_server.mdx +++ b/api_docs/kbn_core_http_resources_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server title: "@kbn/core-http-resources-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server'] --- import kbnCoreHttpResourcesServerObj from './kbn_core_http_resources_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_internal.mdx b/api_docs/kbn_core_http_resources_server_internal.mdx index 7e62d6ffe1c33..83fb77f802758 100644 --- a/api_docs/kbn_core_http_resources_server_internal.mdx +++ b/api_docs/kbn_core_http_resources_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-internal title: "@kbn/core-http-resources-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-internal'] --- import kbnCoreHttpResourcesServerInternalObj from './kbn_core_http_resources_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_resources_server_mocks.mdx b/api_docs/kbn_core_http_resources_server_mocks.mdx index 8032645bddf46..0d483599ad727 100644 --- a/api_docs/kbn_core_http_resources_server_mocks.mdx +++ b/api_docs/kbn_core_http_resources_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-resources-server-mocks title: "@kbn/core-http-resources-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-resources-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-resources-server-mocks'] --- import kbnCoreHttpResourcesServerMocksObj from './kbn_core_http_resources_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_internal.mdx b/api_docs/kbn_core_http_router_server_internal.mdx index 47c3e3f5bcc2b..8c72aaeb5d7c4 100644 --- a/api_docs/kbn_core_http_router_server_internal.mdx +++ b/api_docs/kbn_core_http_router_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-internal title: "@kbn/core-http-router-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-internal'] --- import kbnCoreHttpRouterServerInternalObj from './kbn_core_http_router_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_router_server_mocks.mdx b/api_docs/kbn_core_http_router_server_mocks.mdx index 2f711d2403f4b..d8288cf410d2b 100644 --- a/api_docs/kbn_core_http_router_server_mocks.mdx +++ b/api_docs/kbn_core_http_router_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-router-server-mocks title: "@kbn/core-http-router-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-router-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 6815fddd6938e..38715039c1e0a 100644 --- a/api_docs/kbn_core_http_server.mdx +++ b/api_docs/kbn_core_http_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server title: "@kbn/core-http-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server'] --- import kbnCoreHttpServerObj from './kbn_core_http_server.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_internal.mdx b/api_docs/kbn_core_http_server_internal.mdx index 51abf8af1a09d..582da0d722f87 100644 --- a/api_docs/kbn_core_http_server_internal.mdx +++ b/api_docs/kbn_core_http_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-internal title: "@kbn/core-http-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-internal'] --- import kbnCoreHttpServerInternalObj from './kbn_core_http_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_http_server_mocks.mdx b/api_docs/kbn_core_http_server_mocks.mdx index 1972463be5604..e64474f354b8a 100644 --- a/api_docs/kbn_core_http_server_mocks.mdx +++ b/api_docs/kbn_core_http_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-http-server-mocks title: "@kbn/core-http-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-http-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-server-mocks'] --- import kbnCoreHttpServerMocksObj from './kbn_core_http_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser.mdx b/api_docs/kbn_core_i18n_browser.mdx index 833349ea7e30d..6cfb8a3b6ca21 100644 --- a/api_docs/kbn_core_i18n_browser.mdx +++ b/api_docs/kbn_core_i18n_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser title: "@kbn/core-i18n-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser'] --- import kbnCoreI18nBrowserObj from './kbn_core_i18n_browser.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_browser_mocks.mdx b/api_docs/kbn_core_i18n_browser_mocks.mdx index 873a05a2d4b7e..99c5352511ebf 100644 --- a/api_docs/kbn_core_i18n_browser_mocks.mdx +++ b/api_docs/kbn_core_i18n_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-browser-mocks title: "@kbn/core-i18n-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-browser-mocks'] --- import kbnCoreI18nBrowserMocksObj from './kbn_core_i18n_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server.mdx b/api_docs/kbn_core_i18n_server.mdx index 50dbb3abba572..bed12d3946d21 100644 --- a/api_docs/kbn_core_i18n_server.mdx +++ b/api_docs/kbn_core_i18n_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server title: "@kbn/core-i18n-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server'] --- import kbnCoreI18nServerObj from './kbn_core_i18n_server.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_internal.mdx b/api_docs/kbn_core_i18n_server_internal.mdx index 64ba9a93b6f99..aae996d8ad9d8 100644 --- a/api_docs/kbn_core_i18n_server_internal.mdx +++ b/api_docs/kbn_core_i18n_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-internal title: "@kbn/core-i18n-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-internal'] --- import kbnCoreI18nServerInternalObj from './kbn_core_i18n_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_i18n_server_mocks.mdx b/api_docs/kbn_core_i18n_server_mocks.mdx index af804b38f70db..44f017a61a7a2 100644 --- a/api_docs/kbn_core_i18n_server_mocks.mdx +++ b/api_docs/kbn_core_i18n_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-i18n-server-mocks title: "@kbn/core-i18n-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-i18n-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-i18n-server-mocks'] --- import kbnCoreI18nServerMocksObj from './kbn_core_i18n_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx index 45b7fc29762c0..6069ab28e65f6 100644 --- a/api_docs/kbn_core_injected_metadata_browser_mocks.mdx +++ b/api_docs/kbn_core_injected_metadata_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-injected-metadata-browser-mocks title: "@kbn/core-injected-metadata-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-injected-metadata-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-injected-metadata-browser-mocks'] --- import kbnCoreInjectedMetadataBrowserMocksObj from './kbn_core_injected_metadata_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_internal.mdx b/api_docs/kbn_core_integrations_browser_internal.mdx index 046dca80b4456..1921e7aa0fc29 100644 --- a/api_docs/kbn_core_integrations_browser_internal.mdx +++ b/api_docs/kbn_core_integrations_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-internal title: "@kbn/core-integrations-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-internal'] --- import kbnCoreIntegrationsBrowserInternalObj from './kbn_core_integrations_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_integrations_browser_mocks.mdx b/api_docs/kbn_core_integrations_browser_mocks.mdx index f5a3e519ecc52..2701f94783fb1 100644 --- a/api_docs/kbn_core_integrations_browser_mocks.mdx +++ b/api_docs/kbn_core_integrations_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-integrations-browser-mocks title: "@kbn/core-integrations-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-integrations-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-integrations-browser-mocks'] --- import kbnCoreIntegrationsBrowserMocksObj from './kbn_core_integrations_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser.mdx b/api_docs/kbn_core_lifecycle_browser.mdx index cbc07f0e2e452..0f257a75f442b 100644 --- a/api_docs/kbn_core_lifecycle_browser.mdx +++ b/api_docs/kbn_core_lifecycle_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser title: "@kbn/core-lifecycle-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser'] --- import kbnCoreLifecycleBrowserObj from './kbn_core_lifecycle_browser.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_browser_mocks.mdx b/api_docs/kbn_core_lifecycle_browser_mocks.mdx index 2cac686502f3b..46c38ca8d039f 100644 --- a/api_docs/kbn_core_lifecycle_browser_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-browser-mocks title: "@kbn/core-lifecycle-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-browser-mocks'] --- import kbnCoreLifecycleBrowserMocksObj from './kbn_core_lifecycle_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server.mdx b/api_docs/kbn_core_lifecycle_server.mdx index 09cedca657801..904ebfe3c81e5 100644 --- a/api_docs/kbn_core_lifecycle_server.mdx +++ b/api_docs/kbn_core_lifecycle_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server title: "@kbn/core-lifecycle-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server'] --- import kbnCoreLifecycleServerObj from './kbn_core_lifecycle_server.devdocs.json'; diff --git a/api_docs/kbn_core_lifecycle_server_mocks.mdx b/api_docs/kbn_core_lifecycle_server_mocks.mdx index 217cf4688896b..ae6ee97de26ca 100644 --- a/api_docs/kbn_core_lifecycle_server_mocks.mdx +++ b/api_docs/kbn_core_lifecycle_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-lifecycle-server-mocks title: "@kbn/core-lifecycle-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-lifecycle-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-lifecycle-server-mocks'] --- import kbnCoreLifecycleServerMocksObj from './kbn_core_lifecycle_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_browser_mocks.mdx b/api_docs/kbn_core_logging_browser_mocks.mdx index 5a098a6924e87..ba13d8e62d50d 100644 --- a/api_docs/kbn_core_logging_browser_mocks.mdx +++ b/api_docs/kbn_core_logging_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-browser-mocks title: "@kbn/core-logging-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-browser-mocks'] --- import kbnCoreLoggingBrowserMocksObj from './kbn_core_logging_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_logging_common_internal.mdx b/api_docs/kbn_core_logging_common_internal.mdx index 01002a1672a5f..e6f4126b454ea 100644 --- a/api_docs/kbn_core_logging_common_internal.mdx +++ b/api_docs/kbn_core_logging_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-common-internal title: "@kbn/core-logging-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-common-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-common-internal'] --- import kbnCoreLoggingCommonInternalObj from './kbn_core_logging_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server.mdx b/api_docs/kbn_core_logging_server.mdx index 3ff7ce63fca64..9b87984af9458 100644 --- a/api_docs/kbn_core_logging_server.mdx +++ b/api_docs/kbn_core_logging_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server title: "@kbn/core-logging-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server'] --- import kbnCoreLoggingServerObj from './kbn_core_logging_server.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_internal.mdx b/api_docs/kbn_core_logging_server_internal.mdx index b56804de823fc..b81984a990fcd 100644 --- a/api_docs/kbn_core_logging_server_internal.mdx +++ b/api_docs/kbn_core_logging_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-internal title: "@kbn/core-logging-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-internal'] --- import kbnCoreLoggingServerInternalObj from './kbn_core_logging_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_logging_server_mocks.mdx b/api_docs/kbn_core_logging_server_mocks.mdx index cc50961b38d6e..cdfcd53a41368 100644 --- a/api_docs/kbn_core_logging_server_mocks.mdx +++ b/api_docs/kbn_core_logging_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-logging-server-mocks title: "@kbn/core-logging-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-logging-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-logging-server-mocks'] --- import kbnCoreLoggingServerMocksObj from './kbn_core_logging_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_internal.mdx b/api_docs/kbn_core_metrics_collectors_server_internal.mdx index 97e208d9ffc29..83c63d8e039d2 100644 --- a/api_docs/kbn_core_metrics_collectors_server_internal.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-internal title: "@kbn/core-metrics-collectors-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-internal'] --- import kbnCoreMetricsCollectorsServerInternalObj from './kbn_core_metrics_collectors_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx index 8b9c0f12f0a10..6d57bca5b327c 100644 --- a/api_docs/kbn_core_metrics_collectors_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_collectors_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-collectors-server-mocks title: "@kbn/core-metrics-collectors-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-collectors-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-collectors-server-mocks'] --- import kbnCoreMetricsCollectorsServerMocksObj from './kbn_core_metrics_collectors_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server.mdx b/api_docs/kbn_core_metrics_server.mdx index 74cd9f88f00ad..339ab34cdb23b 100644 --- a/api_docs/kbn_core_metrics_server.mdx +++ b/api_docs/kbn_core_metrics_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server title: "@kbn/core-metrics-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server'] --- import kbnCoreMetricsServerObj from './kbn_core_metrics_server.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_internal.mdx b/api_docs/kbn_core_metrics_server_internal.mdx index 568c5433d39a3..d0173f6b5c1a1 100644 --- a/api_docs/kbn_core_metrics_server_internal.mdx +++ b/api_docs/kbn_core_metrics_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-internal title: "@kbn/core-metrics-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-internal'] --- import kbnCoreMetricsServerInternalObj from './kbn_core_metrics_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_metrics_server_mocks.mdx b/api_docs/kbn_core_metrics_server_mocks.mdx index 790e066f3e8f8..4e90594a2fbf8 100644 --- a/api_docs/kbn_core_metrics_server_mocks.mdx +++ b/api_docs/kbn_core_metrics_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-metrics-server-mocks title: "@kbn/core-metrics-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-metrics-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-metrics-server-mocks'] --- import kbnCoreMetricsServerMocksObj from './kbn_core_metrics_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_mount_utils_browser.mdx b/api_docs/kbn_core_mount_utils_browser.mdx index 3460c25e4ae33..20d6a5cd3bcd6 100644 --- a/api_docs/kbn_core_mount_utils_browser.mdx +++ b/api_docs/kbn_core_mount_utils_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-mount-utils-browser title: "@kbn/core-mount-utils-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-mount-utils-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-mount-utils-browser'] --- import kbnCoreMountUtilsBrowserObj from './kbn_core_mount_utils_browser.devdocs.json'; diff --git a/api_docs/kbn_core_node_server.mdx b/api_docs/kbn_core_node_server.mdx index 0aac2e324bb05..bc8ed9ff3b163 100644 --- a/api_docs/kbn_core_node_server.mdx +++ b/api_docs/kbn_core_node_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server title: "@kbn/core-node-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server'] --- import kbnCoreNodeServerObj from './kbn_core_node_server.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_internal.mdx b/api_docs/kbn_core_node_server_internal.mdx index 2b82632f20653..b99ae735c158b 100644 --- a/api_docs/kbn_core_node_server_internal.mdx +++ b/api_docs/kbn_core_node_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-internal title: "@kbn/core-node-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-internal'] --- import kbnCoreNodeServerInternalObj from './kbn_core_node_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_node_server_mocks.mdx b/api_docs/kbn_core_node_server_mocks.mdx index 47fc2af2858c8..0439d02cd5ec3 100644 --- a/api_docs/kbn_core_node_server_mocks.mdx +++ b/api_docs/kbn_core_node_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-node-server-mocks title: "@kbn/core-node-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-node-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-node-server-mocks'] --- import kbnCoreNodeServerMocksObj from './kbn_core_node_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser.mdx b/api_docs/kbn_core_notifications_browser.mdx index 839816d23344d..2c2792a299235 100644 --- a/api_docs/kbn_core_notifications_browser.mdx +++ b/api_docs/kbn_core_notifications_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser title: "@kbn/core-notifications-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser'] --- import kbnCoreNotificationsBrowserObj from './kbn_core_notifications_browser.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_internal.mdx b/api_docs/kbn_core_notifications_browser_internal.mdx index 6eb56eb7eaa1a..13bdfa2ed044c 100644 --- a/api_docs/kbn_core_notifications_browser_internal.mdx +++ b/api_docs/kbn_core_notifications_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-internal title: "@kbn/core-notifications-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-internal'] --- import kbnCoreNotificationsBrowserInternalObj from './kbn_core_notifications_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_notifications_browser_mocks.mdx b/api_docs/kbn_core_notifications_browser_mocks.mdx index 2698865f7dc1d..84cce78f47850 100644 --- a/api_docs/kbn_core_notifications_browser_mocks.mdx +++ b/api_docs/kbn_core_notifications_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-notifications-browser-mocks title: "@kbn/core-notifications-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-notifications-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-notifications-browser-mocks'] --- import kbnCoreNotificationsBrowserMocksObj from './kbn_core_notifications_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser.mdx b/api_docs/kbn_core_overlays_browser.mdx index ba805c8ca2e62..55aaef76ba2de 100644 --- a/api_docs/kbn_core_overlays_browser.mdx +++ b/api_docs/kbn_core_overlays_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser title: "@kbn/core-overlays-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser'] --- import kbnCoreOverlaysBrowserObj from './kbn_core_overlays_browser.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_internal.mdx b/api_docs/kbn_core_overlays_browser_internal.mdx index 3c7d8eb18b83d..ee1b05775045a 100644 --- a/api_docs/kbn_core_overlays_browser_internal.mdx +++ b/api_docs/kbn_core_overlays_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-internal title: "@kbn/core-overlays-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-internal'] --- import kbnCoreOverlaysBrowserInternalObj from './kbn_core_overlays_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_overlays_browser_mocks.mdx b/api_docs/kbn_core_overlays_browser_mocks.mdx index 21bf0bc47cf8b..7149628a8d3f4 100644 --- a/api_docs/kbn_core_overlays_browser_mocks.mdx +++ b/api_docs/kbn_core_overlays_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-overlays-browser-mocks title: "@kbn/core-overlays-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-overlays-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-overlays-browser-mocks'] --- import kbnCoreOverlaysBrowserMocksObj from './kbn_core_overlays_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser.mdx b/api_docs/kbn_core_plugins_browser.mdx index 2194ba6bcb927..5fd6b259d6f12 100644 --- a/api_docs/kbn_core_plugins_browser.mdx +++ b/api_docs/kbn_core_plugins_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser title: "@kbn/core-plugins-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser'] --- import kbnCorePluginsBrowserObj from './kbn_core_plugins_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_browser_mocks.mdx b/api_docs/kbn_core_plugins_browser_mocks.mdx index 8918d71ed3a7b..22d01171a94ce 100644 --- a/api_docs/kbn_core_plugins_browser_mocks.mdx +++ b/api_docs/kbn_core_plugins_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-browser-mocks title: "@kbn/core-plugins-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-browser-mocks'] --- import kbnCorePluginsBrowserMocksObj from './kbn_core_plugins_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_browser.mdx b/api_docs/kbn_core_plugins_contracts_browser.mdx index 1b2092a28c63f..c8abf9a4a4f75 100644 --- a/api_docs/kbn_core_plugins_contracts_browser.mdx +++ b/api_docs/kbn_core_plugins_contracts_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-browser title: "@kbn/core-plugins-contracts-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-browser'] --- import kbnCorePluginsContractsBrowserObj from './kbn_core_plugins_contracts_browser.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_contracts_server.mdx b/api_docs/kbn_core_plugins_contracts_server.mdx index 7a972d0b1505c..54489d27c2fcc 100644 --- a/api_docs/kbn_core_plugins_contracts_server.mdx +++ b/api_docs/kbn_core_plugins_contracts_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-contracts-server title: "@kbn/core-plugins-contracts-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-contracts-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-contracts-server'] --- import kbnCorePluginsContractsServerObj from './kbn_core_plugins_contracts_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server.mdx b/api_docs/kbn_core_plugins_server.mdx index 6f940e74a253c..7f0dc5e5405c1 100644 --- a/api_docs/kbn_core_plugins_server.mdx +++ b/api_docs/kbn_core_plugins_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server title: "@kbn/core-plugins-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server'] --- import kbnCorePluginsServerObj from './kbn_core_plugins_server.devdocs.json'; diff --git a/api_docs/kbn_core_plugins_server_mocks.mdx b/api_docs/kbn_core_plugins_server_mocks.mdx index 5d78587b8e654..324ac5d4610f5 100644 --- a/api_docs/kbn_core_plugins_server_mocks.mdx +++ b/api_docs/kbn_core_plugins_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-plugins-server-mocks title: "@kbn/core-plugins-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-plugins-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-plugins-server-mocks'] --- import kbnCorePluginsServerMocksObj from './kbn_core_plugins_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server.mdx b/api_docs/kbn_core_preboot_server.mdx index cacb994e4463b..3b737a4b58128 100644 --- a/api_docs/kbn_core_preboot_server.mdx +++ b/api_docs/kbn_core_preboot_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server title: "@kbn/core-preboot-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server'] --- import kbnCorePrebootServerObj from './kbn_core_preboot_server.devdocs.json'; diff --git a/api_docs/kbn_core_preboot_server_mocks.mdx b/api_docs/kbn_core_preboot_server_mocks.mdx index 2c17178dc9045..afccd6075ea4d 100644 --- a/api_docs/kbn_core_preboot_server_mocks.mdx +++ b/api_docs/kbn_core_preboot_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-preboot-server-mocks title: "@kbn/core-preboot-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-preboot-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-preboot-server-mocks'] --- import kbnCorePrebootServerMocksObj from './kbn_core_preboot_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_browser_mocks.mdx b/api_docs/kbn_core_rendering_browser_mocks.mdx index 933a93f750f59..dbf1ff53fb160 100644 --- a/api_docs/kbn_core_rendering_browser_mocks.mdx +++ b/api_docs/kbn_core_rendering_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-browser-mocks title: "@kbn/core-rendering-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-browser-mocks'] --- import kbnCoreRenderingBrowserMocksObj from './kbn_core_rendering_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_internal.mdx b/api_docs/kbn_core_rendering_server_internal.mdx index eea6b0a992608..c4da7b59e078e 100644 --- a/api_docs/kbn_core_rendering_server_internal.mdx +++ b/api_docs/kbn_core_rendering_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-internal title: "@kbn/core-rendering-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-internal'] --- import kbnCoreRenderingServerInternalObj from './kbn_core_rendering_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_rendering_server_mocks.mdx b/api_docs/kbn_core_rendering_server_mocks.mdx index 2ce6af148798d..d3c87e72d7b79 100644 --- a/api_docs/kbn_core_rendering_server_mocks.mdx +++ b/api_docs/kbn_core_rendering_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-rendering-server-mocks title: "@kbn/core-rendering-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-rendering-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-rendering-server-mocks'] --- import kbnCoreRenderingServerMocksObj from './kbn_core_rendering_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_root_server_internal.mdx b/api_docs/kbn_core_root_server_internal.mdx index 321646914bdcd..74d0bd7b720e7 100644 --- a/api_docs/kbn_core_root_server_internal.mdx +++ b/api_docs/kbn_core_root_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-root-server-internal title: "@kbn/core-root-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-root-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-root-server-internal'] --- import kbnCoreRootServerInternalObj from './kbn_core_root_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_browser.mdx b/api_docs/kbn_core_saved_objects_api_browser.mdx index 454322e58bb78..69525194a193e 100644 --- a/api_docs/kbn_core_saved_objects_api_browser.mdx +++ b/api_docs/kbn_core_saved_objects_api_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-browser title: "@kbn/core-saved-objects-api-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-browser'] --- import kbnCoreSavedObjectsApiBrowserObj from './kbn_core_saved_objects_api_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server.mdx b/api_docs/kbn_core_saved_objects_api_server.mdx index 180579e42d0ed..84dc89ee14186 100644 --- a/api_docs/kbn_core_saved_objects_api_server.mdx +++ b/api_docs/kbn_core_saved_objects_api_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server title: "@kbn/core-saved-objects-api-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server'] --- import kbnCoreSavedObjectsApiServerObj from './kbn_core_saved_objects_api_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx index d51ba18828676..74299b20887ae 100644 --- a/api_docs/kbn_core_saved_objects_api_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_api_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-api-server-mocks title: "@kbn/core-saved-objects-api-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-api-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-api-server-mocks'] --- import kbnCoreSavedObjectsApiServerMocksObj from './kbn_core_saved_objects_api_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_internal.mdx b/api_docs/kbn_core_saved_objects_base_server_internal.mdx index 29626d4e03bd2..22cca0e5d4c9e 100644 --- a/api_docs/kbn_core_saved_objects_base_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-internal title: "@kbn/core-saved-objects-base-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-internal'] --- import kbnCoreSavedObjectsBaseServerInternalObj from './kbn_core_saved_objects_base_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx index 1c358749e1d3e..12b828a3baf9f 100644 --- a/api_docs/kbn_core_saved_objects_base_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_base_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-base-server-mocks title: "@kbn/core-saved-objects-base-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-base-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-base-server-mocks'] --- import kbnCoreSavedObjectsBaseServerMocksObj from './kbn_core_saved_objects_base_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser.mdx b/api_docs/kbn_core_saved_objects_browser.mdx index 346458971aa3b..ec0d7965bde54 100644 --- a/api_docs/kbn_core_saved_objects_browser.mdx +++ b/api_docs/kbn_core_saved_objects_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser title: "@kbn/core-saved-objects-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser'] --- import kbnCoreSavedObjectsBrowserObj from './kbn_core_saved_objects_browser.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_internal.mdx b/api_docs/kbn_core_saved_objects_browser_internal.mdx index 6848fe4f50b6d..1339ca5ba3a4b 100644 --- a/api_docs/kbn_core_saved_objects_browser_internal.mdx +++ b/api_docs/kbn_core_saved_objects_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-internal title: "@kbn/core-saved-objects-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-internal'] --- import kbnCoreSavedObjectsBrowserInternalObj from './kbn_core_saved_objects_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_browser_mocks.mdx b/api_docs/kbn_core_saved_objects_browser_mocks.mdx index 1a39b5580e2a5..d19ab38eb3e5d 100644 --- a/api_docs/kbn_core_saved_objects_browser_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-browser-mocks title: "@kbn/core-saved-objects-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.devdocs.json b/api_docs/kbn_core_saved_objects_common.devdocs.json index 2475968f454ab..750acc4e09dc1 100644 --- a/api_docs/kbn_core_saved_objects_common.devdocs.json +++ b/api_docs/kbn_core_saved_objects_common.devdocs.json @@ -1547,6 +1547,10 @@ "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts" }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts" + }, { "plugin": "@kbn/core", "path": "src/core/types/index.ts" diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index ae17e852f6562..9d4cd112f2ae1 100644 --- a/api_docs/kbn_core_saved_objects_common.mdx +++ b/api_docs/kbn_core_saved_objects_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-common title: "@kbn/core-saved-objects-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-common'] --- import kbnCoreSavedObjectsCommonObj from './kbn_core_saved_objects_common.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx index 81fec3334e92b..65a74f1c31a58 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-internal title: "@kbn/core-saved-objects-import-export-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-internal'] --- import kbnCoreSavedObjectsImportExportServerInternalObj from './kbn_core_saved_objects_import_export_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx index cb7e958caf185..82330f04148dc 100644 --- a/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_import_export_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-import-export-server-mocks title: "@kbn/core-saved-objects-import-export-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-import-export-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-import-export-server-mocks'] --- import kbnCoreSavedObjectsImportExportServerMocksObj from './kbn_core_saved_objects_import_export_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx index 0b2ac462df32b..3bf73f656cd51 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-internal title: "@kbn/core-saved-objects-migration-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-internal'] --- import kbnCoreSavedObjectsMigrationServerInternalObj from './kbn_core_saved_objects_migration_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx index 734d18dee76a7..9d5a8ffc1be03 100644 --- a/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_migration_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-migration-server-mocks title: "@kbn/core-saved-objects-migration-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-migration-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.devdocs.json b/api_docs/kbn_core_saved_objects_server.devdocs.json index 9bcb155c4e2bb..3581cd6f7ff23 100644 --- a/api_docs/kbn_core_saved_objects_server.devdocs.json +++ b/api_docs/kbn_core_saved_objects_server.devdocs.json @@ -10408,38 +10408,712 @@ "parentPluginId": "@kbn/core-saved-objects-server", "id": "def-common.SavedObjectsType.migrations", "type": "CompoundType", - "tags": [], + "tags": [ + "deprecated" + ], "label": "migrations", "description": [ "\nAn optional map of {@link SavedObjectMigrationFn | migrations} or a function returning a map of {@link SavedObjectMigrationFn | migrations} to be used to migrate the type." ], "signature": [ { - "pluginId": "@kbn/core-saved-objects-server", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsServerPluginApi", - "section": "def-common.SavedObjectMigrationMap", - "text": "SavedObjectMigrationMap" + "pluginId": "@kbn/core-saved-objects-server", + "scope": "common", + "docId": "kibKbnCoreSavedObjectsServerPluginApi", + "section": "def-common.SavedObjectMigrationMap", + "text": "SavedObjectMigrationMap" + }, + " | (() => ", + { + "pluginId": "@kbn/core-saved-objects-server", + "scope": "common", + "docId": "kibKbnCoreSavedObjectsServerPluginApi", + "section": "def-common.SavedObjectMigrationMap", + "text": "SavedObjectMigrationMap" + }, + ") | undefined" + ], + "path": "packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts", + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migrations.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.ts" + }, + { + "plugin": "@kbn/core-saved-objects-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-server-internal/src/object_types/registration.ts" + }, + { + "plugin": "@kbn/core-ui-settings-server-internal", + "path": "packages/core/ui-settings/core-ui-settings-server-internal/src/saved_objects/ui_settings.ts" + }, + { + "plugin": "@kbn/core-usage-data-server-internal", + "path": "packages/core/usage-data/core-usage-data-server-internal/src/saved_objects/core_usage_stats.ts" + }, + { + "plugin": "taskManager", + "path": "x-pack/plugins/task_manager/server/saved_objects/index.ts" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/saved_objects/saved_objects_service.ts" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/saved_objects/saved_objects_service.ts" + }, + { + "plugin": "actions", + "path": "x-pack/plugins/actions/server/saved_objects/index.ts" + }, + { + "plugin": "actions", + "path": "x-pack/plugins/actions/server/saved_objects/index.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-mocks", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-mocks/src/kibana_migrator.mock.ts" + }, + { + "plugin": "share", + "path": "src/plugins/share/server/url_service/saved_objects/register_url_service_saved_object_type.ts" + }, + { + "plugin": "dataViews", + "path": "src/plugins/data_views/server/saved_objects/data_views.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/saved_objects/query.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/saved_objects/search_telemetry.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/search/saved_objects/search_session.ts" + }, + { + "plugin": "alerting", + "path": "x-pack/plugins/alerting/server/saved_objects/index.ts" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/server/saved_objects.ts" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/server/saved_object_types/cases/cases.ts" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/server/saved_object_types/configure.ts" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/server/saved_object_types/comments.ts" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/server/saved_object_types/user_actions.ts" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/server/saved_object_types/connector_mappings.ts" + }, + { + "plugin": "observability", + "path": "x-pack/plugins/observability/server/saved_objects/slo.ts" + }, + { + "plugin": "apmDataAccess", + "path": "x-pack/plugins/apm_data_access/server/saved_objects/apm_indices.ts" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/server/saved_objects/saved_objects.ts" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/server/saved_objects/saved_objects.ts" + }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/server/saved_objects/saved_objects.ts" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/saved_objects/index.ts" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/saved_objects/index.ts" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/saved_objects/index.ts" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/saved_objects/index.ts" + }, + { + "plugin": "fleet", + "path": "x-pack/plugins/fleet/server/saved_objects/index.ts" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/server/saved_objects/visualization.ts" + }, + { + "plugin": "apm", + "path": "x-pack/plugins/apm/server/saved_objects/apm_service_groups.ts" + }, + { + "plugin": "savedSearch", + "path": "src/plugins/saved_search/server/saved_objects/search.ts" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/server/saved_objects/workpad.ts" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/server/saved_objects/custom_element.ts" + }, + { + "plugin": "canvas", + "path": "x-pack/plugins/canvas/server/saved_objects/workpad_template.ts" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts" + }, + { + "plugin": "logsShared", + "path": "x-pack/plugins/logs_shared/server/saved_objects/log_view/log_view_saved_object.ts" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/server/saved_objects/graph_workspace.ts" + }, + { + "plugin": "infra", + "path": "x-pack/plugins/infra/server/lib/sources/saved_object_type.ts" + }, + { + "plugin": "lists", + "path": "x-pack/plugins/lists/server/saved_objects/exception_list.ts" + }, + { + "plugin": "lists", + "path": "x-pack/plugins/lists/server/saved_objects/exception_list.ts" + }, + { + "plugin": "maps", + "path": "x-pack/plugins/maps/server/saved_objects/setup_saved_objects.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/timelines.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/notes.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/timeline/saved_object_mappings/pinned_events.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_actions_legacy/logic/rule_actions/legacy_saved_object_mappings.ts" + }, + { + "plugin": "securitySolution", + "path": "x-pack/plugins/security_solution/server/endpoint/lib/artifacts/saved_object_mappings.ts" + }, + { + "plugin": "synthetics", + "path": "x-pack/plugins/synthetics/server/saved_objects/synthetics_monitor.ts" + }, + { + "plugin": "uptime", + "path": "x-pack/plugins/uptime/server/legacy_uptime/lib/saved_objects/uptime_settings.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts" + }, + { + "plugin": "eventAnnotation", + "path": "src/plugins/event_annotation/server/saved_objects.ts" + }, + { + "plugin": "links", + "path": "src/plugins/links/server/saved_objects/links.ts" + }, + { + "plugin": "savedObjectsManagement", + "path": "src/plugins/saved_objects_management/server/services/management.test.ts" + }, + { + "plugin": "share", + "path": "src/plugins/share/server/url_service/saved_objects/register_url_service_saved_object_type.test.ts" + }, + { + "plugin": "share", + "path": "src/plugins/share/server/url_service/saved_objects/register_url_service_saved_object_type.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/mocks/kibana_migrator.mock.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_type_registry.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_type_registry.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_type_registry.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/saved_objects_type_registry.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/kibana_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.fixtures.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.fixtures.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/test_helpers/repository.test.common.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_create_repository.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_create_repository.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/repository_create_repository.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-base-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-base-server-internal/src/model_version/version_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/core/build_index_map.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/build_active_migrations.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" }, - " | (() => ", { - "pluginId": "@kbn/core-saved-objects-server", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsServerPluginApi", - "section": "def-common.SavedObjectMigrationMap", - "text": "SavedObjectMigrationMap" + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" }, - ") | undefined" - ], - "path": "packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts", - "deprecated": false, - "trackAdoption": false + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/document_migrator.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migration.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migration.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migration.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migration.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migration.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migration.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migration.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/document_migrator/validate_migration.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/utils/generate_additive_mapping_diff.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/utils/outdated_documents_query.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/utils/outdated_documents_query.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/utils/outdated_documents_query.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-migration-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-migration-server-internal/src/zdt/utils/outdated_documents_query.test.ts" + } + ] }, { "parentPluginId": "@kbn/core-saved-objects-server", "id": "def-common.SavedObjectsType.schemas", "type": "CompoundType", - "tags": [], + "tags": [ + "deprecated" + ], "label": "schemas", "description": [ "\nAn optional schema that can be used to validate the attributes of the type.\n\nWhen provided, calls to {@link SavedObjectsClient.create | create} will be validated against this schema.\n\nSee {@link SavedObjectsValidationMap} for more details." @@ -10463,8 +11137,134 @@ ") | undefined" ], "path": "packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts", - "deprecated": false, - "trackAdoption": false + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation.ts" + }, + { + "plugin": "spaces", + "path": "x-pack/plugins/spaces/server/saved_objects/saved_objects_service.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/saved_objects/query.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/saved_objects/kql_telemetry.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/saved_objects/search_telemetry.ts" + }, + { + "plugin": "data", + "path": "src/plugins/data/server/search/saved_objects/search_session.ts" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/server/saved_objects/visualization.ts" + }, + { + "plugin": "savedSearch", + "path": "src/plugins/saved_search/server/saved_objects/search.ts" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/server/saved_objects/csp_benchmark_rule.ts" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/server/saved_objects/csp_settings.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/server/dashboard_saved_object/dashboard_saved_object.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/extract_migration_info.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-test-helpers-so-type-serializer", + "path": "packages/core/test-helpers/core-test-helpers-so-type-serializer/src/get_migration_hash.test.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/test_helpers/repository.test.common.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation_fixtures.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation_fixtures.ts" + }, + { + "plugin": "@kbn/core-saved-objects-api-server-internal", + "path": "packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/helpers/validation_fixtures.ts" + } + ] }, { "parentPluginId": "@kbn/core-saved-objects-server", @@ -10771,7 +11571,7 @@ "tags": [], "label": "switchToModelVersionAt", "description": [ - "\nAllows to opt-in to the new model version API.\n\nMust be a valid semver version (with the patch version being necessarily 0)\n\nWhen specified, the type will switch from using the {@link SavedObjectsType.migrations | legacy migration API}\nto use the {@link SavedObjectsType.modelVersions | modelVersion API} after the specified version.\n\nOnce opted in, it will no longer be possible to use the legacy migration API after the specified version.\n" + "\nAllows to opt-in to the model version API.\n\nMust be a valid semver version (with the patch version being necessarily 0)\n\nWhen specified, the type will switch from using the {@link SavedObjectsType.migrations | legacy migration API}\nto use the {@link SavedObjectsType.modelVersions | modelVersion API} after the specified version.\n\nOnce opted in, it will no longer be possible to use the legacy migration API after the specified version.\n" ], "signature": [ "string | undefined" diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index a18f66fef59e7..78ae498b7b076 100644 --- a/api_docs/kbn_core_saved_objects_server.mdx +++ b/api_docs/kbn_core_saved_objects_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server title: "@kbn/core-saved-objects-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server'] --- import kbnCoreSavedObjectsServerObj from './kbn_core_saved_objects_server.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_internal.mdx b/api_docs/kbn_core_saved_objects_server_internal.mdx index 3051390bc38f5..77f807bfa997e 100644 --- a/api_docs/kbn_core_saved_objects_server_internal.mdx +++ b/api_docs/kbn_core_saved_objects_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-internal title: "@kbn/core-saved-objects-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-internal'] --- import kbnCoreSavedObjectsServerInternalObj from './kbn_core_saved_objects_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server_mocks.mdx b/api_docs/kbn_core_saved_objects_server_mocks.mdx index a4a92a8c7a866..8cd4c426ae38c 100644 --- a/api_docs/kbn_core_saved_objects_server_mocks.mdx +++ b/api_docs/kbn_core_saved_objects_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-server-mocks title: "@kbn/core-saved-objects-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-server-mocks'] --- import kbnCoreSavedObjectsServerMocksObj from './kbn_core_saved_objects_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_utils_server.mdx b/api_docs/kbn_core_saved_objects_utils_server.mdx index b9168759029fc..a159ddb16f399 100644 --- a/api_docs/kbn_core_saved_objects_utils_server.mdx +++ b/api_docs/kbn_core_saved_objects_utils_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-saved-objects-utils-server title: "@kbn/core-saved-objects-utils-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-saved-objects-utils-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 13058e9dc0033..d6fb89d0be550 100644 --- a/api_docs/kbn_core_status_common.mdx +++ b/api_docs/kbn_core_status_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common title: "@kbn/core-status-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common'] --- import kbnCoreStatusCommonObj from './kbn_core_status_common.devdocs.json'; diff --git a/api_docs/kbn_core_status_common_internal.mdx b/api_docs/kbn_core_status_common_internal.mdx index 572c336a2681b..ee97a4711e495 100644 --- a/api_docs/kbn_core_status_common_internal.mdx +++ b/api_docs/kbn_core_status_common_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-common-internal title: "@kbn/core-status-common-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-common-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-common-internal'] --- import kbnCoreStatusCommonInternalObj from './kbn_core_status_common_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server.mdx b/api_docs/kbn_core_status_server.mdx index b0b5c7070f220..4224700c8d33b 100644 --- a/api_docs/kbn_core_status_server.mdx +++ b/api_docs/kbn_core_status_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server title: "@kbn/core-status-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server'] --- import kbnCoreStatusServerObj from './kbn_core_status_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_internal.mdx b/api_docs/kbn_core_status_server_internal.mdx index 062d8484ef29b..93ce998b7d3e5 100644 --- a/api_docs/kbn_core_status_server_internal.mdx +++ b/api_docs/kbn_core_status_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-internal title: "@kbn/core-status-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-internal'] --- import kbnCoreStatusServerInternalObj from './kbn_core_status_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_status_server_mocks.mdx b/api_docs/kbn_core_status_server_mocks.mdx index 99007b664582f..e1ab9bf040363 100644 --- a/api_docs/kbn_core_status_server_mocks.mdx +++ b/api_docs/kbn_core_status_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-status-server-mocks title: "@kbn/core-status-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-status-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-status-server-mocks'] --- import kbnCoreStatusServerMocksObj from './kbn_core_status_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx index e1477a87edc2a..bfbdf3fae6523 100644 --- a/api_docs/kbn_core_test_helpers_deprecations_getters.mdx +++ b/api_docs/kbn_core_test_helpers_deprecations_getters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-deprecations-getters title: "@kbn/core-test-helpers-deprecations-getters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-deprecations-getters plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-deprecations-getters'] --- import kbnCoreTestHelpersDeprecationsGettersObj from './kbn_core_test_helpers_deprecations_getters.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx index 725720225945e..d866be7ada32b 100644 --- a/api_docs/kbn_core_test_helpers_http_setup_browser.mdx +++ b/api_docs/kbn_core_test_helpers_http_setup_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-http-setup-browser title: "@kbn/core-test-helpers-http-setup-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-http-setup-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-http-setup-browser'] --- import kbnCoreTestHelpersHttpSetupBrowserObj from './kbn_core_test_helpers_http_setup_browser.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_kbn_server.mdx b/api_docs/kbn_core_test_helpers_kbn_server.mdx index 88f7750c07892..a71e9a1b07eef 100644 --- a/api_docs/kbn_core_test_helpers_kbn_server.mdx +++ b/api_docs/kbn_core_test_helpers_kbn_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-kbn-server title: "@kbn/core-test-helpers-kbn-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-kbn-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-kbn-server'] --- import kbnCoreTestHelpersKbnServerObj from './kbn_core_test_helpers_kbn_server.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_model_versions.mdx b/api_docs/kbn_core_test_helpers_model_versions.mdx index 4a5f43f4656eb..5f9faa529cc85 100644 --- a/api_docs/kbn_core_test_helpers_model_versions.mdx +++ b/api_docs/kbn_core_test_helpers_model_versions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-model-versions title: "@kbn/core-test-helpers-model-versions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-model-versions plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-model-versions'] --- import kbnCoreTestHelpersModelVersionsObj from './kbn_core_test_helpers_model_versions.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index 096da041bfc67..0e89dc451c66d 100644 --- a/api_docs/kbn_core_test_helpers_so_type_serializer.mdx +++ b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-so-type-serializer title: "@kbn/core-test-helpers-so-type-serializer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-so-type-serializer plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-so-type-serializer'] --- import kbnCoreTestHelpersSoTypeSerializerObj from './kbn_core_test_helpers_so_type_serializer.devdocs.json'; diff --git a/api_docs/kbn_core_test_helpers_test_utils.mdx b/api_docs/kbn_core_test_helpers_test_utils.mdx index 11d06ef769a87..5ff2ae602d75f 100644 --- a/api_docs/kbn_core_test_helpers_test_utils.mdx +++ b/api_docs/kbn_core_test_helpers_test_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-test-helpers-test-utils title: "@kbn/core-test-helpers-test-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-test-helpers-test-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-test-helpers-test-utils'] --- import kbnCoreTestHelpersTestUtilsObj from './kbn_core_test_helpers_test_utils.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser.mdx b/api_docs/kbn_core_theme_browser.mdx index 07c8903d4be36..1ed55967bb096 100644 --- a/api_docs/kbn_core_theme_browser.mdx +++ b/api_docs/kbn_core_theme_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser title: "@kbn/core-theme-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser'] --- import kbnCoreThemeBrowserObj from './kbn_core_theme_browser.devdocs.json'; diff --git a/api_docs/kbn_core_theme_browser_mocks.mdx b/api_docs/kbn_core_theme_browser_mocks.mdx index d4c6898b2af4a..fe2bda39bdbce 100644 --- a/api_docs/kbn_core_theme_browser_mocks.mdx +++ b/api_docs/kbn_core_theme_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-theme-browser-mocks title: "@kbn/core-theme-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-theme-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-theme-browser-mocks'] --- import kbnCoreThemeBrowserMocksObj from './kbn_core_theme_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser.mdx b/api_docs/kbn_core_ui_settings_browser.mdx index 7cae936a2dab4..33e308a8fe2a1 100644 --- a/api_docs/kbn_core_ui_settings_browser.mdx +++ b/api_docs/kbn_core_ui_settings_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser title: "@kbn/core-ui-settings-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser'] --- import kbnCoreUiSettingsBrowserObj from './kbn_core_ui_settings_browser.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_internal.mdx b/api_docs/kbn_core_ui_settings_browser_internal.mdx index 8afb58bd42cfc..0594c44fa4aac 100644 --- a/api_docs/kbn_core_ui_settings_browser_internal.mdx +++ b/api_docs/kbn_core_ui_settings_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-internal title: "@kbn/core-ui-settings-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-internal'] --- import kbnCoreUiSettingsBrowserInternalObj from './kbn_core_ui_settings_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_browser_mocks.mdx b/api_docs/kbn_core_ui_settings_browser_mocks.mdx index fc972f3afcf72..0ad2b7067af2f 100644 --- a/api_docs/kbn_core_ui_settings_browser_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-browser-mocks title: "@kbn/core-ui-settings-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-browser-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-browser-mocks'] --- import kbnCoreUiSettingsBrowserMocksObj from './kbn_core_ui_settings_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_common.mdx b/api_docs/kbn_core_ui_settings_common.mdx index 07073d0b49440..238e554c41ff4 100644 --- a/api_docs/kbn_core_ui_settings_common.mdx +++ b/api_docs/kbn_core_ui_settings_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-common title: "@kbn/core-ui-settings-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-common'] --- import kbnCoreUiSettingsCommonObj from './kbn_core_ui_settings_common.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server.mdx b/api_docs/kbn_core_ui_settings_server.mdx index b922af024bf8d..a515d9d292189 100644 --- a/api_docs/kbn_core_ui_settings_server.mdx +++ b/api_docs/kbn_core_ui_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server title: "@kbn/core-ui-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server'] --- import kbnCoreUiSettingsServerObj from './kbn_core_ui_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_internal.mdx b/api_docs/kbn_core_ui_settings_server_internal.mdx index c3f0aa3db45ef..3d94181152acf 100644 --- a/api_docs/kbn_core_ui_settings_server_internal.mdx +++ b/api_docs/kbn_core_ui_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-internal title: "@kbn/core-ui-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-internal'] --- import kbnCoreUiSettingsServerInternalObj from './kbn_core_ui_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_ui_settings_server_mocks.mdx b/api_docs/kbn_core_ui_settings_server_mocks.mdx index 4df39e2679c2f..230e713e00f1f 100644 --- a/api_docs/kbn_core_ui_settings_server_mocks.mdx +++ b/api_docs/kbn_core_ui_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-ui-settings-server-mocks title: "@kbn/core-ui-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-ui-settings-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-ui-settings-server-mocks'] --- import kbnCoreUiSettingsServerMocksObj from './kbn_core_ui_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server.mdx b/api_docs/kbn_core_usage_data_server.mdx index 26a82d23590a6..a8feefc8b5aaa 100644 --- a/api_docs/kbn_core_usage_data_server.mdx +++ b/api_docs/kbn_core_usage_data_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server title: "@kbn/core-usage-data-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server'] --- import kbnCoreUsageDataServerObj from './kbn_core_usage_data_server.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_internal.mdx b/api_docs/kbn_core_usage_data_server_internal.mdx index d7323fcc6dc5e..ebd1808abf175 100644 --- a/api_docs/kbn_core_usage_data_server_internal.mdx +++ b/api_docs/kbn_core_usage_data_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-internal title: "@kbn/core-usage-data-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-internal'] --- import kbnCoreUsageDataServerInternalObj from './kbn_core_usage_data_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_usage_data_server_mocks.mdx b/api_docs/kbn_core_usage_data_server_mocks.mdx index 87bc167d0ceda..eb299a042c044 100644 --- a/api_docs/kbn_core_usage_data_server_mocks.mdx +++ b/api_docs/kbn_core_usage_data_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-usage-data-server-mocks title: "@kbn/core-usage-data-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-usage-data-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 4c39b343233b1..e3c6184212e92 100644 --- a/api_docs/kbn_core_user_settings_server.mdx +++ b/api_docs/kbn_core_user_settings_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server title: "@kbn/core-user-settings-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index 565349f88a350..a0c85d2c03d3e 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index fcb2862df9e5d..b881d1eb51597 100644 --- a/api_docs/kbn_core_user_settings_server_mocks.mdx +++ b/api_docs/kbn_core_user_settings_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-mocks title: "@kbn/core-user-settings-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-mocks'] --- import kbnCoreUserSettingsServerMocksObj from './kbn_core_user_settings_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_crypto.mdx b/api_docs/kbn_crypto.mdx index 15573ac519cb0..84e9f6c5d3464 100644 --- a/api_docs/kbn_crypto.mdx +++ b/api_docs/kbn_crypto.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto title: "@kbn/crypto" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto'] --- import kbnCryptoObj from './kbn_crypto.devdocs.json'; diff --git a/api_docs/kbn_crypto_browser.mdx b/api_docs/kbn_crypto_browser.mdx index dd51dcfeca14a..950a977a0ccab 100644 --- a/api_docs/kbn_crypto_browser.mdx +++ b/api_docs/kbn_crypto_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-crypto-browser title: "@kbn/crypto-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/crypto-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_custom_icons.mdx b/api_docs/kbn_custom_icons.mdx index 4d4e1348ee696..9600136860bdb 100644 --- a/api_docs/kbn_custom_icons.mdx +++ b/api_docs/kbn_custom_icons.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-icons title: "@kbn/custom-icons" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-icons plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-icons'] --- import kbnCustomIconsObj from './kbn_custom_icons.devdocs.json'; diff --git a/api_docs/kbn_custom_integrations.mdx b/api_docs/kbn_custom_integrations.mdx index 218b5e8605d30..c10afaec79b86 100644 --- a/api_docs/kbn_custom_integrations.mdx +++ b/api_docs/kbn_custom_integrations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-custom-integrations title: "@kbn/custom-integrations" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/custom-integrations plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/custom-integrations'] --- import kbnCustomIntegrationsObj from './kbn_custom_integrations.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index e06ba06d737b5..4aa793654af60 100644 --- a/api_docs/kbn_cypress_config.mdx +++ b/api_docs/kbn_cypress_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-cypress-config title: "@kbn/cypress-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/cypress-config plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_forge.mdx b/api_docs/kbn_data_forge.mdx index 561874f009043..c7a066910726a 100644 --- a/api_docs/kbn_data_forge.mdx +++ b/api_docs/kbn_data_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-forge title: "@kbn/data-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-forge plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-forge'] --- import kbnDataForgeObj from './kbn_data_forge.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index d702904058d16..c8590e840bbc5 100644 --- a/api_docs/kbn_data_service.mdx +++ b/api_docs/kbn_data_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-service title: "@kbn/data-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-service plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_data_stream_adapter.mdx b/api_docs/kbn_data_stream_adapter.mdx index 54c596040ddaf..727c09fdf6303 100644 --- a/api_docs/kbn_data_stream_adapter.mdx +++ b/api_docs/kbn_data_stream_adapter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-stream-adapter title: "@kbn/data-stream-adapter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-stream-adapter plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-stream-adapter'] --- import kbnDataStreamAdapterObj from './kbn_data_stream_adapter.devdocs.json'; diff --git a/api_docs/kbn_data_view_utils.mdx b/api_docs/kbn_data_view_utils.mdx index b4576c9dde7e0..a74e4a9433676 100644 --- a/api_docs/kbn_data_view_utils.mdx +++ b/api_docs/kbn_data_view_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-data-view-utils title: "@kbn/data-view-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/data-view-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-view-utils'] --- import kbnDataViewUtilsObj from './kbn_data_view_utils.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 54d4159a3a97c..a45d6cf4f7d2f 100644 --- a/api_docs/kbn_datemath.mdx +++ b/api_docs/kbn_datemath.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-datemath title: "@kbn/datemath" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/datemath plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/datemath'] --- import kbnDatemathObj from './kbn_datemath.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_analytics.mdx b/api_docs/kbn_deeplinks_analytics.mdx index af590b1145453..5093195f61abf 100644 --- a/api_docs/kbn_deeplinks_analytics.mdx +++ b/api_docs/kbn_deeplinks_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-analytics title: "@kbn/deeplinks-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-analytics plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-analytics'] --- import kbnDeeplinksAnalyticsObj from './kbn_deeplinks_analytics.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_devtools.mdx b/api_docs/kbn_deeplinks_devtools.mdx index 6b58ea035d359..62d65369c48e3 100644 --- a/api_docs/kbn_deeplinks_devtools.mdx +++ b/api_docs/kbn_deeplinks_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-devtools title: "@kbn/deeplinks-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-devtools plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 5bab15805b945..37329e8082bf2 100644 --- a/api_docs/kbn_deeplinks_management.mdx +++ b/api_docs/kbn_deeplinks_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-management title: "@kbn/deeplinks-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-management plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-management'] --- import kbnDeeplinksManagementObj from './kbn_deeplinks_management.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_ml.mdx b/api_docs/kbn_deeplinks_ml.mdx index 06c567fbcb66b..e95af16458fa6 100644 --- a/api_docs/kbn_deeplinks_ml.mdx +++ b/api_docs/kbn_deeplinks_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-ml title: "@kbn/deeplinks-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-ml plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-ml'] --- import kbnDeeplinksMlObj from './kbn_deeplinks_ml.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_observability.mdx b/api_docs/kbn_deeplinks_observability.mdx index 7c5dd8f678a53..03c1d668a8dbc 100644 --- a/api_docs/kbn_deeplinks_observability.mdx +++ b/api_docs/kbn_deeplinks_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-observability title: "@kbn/deeplinks-observability" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-observability plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-observability'] --- import kbnDeeplinksObservabilityObj from './kbn_deeplinks_observability.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_search.mdx b/api_docs/kbn_deeplinks_search.mdx index 02b16894e8b9b..386066f81f076 100644 --- a/api_docs/kbn_deeplinks_search.mdx +++ b/api_docs/kbn_deeplinks_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-search title: "@kbn/deeplinks-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-search plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index a65583ce95bdc..be079e457690e 100644 --- a/api_docs/kbn_default_nav_analytics.mdx +++ b/api_docs/kbn_default_nav_analytics.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-analytics title: "@kbn/default-nav-analytics" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-analytics plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-analytics'] --- import kbnDefaultNavAnalyticsObj from './kbn_default_nav_analytics.devdocs.json'; diff --git a/api_docs/kbn_default_nav_devtools.mdx b/api_docs/kbn_default_nav_devtools.mdx index cda6bd41aebf0..df077283753ae 100644 --- a/api_docs/kbn_default_nav_devtools.mdx +++ b/api_docs/kbn_default_nav_devtools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-devtools title: "@kbn/default-nav-devtools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-devtools plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-devtools'] --- import kbnDefaultNavDevtoolsObj from './kbn_default_nav_devtools.devdocs.json'; diff --git a/api_docs/kbn_default_nav_management.mdx b/api_docs/kbn_default_nav_management.mdx index 755f36f80286c..a1faa3730cedc 100644 --- a/api_docs/kbn_default_nav_management.mdx +++ b/api_docs/kbn_default_nav_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-management title: "@kbn/default-nav-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-management plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-management'] --- import kbnDefaultNavManagementObj from './kbn_default_nav_management.devdocs.json'; diff --git a/api_docs/kbn_default_nav_ml.mdx b/api_docs/kbn_default_nav_ml.mdx index ec60e4a445994..ca3fa884cd6c0 100644 --- a/api_docs/kbn_default_nav_ml.mdx +++ b/api_docs/kbn_default_nav_ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-default-nav-ml title: "@kbn/default-nav-ml" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/default-nav-ml plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/default-nav-ml'] --- import kbnDefaultNavMlObj from './kbn_default_nav_ml.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_errors.mdx b/api_docs/kbn_dev_cli_errors.mdx index 6b214e66302da..f18500a58301b 100644 --- a/api_docs/kbn_dev_cli_errors.mdx +++ b/api_docs/kbn_dev_cli_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-errors title: "@kbn/dev-cli-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-errors plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-errors'] --- import kbnDevCliErrorsObj from './kbn_dev_cli_errors.devdocs.json'; diff --git a/api_docs/kbn_dev_cli_runner.mdx b/api_docs/kbn_dev_cli_runner.mdx index a0a61b8d357df..41509953c7f9c 100644 --- a/api_docs/kbn_dev_cli_runner.mdx +++ b/api_docs/kbn_dev_cli_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-cli-runner title: "@kbn/dev-cli-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-cli-runner plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-cli-runner'] --- import kbnDevCliRunnerObj from './kbn_dev_cli_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_proc_runner.mdx b/api_docs/kbn_dev_proc_runner.mdx index fde4df14b31b9..bb9f72c5a3353 100644 --- a/api_docs/kbn_dev_proc_runner.mdx +++ b/api_docs/kbn_dev_proc_runner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-proc-runner title: "@kbn/dev-proc-runner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-proc-runner plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-proc-runner'] --- import kbnDevProcRunnerObj from './kbn_dev_proc_runner.devdocs.json'; diff --git a/api_docs/kbn_dev_utils.mdx b/api_docs/kbn_dev_utils.mdx index c7600b99421f2..a748c898a477c 100644 --- a/api_docs/kbn_dev_utils.mdx +++ b/api_docs/kbn_dev_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dev-utils title: "@kbn/dev-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dev-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dev-utils'] --- import kbnDevUtilsObj from './kbn_dev_utils.devdocs.json'; diff --git a/api_docs/kbn_discover_utils.mdx b/api_docs/kbn_discover_utils.mdx index c08688964958a..aeec6b7f20147 100644 --- a/api_docs/kbn_discover_utils.mdx +++ b/api_docs/kbn_discover_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-discover-utils title: "@kbn/discover-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/discover-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 1d1671c879f92..d93d6c06b7969 100644 --- a/api_docs/kbn_doc_links.mdx +++ b/api_docs/kbn_doc_links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-doc-links title: "@kbn/doc-links" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/doc-links plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/doc-links'] --- import kbnDocLinksObj from './kbn_doc_links.devdocs.json'; diff --git a/api_docs/kbn_docs_utils.mdx b/api_docs/kbn_docs_utils.mdx index df295859000cf..3e919f96d9094 100644 --- a/api_docs/kbn_docs_utils.mdx +++ b/api_docs/kbn_docs_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-docs-utils title: "@kbn/docs-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/docs-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/docs-utils'] --- import kbnDocsUtilsObj from './kbn_docs_utils.devdocs.json'; diff --git a/api_docs/kbn_dom_drag_drop.mdx b/api_docs/kbn_dom_drag_drop.mdx index 15a55db75e865..b4f409c8aa87b 100644 --- a/api_docs/kbn_dom_drag_drop.mdx +++ b/api_docs/kbn_dom_drag_drop.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-dom-drag-drop title: "@kbn/dom-drag-drop" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/dom-drag-drop plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/dom-drag-drop'] --- import kbnDomDragDropObj from './kbn_dom_drag_drop.devdocs.json'; diff --git a/api_docs/kbn_ebt_tools.mdx b/api_docs/kbn_ebt_tools.mdx index e36e89a844b79..bd4bdd7e3e3a4 100644 --- a/api_docs/kbn_ebt_tools.mdx +++ b/api_docs/kbn_ebt_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ebt-tools title: "@kbn/ebt-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ebt-tools plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 040fa07c60221..44a9d6a48ab83 100644 --- a/api_docs/kbn_ecs_data_quality_dashboard.mdx +++ b/api_docs/kbn_ecs_data_quality_dashboard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs-data-quality-dashboard title: "@kbn/ecs-data-quality-dashboard" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs-data-quality-dashboard plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs-data-quality-dashboard'] --- import kbnEcsDataQualityDashboardObj from './kbn_ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/kbn_elastic_agent_utils.mdx b/api_docs/kbn_elastic_agent_utils.mdx index dddca87f1a48e..0aaaff55b3070 100644 --- a/api_docs/kbn_elastic_agent_utils.mdx +++ b/api_docs/kbn_elastic_agent_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-agent-utils title: "@kbn/elastic-agent-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-agent-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-agent-utils'] --- import kbnElasticAgentUtilsObj from './kbn_elastic_agent_utils.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index d2d6de8475ded..52f12389cdba1 100644 --- a/api_docs/kbn_elastic_assistant.mdx +++ b/api_docs/kbn_elastic_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant title: "@kbn/elastic-assistant" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index 8c9aa4f6c6387..e27e509c870b9 100644 --- a/api_docs/kbn_elastic_assistant_common.mdx +++ b/api_docs/kbn_elastic_assistant_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-elastic-assistant-common title: "@kbn/elastic-assistant-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/elastic-assistant-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index d459701d90696..051c9d02be72a 100644 --- a/api_docs/kbn_es.mdx +++ b/api_docs/kbn_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es title: "@kbn/es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es'] --- import kbnEsObj from './kbn_es.devdocs.json'; diff --git a/api_docs/kbn_es_archiver.mdx b/api_docs/kbn_es_archiver.mdx index bd41713db91eb..082943635e046 100644 --- a/api_docs/kbn_es_archiver.mdx +++ b/api_docs/kbn_es_archiver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-archiver title: "@kbn/es-archiver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-archiver plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-archiver'] --- import kbnEsArchiverObj from './kbn_es_archiver.devdocs.json'; diff --git a/api_docs/kbn_es_errors.mdx b/api_docs/kbn_es_errors.mdx index 8ef7043be0a87..0448e58dc48e3 100644 --- a/api_docs/kbn_es_errors.mdx +++ b/api_docs/kbn_es_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-errors title: "@kbn/es-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-errors plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-errors'] --- import kbnEsErrorsObj from './kbn_es_errors.devdocs.json'; diff --git a/api_docs/kbn_es_query.mdx b/api_docs/kbn_es_query.mdx index 7a538bce42fa4..e39cd8c906a62 100644 --- a/api_docs/kbn_es_query.mdx +++ b/api_docs/kbn_es_query.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-query title: "@kbn/es-query" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-query plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-query'] --- import kbnEsQueryObj from './kbn_es_query.devdocs.json'; diff --git a/api_docs/kbn_es_types.mdx b/api_docs/kbn_es_types.mdx index f83992e1ba281..6e5b40c9ea3cd 100644 --- a/api_docs/kbn_es_types.mdx +++ b/api_docs/kbn_es_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-es-types title: "@kbn/es-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/es-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/es-types'] --- import kbnEsTypesObj from './kbn_es_types.devdocs.json'; diff --git a/api_docs/kbn_eslint_plugin_imports.mdx b/api_docs/kbn_eslint_plugin_imports.mdx index 13c424e481151..a361654e2100a 100644 --- a/api_docs/kbn_eslint_plugin_imports.mdx +++ b/api_docs/kbn_eslint_plugin_imports.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-eslint-plugin-imports title: "@kbn/eslint-plugin-imports" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/eslint-plugin-imports plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index c6550ee0d7d30..1cea66d427353 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 42149b1c41618..cce51a1dba51e 100644 --- a/api_docs/kbn_event_annotation_common.mdx +++ b/api_docs/kbn_event_annotation_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-common title: "@kbn/event-annotation-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-common'] --- import kbnEventAnnotationCommonObj from './kbn_event_annotation_common.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index f56d5f3c254c3..136da179bc4a9 100644 --- a/api_docs/kbn_event_annotation_components.mdx +++ b/api_docs/kbn_event_annotation_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-event-annotation-components title: "@kbn/event-annotation-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/event-annotation-components plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.devdocs.json b/api_docs/kbn_expandable_flyout.devdocs.json index fda9da45ad6e0..f3f7f1d35646b 100644 --- a/api_docs/kbn_expandable_flyout.devdocs.json +++ b/api_docs/kbn_expandable_flyout.devdocs.json @@ -61,10 +61,10 @@ "tags": [], "label": "ExpandableFlyoutProvider", "description": [ - "\nWrap your plugin with this context for the ExpandableFlyout React component.\nStorage property allows you to specify how the flyout state works internally.\nWith \"url\", it will be persisted into url and thus allow for deep linking & will survive webpage reloads.\n\"memory\" is based on an isolated redux context. The state is saved internally to the package, which means it will not be\npersisted when sharing url or reloading browser pages." + "\nWrap your plugin with this context for the ExpandableFlyout React component." ], "signature": [ - "({ children, storage, }: React.PropsWithChildren>) => JSX.Element" + "({ children, urlKey, }: React.PropsWithChildren>) => JSX.Element" ], "path": "packages/kbn-expandable-flyout/src/provider.tsx", "deprecated": false, @@ -75,7 +75,7 @@ "id": "def-public.ExpandableFlyoutProvider.$1", "type": "CompoundType", "tags": [], - "label": "{\n children,\n storage = 'url',\n}", + "label": "{\n children,\n urlKey,\n}", "description": [], "signature": [ "React.PropsWithChildren>" @@ -122,7 +122,7 @@ "tags": [], "label": "useExpandableFlyoutState", "description": [ - "\nThis hook allows you to access the flyout state, read open panels and previews." + "\nThis hook allows you to access the flyout state, read open right, left and preview panels." ], "signature": [ "() => ", @@ -130,8 +130,8 @@ "pluginId": "@kbn/expandable-flyout", "scope": "public", "docId": "kibKbnExpandableFlyoutPluginApi", - "section": "def-public.State", - "text": "State" + "section": "def-public.FlyoutState", + "text": "FlyoutState" } ], "path": "packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts", @@ -637,53 +637,10 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-public.PanelPath", - "type": "Interface", - "tags": [], - "label": "PanelPath", - "description": [], - "path": "packages/kbn-expandable-flyout/src/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/expandable-flyout", - "id": "def-public.PanelPath.tab", - "type": "string", - "tags": [], - "label": "tab", - "description": [ - "\nTop level tab that to be displayed" - ], - "path": "packages/kbn-expandable-flyout/src/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/expandable-flyout", - "id": "def-public.PanelPath.subTab", - "type": "string", - "tags": [], - "label": "subTab", - "description": [ - "\nOptional secondary level to be displayed under top level tab" - ], - "signature": [ - "string | undefined" - ], - "path": "packages/kbn-expandable-flyout/src/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/expandable-flyout", - "id": "def-public.State", + "id": "def-public.FlyoutState", "type": "Interface", "tags": [], - "label": "State", + "label": "FlyoutState", "description": [], "path": "packages/kbn-expandable-flyout/src/state.ts", "deprecated": false, @@ -691,7 +648,7 @@ "children": [ { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-public.State.left", + "id": "def-public.FlyoutState.left", "type": "Object", "tags": [], "label": "left", @@ -714,7 +671,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-public.State.right", + "id": "def-public.FlyoutState.right", "type": "Object", "tags": [], "label": "right", @@ -737,7 +694,7 @@ }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-public.State.preview", + "id": "def-public.FlyoutState.preview", "type": "Array", "tags": [], "label": "preview", @@ -752,25 +709,52 @@ "section": "def-public.FlyoutPanelProps", "text": "FlyoutPanelProps" }, - "[]" + "[] | undefined" ], "path": "packages/kbn-expandable-flyout/src/state.ts", "deprecated": false, "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/expandable-flyout", + "id": "def-public.PanelPath", + "type": "Interface", + "tags": [], + "label": "PanelPath", + "description": [], + "path": "packages/kbn-expandable-flyout/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/expandable-flyout", + "id": "def-public.PanelPath.tab", + "type": "string", + "tags": [], + "label": "tab", + "description": [ + "\nTop level tab that to be displayed" + ], + "path": "packages/kbn-expandable-flyout/src/types.ts", + "deprecated": false, + "trackAdoption": false }, { "parentPluginId": "@kbn/expandable-flyout", - "id": "def-public.State.needsSync", - "type": "CompoundType", + "id": "def-public.PanelPath.subTab", + "type": "string", "tags": [], - "label": "needsSync", + "label": "subTab", "description": [ - "\nIs the flyout in sync with external storage (eg. url)?\nThis value can be used in useEffect for example, to control whether we should\ncall an external state sync method." + "\nOptional secondary level to be displayed under top level tab" ], "signature": [ - "boolean | undefined" + "string | undefined" ], - "path": "packages/kbn-expandable-flyout/src/state.ts", + "path": "packages/kbn-expandable-flyout/src/types.ts", "deprecated": false, "trackAdoption": false } @@ -779,23 +763,7 @@ } ], "enums": [], - "misc": [ - { - "parentPluginId": "@kbn/expandable-flyout", - "id": "def-public.EXPANDABLE_FLYOUT_URL_KEY", - "type": "string", - "tags": [], - "label": "EXPANDABLE_FLYOUT_URL_KEY", - "description": [], - "signature": [ - "\"eventFlyout\"" - ], - "path": "packages/kbn-expandable-flyout/src/constants.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - } - ], + "misc": [], "objects": [] }, "server": { diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index a1c104c0e8a59..08a4ee3702eaa 100644 --- a/api_docs/kbn_expandable_flyout.mdx +++ b/api_docs/kbn_expandable_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-expandable-flyout title: "@kbn/expandable-flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/expandable-flyout plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-threat-hunting-investigations](https://github.com/org | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 39 | 0 | 15 | 1 | +| 37 | 0 | 14 | 1 | ## Client @@ -31,6 +31,3 @@ Contact [@elastic/security-threat-hunting-investigations](https://github.com/org ### Interfaces -### Consts, variables and types - - diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index ca208754f8789..051a3818d2d93 100644 --- a/api_docs/kbn_field_types.mdx +++ b/api_docs/kbn_field_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-types title: "@kbn/field-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_field_utils.mdx b/api_docs/kbn_field_utils.mdx index 6cb5d69aa53c9..6966bcb595816 100644 --- a/api_docs/kbn_field_utils.mdx +++ b/api_docs/kbn_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-field-utils title: "@kbn/field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/field-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-utils'] --- import kbnFieldUtilsObj from './kbn_field_utils.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 3e6c1f5b218c8..4bde6ef9274e8 100644 --- a/api_docs/kbn_find_used_node_modules.mdx +++ b/api_docs/kbn_find_used_node_modules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-find-used-node-modules title: "@kbn/find-used-node-modules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/find-used-node-modules plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/find-used-node-modules'] --- import kbnFindUsedNodeModulesObj from './kbn_find_used_node_modules.devdocs.json'; diff --git a/api_docs/kbn_formatters.mdx b/api_docs/kbn_formatters.mdx index 5c12d24686408..e864d4123ff8a 100644 --- a/api_docs/kbn_formatters.mdx +++ b/api_docs/kbn_formatters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-formatters title: "@kbn/formatters" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/formatters plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/formatters'] --- import kbnFormattersObj from './kbn_formatters.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index a1fd2e44cee9e..699eacbcceaf6 100644 --- a/api_docs/kbn_ftr_common_functional_services.mdx +++ b/api_docs/kbn_ftr_common_functional_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-services title: "@kbn/ftr-common-functional-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-services plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json b/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json index d647d7dc8d83a..5c4b060c52ba8 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json +++ b/api_docs/kbn_ftr_common_functional_ui_services.devdocs.json @@ -11997,7 +11997,9 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => Promise; }, {}, ProvidedTypeMap<{ retry: typeof ", + ") => Promise; toasts: typeof ", + "ToastsService", + "; }, {}, ProvidedTypeMap<{ retry: typeof ", { "pluginId": "@kbn/ftr-common-functional-services", "scope": "common", @@ -12059,7 +12061,9 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => Promise; }>, ProvidedTypeMap<{}>>" + ") => Promise; toasts: typeof ", + "ToastsService", + "; }>, ProvidedTypeMap<{}>>" ], "path": "packages/kbn-ftr-common-functional-ui-services/services/ftr_provider_context.ts", "deprecated": false, @@ -12508,7 +12512,9 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => Promise; }, {}, ProvidedTypeMap<{ retry: typeof ", + ") => Promise; toasts: typeof ", + "ToastsService", + "; }, {}, ProvidedTypeMap<{ retry: typeof ", { "pluginId": "@kbn/ftr-common-functional-services", "scope": "common", @@ -12570,7 +12576,9 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => Promise; }>, ProvidedTypeMap<{}>>" + ") => Promise; toasts: typeof ", + "ToastsService", + "; }>, ProvidedTypeMap<{}>>" ], "path": "packages/kbn-ftr-common-functional-ui-services/services/retry_on_stale.ts", "deprecated": false, @@ -12690,7 +12698,9 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => Promise; }, {}, ProvidedTypeMap<{ retry: typeof ", + ") => Promise; toasts: typeof ", + "ToastsService", + "; }, {}, ProvidedTypeMap<{ retry: typeof ", { "pluginId": "@kbn/ftr-common-functional-services", "scope": "common", @@ -12752,7 +12762,9 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => Promise; }>, ProvidedTypeMap<{}>>" + ") => Promise; toasts: typeof ", + "ToastsService", + "; }>, ProvidedTypeMap<{}>>" ], "path": "packages/kbn-ftr-common-functional-ui-services/services/remote/remote.ts", "deprecated": false, @@ -12862,7 +12874,9 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => Promise; }, {}, ProvidedTypeMap<{ retry: typeof ", + ") => Promise; toasts: typeof ", + "ToastsService", + "; }, {}, ProvidedTypeMap<{ retry: typeof ", { "pluginId": "@kbn/ftr-common-functional-services", "scope": "common", @@ -12924,7 +12938,9 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => Promise; }>, ProvidedTypeMap<{}>>" + ") => Promise; toasts: typeof ", + "ToastsService", + "; }>, ProvidedTypeMap<{}>>" ], "path": "packages/kbn-ftr-common-functional-ui-services/services/find.ts", "deprecated": false, @@ -13053,7 +13069,9 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => Promise; }, {}, ProvidedTypeMap<{ retry: typeof ", + ") => Promise; toasts: typeof ", + "ToastsService", + "; }, {}, ProvidedTypeMap<{ retry: typeof ", { "pluginId": "@kbn/ftr-common-functional-services", "scope": "common", @@ -13115,13 +13133,30 @@ "section": "def-common.FtrProviderContext", "text": "FtrProviderContext" }, - ") => Promise; }>, ProvidedTypeMap<{}>>" + ") => Promise; toasts: typeof ", + "ToastsService", + "; }>, ProvidedTypeMap<{}>>" ], "path": "packages/kbn-ftr-common-functional-ui-services/services/browser.ts", "deprecated": false, "trackAdoption": false } ] + }, + { + "parentPluginId": "@kbn/ftr-common-functional-ui-services", + "id": "def-common.services.toasts", + "type": "Object", + "tags": [], + "label": "toasts", + "description": [], + "signature": [ + "typeof ", + "ToastsService" + ], + "path": "packages/kbn-ftr-common-functional-ui-services/services/all.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 68bd8b312a43b..3ae40b00dbc6d 100644 --- a/api_docs/kbn_ftr_common_functional_ui_services.mdx +++ b/api_docs/kbn_ftr_common_functional_ui_services.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ftr-common-functional-ui-services title: "@kbn/ftr-common-functional-ui-services" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ftr-common-functional-ui-services plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) for | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 550 | 6 | 510 | 2 | +| 551 | 6 | 511 | 3 | ## Common diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index 9f9c6a53d2495..474eb330b5f5a 100644 --- a/api_docs/kbn_generate.mdx +++ b/api_docs/kbn_generate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate title: "@kbn/generate" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate'] --- import kbnGenerateObj from './kbn_generate.devdocs.json'; diff --git a/api_docs/kbn_generate_console_definitions.mdx b/api_docs/kbn_generate_console_definitions.mdx index 521a7660c74cc..334b3affa134c 100644 --- a/api_docs/kbn_generate_console_definitions.mdx +++ b/api_docs/kbn_generate_console_definitions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-console-definitions title: "@kbn/generate-console-definitions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-console-definitions plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-console-definitions'] --- import kbnGenerateConsoleDefinitionsObj from './kbn_generate_console_definitions.devdocs.json'; diff --git a/api_docs/kbn_generate_csv.mdx b/api_docs/kbn_generate_csv.mdx index 0afa675e274a1..785315017df3d 100644 --- a/api_docs/kbn_generate_csv.mdx +++ b/api_docs/kbn_generate_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv title: "@kbn/generate-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index 021ef217dcdaf..9e07f98f9c218 100644 --- a/api_docs/kbn_guided_onboarding.mdx +++ b/api_docs/kbn_guided_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-guided-onboarding title: "@kbn/guided-onboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/guided-onboarding plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/guided-onboarding'] --- import kbnGuidedOnboardingObj from './kbn_guided_onboarding.devdocs.json'; diff --git a/api_docs/kbn_handlebars.mdx b/api_docs/kbn_handlebars.mdx index 0a9fba393dd72..50cbe6a0f4bdb 100644 --- a/api_docs/kbn_handlebars.mdx +++ b/api_docs/kbn_handlebars.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-handlebars title: "@kbn/handlebars" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/handlebars plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/handlebars'] --- import kbnHandlebarsObj from './kbn_handlebars.devdocs.json'; diff --git a/api_docs/kbn_hapi_mocks.mdx b/api_docs/kbn_hapi_mocks.mdx index ea945b5002e0e..afc7bdfeedbc2 100644 --- a/api_docs/kbn_hapi_mocks.mdx +++ b/api_docs/kbn_hapi_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-hapi-mocks title: "@kbn/hapi-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/hapi-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/hapi-mocks'] --- import kbnHapiMocksObj from './kbn_hapi_mocks.devdocs.json'; diff --git a/api_docs/kbn_health_gateway_server.mdx b/api_docs/kbn_health_gateway_server.mdx index fa61619e306ab..22971e949b532 100644 --- a/api_docs/kbn_health_gateway_server.mdx +++ b/api_docs/kbn_health_gateway_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-health-gateway-server title: "@kbn/health-gateway-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/health-gateway-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/health-gateway-server'] --- import kbnHealthGatewayServerObj from './kbn_health_gateway_server.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_card.mdx b/api_docs/kbn_home_sample_data_card.mdx index 477e35556c5a3..f9fdfa23e0a53 100644 --- a/api_docs/kbn_home_sample_data_card.mdx +++ b/api_docs/kbn_home_sample_data_card.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-card title: "@kbn/home-sample-data-card" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-card plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-card'] --- import kbnHomeSampleDataCardObj from './kbn_home_sample_data_card.devdocs.json'; diff --git a/api_docs/kbn_home_sample_data_tab.mdx b/api_docs/kbn_home_sample_data_tab.mdx index ae6d948850059..f347a780e5635 100644 --- a/api_docs/kbn_home_sample_data_tab.mdx +++ b/api_docs/kbn_home_sample_data_tab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-home-sample-data-tab title: "@kbn/home-sample-data-tab" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/home-sample-data-tab plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/home-sample-data-tab'] --- import kbnHomeSampleDataTabObj from './kbn_home_sample_data_tab.devdocs.json'; diff --git a/api_docs/kbn_i18n.mdx b/api_docs/kbn_i18n.mdx index 3732301ef22a9..b2f13f52cde5e 100644 --- a/api_docs/kbn_i18n.mdx +++ b/api_docs/kbn_i18n.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n title: "@kbn/i18n" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n'] --- import kbnI18nObj from './kbn_i18n.devdocs.json'; diff --git a/api_docs/kbn_i18n_react.mdx b/api_docs/kbn_i18n_react.mdx index 0a437c2b869c2..681835b5b2884 100644 --- a/api_docs/kbn_i18n_react.mdx +++ b/api_docs/kbn_i18n_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-i18n-react title: "@kbn/i18n-react" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/i18n-react plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/i18n-react'] --- import kbnI18nReactObj from './kbn_i18n_react.devdocs.json'; diff --git a/api_docs/kbn_import_resolver.mdx b/api_docs/kbn_import_resolver.mdx index d6262b316eb09..49e145af8265d 100644 --- a/api_docs/kbn_import_resolver.mdx +++ b/api_docs/kbn_import_resolver.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-import-resolver title: "@kbn/import-resolver" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/import-resolver plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 66318e061b4e4..171dca32d0091 100644 --- a/api_docs/kbn_infra_forge.mdx +++ b/api_docs/kbn_infra_forge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-infra-forge title: "@kbn/infra-forge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/infra-forge plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/infra-forge'] --- import kbnInfraForgeObj from './kbn_infra_forge.devdocs.json'; diff --git a/api_docs/kbn_interpreter.mdx b/api_docs/kbn_interpreter.mdx index e655fbfb056cf..4a24609259b70 100644 --- a/api_docs/kbn_interpreter.mdx +++ b/api_docs/kbn_interpreter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-interpreter title: "@kbn/interpreter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/interpreter plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 34e4263fbd1d8..a3e99e3a038ca 100644 --- a/api_docs/kbn_io_ts_utils.mdx +++ b/api_docs/kbn_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-io-ts-utils title: "@kbn/io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/io-ts-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index a66ed114d41dc..aff58c93c917f 100644 --- a/api_docs/kbn_jest_serializers.mdx +++ b/api_docs/kbn_jest_serializers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-jest-serializers title: "@kbn/jest-serializers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/jest-serializers plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/jest-serializers'] --- import kbnJestSerializersObj from './kbn_jest_serializers.devdocs.json'; diff --git a/api_docs/kbn_journeys.mdx b/api_docs/kbn_journeys.mdx index 4c37c4709a562..0af4664f728e5 100644 --- a/api_docs/kbn_journeys.mdx +++ b/api_docs/kbn_journeys.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-journeys title: "@kbn/journeys" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/journeys plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/journeys'] --- import kbnJourneysObj from './kbn_journeys.devdocs.json'; diff --git a/api_docs/kbn_json_ast.mdx b/api_docs/kbn_json_ast.mdx index 0a1ebd6c0d5ee..bfbf8891a8f0a 100644 --- a/api_docs/kbn_json_ast.mdx +++ b/api_docs/kbn_json_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-ast title: "@kbn/json-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-ast plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 026262e6bbbd5..da3c69c40126a 100644 --- a/api_docs/kbn_kibana_manifest_schema.mdx +++ b/api_docs/kbn_kibana_manifest_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-kibana-manifest-schema title: "@kbn/kibana-manifest-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/kibana-manifest-schema plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/kibana-manifest-schema'] --- import kbnKibanaManifestSchemaObj from './kbn_kibana_manifest_schema.devdocs.json'; diff --git a/api_docs/kbn_language_documentation_popover.mdx b/api_docs/kbn_language_documentation_popover.mdx index 297fd5306a25e..edd475d528c92 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 984af0b13bcad..104e8edb0f57a 100644 --- a/api_docs/kbn_lens_embeddable_utils.mdx +++ b/api_docs/kbn_lens_embeddable_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-embeddable-utils title: "@kbn/lens-embeddable-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-embeddable-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-embeddable-utils'] --- import kbnLensEmbeddableUtilsObj from './kbn_lens_embeddable_utils.devdocs.json'; diff --git a/api_docs/kbn_lens_formula_docs.mdx b/api_docs/kbn_lens_formula_docs.mdx index 5cf24e963976f..0f25b8bdc7993 100644 --- a/api_docs/kbn_lens_formula_docs.mdx +++ b/api_docs/kbn_lens_formula_docs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-lens-formula-docs title: "@kbn/lens-formula-docs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/lens-formula-docs plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/lens-formula-docs'] --- import kbnLensFormulaDocsObj from './kbn_lens_formula_docs.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 98cb9ff02fd2b..6c293c9760518 100644 --- a/api_docs/kbn_logging.mdx +++ b/api_docs/kbn_logging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging title: "@kbn/logging" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging'] --- import kbnLoggingObj from './kbn_logging.devdocs.json'; diff --git a/api_docs/kbn_logging_mocks.mdx b/api_docs/kbn_logging_mocks.mdx index 4d57f5c74c699..c88df0da4da4a 100644 --- a/api_docs/kbn_logging_mocks.mdx +++ b/api_docs/kbn_logging_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-logging-mocks title: "@kbn/logging-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/logging-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_content_badge.mdx b/api_docs/kbn_managed_content_badge.mdx index 79768900c185a..f445f51010d98 100644 --- a/api_docs/kbn_managed_content_badge.mdx +++ b/api_docs/kbn_managed_content_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-content-badge title: "@kbn/managed-content-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-content-badge plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-content-badge'] --- import kbnManagedContentBadgeObj from './kbn_managed_content_badge.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index 425e9473380b8..c1531b83d7d98 100644 --- a/api_docs/kbn_managed_vscode_config.mdx +++ b/api_docs/kbn_managed_vscode_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-managed-vscode-config title: "@kbn/managed-vscode-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/managed-vscode-config plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/managed-vscode-config'] --- import kbnManagedVscodeConfigObj from './kbn_managed_vscode_config.devdocs.json'; diff --git a/api_docs/kbn_management_cards_navigation.mdx b/api_docs/kbn_management_cards_navigation.mdx index 9a1c9beb84caf..37febb3fc561d 100644 --- a/api_docs/kbn_management_cards_navigation.mdx +++ b/api_docs/kbn_management_cards_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-cards-navigation title: "@kbn/management-cards-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-cards-navigation plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-cards-navigation'] --- import kbnManagementCardsNavigationObj from './kbn_management_cards_navigation.devdocs.json'; diff --git a/api_docs/kbn_management_settings_application.mdx b/api_docs/kbn_management_settings_application.mdx index 439bc5008328d..b617e4499b304 100644 --- a/api_docs/kbn_management_settings_application.mdx +++ b/api_docs/kbn_management_settings_application.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-application title: "@kbn/management-settings-application" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-application plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-application'] --- import kbnManagementSettingsApplicationObj from './kbn_management_settings_application.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_category.mdx b/api_docs/kbn_management_settings_components_field_category.mdx index 5b27d5d5a1042..330be7c28cf84 100644 --- a/api_docs/kbn_management_settings_components_field_category.mdx +++ b/api_docs/kbn_management_settings_components_field_category.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-category title: "@kbn/management-settings-components-field-category" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-category plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-category'] --- import kbnManagementSettingsComponentsFieldCategoryObj from './kbn_management_settings_components_field_category.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_input.mdx b/api_docs/kbn_management_settings_components_field_input.mdx index ed45df243eb0f..f704a18c476fd 100644 --- a/api_docs/kbn_management_settings_components_field_input.mdx +++ b/api_docs/kbn_management_settings_components_field_input.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-input title: "@kbn/management-settings-components-field-input" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-input plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-input'] --- import kbnManagementSettingsComponentsFieldInputObj from './kbn_management_settings_components_field_input.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_field_row.mdx b/api_docs/kbn_management_settings_components_field_row.mdx index aa38a98ef6b97..ee678fb1a2555 100644 --- a/api_docs/kbn_management_settings_components_field_row.mdx +++ b/api_docs/kbn_management_settings_components_field_row.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-field-row title: "@kbn/management-settings-components-field-row" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-field-row plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-field-row'] --- import kbnManagementSettingsComponentsFieldRowObj from './kbn_management_settings_components_field_row.devdocs.json'; diff --git a/api_docs/kbn_management_settings_components_form.mdx b/api_docs/kbn_management_settings_components_form.mdx index 0840e0ee8cd37..f2776e1514918 100644 --- a/api_docs/kbn_management_settings_components_form.mdx +++ b/api_docs/kbn_management_settings_components_form.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-components-form title: "@kbn/management-settings-components-form" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-components-form plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-components-form'] --- import kbnManagementSettingsComponentsFormObj from './kbn_management_settings_components_form.devdocs.json'; diff --git a/api_docs/kbn_management_settings_field_definition.mdx b/api_docs/kbn_management_settings_field_definition.mdx index 7af82aaa9f6ef..d373ab47801fa 100644 --- a/api_docs/kbn_management_settings_field_definition.mdx +++ b/api_docs/kbn_management_settings_field_definition.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-field-definition title: "@kbn/management-settings-field-definition" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-field-definition plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index f1fa60612d39a..e07be4a5b075f 100644 --- a/api_docs/kbn_management_settings_ids.mdx +++ b/api_docs/kbn_management_settings_ids.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-ids title: "@kbn/management-settings-ids" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-ids plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index 9c14f3bbdd35c..dc07cf9bf3202 100644 --- a/api_docs/kbn_management_settings_section_registry.mdx +++ b/api_docs/kbn_management_settings_section_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-section-registry title: "@kbn/management-settings-section-registry" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-section-registry plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-section-registry'] --- import kbnManagementSettingsSectionRegistryObj from './kbn_management_settings_section_registry.devdocs.json'; diff --git a/api_docs/kbn_management_settings_types.mdx b/api_docs/kbn_management_settings_types.mdx index 6f4baee787448..9c4f7e54b8f25 100644 --- a/api_docs/kbn_management_settings_types.mdx +++ b/api_docs/kbn_management_settings_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-types title: "@kbn/management-settings-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-types'] --- import kbnManagementSettingsTypesObj from './kbn_management_settings_types.devdocs.json'; diff --git a/api_docs/kbn_management_settings_utilities.mdx b/api_docs/kbn_management_settings_utilities.mdx index f29022093768f..e13c1d6ec1a69 100644 --- a/api_docs/kbn_management_settings_utilities.mdx +++ b/api_docs/kbn_management_settings_utilities.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-settings-utilities title: "@kbn/management-settings-utilities" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-settings-utilities plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-utilities'] --- import kbnManagementSettingsUtilitiesObj from './kbn_management_settings_utilities.devdocs.json'; diff --git a/api_docs/kbn_management_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index 91202df446809..1af3249b0e69e 100644 --- a/api_docs/kbn_management_storybook_config.mdx +++ b/api_docs/kbn_management_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-management-storybook-config title: "@kbn/management-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/management-storybook-config plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-storybook-config'] --- import kbnManagementStorybookConfigObj from './kbn_management_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_mapbox_gl.mdx b/api_docs/kbn_mapbox_gl.mdx index 12f22c8e8482c..b443dcc1a0384 100644 --- a/api_docs/kbn_mapbox_gl.mdx +++ b/api_docs/kbn_mapbox_gl.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mapbox-gl title: "@kbn/mapbox-gl" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mapbox-gl plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mapbox-gl'] --- import kbnMapboxGlObj from './kbn_mapbox_gl.devdocs.json'; diff --git a/api_docs/kbn_maps_vector_tile_utils.mdx b/api_docs/kbn_maps_vector_tile_utils.mdx index 49699f7cfe676..dd0ee5d5831da 100644 --- a/api_docs/kbn_maps_vector_tile_utils.mdx +++ b/api_docs/kbn_maps_vector_tile_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-maps-vector-tile-utils title: "@kbn/maps-vector-tile-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/maps-vector-tile-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/maps-vector-tile-utils'] --- import kbnMapsVectorTileUtilsObj from './kbn_maps_vector_tile_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_agg_utils.mdx b/api_docs/kbn_ml_agg_utils.mdx index 539e91f13b264..535c39f6fa2ca 100644 --- a/api_docs/kbn_ml_agg_utils.mdx +++ b/api_docs/kbn_ml_agg_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-agg-utils title: "@kbn/ml-agg-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-agg-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-agg-utils'] --- import kbnMlAggUtilsObj from './kbn_ml_agg_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_anomaly_utils.mdx b/api_docs/kbn_ml_anomaly_utils.mdx index 6ea4458a63848..f9070ce558ebd 100644 --- a/api_docs/kbn_ml_anomaly_utils.mdx +++ b/api_docs/kbn_ml_anomaly_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-anomaly-utils title: "@kbn/ml-anomaly-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-anomaly-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-anomaly-utils'] --- import kbnMlAnomalyUtilsObj from './kbn_ml_anomaly_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_cancellable_search.mdx b/api_docs/kbn_ml_cancellable_search.mdx index 20495d21d3ab9..1ae61a3a8d065 100644 --- a/api_docs/kbn_ml_cancellable_search.mdx +++ b/api_docs/kbn_ml_cancellable_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-cancellable-search title: "@kbn/ml-cancellable-search" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-cancellable-search plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-cancellable-search'] --- import kbnMlCancellableSearchObj from './kbn_ml_cancellable_search.devdocs.json'; diff --git a/api_docs/kbn_ml_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 2f192a5e5932f..901e4d0ac698d 100644 --- a/api_docs/kbn_ml_category_validator.mdx +++ b/api_docs/kbn_ml_category_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-category-validator title: "@kbn/ml-category-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-category-validator plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-category-validator'] --- import kbnMlCategoryValidatorObj from './kbn_ml_category_validator.devdocs.json'; diff --git a/api_docs/kbn_ml_chi2test.mdx b/api_docs/kbn_ml_chi2test.mdx index e91d1a8c397ce..b6c2459e6d495 100644 --- a/api_docs/kbn_ml_chi2test.mdx +++ b/api_docs/kbn_ml_chi2test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-chi2test title: "@kbn/ml-chi2test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-chi2test plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-chi2test'] --- import kbnMlChi2testObj from './kbn_ml_chi2test.devdocs.json'; diff --git a/api_docs/kbn_ml_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index d369925c98fef..20e1f89d18196 100644 --- a/api_docs/kbn_ml_data_frame_analytics_utils.mdx +++ b/api_docs/kbn_ml_data_frame_analytics_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-frame-analytics-utils title: "@kbn/ml-data-frame-analytics-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-frame-analytics-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-frame-analytics-utils'] --- import kbnMlDataFrameAnalyticsUtilsObj from './kbn_ml_data_frame_analytics_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_data_grid.mdx b/api_docs/kbn_ml_data_grid.mdx index a34824da07c0f..1a4c6e279baf2 100644 --- a/api_docs/kbn_ml_data_grid.mdx +++ b/api_docs/kbn_ml_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-data-grid title: "@kbn/ml-data-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-data-grid plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-data-grid'] --- import kbnMlDataGridObj from './kbn_ml_data_grid.devdocs.json'; diff --git a/api_docs/kbn_ml_date_picker.mdx b/api_docs/kbn_ml_date_picker.mdx index 3fdccf709e578..db9e757f78918 100644 --- a/api_docs/kbn_ml_date_picker.mdx +++ b/api_docs/kbn_ml_date_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-picker title: "@kbn/ml-date-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-picker plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-picker'] --- import kbnMlDatePickerObj from './kbn_ml_date_picker.devdocs.json'; diff --git a/api_docs/kbn_ml_date_utils.mdx b/api_docs/kbn_ml_date_utils.mdx index c892445a80c24..5cecc426b8fd2 100644 --- a/api_docs/kbn_ml_date_utils.mdx +++ b/api_docs/kbn_ml_date_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-date-utils title: "@kbn/ml-date-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-date-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-date-utils'] --- import kbnMlDateUtilsObj from './kbn_ml_date_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_error_utils.mdx b/api_docs/kbn_ml_error_utils.mdx index a9fca323f0920..20ec4546a3ae6 100644 --- a/api_docs/kbn_ml_error_utils.mdx +++ b/api_docs/kbn_ml_error_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-error-utils title: "@kbn/ml-error-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-error-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-error-utils'] --- import kbnMlErrorUtilsObj from './kbn_ml_error_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_in_memory_table.mdx b/api_docs/kbn_ml_in_memory_table.mdx index de8e80b6d2f5d..bf74026067409 100644 --- a/api_docs/kbn_ml_in_memory_table.mdx +++ b/api_docs/kbn_ml_in_memory_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-in-memory-table title: "@kbn/ml-in-memory-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-in-memory-table plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-in-memory-table'] --- import kbnMlInMemoryTableObj from './kbn_ml_in_memory_table.devdocs.json'; diff --git a/api_docs/kbn_ml_is_defined.mdx b/api_docs/kbn_ml_is_defined.mdx index bdce7bcc5d840..286d44fa2ddc7 100644 --- a/api_docs/kbn_ml_is_defined.mdx +++ b/api_docs/kbn_ml_is_defined.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-defined title: "@kbn/ml-is-defined" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-defined plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-defined'] --- import kbnMlIsDefinedObj from './kbn_ml_is_defined.devdocs.json'; diff --git a/api_docs/kbn_ml_is_populated_object.mdx b/api_docs/kbn_ml_is_populated_object.mdx index fe0d95dac2465..64eb34adf2ece 100644 --- a/api_docs/kbn_ml_is_populated_object.mdx +++ b/api_docs/kbn_ml_is_populated_object.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-is-populated-object title: "@kbn/ml-is-populated-object" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-is-populated-object plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-is-populated-object'] --- import kbnMlIsPopulatedObjectObj from './kbn_ml_is_populated_object.devdocs.json'; diff --git a/api_docs/kbn_ml_kibana_theme.mdx b/api_docs/kbn_ml_kibana_theme.mdx index 21c8264d281a3..55c788be72820 100644 --- a/api_docs/kbn_ml_kibana_theme.mdx +++ b/api_docs/kbn_ml_kibana_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-kibana-theme title: "@kbn/ml-kibana-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-kibana-theme plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-kibana-theme'] --- import kbnMlKibanaThemeObj from './kbn_ml_kibana_theme.devdocs.json'; diff --git a/api_docs/kbn_ml_local_storage.mdx b/api_docs/kbn_ml_local_storage.mdx index 7ba66e95a9c39..e463e49759ea2 100644 --- a/api_docs/kbn_ml_local_storage.mdx +++ b/api_docs/kbn_ml_local_storage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-local-storage title: "@kbn/ml-local-storage" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-local-storage plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-local-storage'] --- import kbnMlLocalStorageObj from './kbn_ml_local_storage.devdocs.json'; diff --git a/api_docs/kbn_ml_nested_property.mdx b/api_docs/kbn_ml_nested_property.mdx index ff4f7fd6f89c8..6cf30efa90389 100644 --- a/api_docs/kbn_ml_nested_property.mdx +++ b/api_docs/kbn_ml_nested_property.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-nested-property title: "@kbn/ml-nested-property" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-nested-property plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-nested-property'] --- import kbnMlNestedPropertyObj from './kbn_ml_nested_property.devdocs.json'; diff --git a/api_docs/kbn_ml_number_utils.mdx b/api_docs/kbn_ml_number_utils.mdx index 3fb16dcbaf5ed..52ac6bb528b3b 100644 --- a/api_docs/kbn_ml_number_utils.mdx +++ b/api_docs/kbn_ml_number_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-number-utils title: "@kbn/ml-number-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-number-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-number-utils'] --- import kbnMlNumberUtilsObj from './kbn_ml_number_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_query_utils.mdx b/api_docs/kbn_ml_query_utils.mdx index 65c9cb39ec8c6..a07212fc524a0 100644 --- a/api_docs/kbn_ml_query_utils.mdx +++ b/api_docs/kbn_ml_query_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-query-utils title: "@kbn/ml-query-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-query-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-query-utils'] --- import kbnMlQueryUtilsObj from './kbn_ml_query_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_random_sampler_utils.mdx b/api_docs/kbn_ml_random_sampler_utils.mdx index dc501f0da91c7..7646ea710084e 100644 --- a/api_docs/kbn_ml_random_sampler_utils.mdx +++ b/api_docs/kbn_ml_random_sampler_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-random-sampler-utils title: "@kbn/ml-random-sampler-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-random-sampler-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-random-sampler-utils'] --- import kbnMlRandomSamplerUtilsObj from './kbn_ml_random_sampler_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_route_utils.mdx b/api_docs/kbn_ml_route_utils.mdx index ac2280e1d6c72..662561d038eea 100644 --- a/api_docs/kbn_ml_route_utils.mdx +++ b/api_docs/kbn_ml_route_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-route-utils title: "@kbn/ml-route-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-route-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-route-utils'] --- import kbnMlRouteUtilsObj from './kbn_ml_route_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_runtime_field_utils.mdx b/api_docs/kbn_ml_runtime_field_utils.mdx index 239c62f1e4ff6..265f2c9a2d324 100644 --- a/api_docs/kbn_ml_runtime_field_utils.mdx +++ b/api_docs/kbn_ml_runtime_field_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-runtime-field-utils title: "@kbn/ml-runtime-field-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-runtime-field-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-runtime-field-utils'] --- import kbnMlRuntimeFieldUtilsObj from './kbn_ml_runtime_field_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_string_hash.mdx b/api_docs/kbn_ml_string_hash.mdx index a36aa9c26b0ae..28ae07878f0cf 100644 --- a/api_docs/kbn_ml_string_hash.mdx +++ b/api_docs/kbn_ml_string_hash.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-string-hash title: "@kbn/ml-string-hash" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-string-hash plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index eb9cc0c81eb90..252d230ed580c 100644 --- a/api_docs/kbn_ml_trained_models_utils.mdx +++ b/api_docs/kbn_ml_trained_models_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-trained-models-utils title: "@kbn/ml-trained-models-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-trained-models-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-trained-models-utils'] --- import kbnMlTrainedModelsUtilsObj from './kbn_ml_trained_models_utils.devdocs.json'; diff --git a/api_docs/kbn_ml_ui_actions.mdx b/api_docs/kbn_ml_ui_actions.mdx index d8048dad6b605..656654aa4e158 100644 --- a/api_docs/kbn_ml_ui_actions.mdx +++ b/api_docs/kbn_ml_ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-ui-actions title: "@kbn/ml-ui-actions" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-ui-actions plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-ui-actions'] --- import kbnMlUiActionsObj from './kbn_ml_ui_actions.devdocs.json'; diff --git a/api_docs/kbn_ml_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index c9188d0247e4d..67c42f19f5e09 100644 --- a/api_docs/kbn_ml_url_state.mdx +++ b/api_docs/kbn_ml_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-url-state title: "@kbn/ml-url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-url-state plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_mock_idp_utils.mdx b/api_docs/kbn_mock_idp_utils.mdx index 2c7d23551409a..e96b0d8d36557 100644 --- a/api_docs/kbn_mock_idp_utils.mdx +++ b/api_docs/kbn_mock_idp_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-mock-idp-utils title: "@kbn/mock-idp-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/mock-idp-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 2748ca8f215eb..50273c4683330 100644 --- a/api_docs/kbn_monaco.mdx +++ b/api_docs/kbn_monaco.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-monaco title: "@kbn/monaco" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/monaco plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 46a6bd62b3ec6..f2bfe75fd8e64 100644 --- a/api_docs/kbn_object_versioning.mdx +++ b/api_docs/kbn_object_versioning.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-object-versioning title: "@kbn/object-versioning" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/object-versioning plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/object-versioning'] --- import kbnObjectVersioningObj from './kbn_object_versioning.devdocs.json'; diff --git a/api_docs/kbn_observability_alert_details.mdx b/api_docs/kbn_observability_alert_details.mdx index 6624c83850269..a224c7e334d21 100644 --- a/api_docs/kbn_observability_alert_details.mdx +++ b/api_docs/kbn_observability_alert_details.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alert-details title: "@kbn/observability-alert-details" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alert-details plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index f4b6f7e8aecbd..d597ec046ee43 100644 --- a/api_docs/kbn_observability_alerting_test_data.mdx +++ b/api_docs/kbn_observability_alerting_test_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-test-data title: "@kbn/observability-alerting-test-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-test-data plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-test-data'] --- import kbnObservabilityAlertingTestDataObj from './kbn_observability_alerting_test_data.devdocs.json'; diff --git a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx index 518bdec214a5c..a4249a2316f0a 100644 --- a/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx +++ b/api_docs/kbn_observability_get_padded_alert_time_range_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-get-padded-alert-time-range-util title: "@kbn/observability-get-padded-alert-time-range-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-get-padded-alert-time-range-util plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-get-padded-alert-time-range-util'] --- import kbnObservabilityGetPaddedAlertTimeRangeUtilObj from './kbn_observability_get_padded_alert_time_range_util.devdocs.json'; diff --git a/api_docs/kbn_openapi_bundler.mdx b/api_docs/kbn_openapi_bundler.mdx index 6ccc124f9bb08..a3b66b956659a 100644 --- a/api_docs/kbn_openapi_bundler.mdx +++ b/api_docs/kbn_openapi_bundler.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-bundler title: "@kbn/openapi-bundler" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-bundler plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-bundler'] --- import kbnOpenapiBundlerObj from './kbn_openapi_bundler.devdocs.json'; diff --git a/api_docs/kbn_openapi_generator.mdx b/api_docs/kbn_openapi_generator.mdx index 627f6894ab70f..465fcd31c67d6 100644 --- a/api_docs/kbn_openapi_generator.mdx +++ b/api_docs/kbn_openapi_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-openapi-generator title: "@kbn/openapi-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/openapi-generator plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/openapi-generator'] --- import kbnOpenapiGeneratorObj from './kbn_openapi_generator.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index b162fa17d1517..756931202211c 100644 --- a/api_docs/kbn_optimizer.mdx +++ b/api_docs/kbn_optimizer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer title: "@kbn/optimizer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer'] --- import kbnOptimizerObj from './kbn_optimizer.devdocs.json'; diff --git a/api_docs/kbn_optimizer_webpack_helpers.mdx b/api_docs/kbn_optimizer_webpack_helpers.mdx index 0e949e24c986d..3e1fec64daa3a 100644 --- a/api_docs/kbn_optimizer_webpack_helpers.mdx +++ b/api_docs/kbn_optimizer_webpack_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-optimizer-webpack-helpers title: "@kbn/optimizer-webpack-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/optimizer-webpack-helpers plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/optimizer-webpack-helpers'] --- import kbnOptimizerWebpackHelpersObj from './kbn_optimizer_webpack_helpers.devdocs.json'; diff --git a/api_docs/kbn_osquery_io_ts_types.mdx b/api_docs/kbn_osquery_io_ts_types.mdx index 5a0f64183ca30..e4148681d0de9 100644 --- a/api_docs/kbn_osquery_io_ts_types.mdx +++ b/api_docs/kbn_osquery_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-osquery-io-ts-types title: "@kbn/osquery-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/osquery-io-ts-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index d13e4b8c21f34..e61e9cd53f3fe 100644 --- a/api_docs/kbn_panel_loader.mdx +++ b/api_docs/kbn_panel_loader.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-panel-loader title: "@kbn/panel-loader" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/panel-loader plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index cc9db8c950f51..6e5e63d492bb5 100644 --- a/api_docs/kbn_performance_testing_dataset_extractor.mdx +++ b/api_docs/kbn_performance_testing_dataset_extractor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-performance-testing-dataset-extractor title: "@kbn/performance-testing-dataset-extractor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/performance-testing-dataset-extractor plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/performance-testing-dataset-extractor'] --- import kbnPerformanceTestingDatasetExtractorObj from './kbn_performance_testing_dataset_extractor.devdocs.json'; diff --git a/api_docs/kbn_plugin_check.mdx b/api_docs/kbn_plugin_check.mdx index b7b927dea3077..1a127e855795c 100644 --- a/api_docs/kbn_plugin_check.mdx +++ b/api_docs/kbn_plugin_check.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-check title: "@kbn/plugin-check" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-check plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-check'] --- import kbnPluginCheckObj from './kbn_plugin_check.devdocs.json'; diff --git a/api_docs/kbn_plugin_generator.mdx b/api_docs/kbn_plugin_generator.mdx index e892ce028a09a..940eec0c01369 100644 --- a/api_docs/kbn_plugin_generator.mdx +++ b/api_docs/kbn_plugin_generator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-generator title: "@kbn/plugin-generator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-generator plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-generator'] --- import kbnPluginGeneratorObj from './kbn_plugin_generator.devdocs.json'; diff --git a/api_docs/kbn_plugin_helpers.mdx b/api_docs/kbn_plugin_helpers.mdx index 0e7ce3b9e6912..252d43daec141 100644 --- a/api_docs/kbn_plugin_helpers.mdx +++ b/api_docs/kbn_plugin_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-plugin-helpers title: "@kbn/plugin-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/plugin-helpers plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index 3bda3cf573e66..30901c0e090b5 100644 --- a/api_docs/kbn_presentation_containers.mdx +++ b/api_docs/kbn_presentation_containers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-containers title: "@kbn/presentation-containers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-containers plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_library.mdx b/api_docs/kbn_presentation_library.mdx index e11008e5c5f26..1db641a74cec5 100644 --- a/api_docs/kbn_presentation_library.mdx +++ b/api_docs/kbn_presentation_library.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-library title: "@kbn/presentation-library" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-library plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-library'] --- import kbnPresentationLibraryObj from './kbn_presentation_library.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 2b9254a4a27b2..b886356d9a7c5 100644 --- a/api_docs/kbn_presentation_publishing.mdx +++ b/api_docs/kbn_presentation_publishing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-presentation-publishing title: "@kbn/presentation-publishing" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/presentation-publishing plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index c85c773e69498..9baacae12518e 100644 --- a/api_docs/kbn_profiling_utils.mdx +++ b/api_docs/kbn_profiling_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-profiling-utils title: "@kbn/profiling-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/profiling-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/profiling-utils'] --- import kbnProfilingUtilsObj from './kbn_profiling_utils.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 52c8ea69205aa..8c9fb7724a9de 100644 --- a/api_docs/kbn_random_sampling.mdx +++ b/api_docs/kbn_random_sampling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-random-sampling title: "@kbn/random-sampling" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/random-sampling plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/random-sampling'] --- import kbnRandomSamplingObj from './kbn_random_sampling.devdocs.json'; diff --git a/api_docs/kbn_react_field.mdx b/api_docs/kbn_react_field.mdx index 5b1efa76ffb62..36cd13a24c2db 100644 --- a/api_docs/kbn_react_field.mdx +++ b/api_docs/kbn_react_field.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-field title: "@kbn/react-field" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-field plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index 75ac591fef6ec..4b42e1dbb3d93 100644 --- a/api_docs/kbn_react_kibana_context_common.mdx +++ b/api_docs/kbn_react_kibana_context_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-common title: "@kbn/react-kibana-context-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-common'] --- import kbnReactKibanaContextCommonObj from './kbn_react_kibana_context_common.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_render.mdx b/api_docs/kbn_react_kibana_context_render.mdx index 0de9a0a483952..05561c0b5ccb9 100644 --- a/api_docs/kbn_react_kibana_context_render.mdx +++ b/api_docs/kbn_react_kibana_context_render.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-render title: "@kbn/react-kibana-context-render" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-render plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-render'] --- import kbnReactKibanaContextRenderObj from './kbn_react_kibana_context_render.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_root.mdx b/api_docs/kbn_react_kibana_context_root.mdx index 64e7951f31e3a..cf04c72c8622a 100644 --- a/api_docs/kbn_react_kibana_context_root.mdx +++ b/api_docs/kbn_react_kibana_context_root.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-root title: "@kbn/react-kibana-context-root" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-root plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-root'] --- import kbnReactKibanaContextRootObj from './kbn_react_kibana_context_root.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_styled.mdx b/api_docs/kbn_react_kibana_context_styled.mdx index 1064b750c6ff4..16114b162fa86 100644 --- a/api_docs/kbn_react_kibana_context_styled.mdx +++ b/api_docs/kbn_react_kibana_context_styled.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-styled title: "@kbn/react-kibana-context-styled" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-styled plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-styled'] --- import kbnReactKibanaContextStyledObj from './kbn_react_kibana_context_styled.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_theme.mdx b/api_docs/kbn_react_kibana_context_theme.mdx index 30c9de4d33093..5fba1d2f7be2f 100644 --- a/api_docs/kbn_react_kibana_context_theme.mdx +++ b/api_docs/kbn_react_kibana_context_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-context-theme title: "@kbn/react-kibana-context-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-context-theme plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-context-theme'] --- import kbnReactKibanaContextThemeObj from './kbn_react_kibana_context_theme.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_mount.mdx b/api_docs/kbn_react_kibana_mount.mdx index a796b9a838141..da943b9dbdcf9 100644 --- a/api_docs/kbn_react_kibana_mount.mdx +++ b/api_docs/kbn_react_kibana_mount.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-kibana-mount title: "@kbn/react-kibana-mount" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-kibana-mount plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index ba726d912b52b..83fabb5dbde7e 100644 --- a/api_docs/kbn_repo_file_maps.mdx +++ b/api_docs/kbn_repo_file_maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-file-maps title: "@kbn/repo-file-maps" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-file-maps plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-file-maps'] --- import kbnRepoFileMapsObj from './kbn_repo_file_maps.devdocs.json'; diff --git a/api_docs/kbn_repo_linter.mdx b/api_docs/kbn_repo_linter.mdx index d59b7134e04fd..6105645f94095 100644 --- a/api_docs/kbn_repo_linter.mdx +++ b/api_docs/kbn_repo_linter.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-linter title: "@kbn/repo-linter" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-linter plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-linter'] --- import kbnRepoLinterObj from './kbn_repo_linter.devdocs.json'; diff --git a/api_docs/kbn_repo_path.mdx b/api_docs/kbn_repo_path.mdx index 26c248f669cd5..dee4f40839518 100644 --- a/api_docs/kbn_repo_path.mdx +++ b/api_docs/kbn_repo_path.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-path title: "@kbn/repo-path" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-path plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-path'] --- import kbnRepoPathObj from './kbn_repo_path.devdocs.json'; diff --git a/api_docs/kbn_repo_source_classifier.mdx b/api_docs/kbn_repo_source_classifier.mdx index 28afca18c138f..5fd01a8c518b9 100644 --- a/api_docs/kbn_repo_source_classifier.mdx +++ b/api_docs/kbn_repo_source_classifier.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-repo-source-classifier title: "@kbn/repo-source-classifier" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/repo-source-classifier plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/repo-source-classifier'] --- import kbnRepoSourceClassifierObj from './kbn_repo_source_classifier.devdocs.json'; diff --git a/api_docs/kbn_reporting_common.mdx b/api_docs/kbn_reporting_common.mdx index 3f01fcf3d7461..f2c1e01fdd989 100644 --- a/api_docs/kbn_reporting_common.mdx +++ b/api_docs/kbn_reporting_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-common title: "@kbn/reporting-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index 745bd238bb51b..ceb55033a5784 100644 --- a/api_docs/kbn_reporting_export_types_csv.mdx +++ b/api_docs/kbn_reporting_export_types_csv.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv title: "@kbn/reporting-export-types-csv" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv'] --- import kbnReportingExportTypesCsvObj from './kbn_reporting_export_types_csv.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv_common.mdx b/api_docs/kbn_reporting_export_types_csv_common.mdx index e49d3087f09dd..ec79848baa4ae 100644 --- a/api_docs/kbn_reporting_export_types_csv_common.mdx +++ b/api_docs/kbn_reporting_export_types_csv_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-csv-common title: "@kbn/reporting-export-types-csv-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-csv-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-csv-common'] --- import kbnReportingExportTypesCsvCommonObj from './kbn_reporting_export_types_csv_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf.mdx b/api_docs/kbn_reporting_export_types_pdf.mdx index bd8b9f63a24e4..1f311738c84c5 100644 --- a/api_docs/kbn_reporting_export_types_pdf.mdx +++ b/api_docs/kbn_reporting_export_types_pdf.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf title: "@kbn/reporting-export-types-pdf" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf'] --- import kbnReportingExportTypesPdfObj from './kbn_reporting_export_types_pdf.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_pdf_common.mdx b/api_docs/kbn_reporting_export_types_pdf_common.mdx index 66875e90c4671..259b7d1291ec2 100644 --- a/api_docs/kbn_reporting_export_types_pdf_common.mdx +++ b/api_docs/kbn_reporting_export_types_pdf_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-pdf-common title: "@kbn/reporting-export-types-pdf-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-pdf-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-pdf-common'] --- import kbnReportingExportTypesPdfCommonObj from './kbn_reporting_export_types_pdf_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png.mdx b/api_docs/kbn_reporting_export_types_png.mdx index db011ffa3a547..c0815f295370c 100644 --- a/api_docs/kbn_reporting_export_types_png.mdx +++ b/api_docs/kbn_reporting_export_types_png.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png title: "@kbn/reporting-export-types-png" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png'] --- import kbnReportingExportTypesPngObj from './kbn_reporting_export_types_png.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_png_common.mdx b/api_docs/kbn_reporting_export_types_png_common.mdx index 205146ee08416..7a9b3e767646a 100644 --- a/api_docs/kbn_reporting_export_types_png_common.mdx +++ b/api_docs/kbn_reporting_export_types_png_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-export-types-png-common title: "@kbn/reporting-export-types-png-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-export-types-png-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-export-types-png-common'] --- import kbnReportingExportTypesPngCommonObj from './kbn_reporting_export_types_png_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_mocks_server.mdx b/api_docs/kbn_reporting_mocks_server.mdx index b56b2289287f7..f497612407e55 100644 --- a/api_docs/kbn_reporting_mocks_server.mdx +++ b/api_docs/kbn_reporting_mocks_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-mocks-server title: "@kbn/reporting-mocks-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-mocks-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-mocks-server'] --- import kbnReportingMocksServerObj from './kbn_reporting_mocks_server.devdocs.json'; diff --git a/api_docs/kbn_reporting_public.mdx b/api_docs/kbn_reporting_public.mdx index 12eec41e98984..d7eb2bdb1a60f 100644 --- a/api_docs/kbn_reporting_public.mdx +++ b/api_docs/kbn_reporting_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-public title: "@kbn/reporting-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-public plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-public'] --- import kbnReportingPublicObj from './kbn_reporting_public.devdocs.json'; diff --git a/api_docs/kbn_reporting_server.mdx b/api_docs/kbn_reporting_server.mdx index 865d1b9b8abce..1fa0cf7c7290d 100644 --- a/api_docs/kbn_reporting_server.mdx +++ b/api_docs/kbn_reporting_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-server title: "@kbn/reporting-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-server'] --- import kbnReportingServerObj from './kbn_reporting_server.devdocs.json'; diff --git a/api_docs/kbn_resizable_layout.mdx b/api_docs/kbn_resizable_layout.mdx index 788d27892fce5..2d51d61d5bdf7 100644 --- a/api_docs/kbn_resizable_layout.mdx +++ b/api_docs/kbn_resizable_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-resizable-layout title: "@kbn/resizable-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/resizable-layout plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 3c85b0c4a8c8e..ecd35e5a80ade 100644 --- a/api_docs/kbn_rison.mdx +++ b/api_docs/kbn_rison.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rison title: "@kbn/rison" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rison plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 135b2331b00c4..d82c5c049fe2e 100644 --- a/api_docs/kbn_router_utils.mdx +++ b/api_docs/kbn_router_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-utils title: "@kbn/router-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-utils'] --- import kbnRouterUtilsObj from './kbn_router_utils.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index 8d8f9bac638a2..3a33e5a5a804d 100644 --- a/api_docs/kbn_rrule.mdx +++ b/api_docs/kbn_rrule.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rrule title: "@kbn/rrule" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rrule plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rrule'] --- import kbnRruleObj from './kbn_rrule.devdocs.json'; diff --git a/api_docs/kbn_rule_data_utils.mdx b/api_docs/kbn_rule_data_utils.mdx index 535fff8d89eeb..eecf8b95dc858 100644 --- a/api_docs/kbn_rule_data_utils.mdx +++ b/api_docs/kbn_rule_data_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rule-data-utils title: "@kbn/rule-data-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rule-data-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rule-data-utils'] --- import kbnRuleDataUtilsObj from './kbn_rule_data_utils.devdocs.json'; diff --git a/api_docs/kbn_saved_objects_settings.mdx b/api_docs/kbn_saved_objects_settings.mdx index d093dac8ff6c2..a18ebfa7893b9 100644 --- a/api_docs/kbn_saved_objects_settings.mdx +++ b/api_docs/kbn_saved_objects_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-saved-objects-settings title: "@kbn/saved-objects-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/saved-objects-settings plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_search_api_panels.mdx b/api_docs/kbn_search_api_panels.mdx index 6fbd18ab1923f..f7bba86abdec0 100644 --- a/api_docs/kbn_search_api_panels.mdx +++ b/api_docs/kbn_search_api_panels.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-api-panels title: "@kbn/search-api-panels" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-api-panels plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-api-panels'] --- import kbnSearchApiPanelsObj from './kbn_search_api_panels.devdocs.json'; diff --git a/api_docs/kbn_search_connectors.devdocs.json b/api_docs/kbn_search_connectors.devdocs.json index b08d5a7cc1436..1b7afab1f9898 100644 --- a/api_docs/kbn_search_connectors.devdocs.json +++ b/api_docs/kbn_search_connectors.devdocs.json @@ -14240,10 +14240,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail", "type": "Object", "tags": [], - "label": "google_cloud_storage", + "label": "gmail", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14251,19 +14251,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration", "type": "Object", "tags": [], "label": "configuration", @@ -14274,10 +14262,10 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials", "type": "Object", "tags": [], - "label": "buckets", + "label": "service_account_credentials", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14285,7 +14273,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -14299,7 +14287,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -14313,7 +14301,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.display", "type": "string", "tags": [], "label": "display", @@ -14334,7 +14322,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.label", "type": "string", "tags": [], "label": "label", @@ -14345,7 +14333,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.options", "type": "Array", "tags": [], "label": "options", @@ -14359,7 +14347,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.order", "type": "number", "tags": [], "label": "order", @@ -14370,7 +14358,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.required", "type": "boolean", "tags": [], "label": "required", @@ -14384,13 +14372,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14398,7 +14386,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -14412,7 +14400,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.type", "type": "string", "tags": [], "label": "type", @@ -14425,7 +14413,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".LIST" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14433,7 +14421,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -14447,7 +14435,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.validations", "type": "Array", "tags": [], "label": "validations", @@ -14461,7 +14449,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.service_account_credentials.value", "type": "string", "tags": [], "label": "value", @@ -14474,10 +14462,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject", "type": "Object", "tags": [], - "label": "service_account_credentials", + "label": "subject", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14485,7 +14473,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -14499,7 +14487,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -14513,7 +14501,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.display", "type": "string", "tags": [], "label": "display", @@ -14526,7 +14514,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14534,7 +14522,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.label", "type": "string", "tags": [], "label": "label", @@ -14545,7 +14533,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.options", "type": "Array", "tags": [], "label": "options", @@ -14559,7 +14547,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.order", "type": "number", "tags": [], "label": "order", @@ -14570,7 +14558,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.required", "type": "boolean", "tags": [], "label": "required", @@ -14584,13 +14572,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14598,21 +14586,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.type", "type": "string", "tags": [], "label": "type", @@ -14633,7 +14618,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -14647,13 +14632,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "never[]" + "{ type: string; constraint: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14661,7 +14646,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.subject.value", "type": "string", "tags": [], "label": "value", @@ -14674,10 +14659,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id", "type": "Object", "tags": [], - "label": "retry_count", + "label": "customer_id", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14685,18 +14670,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -14710,7 +14698,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.display", "type": "string", "tags": [], "label": "display", @@ -14723,7 +14711,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14731,7 +14719,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.label", "type": "string", "tags": [], "label": "label", @@ -14742,7 +14730,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.options", "type": "Array", "tags": [], "label": "options", @@ -14756,7 +14744,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.order", "type": "number", "tags": [], "label": "order", @@ -14767,13 +14755,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14781,7 +14769,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -14795,21 +14783,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.type", "type": "string", "tags": [], "label": "type", @@ -14822,7 +14807,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14830,13 +14815,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14844,7 +14829,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.validations", "type": "Array", "tags": [], "label": "validations", @@ -14858,7 +14843,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.customer_id.value", "type": "string", "tags": [], "label": "value", @@ -14871,10 +14856,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash", "type": "Object", "tags": [], - "label": "use_text_extraction_service", + "label": "include_spam_and_trash", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -14882,7 +14867,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -14896,7 +14881,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -14910,7 +14895,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.display", "type": "string", "tags": [], "label": "display", @@ -14931,7 +14916,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.label", "type": "string", "tags": [], "label": "label", @@ -14942,7 +14927,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.options", "type": "Array", "tags": [], "label": "options", @@ -14956,7 +14941,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.order", "type": "number", "tags": [], "label": "order", @@ -14967,7 +14952,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.required", "type": "boolean", "tags": [], "label": "required", @@ -14981,7 +14966,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -14995,7 +14980,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -15006,7 +14991,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.type", "type": "string", "tags": [], "label": "type", @@ -15027,13 +15012,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15041,7 +15026,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.validations", "type": "Array", "tags": [], "label": "validations", @@ -15055,7 +15040,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.include_spam_and_trash.value", "type": "boolean", "tags": [], "label": "value", @@ -15068,61 +15053,13 @@ "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive", - "type": "Object", - "tags": [], - "label": "google_drive", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security", "type": "Object", "tags": [], - "label": "service_account_credentials", + "label": "use_document_level_security", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15130,7 +15067,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -15144,7 +15081,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -15158,7 +15095,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.display", "type": "string", "tags": [], "label": "display", @@ -15171,7 +15108,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15179,7 +15116,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.label", "type": "string", "tags": [], "label": "label", @@ -15190,7 +15127,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.options", "type": "Array", "tags": [], "label": "options", @@ -15204,7 +15141,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.order", "type": "number", "tags": [], "label": "order", @@ -15215,7 +15152,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.required", "type": "boolean", "tags": [], "label": "required", @@ -15229,13 +15166,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15243,7 +15180,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -15254,7 +15191,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.type", "type": "string", "tags": [], "label": "type", @@ -15267,7 +15204,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15275,7 +15212,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -15289,7 +15226,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.validations", "type": "Array", "tags": [], "label": "validations", @@ -15303,23 +15240,39 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.configuration.use_document_level_security.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "true" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.features.FeatureName.DOCUMENT_LEVEL_SECURITY", "type": "Object", "tags": [], - "label": "use_domain_wide_delegation_for_sync", + "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15327,67 +15280,154 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.default_value", - "type": "Uncategorized", - "tags": [], - "label": "default_value", - "description": [], - "signature": [ - "null" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.depends_on", - "type": "Array", - "tags": [], - "label": "depends_on", - "description": [], - "signature": [ - "never[]" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.display", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", + "type": "boolean", "tags": [], - "label": "display", + "label": "enabled", "description": [], "signature": [ - { - "pluginId": "@kbn/search-connectors", - "scope": "common", - "docId": "kibKbnSearchConnectorsPluginApi", - "section": "def-common.DisplayType", - "text": "DisplayType" - }, - ".TOGGLE" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.label", - "type": "string", - "tags": [], - "label": "label", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.gmail.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage", + "type": "Object", + "tags": [], + "label": "google_cloud_storage", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets", + "type": "Object", + "tags": [], + "label": "buckets", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.default_value", + "type": "Uncategorized", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "null" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTAREA" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.options", "type": "Array", "tags": [], "label": "options", @@ -15401,7 +15441,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.order", "type": "number", "tags": [], "label": "order", @@ -15412,7 +15452,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.required", "type": "boolean", "tags": [], "label": "required", @@ -15426,7 +15466,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -15440,18 +15480,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.type", "type": "string", "tags": [], "label": "type", @@ -15464,7 +15507,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".LIST" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15472,7 +15515,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -15486,7 +15529,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.validations", "type": "Array", "tags": [], "label": "validations", @@ -15500,14 +15543,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.buckets.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -15516,10 +15556,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials", "type": "Object", "tags": [], - "label": "google_workspace_admin_email_for_data_sync", + "label": "service_account_credentials", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15527,7 +15567,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -15541,13 +15581,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15555,7 +15595,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.display", "type": "string", "tags": [], "label": "display", @@ -15568,7 +15608,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TEXTAREA" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15576,7 +15616,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.label", "type": "string", "tags": [], "label": "label", @@ -15587,7 +15627,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.options", "type": "Array", "tags": [], "label": "options", @@ -15601,7 +15641,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.order", "type": "number", "tags": [], "label": "order", @@ -15612,7 +15652,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.required", "type": "boolean", "tags": [], "label": "required", @@ -15626,13 +15666,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15640,18 +15680,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.type", "type": "string", "tags": [], "label": "type", @@ -15672,7 +15715,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -15686,13 +15729,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "{ type: string; constraint: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15700,7 +15743,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.service_account_credentials.value", "type": "string", "tags": [], "label": "value", @@ -15713,10 +15756,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count", "type": "Object", "tags": [], - "label": "google_workspace_email_for_shared_drives_sync", + "label": "retry_count", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15724,27 +15767,24 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15752,7 +15792,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.display", "type": "string", "tags": [], "label": "display", @@ -15765,7 +15805,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15773,7 +15813,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.label", "type": "string", "tags": [], "label": "label", @@ -15784,7 +15824,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.options", "type": "Array", "tags": [], "label": "options", @@ -15798,7 +15838,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.order", "type": "number", "tags": [], "label": "order", @@ -15809,13 +15849,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15823,7 +15863,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -15837,18 +15877,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.type", "type": "string", "tags": [], "label": "type", @@ -15861,7 +15904,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15869,13 +15912,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15883,13 +15926,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "{ type: string; constraint: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15897,7 +15940,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.retry_count.value", "type": "string", "tags": [], "label": "value", @@ -15910,10 +15953,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service", "type": "Object", "tags": [], - "label": "use_document_level_security", + "label": "use_text_extraction_service", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -15921,7 +15964,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -15935,7 +15978,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -15949,7 +15992,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.display", "type": "string", "tags": [], "label": "display", @@ -15970,7 +16013,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.label", "type": "string", "tags": [], "label": "label", @@ -15981,7 +16024,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.options", "type": "Array", "tags": [], "label": "options", @@ -15995,7 +16038,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.order", "type": "number", "tags": [], "label": "order", @@ -16006,7 +16049,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.required", "type": "boolean", "tags": [], "label": "required", @@ -16020,7 +16063,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -16034,7 +16077,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -16045,7 +16088,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.type", "type": "string", "tags": [], "label": "type", @@ -16066,13 +16109,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16080,7 +16123,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.validations", "type": "Array", "tags": [], "label": "validations", @@ -16094,7 +16137,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.configuration.use_text_extraction_service.value", "type": "boolean", "tags": [], "label": "value", @@ -16107,13 +16150,61 @@ "trackAdoption": false } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_cloud_storage.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive", + "type": "Object", + "tags": [], + "label": "google_drive", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials", "type": "Object", "tags": [], - "label": "google_workspace_admin_email", + "label": "service_account_credentials", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16121,7 +16212,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -16135,13 +16226,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "({ field: string; value: true; } | { field: string; value: false; })[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16149,7 +16240,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.display", "type": "string", "tags": [], "label": "display", @@ -16162,7 +16253,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TEXTAREA" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16170,7 +16261,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.label", "type": "string", "tags": [], "label": "label", @@ -16181,7 +16272,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.options", "type": "Array", "tags": [], "label": "options", @@ -16195,7 +16286,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.order", "type": "number", "tags": [], "label": "order", @@ -16206,7 +16297,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.required", "type": "boolean", "tags": [], "label": "required", @@ -16220,13 +16311,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16234,7 +16325,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -16245,7 +16336,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.type", "type": "string", "tags": [], "label": "type", @@ -16266,7 +16357,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -16280,13 +16371,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "{ type: string; constraint: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16294,7 +16385,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.service_account_credentials.value", "type": "string", "tags": [], "label": "value", @@ -16307,10 +16398,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync", "type": "Object", "tags": [], - "label": "max_concurrency", + "label": "use_domain_wide_delegation_for_sync", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16318,18 +16409,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -16343,7 +16437,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.display", "type": "string", "tags": [], "label": "display", @@ -16356,7 +16450,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16364,7 +16458,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.label", "type": "string", "tags": [], "label": "label", @@ -16375,7 +16469,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.options", "type": "Array", "tags": [], "label": "options", @@ -16389,7 +16483,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.order", "type": "number", "tags": [], "label": "order", @@ -16400,13 +16494,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16414,7 +16508,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -16428,7 +16522,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -16439,7 +16533,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.type", "type": "string", "tags": [], "label": "type", @@ -16452,7 +16546,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16460,13 +16554,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16474,13 +16568,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "{ type: string; constraint: number; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16488,11 +16582,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_domain_wide_delegation_for_sync.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -16501,10 +16598,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync", "type": "Object", "tags": [], - "label": "use_text_extraction_service", + "label": "google_workspace_admin_email_for_data_sync", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16512,7 +16609,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -16526,13 +16623,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: true; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16540,7 +16637,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.display", "type": "string", "tags": [], "label": "display", @@ -16553,7 +16650,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16561,7 +16658,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.label", "type": "string", "tags": [], "label": "label", @@ -16572,7 +16669,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.options", "type": "Array", "tags": [], "label": "options", @@ -16586,7 +16683,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.order", "type": "number", "tags": [], "label": "order", @@ -16597,7 +16694,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.required", "type": "boolean", "tags": [], "label": "required", @@ -16611,7 +16708,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -16625,7 +16722,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -16636,7 +16733,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.type", "type": "string", "tags": [], "label": "type", @@ -16649,7 +16746,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16657,13 +16754,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16671,13 +16768,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "never[]" + "{ type: string; constraint: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16685,39 +16782,23 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email_for_data_sync.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features.FeatureName.DOCUMENT_LEVEL_SECURITY", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync", "type": "Object", "tags": [], - "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", + "label": "google_workspace_email_for_shared_drives_sync", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16725,88 +16806,13 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.default_value", + "type": "Uncategorized", "tags": [], - "label": "enabled", + "label": "default_value", "description": [], "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira", - "type": "Object", - "tags": [], - "label": "jira", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source", - "type": "Object", - "tags": [], - "label": "data_source", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.default_value", - "type": "Uncategorized", - "tags": [], - "label": "default_value", - "description": [], - "signature": [ - "null" + "null" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16814,13 +16820,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: true; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16828,7 +16834,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.display", "type": "string", "tags": [], "label": "display", @@ -16841,7 +16847,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".DROPDOWN" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16849,7 +16855,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.label", "type": "string", "tags": [], "label": "label", @@ -16860,13 +16866,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "{ label: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16874,7 +16880,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.order", "type": "number", "tags": [], "label": "order", @@ -16885,7 +16891,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.required", "type": "boolean", "tags": [], "label": "required", @@ -16899,7 +16905,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -16913,21 +16919,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.type", "type": "string", "tags": [], "label": "type", @@ -16948,7 +16951,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -16962,13 +16965,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "never[]" + "{ type: string; constraint: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -16976,7 +16979,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_email_for_shared_drives_sync.value", "type": "string", "tags": [], "label": "value", @@ -16989,10 +16992,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security", "type": "Object", "tags": [], - "label": "username", + "label": "use_document_level_security", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17000,7 +17003,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -17014,13 +17017,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17028,7 +17031,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.display", "type": "string", "tags": [], "label": "display", @@ -17041,7 +17044,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17049,7 +17052,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.label", "type": "string", "tags": [], "label": "label", @@ -17060,7 +17063,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.options", "type": "Array", "tags": [], "label": "options", @@ -17074,7 +17077,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.order", "type": "number", "tags": [], "label": "order", @@ -17085,7 +17088,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.required", "type": "boolean", "tags": [], "label": "required", @@ -17099,7 +17102,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -17113,21 +17116,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.type", "type": "string", "tags": [], "label": "type", @@ -17140,7 +17140,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17148,7 +17148,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -17162,7 +17162,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.validations", "type": "Array", "tags": [], "label": "validations", @@ -17176,11 +17176,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_document_level_security.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -17189,10 +17192,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email", "type": "Object", "tags": [], - "label": "password", + "label": "google_workspace_admin_email", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17200,7 +17203,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -17214,13 +17217,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: string; }[]" + "({ field: string; value: true; } | { field: string; value: false; })[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17228,7 +17231,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.display", "type": "string", "tags": [], "label": "display", @@ -17249,7 +17252,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.label", "type": "string", "tags": [], "label": "label", @@ -17260,7 +17263,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.options", "type": "Array", "tags": [], "label": "options", @@ -17274,7 +17277,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.order", "type": "number", "tags": [], "label": "order", @@ -17285,7 +17288,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.required", "type": "boolean", "tags": [], "label": "required", @@ -17299,13 +17302,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17313,21 +17316,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.type", "type": "string", "tags": [], "label": "type", @@ -17348,7 +17348,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -17362,13 +17362,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "never[]" + "{ type: string; constraint: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17376,7 +17376,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.google_workspace_admin_email.value", "type": "string", "tags": [], "label": "value", @@ -17389,10 +17389,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency", "type": "Object", "tags": [], - "label": "data_center_username", + "label": "max_concurrency", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17400,27 +17400,24 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17428,7 +17425,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.display", "type": "string", "tags": [], "label": "display", @@ -17441,7 +17438,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17449,7 +17446,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.label", "type": "string", "tags": [], "label": "label", @@ -17460,7 +17457,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.options", "type": "Array", "tags": [], "label": "options", @@ -17474,7 +17471,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.order", "type": "number", "tags": [], "label": "order", @@ -17485,13 +17482,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17499,7 +17496,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -17513,21 +17510,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.type", "type": "string", "tags": [], "label": "type", @@ -17540,7 +17534,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17548,13 +17542,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17562,13 +17556,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "never[]" + "{ type: string; constraint: number; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17576,7 +17570,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.max_concurrency.value", "type": "string", "tags": [], "label": "value", @@ -17589,10 +17583,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service", "type": "Object", "tags": [], - "label": "data_center_password", + "label": "use_text_extraction_service", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17600,7 +17594,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -17614,13 +17608,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17628,7 +17622,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.display", "type": "string", "tags": [], "label": "display", @@ -17641,7 +17635,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17649,7 +17643,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.label", "type": "string", "tags": [], "label": "label", @@ -17660,7 +17654,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.options", "type": "Array", "tags": [], "label": "options", @@ -17674,7 +17668,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.order", "type": "number", "tags": [], "label": "order", @@ -17685,7 +17679,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.required", "type": "boolean", "tags": [], "label": "required", @@ -17699,13 +17693,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17713,21 +17707,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.type", "type": "string", "tags": [], "label": "type", @@ -17740,7 +17731,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17748,13 +17739,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17762,7 +17753,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.validations", "type": "Array", "tags": [], "label": "validations", @@ -17776,23 +17767,39 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.configuration.use_text_extraction_service.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features.FeatureName.DOCUMENT_LEVEL_SECURITY", "type": "Object", "tags": [], - "label": "account_email", + "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17800,7 +17807,82 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.google_drive.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira", + "type": "Object", + "tags": [], + "label": "jira", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source", + "type": "Object", + "tags": [], + "label": "data_source", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -17814,13 +17896,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17828,7 +17910,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.display", "type": "string", "tags": [], "label": "display", @@ -17841,7 +17923,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".DROPDOWN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17849,7 +17931,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.label", "type": "string", "tags": [], "label": "label", @@ -17860,13 +17942,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "never[]" + "{ label: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -17874,7 +17956,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.order", "type": "number", "tags": [], "label": "order", @@ -17885,18 +17967,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.placeholder", - "type": "string", - "tags": [], - "label": "placeholder", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.required", "type": "boolean", "tags": [], "label": "required", @@ -17910,7 +17981,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -17924,7 +17995,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -17938,7 +18009,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.type", "type": "string", "tags": [], "label": "type", @@ -17959,7 +18030,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -17973,7 +18044,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.validations", "type": "Array", "tags": [], "label": "validations", @@ -17987,7 +18058,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_source.value", "type": "string", "tags": [], "label": "value", @@ -18000,10 +18071,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username", "type": "Object", "tags": [], - "label": "api_token", + "label": "username", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18011,7 +18082,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -18025,7 +18096,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -18039,7 +18110,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.display", "type": "string", "tags": [], "label": "display", @@ -18060,7 +18131,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.label", "type": "string", "tags": [], "label": "label", @@ -18071,7 +18142,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.options", "type": "Array", "tags": [], "label": "options", @@ -18085,7 +18156,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.order", "type": "number", "tags": [], "label": "order", @@ -18096,7 +18167,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.required", "type": "boolean", "tags": [], "label": "required", @@ -18110,13 +18181,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18124,7 +18195,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -18138,7 +18209,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.type", "type": "string", "tags": [], "label": "type", @@ -18159,7 +18230,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -18173,7 +18244,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.validations", "type": "Array", "tags": [], "label": "validations", @@ -18187,7 +18258,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.username.value", "type": "string", "tags": [], "label": "value", @@ -18200,10 +18271,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password", "type": "Object", "tags": [], - "label": "jira_url", + "label": "password", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18211,7 +18282,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -18225,13 +18296,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18239,7 +18310,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.display", "type": "string", "tags": [], "label": "display", @@ -18260,7 +18331,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.label", "type": "string", "tags": [], "label": "label", @@ -18271,7 +18342,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.options", "type": "Array", "tags": [], "label": "options", @@ -18285,7 +18356,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.order", "type": "number", "tags": [], "label": "order", @@ -18296,18 +18367,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.placeholder", - "type": "string", - "tags": [], - "label": "placeholder", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.required", "type": "boolean", "tags": [], "label": "required", @@ -18321,13 +18381,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18335,7 +18395,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -18349,7 +18409,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.type", "type": "string", "tags": [], "label": "type", @@ -18370,7 +18430,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -18384,7 +18444,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.validations", "type": "Array", "tags": [], "label": "validations", @@ -18398,7 +18458,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.password.value", "type": "string", "tags": [], "label": "value", @@ -18411,10 +18471,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username", "type": "Object", "tags": [], - "label": "projects", + "label": "data_center_username", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18422,7 +18482,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -18436,13 +18496,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18450,7 +18510,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.display", "type": "string", "tags": [], "label": "display", @@ -18463,7 +18523,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18471,7 +18531,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.label", "type": "string", "tags": [], "label": "label", @@ -18482,7 +18542,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.options", "type": "Array", "tags": [], "label": "options", @@ -18496,7 +18556,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.order", "type": "number", "tags": [], "label": "order", @@ -18507,7 +18567,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.required", "type": "boolean", "tags": [], "label": "required", @@ -18521,7 +18581,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -18535,18 +18595,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.type", "type": "string", "tags": [], "label": "type", @@ -18559,7 +18622,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".LIST" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18567,7 +18630,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -18581,7 +18644,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.validations", "type": "Array", "tags": [], "label": "validations", @@ -18595,7 +18658,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_username.value", "type": "string", "tags": [], "label": "value", @@ -18608,10 +18671,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password", "type": "Object", "tags": [], - "label": "ssl_enabled", + "label": "data_center_password", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18619,7 +18682,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -18633,13 +18696,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18647,7 +18710,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.display", "type": "string", "tags": [], "label": "display", @@ -18660,7 +18723,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18668,7 +18731,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.label", "type": "string", "tags": [], "label": "label", @@ -18679,7 +18742,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.options", "type": "Array", "tags": [], "label": "options", @@ -18693,7 +18756,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.order", "type": "number", "tags": [], "label": "order", @@ -18704,7 +18767,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.required", "type": "boolean", "tags": [], "label": "required", @@ -18718,13 +18781,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18732,7 +18795,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -18746,7 +18809,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.type", "type": "string", "tags": [], "label": "type", @@ -18759,7 +18822,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18767,7 +18830,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -18781,7 +18844,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.validations", "type": "Array", "tags": [], "label": "validations", @@ -18795,14 +18858,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.data_center_password.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -18811,10 +18871,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email", "type": "Object", "tags": [], - "label": "ssl_ca", + "label": "account_email", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18822,7 +18882,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -18836,13 +18896,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -18850,7 +18910,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.display", "type": "string", "tags": [], "label": "display", @@ -18871,7 +18931,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.label", "type": "string", "tags": [], "label": "label", @@ -18882,7 +18942,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.options", "type": "Array", "tags": [], "label": "options", @@ -18896,7 +18956,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.order", "type": "number", "tags": [], "label": "order", @@ -18907,7 +18967,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.placeholder", + "type": "string", + "tags": [], + "label": "placeholder", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.required", "type": "boolean", "tags": [], "label": "required", @@ -18921,7 +18992,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -18935,7 +19006,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -18949,7 +19020,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.type", "type": "string", "tags": [], "label": "type", @@ -18970,7 +19041,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -18984,7 +19055,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.validations", "type": "Array", "tags": [], "label": "validations", @@ -18998,7 +19069,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.account_email.value", "type": "string", "tags": [], "label": "value", @@ -19011,10 +19082,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token", "type": "Object", "tags": [], - "label": "retry_count", + "label": "api_token", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19022,24 +19093,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19047,7 +19121,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.display", "type": "string", "tags": [], "label": "display", @@ -19060,7 +19134,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19068,7 +19142,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.label", "type": "string", "tags": [], "label": "label", @@ -19079,7 +19153,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.options", "type": "Array", "tags": [], "label": "options", @@ -19093,7 +19167,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.order", "type": "number", "tags": [], "label": "order", @@ -19104,13 +19178,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19118,13 +19192,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19132,7 +19206,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -19146,7 +19220,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.type", "type": "string", "tags": [], "label": "type", @@ -19159,7 +19233,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19167,13 +19241,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19181,7 +19255,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.validations", "type": "Array", "tags": [], "label": "validations", @@ -19195,8 +19269,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.api_token.value", + "type": "string", "tags": [], "label": "value", "description": [], @@ -19208,10 +19282,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url", "type": "Object", "tags": [], - "label": "concurrent_downloads", + "label": "jira_url", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19219,18 +19293,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -19244,7 +19321,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.display", "type": "string", "tags": [], "label": "display", @@ -19257,7 +19334,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19265,7 +19342,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.label", "type": "string", "tags": [], "label": "label", @@ -19276,7 +19353,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.options", "type": "Array", "tags": [], "label": "options", @@ -19290,7 +19367,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.order", "type": "number", "tags": [], "label": "order", @@ -19301,13 +19378,24 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.placeholder", + "type": "string", + "tags": [], + "label": "placeholder", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19315,7 +19403,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -19329,7 +19417,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.tooltip", "type": "Uncategorized", "tags": [], "label": "tooltip", @@ -19343,7 +19431,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.type", "type": "string", "tags": [], "label": "type", @@ -19356,7 +19444,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19364,13 +19452,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19378,13 +19466,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "{ type: string; constraint: number; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19392,8 +19480,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.jira_url.value", + "type": "string", "tags": [], "label": "value", "description": [], @@ -19405,10 +19493,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects", "type": "Object", "tags": [], - "label": "use_document_level_security", + "label": "projects", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19416,7 +19504,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -19430,13 +19518,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19444,7 +19532,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.display", "type": "string", "tags": [], "label": "display", @@ -19457,7 +19545,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTAREA" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19465,7 +19553,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.label", "type": "string", "tags": [], "label": "label", @@ -19476,7 +19564,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.options", "type": "Array", "tags": [], "label": "options", @@ -19490,7 +19578,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.order", "type": "number", "tags": [], "label": "order", @@ -19501,7 +19589,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.required", "type": "boolean", "tags": [], "label": "required", @@ -19515,7 +19603,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -19529,7 +19617,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -19540,7 +19628,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.type", "type": "string", "tags": [], "label": "type", @@ -19553,7 +19641,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".LIST" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19561,7 +19649,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -19575,7 +19663,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.validations", "type": "Array", "tags": [], "label": "validations", @@ -19589,14 +19677,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.projects.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -19605,10 +19690,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled", "type": "Object", "tags": [], - "label": "use_text_extraction_service", + "label": "ssl_enabled", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19616,13 +19701,13 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.default_value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], "signature": [ - "false" + "null" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19630,7 +19715,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -19644,7 +19729,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.display", "type": "string", "tags": [], "label": "display", @@ -19665,7 +19750,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.label", "type": "string", "tags": [], "label": "label", @@ -19676,7 +19761,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.options", "type": "Array", "tags": [], "label": "options", @@ -19690,7 +19775,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.order", "type": "number", "tags": [], "label": "order", @@ -19701,7 +19786,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.required", "type": "boolean", "tags": [], "label": "required", @@ -19715,7 +19800,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -19729,18 +19814,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.type", "type": "string", "tags": [], "label": "type", @@ -19761,13 +19849,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19775,7 +19863,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.validations", "type": "Array", "tags": [], "label": "validations", @@ -19789,7 +19877,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_enabled.value", "type": "boolean", "tags": [], "label": "value", @@ -19802,93 +19890,13 @@ "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.SYNC_RULES", - "type": "Object", - "tags": [], - "label": "[FeatureName.SYNC_RULES]", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.SYNC_RULES.advanced", - "type": "Object", - "tags": [], - "label": "advanced", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.SYNC_RULES.advanced.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.SYNC_RULES.basic", - "type": "Object", - "tags": [], - "label": "basic", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.SYNC_RULES.basic.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ] }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.DOCUMENT_LEVEL_SECURITY", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca", "type": "Object", "tags": [], - "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", + "label": "ssl_ca", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19896,99 +19904,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.default_value", + "type": "Uncategorized", "tags": [], - "label": "enabled", + "label": "default_value", "description": [], "signature": [ - "true" + "null" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false - } - ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb", - "type": "Object", - "tags": [], - "label": "mongodb", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host", - "type": "Object", - "tags": [], - "label": "host", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.default_value", - "type": "string", - "tags": [], - "label": "default_value", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: true; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -19996,7 +19932,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.display", "type": "string", "tags": [], "label": "display", @@ -20017,7 +19953,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.label", "type": "string", "tags": [], "label": "label", @@ -20028,7 +19964,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.options", "type": "Array", "tags": [], "label": "options", @@ -20042,7 +19978,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.order", "type": "number", "tags": [], "label": "order", @@ -20053,7 +19989,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.required", "type": "boolean", "tags": [], "label": "required", @@ -20067,7 +20003,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -20081,18 +20017,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.type", "type": "string", "tags": [], "label": "type", @@ -20113,7 +20052,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -20127,7 +20066,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.validations", "type": "Array", "tags": [], "label": "validations", @@ -20141,7 +20080,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.ssl_ca.value", "type": "string", "tags": [], "label": "value", @@ -20154,10 +20093,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count", "type": "Object", "tags": [], - "label": "user", + "label": "retry_count", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20165,8 +20104,8 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], @@ -20176,7 +20115,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -20190,7 +20129,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.display", "type": "string", "tags": [], "label": "display", @@ -20203,7 +20142,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20211,7 +20150,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.label", "type": "string", "tags": [], "label": "label", @@ -20222,7 +20161,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.options", "type": "Array", "tags": [], "label": "options", @@ -20236,7 +20175,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.order", "type": "number", "tags": [], "label": "order", @@ -20247,7 +20186,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.required", "type": "boolean", "tags": [], "label": "required", @@ -20261,7 +20200,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -20275,18 +20214,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.type", "type": "string", "tags": [], "label": "type", @@ -20299,7 +20241,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20307,13 +20249,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20321,7 +20263,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.validations", "type": "Array", "tags": [], "label": "validations", @@ -20335,8 +20277,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.retry_count.value", + "type": "number", "tags": [], "label": "value", "description": [], @@ -20348,10 +20290,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads", "type": "Object", "tags": [], - "label": "password", + "label": "concurrent_downloads", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20359,8 +20301,8 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], @@ -20370,7 +20312,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -20384,7 +20326,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.display", "type": "string", "tags": [], "label": "display", @@ -20397,7 +20339,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20405,7 +20347,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.label", "type": "string", "tags": [], "label": "label", @@ -20416,7 +20358,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.options", "type": "Array", "tags": [], "label": "options", @@ -20430,7 +20372,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.order", "type": "number", "tags": [], "label": "order", @@ -20441,7 +20383,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.required", "type": "boolean", "tags": [], "label": "required", @@ -20455,13 +20397,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20469,18 +20411,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.type", "type": "string", "tags": [], "label": "type", @@ -20493,7 +20438,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20501,13 +20446,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20515,13 +20460,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.validations", "type": "Array", "tags": [], "label": "validations", "description": [], "signature": [ - "never[]" + "{ type: string; constraint: number; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20529,8 +20474,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.concurrent_downloads.value", + "type": "number", "tags": [], "label": "value", "description": [], @@ -20542,10 +20487,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security", "type": "Object", "tags": [], - "label": "database", + "label": "use_document_level_security", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20553,24 +20498,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20578,7 +20526,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.display", "type": "string", "tags": [], "label": "display", @@ -20591,7 +20539,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20599,7 +20547,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.label", "type": "string", "tags": [], "label": "label", @@ -20610,7 +20558,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.options", "type": "Array", "tags": [], "label": "options", @@ -20624,7 +20572,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.order", "type": "number", "tags": [], "label": "order", @@ -20635,7 +20583,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.required", "type": "boolean", "tags": [], "label": "required", @@ -20649,7 +20597,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -20663,7 +20611,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -20674,7 +20622,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.type", "type": "string", "tags": [], "label": "type", @@ -20687,7 +20635,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20695,7 +20643,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -20709,7 +20657,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.validations", "type": "Array", "tags": [], "label": "validations", @@ -20723,11 +20671,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_document_level_security.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -20736,10 +20687,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service", "type": "Object", "tags": [], - "label": "collection", + "label": "use_text_extraction_service", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20747,18 +20698,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.default_value", + "type": "boolean", "tags": [], "label": "default_value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -20772,7 +20726,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.display", "type": "string", "tags": [], "label": "display", @@ -20785,7 +20739,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20793,7 +20747,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.label", "type": "string", "tags": [], "label": "label", @@ -20804,7 +20758,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.options", "type": "Array", "tags": [], "label": "options", @@ -20818,7 +20772,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.order", "type": "number", "tags": [], "label": "order", @@ -20829,7 +20783,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.required", "type": "boolean", "tags": [], "label": "required", @@ -20843,7 +20797,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -20857,7 +20811,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -20868,7 +20822,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.type", "type": "string", "tags": [], "label": "type", @@ -20881,7 +20835,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20889,13 +20843,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20903,7 +20857,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.validations", "type": "Array", "tags": [], "label": "validations", @@ -20917,23 +20871,39 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.configuration.use_text_extraction_service.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.SYNC_RULES", "type": "Object", "tags": [], - "label": "direct_connection", + "label": "[FeatureName.SYNC_RULES]", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -20941,58 +20911,197 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.default_value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.SYNC_RULES.advanced", + "type": "Object", "tags": [], - "label": "default_value", + "label": "advanced", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, - "trackAdoption": false + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.SYNC_RULES.advanced.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.depends_on", - "type": "Array", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.SYNC_RULES.basic", + "type": "Object", "tags": [], - "label": "depends_on", + "label": "basic", "description": [], - "signature": [ - "never[]" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.display", - "type": "string", - "tags": [], - "label": "display", - "description": [], - "signature": [ + "trackAdoption": false, + "children": [ { - "pluginId": "@kbn/search-connectors", - "scope": "common", - "docId": "kibKbnSearchConnectorsPluginApi", - "section": "def-common.DisplayType", - "text": "DisplayType" - }, - ".TOGGLE" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.label", - "type": "string", - "tags": [], + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.SYNC_RULES.basic.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.DOCUMENT_LEVEL_SECURITY", + "type": "Object", + "tags": [], + "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.jira.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb", + "type": "Object", + "tags": [], + "label": "mongodb", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host", + "type": "Object", + "tags": [], + "label": "host", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.default_value", + "type": "string", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.label", + "type": "string", + "tags": [], "label": "label", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", @@ -21001,7 +21110,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.options", "type": "Array", "tags": [], "label": "options", @@ -21015,7 +21124,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.order", "type": "number", "tags": [], "label": "order", @@ -21026,7 +21135,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.required", "type": "boolean", "tags": [], "label": "required", @@ -21040,7 +21149,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -21054,7 +21163,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -21065,7 +21174,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.type", "type": "string", "tags": [], "label": "type", @@ -21078,7 +21187,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21086,7 +21195,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -21100,7 +21209,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.validations", "type": "Array", "tags": [], "label": "validations", @@ -21114,14 +21223,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.host.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -21130,10 +21236,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user", "type": "Object", "tags": [], - "label": "ssl_enabled", + "label": "user", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21141,21 +21247,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.default_value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -21169,7 +21272,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.display", "type": "string", "tags": [], "label": "display", @@ -21182,7 +21285,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21190,7 +21293,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.label", "type": "string", "tags": [], "label": "label", @@ -21201,7 +21304,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.options", "type": "Array", "tags": [], "label": "options", @@ -21215,7 +21318,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.order", "type": "number", "tags": [], "label": "order", @@ -21226,13 +21329,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21240,7 +21343,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -21254,7 +21357,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -21265,7 +21368,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.type", "type": "string", "tags": [], "label": "type", @@ -21278,7 +21381,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21286,7 +21389,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -21300,7 +21403,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.validations", "type": "Array", "tags": [], "label": "validations", @@ -21314,14 +21417,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.user.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -21330,10 +21430,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password", "type": "Object", "tags": [], - "label": "ssl_ca", + "label": "password", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21341,7 +21441,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.default_value", "type": "string", "tags": [], "label": "default_value", @@ -21352,13 +21452,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21366,7 +21466,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.display", "type": "string", "tags": [], "label": "display", @@ -21387,7 +21487,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.label", "type": "string", "tags": [], "label": "label", @@ -21398,7 +21498,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.options", "type": "Array", "tags": [], "label": "options", @@ -21412,7 +21512,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.order", "type": "number", "tags": [], "label": "order", @@ -21423,7 +21523,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.required", "type": "boolean", "tags": [], "label": "required", @@ -21437,13 +21537,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21451,7 +21551,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -21462,7 +21562,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.type", "type": "string", "tags": [], "label": "type", @@ -21483,7 +21583,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -21497,7 +21597,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.validations", "type": "Array", "tags": [], "label": "validations", @@ -21511,7 +21611,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.password.value", "type": "string", "tags": [], "label": "value", @@ -21524,10 +21624,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database", "type": "Object", "tags": [], - "label": "tls_insecure", + "label": "database", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21535,27 +21635,24 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.default_value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21563,7 +21660,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.display", "type": "string", "tags": [], "label": "display", @@ -21576,7 +21673,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21584,7 +21681,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.label", "type": "string", "tags": [], "label": "label", @@ -21595,7 +21692,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.options", "type": "Array", "tags": [], "label": "options", @@ -21609,7 +21706,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.order", "type": "number", "tags": [], "label": "order", @@ -21620,7 +21717,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.required", "type": "boolean", "tags": [], "label": "required", @@ -21634,7 +21731,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -21648,7 +21745,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -21659,7 +21756,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.type", "type": "string", "tags": [], "label": "type", @@ -21672,7 +21769,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21680,13 +21777,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21694,7 +21791,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.validations", "type": "Array", "tags": [], "label": "validations", @@ -21708,67 +21805,23 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.database.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.FILTERING_ADVANCED_CONFIG", - "type": "boolean", - "tags": [], - "label": "[FeatureName.FILTERING_ADVANCED_CONFIG]", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.FILTERING_RULES", - "type": "boolean", - "tags": [], - "label": "[FeatureName.FILTERING_RULES]", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.SYNC_RULES", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection", "type": "Object", "tags": [], - "label": "[FeatureName.SYNC_RULES]", + "label": "collection", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21776,114 +21829,3808 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.SYNC_RULES.advanced", - "type": "Object", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.default_value", + "type": "string", "tags": [], - "label": "advanced", + "label": "default_value", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, - "trackAdoption": false, - "children": [ + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.SYNC_RULES.advanced.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.SYNC_RULES.basic", - "type": "Object", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.label", + "type": "string", "tags": [], - "label": "basic", + "label": "label", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, - "trackAdoption": false, - "children": [ + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.SYNC_RULES.basic.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.collection.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection", + "type": "Object", + "tags": [], + "label": "direct_connection", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.default_value", + "type": "boolean", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TOGGLE" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".BOOLEAN" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.direct_connection.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled", + "type": "Object", + "tags": [], + "label": "ssl_enabled", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.default_value", + "type": "boolean", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TOGGLE" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".BOOLEAN" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_enabled.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca", + "type": "Object", + "tags": [], + "label": "ssl_ca", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.default_value", + "type": "string", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "{ field: string; value: true; }[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.ssl_ca.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure", + "type": "Object", + "tags": [], + "label": "tls_insecure", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.default_value", + "type": "boolean", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "{ field: string; value: true; }[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TOGGLE" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".BOOLEAN" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.configuration.tls_insecure.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.FILTERING_ADVANCED_CONFIG", + "type": "boolean", + "tags": [], + "label": "[FeatureName.FILTERING_ADVANCED_CONFIG]", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.FILTERING_RULES", + "type": "boolean", + "tags": [], + "label": "[FeatureName.FILTERING_RULES]", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.SYNC_RULES", + "type": "Object", + "tags": [], + "label": "[FeatureName.SYNC_RULES]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.SYNC_RULES.advanced", + "type": "Object", + "tags": [], + "label": "advanced", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.SYNC_RULES.advanced.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.SYNC_RULES.basic", + "type": "Object", + "tags": [], + "label": "basic", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.features.FeatureName.SYNC_RULES.basic.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql", + "type": "Object", + "tags": [], + "label": "mssql", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host", + "type": "Object", + "tags": [], + "label": "host", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.default_value", + "type": "string", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port", + "type": "Object", + "tags": [], + "label": "port", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.default_value", + "type": "Uncategorized", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "null" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".NUMERIC" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".INTEGER" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.value", + "type": "number", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username", + "type": "Object", + "tags": [], + "label": "username", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.default_value", + "type": "string", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password", + "type": "Object", + "tags": [], + "label": "password", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.default_value", + "type": "string", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database", + "type": "Object", + "tags": [], + "label": "database", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.default_value", + "type": "string", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables", + "type": "Object", + "tags": [], + "label": "tables", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.default_value", + "type": "string", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTAREA" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".LIST" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled", + "type": "Object", + "tags": [], + "label": "ssl_enabled", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.default_value", + "type": "boolean", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TOGGLE" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".BOOLEAN" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca", + "type": "Object", + "tags": [], + "label": "ssl_ca", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.default_value", + "type": "string", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "{ field: string; value: true; }[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.default_value", + "type": "string", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size", + "type": "Object", + "tags": [], + "label": "fetch_size", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.default_value", + "type": "number", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".NUMERIC" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".INTEGER" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.value", + "type": "number", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count", + "type": "Object", + "tags": [], + "label": "retry_count", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.default_value", + "type": "number", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".NUMERIC" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".INTEGER" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.value", + "type": "number", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host", + "type": "Object", + "tags": [], + "label": "validate_host", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.default_value", + "type": "boolean", + "tags": [], + "label": "default_value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TOGGLE" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".BOOLEAN" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features.FeatureName.SYNC_RULES", + "type": "Object", + "tags": [], + "label": "[FeatureName.SYNC_RULES]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features.FeatureName.SYNC_RULES.advanced", + "type": "Object", + "tags": [], + "label": "advanced", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features.FeatureName.SYNC_RULES.advanced.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features.FeatureName.SYNC_RULES.basic", + "type": "Object", + "tags": [], + "label": "basic", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features.FeatureName.SYNC_RULES.basic.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql", + "type": "Object", + "tags": [], + "label": "mysql", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host", + "type": "Object", + "tags": [], + "label": "host", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.default_value", + "type": "string", + "tags": [], + "label": "default_value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.depends_on", + "type": "Array", + "tags": [], + "label": "depends_on", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.display", + "type": "string", + "tags": [], + "label": "display", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.DisplayType", + "text": "DisplayType" + }, + ".TEXTBOX" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.order", + "type": "number", + "tags": [], + "label": "order", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.required", + "type": "boolean", + "tags": [], + "label": "required", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.sensitive", + "type": "boolean", + "tags": [], + "label": "sensitive", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.tooltip", + "type": "string", + "tags": [], + "label": "tooltip", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + { + "pluginId": "@kbn/search-connectors", + "scope": "common", + "docId": "kibKbnSearchConnectorsPluginApi", + "section": "def-common.FieldType", + "text": "FieldType" + }, + ".STRING" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.ui_restrictions", + "type": "Array", + "tags": [], + "label": "ui_restrictions", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.value", + "type": "string", + "tags": [], + "label": "value", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mongodb.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql", - "type": "Object", - "tags": [], - "label": "mssql", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port", "type": "Object", "tags": [], - "label": "host", + "label": "port", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21891,18 +25638,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -21916,7 +25666,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.display", "type": "string", "tags": [], "label": "display", @@ -21929,7 +25679,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -21937,7 +25687,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.label", "type": "string", "tags": [], "label": "label", @@ -21948,7 +25698,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.options", "type": "Array", "tags": [], "label": "options", @@ -21962,7 +25712,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.order", "type": "number", "tags": [], "label": "order", @@ -21973,7 +25723,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.required", "type": "boolean", "tags": [], "label": "required", @@ -21987,7 +25737,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -22001,7 +25751,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -22012,7 +25762,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.type", "type": "string", "tags": [], "label": "type", @@ -22025,7 +25775,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22033,7 +25783,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -22047,7 +25797,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.validations", "type": "Array", "tags": [], "label": "validations", @@ -22061,7 +25811,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.host.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.value", "type": "string", "tags": [], "label": "value", @@ -22074,10 +25824,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user", "type": "Object", "tags": [], - "label": "port", + "label": "user", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22085,21 +25835,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -22113,7 +25860,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.display", "type": "string", "tags": [], "label": "display", @@ -22126,7 +25873,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22134,7 +25881,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.label", "type": "string", "tags": [], "label": "label", @@ -22145,7 +25892,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.options", "type": "Array", "tags": [], "label": "options", @@ -22159,7 +25906,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.order", "type": "number", "tags": [], "label": "order", @@ -22170,13 +25917,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22184,7 +25931,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -22198,7 +25945,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -22209,7 +25956,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.type", "type": "string", "tags": [], "label": "type", @@ -22222,7 +25969,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22230,7 +25977,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -22244,7 +25991,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.validations", "type": "Array", "tags": [], "label": "validations", @@ -22258,8 +26005,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.port.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.value", + "type": "string", "tags": [], "label": "value", "description": [], @@ -22271,10 +26018,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password", "type": "Object", "tags": [], - "label": "username", + "label": "password", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22282,7 +26029,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.default_value", "type": "string", "tags": [], "label": "default_value", @@ -22293,7 +26040,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -22307,7 +26054,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.display", "type": "string", "tags": [], "label": "display", @@ -22328,7 +26075,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.label", "type": "string", "tags": [], "label": "label", @@ -22339,7 +26086,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.options", "type": "Array", "tags": [], "label": "options", @@ -22353,7 +26100,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.order", "type": "number", "tags": [], "label": "order", @@ -22364,13 +26111,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22378,13 +26125,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22392,7 +26139,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -22403,7 +26150,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.type", "type": "string", "tags": [], "label": "type", @@ -22424,7 +26171,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -22438,7 +26185,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.validations", "type": "Array", "tags": [], "label": "validations", @@ -22452,7 +26199,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.username.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.value", "type": "string", "tags": [], "label": "value", @@ -22465,10 +26212,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database", "type": "Object", "tags": [], - "label": "password", + "label": "database", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22476,7 +26223,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.default_value", "type": "string", "tags": [], "label": "default_value", @@ -22487,7 +26234,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -22501,7 +26248,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.display", "type": "string", "tags": [], "label": "display", @@ -22522,7 +26269,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.label", "type": "string", "tags": [], "label": "label", @@ -22533,7 +26280,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.options", "type": "Array", "tags": [], "label": "options", @@ -22547,7 +26294,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.order", "type": "number", "tags": [], "label": "order", @@ -22558,7 +26305,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.required", "type": "boolean", "tags": [], "label": "required", @@ -22572,13 +26319,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22586,7 +26333,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -22597,7 +26344,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.type", "type": "string", "tags": [], "label": "type", @@ -22618,7 +26365,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -22632,7 +26379,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.validations", "type": "Array", "tags": [], "label": "validations", @@ -22646,7 +26393,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.password.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.value", "type": "string", "tags": [], "label": "value", @@ -22659,10 +26406,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables", "type": "Object", "tags": [], - "label": "database", + "label": "tables", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22670,7 +26417,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.default_value", "type": "string", "tags": [], "label": "default_value", @@ -22681,7 +26428,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -22695,7 +26442,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.display", "type": "string", "tags": [], "label": "display", @@ -22708,7 +26455,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TEXTAREA" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22716,7 +26463,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.label", "type": "string", "tags": [], "label": "label", @@ -22727,7 +26474,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.options", "type": "Array", "tags": [], "label": "options", @@ -22741,7 +26488,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.order", "type": "number", "tags": [], "label": "order", @@ -22752,7 +26499,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.required", "type": "boolean", "tags": [], "label": "required", @@ -22766,7 +26513,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -22780,7 +26527,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -22791,7 +26538,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.type", "type": "string", "tags": [], "label": "type", @@ -22804,7 +26551,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".LIST" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22812,7 +26559,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -22826,7 +26573,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.validations", "type": "Array", "tags": [], "label": "validations", @@ -22840,7 +26587,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.database.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.value", "type": "string", "tags": [], "label": "value", @@ -22853,10 +26600,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled", "type": "Object", "tags": [], - "label": "tables", + "label": "ssl_enabled", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22864,18 +26611,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.default_value", + "type": "boolean", "tags": [], "label": "default_value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -22889,7 +26639,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.display", "type": "string", "tags": [], "label": "display", @@ -22902,7 +26652,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -22910,7 +26660,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.label", "type": "string", "tags": [], "label": "label", @@ -22921,7 +26671,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.options", "type": "Array", "tags": [], "label": "options", @@ -22935,7 +26685,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.order", "type": "number", "tags": [], "label": "order", @@ -22946,7 +26696,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.required", "type": "boolean", "tags": [], "label": "required", @@ -22960,7 +26710,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -22974,7 +26724,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -22985,7 +26735,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.type", "type": "string", "tags": [], "label": "type", @@ -22998,7 +26748,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".LIST" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23006,7 +26756,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -23020,7 +26770,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.validations", "type": "Array", "tags": [], "label": "validations", @@ -23034,11 +26784,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.tables.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -23047,10 +26800,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca", "type": "Object", "tags": [], - "label": "ssl_enabled", + "label": "ssl_ca", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23058,27 +26811,24 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.default_value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: true; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23086,7 +26836,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.display", "type": "string", "tags": [], "label": "display", @@ -23099,7 +26849,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23107,7 +26857,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.label", "type": "string", "tags": [], "label": "label", @@ -23118,7 +26868,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.options", "type": "Array", "tags": [], "label": "options", @@ -23132,7 +26882,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.order", "type": "number", "tags": [], "label": "order", @@ -23143,7 +26893,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.required", "type": "boolean", "tags": [], "label": "required", @@ -23157,7 +26907,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -23171,7 +26921,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -23182,7 +26932,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.type", "type": "string", "tags": [], "label": "type", @@ -23195,7 +26945,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23203,7 +26953,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -23217,7 +26967,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.validations", "type": "Array", "tags": [], "label": "validations", @@ -23231,14 +26981,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_enabled.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -23247,10 +26994,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size", "type": "Object", "tags": [], - "label": "ssl_ca", + "label": "fetch_size", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23258,8 +27005,8 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], @@ -23269,13 +27016,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23283,7 +27030,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.display", "type": "string", "tags": [], "label": "display", @@ -23296,7 +27043,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23304,7 +27051,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.label", "type": "string", "tags": [], "label": "label", @@ -23315,7 +27062,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.options", "type": "Array", "tags": [], "label": "options", @@ -23329,7 +27076,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.order", "type": "number", "tags": [], "label": "order", @@ -23340,13 +27087,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23354,7 +27101,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -23368,7 +27115,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -23379,7 +27126,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.type", "type": "string", "tags": [], "label": "type", @@ -23392,7 +27139,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23400,13 +27147,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23414,7 +27161,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.validations", "type": "Array", "tags": [], "label": "validations", @@ -23428,8 +27175,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.ssl_ca.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.value", + "type": "number", "tags": [], "label": "value", "description": [], @@ -23441,10 +27188,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count", "type": "Object", "tags": [], - "label": "schema", + "label": "retry_count", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23452,8 +27199,8 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], @@ -23463,7 +27210,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -23477,7 +27224,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.display", "type": "string", "tags": [], "label": "display", @@ -23490,7 +27237,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23498,7 +27245,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.label", "type": "string", "tags": [], "label": "label", @@ -23509,7 +27256,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.options", "type": "Array", "tags": [], "label": "options", @@ -23523,7 +27270,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.order", "type": "number", "tags": [], "label": "order", @@ -23534,13 +27281,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23548,7 +27295,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -23562,7 +27309,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -23573,7 +27320,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.type", "type": "string", "tags": [], "label": "type", @@ -23586,7 +27333,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23594,13 +27341,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23608,7 +27355,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.validations", "type": "Array", "tags": [], "label": "validations", @@ -23622,8 +27369,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.schema.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.value", + "type": "number", "tags": [], "label": "value", "description": [], @@ -23632,13 +27379,141 @@ "trackAdoption": false } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features.FeatureName.SYNC_RULES", + "type": "Object", + "tags": [], + "label": "[FeatureName.SYNC_RULES]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features.FeatureName.SYNC_RULES.advanced", + "type": "Object", + "tags": [], + "label": "advanced", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features.FeatureName.SYNC_RULES.advanced.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features.FeatureName.SYNC_RULES.basic", + "type": "Object", + "tags": [], + "label": "basic", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features.FeatureName.SYNC_RULES.basic.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive", + "type": "Object", + "tags": [], + "label": "network_drive", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username", "type": "Object", "tags": [], - "label": "fetch_size", + "label": "username", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23646,18 +27521,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -23671,7 +27549,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.display", "type": "string", "tags": [], "label": "display", @@ -23684,7 +27562,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23692,7 +27570,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.label", "type": "string", "tags": [], "label": "label", @@ -23703,7 +27581,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.options", "type": "Array", "tags": [], "label": "options", @@ -23717,7 +27595,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.order", "type": "number", "tags": [], "label": "order", @@ -23728,13 +27606,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23742,7 +27620,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -23756,7 +27634,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -23767,7 +27645,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.type", "type": "string", "tags": [], "label": "type", @@ -23780,7 +27658,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23788,13 +27666,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23802,7 +27680,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.validations", "type": "Array", "tags": [], "label": "validations", @@ -23816,8 +27694,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.fetch_size.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.value", + "type": "string", "tags": [], "label": "value", "description": [], @@ -23829,10 +27707,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password", "type": "Object", "tags": [], - "label": "retry_count", + "label": "password", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23840,18 +27718,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -23865,7 +27746,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.display", "type": "string", "tags": [], "label": "display", @@ -23878,7 +27759,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23886,7 +27767,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.label", "type": "string", "tags": [], "label": "label", @@ -23897,7 +27778,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.options", "type": "Array", "tags": [], "label": "options", @@ -23911,7 +27792,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.order", "type": "number", "tags": [], "label": "order", @@ -23922,13 +27803,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23936,13 +27817,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23950,7 +27831,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -23961,7 +27842,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.type", "type": "string", "tags": [], "label": "type", @@ -23974,7 +27855,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23982,13 +27863,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -23996,7 +27877,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.validations", "type": "Array", "tags": [], "label": "validations", @@ -24010,8 +27891,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.retry_count.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.value", + "type": "string", "tags": [], "label": "value", "description": [], @@ -24023,10 +27904,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip", "type": "Object", "tags": [], - "label": "validate_host", + "label": "server_ip", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24034,13 +27915,13 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.default_value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], "signature": [ - "false" + "null" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24048,7 +27929,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -24062,7 +27943,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.display", "type": "string", "tags": [], "label": "display", @@ -24075,7 +27956,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24083,7 +27964,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.label", "type": "string", "tags": [], "label": "label", @@ -24094,7 +27975,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.options", "type": "Array", "tags": [], "label": "options", @@ -24108,7 +27989,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.order", "type": "number", "tags": [], "label": "order", @@ -24119,7 +28000,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.placeholder", + "type": "string", + "tags": [], + "label": "placeholder", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.required", "type": "boolean", "tags": [], "label": "required", @@ -24133,7 +28025,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -24147,7 +28039,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -24158,7 +28050,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.type", "type": "string", "tags": [], "label": "type", @@ -24171,7 +28063,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24179,7 +28071,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -24193,168 +28085,37 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.validations", - "type": "Array", - "tags": [], - "label": "validations", - "description": [], - "signature": [ - "never[]" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.configuration.validate_host.value", - "type": "boolean", - "tags": [], - "label": "value", - "description": [], - "signature": [ - "false" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features.FeatureName.SYNC_RULES", - "type": "Object", - "tags": [], - "label": "[FeatureName.SYNC_RULES]", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features.FeatureName.SYNC_RULES.advanced", - "type": "Object", - "tags": [], - "label": "advanced", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features.FeatureName.SYNC_RULES.advanced.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "false" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features.FeatureName.SYNC_RULES.basic", - "type": "Object", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.value", + "type": "string", "tags": [], - "label": "basic", + "label": "value", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.features.FeatureName.SYNC_RULES.basic.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] + "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mssql.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql", - "type": "Object", - "tags": [], - "label": "mysql", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port", "type": "Object", "tags": [], - "label": "host", + "label": "server_port", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24362,18 +28123,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -24387,7 +28151,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.display", "type": "string", "tags": [], "label": "display", @@ -24400,7 +28164,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24408,7 +28172,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.label", "type": "string", "tags": [], "label": "label", @@ -24419,7 +28183,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.options", "type": "Array", "tags": [], "label": "options", @@ -24433,7 +28197,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.order", "type": "number", "tags": [], "label": "order", @@ -24444,7 +28208,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.required", "type": "boolean", "tags": [], "label": "required", @@ -24458,7 +28222,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -24472,7 +28236,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -24483,7 +28247,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.type", "type": "string", "tags": [], "label": "type", @@ -24496,7 +28260,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24504,7 +28268,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -24518,7 +28282,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.validations", "type": "Array", "tags": [], "label": "validations", @@ -24532,8 +28296,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.host.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.value", + "type": "number", "tags": [], "label": "value", "description": [], @@ -24545,10 +28309,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path", "type": "Object", "tags": [], - "label": "port", + "label": "drive_path", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24556,7 +28320,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -24570,7 +28334,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -24584,7 +28348,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.display", "type": "string", "tags": [], "label": "display", @@ -24597,7 +28361,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24605,7 +28369,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.label", "type": "string", "tags": [], "label": "label", @@ -24616,7 +28380,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.options", "type": "Array", "tags": [], "label": "options", @@ -24630,7 +28394,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.order", "type": "number", "tags": [], "label": "order", @@ -24641,7 +28405,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.placeholder", + "type": "string", + "tags": [], + "label": "placeholder", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.required", "type": "boolean", "tags": [], "label": "required", @@ -24655,7 +28430,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -24669,7 +28444,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -24680,7 +28455,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.type", "type": "string", "tags": [], "label": "type", @@ -24693,7 +28468,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24701,7 +28476,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -24715,7 +28490,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.validations", "type": "Array", "tags": [], "label": "validations", @@ -24729,7 +28504,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.port.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.value", "type": "string", "tags": [], "label": "value", @@ -24742,10 +28517,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security", "type": "Object", "tags": [], - "label": "user", + "label": "use_document_level_security", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24753,18 +28528,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -24778,7 +28556,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.display", "type": "string", "tags": [], "label": "display", @@ -24791,7 +28569,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24799,7 +28577,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.label", "type": "string", "tags": [], "label": "label", @@ -24810,7 +28588,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.options", "type": "Array", "tags": [], "label": "options", @@ -24824,7 +28602,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.order", "type": "number", "tags": [], "label": "order", @@ -24835,13 +28613,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24849,7 +28627,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -24863,7 +28641,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -24874,7 +28652,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.type", "type": "string", "tags": [], "label": "type", @@ -24887,7 +28665,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24895,7 +28673,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -24909,37 +28687,168 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.validations", - "type": "Array", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.validations", + "type": "Array", + "tags": [], + "label": "validations", + "description": [], + "signature": [ + "never[]" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features.FeatureName.SYNC_RULES", + "type": "Object", + "tags": [], + "label": "[FeatureName.SYNC_RULES]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features.FeatureName.SYNC_RULES.advanced", + "type": "Object", "tags": [], - "label": "validations", + "label": "advanced", "description": [], - "signature": [ - "never[]" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, - "trackAdoption": false + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features.FeatureName.SYNC_RULES.advanced.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.user.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features.FeatureName.SYNC_RULES.basic", + "type": "Object", "tags": [], - "label": "value", + "label": "basic", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, - "trackAdoption": false + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features.FeatureName.SYNC_RULES.basic.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive", + "type": "Object", + "tags": [], + "label": "onedrive", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id", "type": "Object", "tags": [], - "label": "password", + "label": "client_id", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -24947,18 +28856,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -24972,7 +28884,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.display", "type": "string", "tags": [], "label": "display", @@ -24993,7 +28905,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.label", "type": "string", "tags": [], "label": "label", @@ -25004,7 +28916,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.options", "type": "Array", "tags": [], "label": "options", @@ -25018,7 +28930,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.order", "type": "number", "tags": [], "label": "order", @@ -25029,13 +28941,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25043,13 +28955,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25057,18 +28969,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.type", "type": "string", "tags": [], "label": "type", @@ -25089,7 +29004,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -25103,7 +29018,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.validations", "type": "Array", "tags": [], "label": "validations", @@ -25117,7 +29032,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.password.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.value", "type": "string", "tags": [], "label": "value", @@ -25130,10 +29045,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret", "type": "Object", "tags": [], - "label": "database", + "label": "client_secret", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25141,18 +29056,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -25166,7 +29084,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.display", "type": "string", "tags": [], "label": "display", @@ -25187,7 +29105,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.label", "type": "string", "tags": [], "label": "label", @@ -25198,7 +29116,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.options", "type": "Array", "tags": [], "label": "options", @@ -25212,7 +29130,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.order", "type": "number", "tags": [], "label": "order", @@ -25223,7 +29141,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.required", "type": "boolean", "tags": [], "label": "required", @@ -25237,13 +29155,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25251,18 +29169,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.type", "type": "string", "tags": [], "label": "type", @@ -25283,7 +29204,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -25297,7 +29218,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.validations", "type": "Array", "tags": [], "label": "validations", @@ -25311,7 +29232,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.database.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.value", "type": "string", "tags": [], "label": "value", @@ -25324,10 +29245,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id", "type": "Object", "tags": [], - "label": "tables", + "label": "tenant_id", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25335,18 +29256,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -25360,7 +29284,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.display", "type": "string", "tags": [], "label": "display", @@ -25373,7 +29297,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25381,7 +29305,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.label", "type": "string", "tags": [], "label": "label", @@ -25392,7 +29316,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.options", "type": "Array", "tags": [], "label": "options", @@ -25406,7 +29330,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.order", "type": "number", "tags": [], "label": "order", @@ -25417,7 +29341,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.required", "type": "boolean", "tags": [], "label": "required", @@ -25431,7 +29355,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -25445,18 +29369,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.type", "type": "string", "tags": [], "label": "type", @@ -25469,7 +29396,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".LIST" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25477,7 +29404,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -25491,7 +29418,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.validations", "type": "Array", "tags": [], "label": "validations", @@ -25505,7 +29432,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.tables.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.value", "type": "string", "tags": [], "label": "value", @@ -25518,10 +29445,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count", "type": "Object", "tags": [], - "label": "ssl_enabled", + "label": "retry_count", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25529,21 +29456,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.default_value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -25557,7 +29481,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.display", "type": "string", "tags": [], "label": "display", @@ -25570,7 +29494,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25578,7 +29502,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.label", "type": "string", "tags": [], "label": "label", @@ -25589,7 +29513,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.options", "type": "Array", "tags": [], "label": "options", @@ -25603,7 +29527,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.order", "type": "number", "tags": [], "label": "order", @@ -25614,13 +29538,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25628,7 +29552,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -25642,18 +29566,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.type", "type": "string", "tags": [], "label": "type", @@ -25666,7 +29593,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25674,13 +29601,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25688,7 +29615,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.validations", "type": "Array", "tags": [], "label": "validations", @@ -25702,14 +29629,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_enabled.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -25718,10 +29642,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads", "type": "Object", "tags": [], - "label": "ssl_ca", + "label": "concurrent_downloads", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25729,8 +29653,8 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], @@ -25740,13 +29664,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "{ field: string; value: true; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25754,7 +29678,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.display", "type": "string", "tags": [], "label": "display", @@ -25767,7 +29691,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25775,7 +29699,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.label", "type": "string", "tags": [], "label": "label", @@ -25786,7 +29710,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.options", "type": "Array", "tags": [], "label": "options", @@ -25800,7 +29724,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.order", "type": "number", "tags": [], "label": "order", @@ -25811,13 +29735,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25825,7 +29749,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -25839,18 +29763,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.type", "type": "string", "tags": [], "label": "type", @@ -25863,7 +29790,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25871,13 +29798,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25885,7 +29812,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.validations", "type": "Array", "tags": [], "label": "validations", @@ -25899,7 +29826,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.ssl_ca.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.value", "type": "string", "tags": [], "label": "value", @@ -25912,10 +29839,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security", "type": "Object", "tags": [], - "label": "fetch_size", + "label": "use_document_level_security", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25923,18 +29850,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -25948,7 +29878,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.display", "type": "string", "tags": [], "label": "display", @@ -25961,7 +29891,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -25969,7 +29899,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.label", "type": "string", "tags": [], "label": "label", @@ -25980,7 +29910,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.options", "type": "Array", "tags": [], "label": "options", @@ -25994,7 +29924,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.order", "type": "number", "tags": [], "label": "order", @@ -26005,13 +29935,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26019,7 +29949,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -26033,7 +29963,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -26044,7 +29974,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.type", "type": "string", "tags": [], "label": "type", @@ -26057,7 +29987,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26065,13 +29995,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26079,7 +30009,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.validations", "type": "Array", "tags": [], "label": "validations", @@ -26093,11 +30023,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.fetch_size.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -26106,10 +30039,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service", "type": "Object", "tags": [], - "label": "retry_count", + "label": "use_text_extraction_service", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26117,18 +30050,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -26142,7 +30078,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.display", "type": "string", "tags": [], "label": "display", @@ -26155,7 +30091,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26163,7 +30099,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.label", "type": "string", "tags": [], "label": "label", @@ -26174,7 +30110,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.options", "type": "Array", "tags": [], "label": "options", @@ -26188,7 +30124,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.order", "type": "number", "tags": [], "label": "order", @@ -26199,13 +30135,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26213,7 +30149,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -26227,7 +30163,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -26238,7 +30174,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.type", "type": "string", "tags": [], "label": "type", @@ -26251,7 +30187,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26259,7 +30195,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -26273,7 +30209,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.validations", "type": "Array", "tags": [], "label": "validations", @@ -26287,94 +30223,17 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.configuration.retry_count.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.value", + "type": "boolean", "tags": [], "label": "value", "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features.FeatureName.SYNC_RULES", - "type": "Object", - "tags": [], - "label": "[FeatureName.SYNC_RULES]", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features.FeatureName.SYNC_RULES.advanced", - "type": "Object", - "tags": [], - "label": "advanced", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features.FeatureName.SYNC_RULES.advanced.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features.FeatureName.SYNC_RULES.basic", - "type": "Object", - "tags": [], - "label": "basic", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.features.FeatureName.SYNC_RULES.basic.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false } ] } @@ -26382,7 +30241,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.name", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.name", "type": "string", "tags": [], "label": "name", @@ -26393,7 +30252,47 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.mysql.serviceType", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.features.FeatureName.DOCUMENT_LEVEL_SECURITY", + "type": "Object", + "tags": [], + "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.serviceType", "type": "string", "tags": [], "label": "serviceType", @@ -26406,10 +30305,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle", "type": "Object", "tags": [], - "label": "network_drive", + "label": "oracle", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26417,7 +30316,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration", "type": "Object", "tags": [], "label": "configuration", @@ -26428,10 +30327,10 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host", "type": "Object", "tags": [], - "label": "username", + "label": "host", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26439,21 +30338,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -26467,7 +30363,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.display", "type": "string", "tags": [], "label": "display", @@ -26488,7 +30384,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.label", "type": "string", "tags": [], "label": "label", @@ -26499,7 +30395,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.options", "type": "Array", "tags": [], "label": "options", @@ -26513,7 +30409,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.order", "type": "number", "tags": [], "label": "order", @@ -26524,7 +30420,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.required", "type": "boolean", "tags": [], "label": "required", @@ -26538,7 +30434,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -26552,7 +30448,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -26563,7 +30459,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.type", "type": "string", "tags": [], "label": "type", @@ -26584,7 +30480,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -26598,7 +30494,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.validations", "type": "Array", "tags": [], "label": "validations", @@ -26612,7 +30508,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.username.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.value", "type": "string", "tags": [], "label": "value", @@ -26625,10 +30521,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port", "type": "Object", "tags": [], - "label": "password", + "label": "port", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26636,7 +30532,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -26650,7 +30546,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -26664,7 +30560,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.display", "type": "string", "tags": [], "label": "display", @@ -26677,7 +30573,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26685,7 +30581,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.label", "type": "string", "tags": [], "label": "label", @@ -26696,7 +30592,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.options", "type": "Array", "tags": [], "label": "options", @@ -26710,7 +30606,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.order", "type": "number", "tags": [], "label": "order", @@ -26721,7 +30617,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.required", "type": "boolean", "tags": [], "label": "required", @@ -26735,13 +30631,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26749,7 +30645,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -26760,7 +30656,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.type", "type": "string", "tags": [], "label": "type", @@ -26773,7 +30669,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26781,7 +30677,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -26795,7 +30691,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.validations", "type": "Array", "tags": [], "label": "validations", @@ -26809,7 +30705,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.password.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.value", "type": "string", "tags": [], "label": "value", @@ -26822,10 +30718,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username", "type": "Object", "tags": [], - "label": "server_ip", + "label": "username", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -26833,21 +30729,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -26861,7 +30754,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.display", "type": "string", "tags": [], "label": "display", @@ -26882,7 +30775,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.label", "type": "string", "tags": [], "label": "label", @@ -26893,7 +30786,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.options", "type": "Array", "tags": [], "label": "options", @@ -26907,7 +30800,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.order", "type": "number", "tags": [], "label": "order", @@ -26918,18 +30811,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.placeholder", - "type": "string", - "tags": [], - "label": "placeholder", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.required", "type": "boolean", "tags": [], "label": "required", @@ -26943,7 +30825,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -26957,7 +30839,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -26968,7 +30850,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.type", "type": "string", "tags": [], "label": "type", @@ -26989,7 +30871,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -27003,7 +30885,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.validations", "type": "Array", "tags": [], "label": "validations", @@ -27017,7 +30899,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_ip.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.value", "type": "string", "tags": [], "label": "value", @@ -27030,10 +30912,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password", "type": "Object", "tags": [], - "label": "server_port", + "label": "password", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27041,21 +30923,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -27069,7 +30948,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.display", "type": "string", "tags": [], "label": "display", @@ -27082,7 +30961,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27090,7 +30969,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.label", "type": "string", "tags": [], "label": "label", @@ -27101,7 +30980,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.options", "type": "Array", "tags": [], "label": "options", @@ -27115,7 +30994,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.order", "type": "number", "tags": [], "label": "order", @@ -27126,7 +31005,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.required", "type": "boolean", "tags": [], "label": "required", @@ -27140,13 +31019,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27154,7 +31033,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -27165,7 +31044,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.type", "type": "string", "tags": [], "label": "type", @@ -27178,7 +31057,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27186,7 +31065,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -27200,7 +31079,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.validations", "type": "Array", "tags": [], "label": "validations", @@ -27214,8 +31093,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.server_port.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.value", + "type": "string", "tags": [], "label": "value", "description": [], @@ -27227,10 +31106,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database", "type": "Object", "tags": [], - "label": "drive_path", + "label": "database", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27238,21 +31117,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -27266,7 +31142,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.display", "type": "string", "tags": [], "label": "display", @@ -27287,7 +31163,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.label", "type": "string", "tags": [], "label": "label", @@ -27298,7 +31174,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.options", "type": "Array", "tags": [], "label": "options", @@ -27312,7 +31188,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.order", "type": "number", "tags": [], "label": "order", @@ -27323,18 +31199,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.placeholder", - "type": "string", - "tags": [], - "label": "placeholder", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.required", "type": "boolean", "tags": [], "label": "required", @@ -27348,7 +31213,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -27362,7 +31227,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -27373,7 +31238,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.type", "type": "string", "tags": [], "label": "type", @@ -27394,7 +31259,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -27408,7 +31273,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.validations", "type": "Array", "tags": [], "label": "validations", @@ -27422,7 +31287,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.drive_path.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.value", "type": "string", "tags": [], "label": "value", @@ -27435,10 +31300,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables", "type": "Object", "tags": [], - "label": "use_document_level_security", + "label": "tables", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27446,21 +31311,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -27474,7 +31336,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.display", "type": "string", "tags": [], "label": "display", @@ -27487,7 +31349,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTAREA" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27495,7 +31357,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.label", "type": "string", "tags": [], "label": "label", @@ -27506,7 +31368,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.options", "type": "Array", "tags": [], "label": "options", @@ -27520,7 +31382,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.order", "type": "number", "tags": [], "label": "order", @@ -27531,7 +31393,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.required", "type": "boolean", "tags": [], "label": "required", @@ -27545,7 +31407,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -27559,7 +31421,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -27570,7 +31432,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.type", "type": "string", "tags": [], "label": "type", @@ -27583,7 +31445,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".LIST" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27591,7 +31453,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -27605,7 +31467,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.validations", "type": "Array", "tags": [], "label": "validations", @@ -27619,154 +31481,23 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.configuration.use_document_level_security.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features.FeatureName.SYNC_RULES", - "type": "Object", - "tags": [], - "label": "[FeatureName.SYNC_RULES]", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features.FeatureName.SYNC_RULES.advanced", - "type": "Object", - "tags": [], - "label": "advanced", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features.FeatureName.SYNC_RULES.advanced.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "false" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features.FeatureName.SYNC_RULES.basic", - "type": "Object", - "tags": [], - "label": "basic", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.features.FeatureName.SYNC_RULES.basic.enabled", - "type": "boolean", - "tags": [], - "label": "enabled", - "description": [], - "signature": [ - "true" - ], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.network_drive.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive", - "type": "Object", - "tags": [], - "label": "onedrive", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size", "type": "Object", "tags": [], - "label": "client_id", + "label": "fetch_size", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27774,21 +31505,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -27802,7 +31530,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.display", "type": "string", "tags": [], "label": "display", @@ -27815,7 +31543,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27823,7 +31551,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.label", "type": "string", "tags": [], "label": "label", @@ -27834,7 +31562,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.options", "type": "Array", "tags": [], "label": "options", @@ -27848,7 +31576,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.order", "type": "number", "tags": [], "label": "order", @@ -27859,13 +31587,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27873,7 +31601,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -27887,21 +31615,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.type", "type": "string", "tags": [], "label": "type", @@ -27914,7 +31639,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27922,13 +31647,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27936,7 +31661,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.validations", "type": "Array", "tags": [], "label": "validations", @@ -27950,8 +31675,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_id.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.value", + "type": "number", "tags": [], "label": "value", "description": [], @@ -27963,10 +31688,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count", "type": "Object", "tags": [], - "label": "client_secret", + "label": "retry_count", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -27974,21 +31699,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -28002,7 +31724,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.display", "type": "string", "tags": [], "label": "display", @@ -28015,7 +31737,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28023,7 +31745,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.label", "type": "string", "tags": [], "label": "label", @@ -28034,7 +31756,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.options", "type": "Array", "tags": [], "label": "options", @@ -28048,7 +31770,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.order", "type": "number", "tags": [], "label": "order", @@ -28059,13 +31781,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28073,13 +31795,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28087,21 +31809,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.type", "type": "string", "tags": [], "label": "type", @@ -28114,7 +31833,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28122,13 +31841,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28136,7 +31855,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.validations", "type": "Array", "tags": [], "label": "validations", @@ -28150,8 +31869,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.client_secret.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.value", + "type": "number", "tags": [], "label": "value", "description": [], @@ -28163,10 +31882,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol", "type": "Object", "tags": [], - "label": "tenant_id", + "label": "oracle_protocol", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28174,21 +31893,18 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.default_value", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -28202,7 +31918,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.display", "type": "string", "tags": [], "label": "display", @@ -28215,7 +31931,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".DROPDOWN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28223,7 +31939,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.label", "type": "string", "tags": [], "label": "label", @@ -28234,13 +31950,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "never[]" + "{ label: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28248,7 +31964,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.order", "type": "number", "tags": [], "label": "order", @@ -28259,7 +31975,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.required", "type": "boolean", "tags": [], "label": "required", @@ -28273,7 +31989,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -28287,21 +32003,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.type", "type": "string", "tags": [], "label": "type", @@ -28322,13 +32035,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "never[]" + "string[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28336,7 +32049,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.validations", "type": "Array", "tags": [], "label": "validations", @@ -28350,7 +32063,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.tenant_id.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.value", "type": "string", "tags": [], "label": "value", @@ -28363,10 +32076,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home", "type": "Object", "tags": [], - "label": "retry_count", + "label": "oracle_home", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28374,8 +32087,8 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], @@ -28385,7 +32098,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -28399,7 +32112,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.display", "type": "string", "tags": [], "label": "display", @@ -28412,7 +32125,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28420,7 +32133,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.label", "type": "string", "tags": [], "label": "label", @@ -28431,7 +32144,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.options", "type": "Array", "tags": [], "label": "options", @@ -28445,7 +32158,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.order", "type": "number", "tags": [], "label": "order", @@ -28456,7 +32169,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.required", "type": "boolean", "tags": [], "label": "required", @@ -28470,7 +32183,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -28484,21 +32197,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.type", "type": "string", "tags": [], "label": "type", @@ -28511,7 +32221,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28519,7 +32229,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -28533,7 +32243,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.validations", "type": "Array", "tags": [], "label": "validations", @@ -28547,7 +32257,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.retry_count.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.value", "type": "string", "tags": [], "label": "value", @@ -28560,10 +32270,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path", "type": "Object", "tags": [], - "label": "concurrent_downloads", + "label": "wallet_configuration_path", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28571,8 +32281,8 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.default_value", + "type": "string", "tags": [], "label": "default_value", "description": [], @@ -28582,7 +32292,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -28596,7 +32306,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.display", "type": "string", "tags": [], "label": "display", @@ -28609,7 +32319,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28617,7 +32327,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.label", "type": "string", "tags": [], "label": "label", @@ -28628,7 +32338,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.options", "type": "Array", "tags": [], "label": "options", @@ -28642,7 +32352,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.order", "type": "number", "tags": [], "label": "order", @@ -28653,7 +32363,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.required", "type": "boolean", "tags": [], "label": "required", @@ -28667,7 +32377,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -28681,21 +32391,18 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.tooltip", - "type": "Uncategorized", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.tooltip", + "type": "string", "tags": [], "label": "tooltip", "description": [], - "signature": [ - "null" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.type", "type": "string", "tags": [], "label": "type", @@ -28708,7 +32415,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28716,7 +32423,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -28730,7 +32437,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.validations", "type": "Array", "tags": [], "label": "validations", @@ -28744,7 +32451,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.concurrent_downloads.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.value", "type": "string", "tags": [], "label": "value", @@ -28754,13 +32461,141 @@ "trackAdoption": false } ] - }, + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features", + "type": "Object", + "tags": [], + "label": "features", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features.FeatureName.SYNC_RULES", + "type": "Object", + "tags": [], + "label": "[FeatureName.SYNC_RULES]", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features.FeatureName.SYNC_RULES.advanced", + "type": "Object", + "tags": [], + "label": "advanced", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features.FeatureName.SYNC_RULES.advanced.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "false" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features.FeatureName.SYNC_RULES.basic", + "type": "Object", + "tags": [], + "label": "basic", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features.FeatureName.SYNC_RULES.basic.enabled", + "type": "boolean", + "tags": [], + "label": "enabled", + "description": [], + "signature": [ + "true" + ], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ] + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook", + "type": "Object", + "tags": [], + "label": "outlook", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/search-connectors", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration", + "type": "Object", + "tags": [], + "label": "configuration", + "description": [], + "path": "packages/kbn-search-connectors/types/native_connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source", "type": "Object", "tags": [], - "label": "use_document_level_security", + "label": "data_source", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28768,7 +32603,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -28782,7 +32617,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -28796,7 +32631,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.display", "type": "string", "tags": [], "label": "display", @@ -28809,7 +32644,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".DROPDOWN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28817,7 +32652,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.label", "type": "string", "tags": [], "label": "label", @@ -28828,13 +32663,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "never[]" + "{ label: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28842,7 +32677,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.order", "type": "number", "tags": [], "label": "order", @@ -28853,7 +32688,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.required", "type": "boolean", "tags": [], "label": "required", @@ -28867,7 +32702,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -28881,18 +32716,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.type", "type": "string", "tags": [], "label": "type", @@ -28905,7 +32743,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28913,7 +32751,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -28927,7 +32765,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.validations", "type": "Array", "tags": [], "label": "validations", @@ -28941,14 +32779,11 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_document_level_security.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.data_source.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -28957,10 +32792,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id", "type": "Object", "tags": [], - "label": "use_text_extraction_service", + "label": "tenant_id", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28968,7 +32803,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -28982,13 +32817,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -28996,7 +32831,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.display", "type": "string", "tags": [], "label": "display", @@ -29009,7 +32844,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TOGGLE" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29017,7 +32852,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.label", "type": "string", "tags": [], "label": "label", @@ -29028,7 +32863,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.options", "type": "Array", "tags": [], "label": "options", @@ -29042,7 +32877,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.order", "type": "number", "tags": [], "label": "order", @@ -29053,7 +32888,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.required", "type": "boolean", "tags": [], "label": "required", @@ -29067,7 +32902,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -29081,18 +32916,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.type", "type": "string", "tags": [], "label": "type", @@ -29105,7 +32943,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".BOOLEAN" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29113,13 +32951,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29127,7 +32965,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.validations", "type": "Array", "tags": [], "label": "validations", @@ -29141,50 +32979,23 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.configuration.use_text_extraction_service.value", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.tenant_id.value", + "type": "string", "tags": [], "label": "value", "description": [], - "signature": [ - "false" - ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false } ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.features", - "type": "Object", - "tags": [], - "label": "features", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ + }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.features.FeatureName.DOCUMENT_LEVEL_SECURITY", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id", "type": "Object", "tags": [], - "label": "[FeatureName.DOCUMENT_LEVEL_SECURITY]", + "label": "client_id", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29192,88 +33003,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.features.FeatureName.DOCUMENT_LEVEL_SECURITY.enabled", - "type": "boolean", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.default_value", + "type": "Uncategorized", "tags": [], - "label": "enabled", + "label": "default_value", "description": [], "signature": [ - "true" + "null" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false - } - ] - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.onedrive.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ] - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle", - "type": "Object", - "tags": [], - "label": "oracle", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration", - "type": "Object", - "tags": [], - "label": "configuration", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host", - "type": "Object", - "tags": [], - "label": "host", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.default_value", - "type": "string", - "tags": [], - "label": "default_value", - "description": [], - "path": "packages/kbn-search-connectors/types/native_connectors.ts", - "deprecated": false, - "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29281,7 +33031,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.display", "type": "string", "tags": [], "label": "display", @@ -29302,7 +33052,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.label", "type": "string", "tags": [], "label": "label", @@ -29313,7 +33063,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.options", "type": "Array", "tags": [], "label": "options", @@ -29327,7 +33077,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.order", "type": "number", "tags": [], "label": "order", @@ -29338,7 +33088,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.required", "type": "boolean", "tags": [], "label": "required", @@ -29352,7 +33102,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -29366,18 +33116,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.type", "type": "string", "tags": [], "label": "type", @@ -29398,7 +33151,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -29412,7 +33165,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.validations", "type": "Array", "tags": [], "label": "validations", @@ -29426,7 +33179,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.host.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_id.value", "type": "string", "tags": [], "label": "value", @@ -29439,10 +33192,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret", "type": "Object", "tags": [], - "label": "port", + "label": "client_secret", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29450,7 +33203,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.default_value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.default_value", "type": "Uncategorized", "tags": [], "label": "default_value", @@ -29464,13 +33217,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29478,7 +33231,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.display", "type": "string", "tags": [], "label": "display", @@ -29491,7 +33244,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29499,7 +33252,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.label", "type": "string", "tags": [], "label": "label", @@ -29510,7 +33263,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.options", "type": "Array", "tags": [], "label": "options", @@ -29524,7 +33277,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.order", "type": "number", "tags": [], "label": "order", @@ -29535,7 +33288,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.required", "type": "boolean", "tags": [], "label": "required", @@ -29549,13 +33302,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29563,18 +33316,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.type", "type": "string", "tags": [], "label": "type", @@ -29587,7 +33343,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29595,7 +33351,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -29609,7 +33365,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.validations", "type": "Array", "tags": [], "label": "validations", @@ -29623,7 +33379,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.port.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.client_secret.value", "type": "string", "tags": [], "label": "value", @@ -29636,10 +33392,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server", "type": "Object", "tags": [], - "label": "username", + "label": "exchange_server", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29647,24 +33403,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29672,7 +33431,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.display", "type": "string", "tags": [], "label": "display", @@ -29693,7 +33452,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.label", "type": "string", "tags": [], "label": "label", @@ -29704,7 +33463,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.options", "type": "Array", "tags": [], "label": "options", @@ -29718,7 +33477,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.order", "type": "number", "tags": [], "label": "order", @@ -29729,7 +33488,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.required", "type": "boolean", "tags": [], "label": "required", @@ -29743,7 +33502,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -29757,7 +33516,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -29768,7 +33527,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.type", "type": "string", "tags": [], "label": "type", @@ -29789,7 +33548,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -29803,7 +33562,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.validations", "type": "Array", "tags": [], "label": "validations", @@ -29817,7 +33576,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.username.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.exchange_server.value", "type": "string", "tags": [], "label": "value", @@ -29830,10 +33589,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server", "type": "Object", "tags": [], - "label": "password", + "label": "active_directory_server", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29841,24 +33600,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29866,7 +33628,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.display", "type": "string", "tags": [], "label": "display", @@ -29887,7 +33649,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.label", "type": "string", "tags": [], "label": "label", @@ -29898,7 +33660,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.options", "type": "Array", "tags": [], "label": "options", @@ -29912,7 +33674,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.order", "type": "number", "tags": [], "label": "order", @@ -29923,7 +33685,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.required", "type": "boolean", "tags": [], "label": "required", @@ -29937,13 +33699,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "true" + "false" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -29951,7 +33713,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -29962,7 +33724,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.type", "type": "string", "tags": [], "label": "type", @@ -29983,7 +33745,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -29997,7 +33759,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.validations", "type": "Array", "tags": [], "label": "validations", @@ -30011,7 +33773,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.password.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.active_directory_server.value", "type": "string", "tags": [], "label": "value", @@ -30024,10 +33786,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username", "type": "Object", "tags": [], - "label": "database", + "label": "username", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30035,24 +33797,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30060,7 +33825,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.display", "type": "string", "tags": [], "label": "display", @@ -30081,7 +33846,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.label", "type": "string", "tags": [], "label": "label", @@ -30092,7 +33857,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.options", "type": "Array", "tags": [], "label": "options", @@ -30106,7 +33871,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.order", "type": "number", "tags": [], "label": "order", @@ -30117,7 +33882,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.required", "type": "boolean", "tags": [], "label": "required", @@ -30131,7 +33896,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -30145,18 +33910,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.type", "type": "string", "tags": [], "label": "type", @@ -30177,7 +33945,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -30191,7 +33959,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.validations", "type": "Array", "tags": [], "label": "validations", @@ -30205,7 +33973,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.database.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.username.value", "type": "string", "tags": [], "label": "value", @@ -30218,10 +33986,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password", "type": "Object", "tags": [], - "label": "tables", + "label": "password", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30229,24 +33997,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30254,7 +34025,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.display", "type": "string", "tags": [], "label": "display", @@ -30267,7 +34038,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTAREA" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30275,7 +34046,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.label", "type": "string", "tags": [], "label": "label", @@ -30286,7 +34057,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.options", "type": "Array", "tags": [], "label": "options", @@ -30300,7 +34071,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.order", "type": "number", "tags": [], "label": "order", @@ -30311,7 +34082,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.required", "type": "boolean", "tags": [], "label": "required", @@ -30325,13 +34096,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.sensitive", "type": "boolean", "tags": [], "label": "sensitive", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30339,18 +34110,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.type", "type": "string", "tags": [], "label": "type", @@ -30363,7 +34137,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".LIST" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30371,7 +34145,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -30385,7 +34159,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.validations", "type": "Array", "tags": [], "label": "validations", @@ -30399,7 +34173,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.tables.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.password.value", "type": "string", "tags": [], "label": "value", @@ -30412,10 +34186,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain", "type": "Object", "tags": [], - "label": "fetch_size", + "label": "domain", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30423,24 +34197,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30448,7 +34225,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.display", "type": "string", "tags": [], "label": "display", @@ -30461,7 +34238,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30469,7 +34246,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.label", "type": "string", "tags": [], "label": "label", @@ -30480,7 +34257,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.options", "type": "Array", "tags": [], "label": "options", @@ -30494,7 +34271,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.order", "type": "number", "tags": [], "label": "order", @@ -30505,13 +34282,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30519,7 +34296,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -30533,7 +34310,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -30544,7 +34321,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.type", "type": "string", "tags": [], "label": "type", @@ -30557,7 +34334,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".STRING" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30565,13 +34342,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30579,7 +34356,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.validations", "type": "Array", "tags": [], "label": "validations", @@ -30593,8 +34370,8 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.fetch_size.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.domain.value", + "type": "string", "tags": [], "label": "value", "description": [], @@ -30606,10 +34383,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled", "type": "Object", "tags": [], - "label": "retry_count", + "label": "ssl_enabled", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30617,24 +34394,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.default_value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "{ field: string; value: string; }[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30642,7 +34422,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.display", "type": "string", "tags": [], "label": "display", @@ -30655,7 +34435,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".NUMERIC" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30663,7 +34443,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.label", "type": "string", "tags": [], "label": "label", @@ -30674,7 +34454,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.options", "type": "Array", "tags": [], "label": "options", @@ -30688,7 +34468,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.order", "type": "number", "tags": [], "label": "order", @@ -30699,13 +34479,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30713,7 +34493,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -30727,18 +34507,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.type", "type": "string", "tags": [], "label": "type", @@ -30751,7 +34534,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".INTEGER" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30759,13 +34542,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30773,7 +34556,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.validations", "type": "Array", "tags": [], "label": "validations", @@ -30787,11 +34570,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.retry_count.value", - "type": "number", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_enabled.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -30800,10 +34586,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca", "type": "Object", "tags": [], - "label": "oracle_protocol", + "label": "ssl_ca", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30811,24 +34597,27 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.depends_on", "type": "Array", "tags": [], "label": "depends_on", "description": [], "signature": [ - "never[]" + "({ field: string; value: string; } | { field: string; value: true; })[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30836,7 +34625,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.display", "type": "string", "tags": [], "label": "display", @@ -30849,7 +34638,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".DROPDOWN" + ".TEXTBOX" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30857,7 +34646,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.label", "type": "string", "tags": [], "label": "label", @@ -30868,13 +34657,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.options", "type": "Array", "tags": [], "label": "options", "description": [], "signature": [ - "{ label: string; value: string; }[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30882,7 +34671,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.order", "type": "number", "tags": [], "label": "order", @@ -30893,7 +34682,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.required", "type": "boolean", "tags": [], "label": "required", @@ -30907,7 +34696,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -30921,18 +34710,21 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.tooltip", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.tooltip", + "type": "Uncategorized", "tags": [], "label": "tooltip", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.type", "type": "string", "tags": [], "label": "type", @@ -30953,13 +34745,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -30967,7 +34759,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.validations", "type": "Array", "tags": [], "label": "validations", @@ -30981,7 +34773,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_protocol.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.ssl_ca.value", "type": "string", "tags": [], "label": "value", @@ -30994,10 +34786,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service", "type": "Object", "tags": [], - "label": "oracle_home", + "label": "use_text_extraction_service", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -31005,18 +34797,21 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.default_value", + "type": "Uncategorized", "tags": [], "label": "default_value", "description": [], + "signature": [ + "null" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -31030,7 +34825,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.display", "type": "string", "tags": [], "label": "display", @@ -31043,7 +34838,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".TOGGLE" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -31051,7 +34846,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.label", "type": "string", "tags": [], "label": "label", @@ -31062,7 +34857,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.options", "type": "Array", "tags": [], "label": "options", @@ -31076,7 +34871,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.order", "type": "number", "tags": [], "label": "order", @@ -31087,13 +34882,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.required", "type": "boolean", "tags": [], "label": "required", "description": [], "signature": [ - "false" + "true" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -31101,7 +34896,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -31115,7 +34910,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -31126,7 +34921,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.type", "type": "string", "tags": [], "label": "type", @@ -31139,7 +34934,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".BOOLEAN" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -31147,7 +34942,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", @@ -31161,7 +34956,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.validations", "type": "Array", "tags": [], "label": "validations", @@ -31175,11 +34970,14 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.oracle_home.value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.use_text_extraction_service.value", + "type": "boolean", "tags": [], "label": "value", "description": [], + "signature": [ + "false" + ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, "trackAdoption": false @@ -31188,10 +34986,10 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks", "type": "Object", "tags": [], - "label": "wallet_configuration_path", + "label": "max_concurrent_tasks", "description": [], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -31199,8 +34997,8 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.default_value", - "type": "string", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.default_value", + "type": "number", "tags": [], "label": "default_value", "description": [], @@ -31210,7 +35008,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.depends_on", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.depends_on", "type": "Array", "tags": [], "label": "depends_on", @@ -31224,7 +35022,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.display", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.display", "type": "string", "tags": [], "label": "display", @@ -31237,7 +35035,7 @@ "section": "def-common.DisplayType", "text": "DisplayType" }, - ".TEXTBOX" + ".NUMERIC" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -31245,7 +35043,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.label", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.label", "type": "string", "tags": [], "label": "label", @@ -31256,7 +35054,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.options", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.options", "type": "Array", "tags": [], "label": "options", @@ -31270,7 +35068,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.order", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.order", "type": "number", "tags": [], "label": "order", @@ -31281,7 +35079,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.required", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.required", "type": "boolean", "tags": [], "label": "required", @@ -31295,7 +35093,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.sensitive", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.sensitive", "type": "boolean", "tags": [], "label": "sensitive", @@ -31309,7 +35107,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.tooltip", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.tooltip", "type": "string", "tags": [], "label": "tooltip", @@ -31320,7 +35118,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.type", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.type", "type": "string", "tags": [], "label": "type", @@ -31333,7 +35131,7 @@ "section": "def-common.FieldType", "text": "FieldType" }, - ".STRING" + ".INTEGER" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -31341,13 +35139,13 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.ui_restrictions", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.ui_restrictions", "type": "Array", "tags": [], "label": "ui_restrictions", "description": [], "signature": [ - "string[]" + "never[]" ], "path": "packages/kbn-search-connectors/types/native_connectors.ts", "deprecated": false, @@ -31355,7 +35153,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.validations", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.validations", "type": "Array", "tags": [], "label": "validations", @@ -31369,7 +35167,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.configuration.wallet_configuration_path.value", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.configuration.max_concurrent_tasks.value", "type": "string", "tags": [], "label": "value", @@ -31384,7 +35182,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.features", "type": "Object", "tags": [], "label": "features", @@ -31395,7 +35193,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features.FeatureName.SYNC_RULES", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.features.FeatureName.SYNC_RULES", "type": "Object", "tags": [], "label": "[FeatureName.SYNC_RULES]", @@ -31406,7 +35204,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features.FeatureName.SYNC_RULES.advanced", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.features.FeatureName.SYNC_RULES.advanced", "type": "Object", "tags": [], "label": "advanced", @@ -31417,7 +35215,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features.FeatureName.SYNC_RULES.advanced.enabled", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.features.FeatureName.SYNC_RULES.advanced.enabled", "type": "boolean", "tags": [], "label": "enabled", @@ -31433,7 +35231,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features.FeatureName.SYNC_RULES.basic", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.features.FeatureName.SYNC_RULES.basic", "type": "Object", "tags": [], "label": "basic", @@ -31444,7 +35242,7 @@ "children": [ { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.features.FeatureName.SYNC_RULES.basic.enabled", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.features.FeatureName.SYNC_RULES.basic.enabled", "type": "boolean", "tags": [], "label": "enabled", @@ -31464,7 +35262,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.name", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.name", "type": "string", "tags": [], "label": "name", @@ -31475,7 +35273,7 @@ }, { "parentPluginId": "@kbn/search-connectors", - "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.oracle.serviceType", + "id": "def-common.NATIVE_CONNECTOR_DEFINITIONS.outlook.serviceType", "type": "string", "tags": [], "label": "serviceType", diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 7c8acbd2cd0e9..01740b58d01cb 100644 --- a/api_docs/kbn_search_connectors.mdx +++ b/api_docs/kbn_search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-connectors title: "@kbn/search-connectors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-connectors plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/te | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 2815 | 0 | 2815 | 0 | +| 3084 | 0 | 3084 | 0 | ## Common diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index b2f3d8114b381..252c47ecd56ac 100644 --- a/api_docs/kbn_search_errors.mdx +++ b/api_docs/kbn_search_errors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-errors title: "@kbn/search-errors" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-errors plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-errors'] --- import kbnSearchErrorsObj from './kbn_search_errors.devdocs.json'; diff --git a/api_docs/kbn_search_index_documents.mdx b/api_docs/kbn_search_index_documents.mdx index 4c92c20f27147..db6ce4ebaf825 100644 --- a/api_docs/kbn_search_index_documents.mdx +++ b/api_docs/kbn_search_index_documents.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-index-documents title: "@kbn/search-index-documents" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-index-documents plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-index-documents'] --- import kbnSearchIndexDocumentsObj from './kbn_search_index_documents.devdocs.json'; diff --git a/api_docs/kbn_search_response_warnings.mdx b/api_docs/kbn_search_response_warnings.mdx index 226f793a7903a..a6dc6155fd1c1 100644 --- a/api_docs/kbn_search_response_warnings.mdx +++ b/api_docs/kbn_search_response_warnings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-response-warnings title: "@kbn/search-response-warnings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-response-warnings plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 051f0bbf56e48..09c443507f52d 100644 --- a/api_docs/kbn_security_hardening.mdx +++ b/api_docs/kbn_security_hardening.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-hardening title: "@kbn/security-hardening" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-hardening plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-hardening'] --- import kbnSecurityHardeningObj from './kbn_security_hardening.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_common.mdx b/api_docs/kbn_security_plugin_types_common.mdx index cb9429675118e..f17e75b6cf4ef 100644 --- a/api_docs/kbn_security_plugin_types_common.mdx +++ b/api_docs/kbn_security_plugin_types_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-common title: "@kbn/security-plugin-types-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-common plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-common'] --- import kbnSecurityPluginTypesCommonObj from './kbn_security_plugin_types_common.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index 3442bb87053a8..2208e357ce006 100644 --- a/api_docs/kbn_security_plugin_types_public.mdx +++ b/api_docs/kbn_security_plugin_types_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-public title: "@kbn/security-plugin-types-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-public plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-public'] --- import kbnSecurityPluginTypesPublicObj from './kbn_security_plugin_types_public.devdocs.json'; diff --git a/api_docs/kbn_security_plugin_types_server.mdx b/api_docs/kbn_security_plugin_types_server.mdx index 29aff545390c0..dccbcf0d6fcea 100644 --- a/api_docs/kbn_security_plugin_types_server.mdx +++ b/api_docs/kbn_security_plugin_types_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-plugin-types-server title: "@kbn/security-plugin-types-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-plugin-types-server plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-plugin-types-server'] --- import kbnSecurityPluginTypesServerObj from './kbn_security_plugin_types_server.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 2582f2a87dff9..a12e600a1a1a1 100644 --- a/api_docs/kbn_security_solution_features.mdx +++ b/api_docs/kbn_security_solution_features.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-features title: "@kbn/security-solution-features" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-features plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-features'] --- import kbnSecuritySolutionFeaturesObj from './kbn_security_solution_features.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index e89cce76168eb..7aad1a27afde6 100644 --- a/api_docs/kbn_security_solution_navigation.mdx +++ b/api_docs/kbn_security_solution_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-navigation title: "@kbn/security-solution-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-navigation plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-navigation'] --- import kbnSecuritySolutionNavigationObj from './kbn_security_solution_navigation.devdocs.json'; diff --git a/api_docs/kbn_security_solution_side_nav.mdx b/api_docs/kbn_security_solution_side_nav.mdx index c5f0947102598..738bbf0814958 100644 --- a/api_docs/kbn_security_solution_side_nav.mdx +++ b/api_docs/kbn_security_solution_side_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-side-nav title: "@kbn/security-solution-side-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-side-nav plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-side-nav'] --- import kbnSecuritySolutionSideNavObj from './kbn_security_solution_side_nav.devdocs.json'; diff --git a/api_docs/kbn_security_solution_storybook_config.mdx b/api_docs/kbn_security_solution_storybook_config.mdx index c3787e5cdb9de..a235d7d1b6ca6 100644 --- a/api_docs/kbn_security_solution_storybook_config.mdx +++ b/api_docs/kbn_security_solution_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-storybook-config title: "@kbn/security-solution-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-storybook-config plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-storybook-config'] --- import kbnSecuritySolutionStorybookConfigObj from './kbn_security_solution_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_autocomplete.mdx b/api_docs/kbn_securitysolution_autocomplete.mdx index 341531b80e8ba..aea37c96691f5 100644 --- a/api_docs/kbn_securitysolution_autocomplete.mdx +++ b/api_docs/kbn_securitysolution_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-autocomplete title: "@kbn/securitysolution-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-autocomplete plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-autocomplete'] --- import kbnSecuritysolutionAutocompleteObj from './kbn_securitysolution_autocomplete.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_data_table.mdx b/api_docs/kbn_securitysolution_data_table.mdx index 7cbd912ebd2a4..597f8821ea343 100644 --- a/api_docs/kbn_securitysolution_data_table.mdx +++ b/api_docs/kbn_securitysolution_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-data-table title: "@kbn/securitysolution-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-data-table plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-data-table'] --- import kbnSecuritysolutionDataTableObj from './kbn_securitysolution_data_table.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_ecs.mdx b/api_docs/kbn_securitysolution_ecs.mdx index aa9cbb0354bdd..772d92f28e9a1 100644 --- a/api_docs/kbn_securitysolution_ecs.mdx +++ b/api_docs/kbn_securitysolution_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-ecs title: "@kbn/securitysolution-ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-ecs plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-ecs'] --- import kbnSecuritysolutionEcsObj from './kbn_securitysolution_ecs.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_es_utils.mdx b/api_docs/kbn_securitysolution_es_utils.mdx index 0f6267f4ebd4f..2de6d9ec3f018 100644 --- a/api_docs/kbn_securitysolution_es_utils.mdx +++ b/api_docs/kbn_securitysolution_es_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-es-utils title: "@kbn/securitysolution-es-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-es-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-es-utils'] --- import kbnSecuritysolutionEsUtilsObj from './kbn_securitysolution_es_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_exception_list_components.mdx b/api_docs/kbn_securitysolution_exception_list_components.mdx index b84b3f25a4a9d..bb33e834ada26 100644 --- a/api_docs/kbn_securitysolution_exception_list_components.mdx +++ b/api_docs/kbn_securitysolution_exception_list_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-exception-list-components title: "@kbn/securitysolution-exception-list-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-exception-list-components plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index cc97a9be56548..18e892c249ab8 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index a32ebff2ae680..026990ad74171 100644 --- a/api_docs/kbn_securitysolution_hook_utils.mdx +++ b/api_docs/kbn_securitysolution_hook_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-hook-utils title: "@kbn/securitysolution-hook-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-hook-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-hook-utils'] --- import kbnSecuritysolutionHookUtilsObj from './kbn_securitysolution_hook_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx index 49184270fe531..4cf80f33a5bfb 100644 --- a/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_alerting_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-alerting-types title: "@kbn/securitysolution-io-ts-alerting-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-alerting-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-alerting-types'] --- import kbnSecuritysolutionIoTsAlertingTypesObj from './kbn_securitysolution_io_ts_alerting_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_list_types.mdx b/api_docs/kbn_securitysolution_io_ts_list_types.mdx index 583e0b6940f5f..6e1557d1f9062 100644 --- a/api_docs/kbn_securitysolution_io_ts_list_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_list_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-list-types title: "@kbn/securitysolution-io-ts-list-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-list-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-list-types'] --- import kbnSecuritysolutionIoTsListTypesObj from './kbn_securitysolution_io_ts_list_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_types.mdx b/api_docs/kbn_securitysolution_io_ts_types.mdx index f049eefd9c148..958af40071319 100644 --- a/api_docs/kbn_securitysolution_io_ts_types.mdx +++ b/api_docs/kbn_securitysolution_io_ts_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-types title: "@kbn/securitysolution-io-ts-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-types'] --- import kbnSecuritysolutionIoTsTypesObj from './kbn_securitysolution_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_io_ts_utils.mdx b/api_docs/kbn_securitysolution_io_ts_utils.mdx index bbb85211d1eae..eb02d878c9f0c 100644 --- a/api_docs/kbn_securitysolution_io_ts_utils.mdx +++ b/api_docs/kbn_securitysolution_io_ts_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-io-ts-utils title: "@kbn/securitysolution-io-ts-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-io-ts-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-io-ts-utils'] --- import kbnSecuritysolutionIoTsUtilsObj from './kbn_securitysolution_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_api.mdx b/api_docs/kbn_securitysolution_list_api.mdx index a6449971b3e92..edd1a224799e4 100644 --- a/api_docs/kbn_securitysolution_list_api.mdx +++ b/api_docs/kbn_securitysolution_list_api.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-api title: "@kbn/securitysolution-list-api" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-api plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-api'] --- import kbnSecuritysolutionListApiObj from './kbn_securitysolution_list_api.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_constants.mdx b/api_docs/kbn_securitysolution_list_constants.mdx index 1e2649e82d91f..db8f097ac284c 100644 --- a/api_docs/kbn_securitysolution_list_constants.mdx +++ b/api_docs/kbn_securitysolution_list_constants.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-constants title: "@kbn/securitysolution-list-constants" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-constants plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-constants'] --- import kbnSecuritysolutionListConstantsObj from './kbn_securitysolution_list_constants.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_hooks.mdx b/api_docs/kbn_securitysolution_list_hooks.mdx index 248783ef80ae8..60c53092adffc 100644 --- a/api_docs/kbn_securitysolution_list_hooks.mdx +++ b/api_docs/kbn_securitysolution_list_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-hooks title: "@kbn/securitysolution-list-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-hooks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-hooks'] --- import kbnSecuritysolutionListHooksObj from './kbn_securitysolution_list_hooks.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_list_utils.mdx b/api_docs/kbn_securitysolution_list_utils.mdx index 9d8de8ab06cdd..cab3d5827ee01 100644 --- a/api_docs/kbn_securitysolution_list_utils.mdx +++ b/api_docs/kbn_securitysolution_list_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-list-utils title: "@kbn/securitysolution-list-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-list-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-list-utils'] --- import kbnSecuritysolutionListUtilsObj from './kbn_securitysolution_list_utils.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_rules.mdx b/api_docs/kbn_securitysolution_rules.mdx index 968e180ab5c75..43bab93e1e00c 100644 --- a/api_docs/kbn_securitysolution_rules.mdx +++ b/api_docs/kbn_securitysolution_rules.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-rules title: "@kbn/securitysolution-rules" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-rules plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-rules'] --- import kbnSecuritysolutionRulesObj from './kbn_securitysolution_rules.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_t_grid.mdx b/api_docs/kbn_securitysolution_t_grid.mdx index 2c28355502718..9af470c8e8337 100644 --- a/api_docs/kbn_securitysolution_t_grid.mdx +++ b/api_docs/kbn_securitysolution_t_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-t-grid title: "@kbn/securitysolution-t-grid" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-t-grid plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-t-grid'] --- import kbnSecuritysolutionTGridObj from './kbn_securitysolution_t_grid.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_utils.mdx b/api_docs/kbn_securitysolution_utils.mdx index 925ae72a9f6c0..7ee87bea86735 100644 --- a/api_docs/kbn_securitysolution_utils.mdx +++ b/api_docs/kbn_securitysolution_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-utils title: "@kbn/securitysolution-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-utils'] --- import kbnSecuritysolutionUtilsObj from './kbn_securitysolution_utils.devdocs.json'; diff --git a/api_docs/kbn_server_http_tools.mdx b/api_docs/kbn_server_http_tools.mdx index a093b0593c9ea..ddc3d51f8d8f5 100644 --- a/api_docs/kbn_server_http_tools.mdx +++ b/api_docs/kbn_server_http_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-http-tools title: "@kbn/server-http-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-http-tools plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-http-tools'] --- import kbnServerHttpToolsObj from './kbn_server_http_tools.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository.mdx b/api_docs/kbn_server_route_repository.mdx index fe7333e6d99e3..dd100c71488d1 100644 --- a/api_docs/kbn_server_route_repository.mdx +++ b/api_docs/kbn_server_route_repository.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository title: "@kbn/server-route-repository" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 2f2c2a5fa9c76..f76f429ed3d2f 100644 --- a/api_docs/kbn_serverless_common_settings.mdx +++ b/api_docs/kbn_serverless_common_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-common-settings title: "@kbn/serverless-common-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-common-settings plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-common-settings'] --- import kbnServerlessCommonSettingsObj from './kbn_serverless_common_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_observability_settings.mdx b/api_docs/kbn_serverless_observability_settings.mdx index 25e1cb21ddb65..4abbf9f3d017d 100644 --- a/api_docs/kbn_serverless_observability_settings.mdx +++ b/api_docs/kbn_serverless_observability_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-observability-settings title: "@kbn/serverless-observability-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-observability-settings plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-observability-settings'] --- import kbnServerlessObservabilitySettingsObj from './kbn_serverless_observability_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index f64733260e0e2..b46f4a7830ebd 100644 --- a/api_docs/kbn_serverless_project_switcher.mdx +++ b/api_docs/kbn_serverless_project_switcher.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-project-switcher title: "@kbn/serverless-project-switcher" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-project-switcher plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-project-switcher'] --- import kbnServerlessProjectSwitcherObj from './kbn_serverless_project_switcher.devdocs.json'; diff --git a/api_docs/kbn_serverless_search_settings.mdx b/api_docs/kbn_serverless_search_settings.mdx index f79693c92b004..9fb7cd52827f9 100644 --- a/api_docs/kbn_serverless_search_settings.mdx +++ b/api_docs/kbn_serverless_search_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-search-settings title: "@kbn/serverless-search-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-search-settings plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-search-settings'] --- import kbnServerlessSearchSettingsObj from './kbn_serverless_search_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_security_settings.mdx b/api_docs/kbn_serverless_security_settings.mdx index 96440a92172c7..efe724d9d2dbb 100644 --- a/api_docs/kbn_serverless_security_settings.mdx +++ b/api_docs/kbn_serverless_security_settings.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-security-settings title: "@kbn/serverless-security-settings" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-security-settings plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-security-settings'] --- import kbnServerlessSecuritySettingsObj from './kbn_serverless_security_settings.devdocs.json'; diff --git a/api_docs/kbn_serverless_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index c9e105f06415d..0f610183c651e 100644 --- a/api_docs/kbn_serverless_storybook_config.mdx +++ b/api_docs/kbn_serverless_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-serverless-storybook-config title: "@kbn/serverless-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/serverless-storybook-config plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/serverless-storybook-config'] --- import kbnServerlessStorybookConfigObj from './kbn_serverless_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_svg.mdx b/api_docs/kbn_shared_svg.mdx index 50fba3dfe752f..616e732a8d96d 100644 --- a/api_docs/kbn_shared_svg.mdx +++ b/api_docs/kbn_shared_svg.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-svg title: "@kbn/shared-svg" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-svg plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-svg'] --- import kbnSharedSvgObj from './kbn_shared_svg.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_avatar_solution.mdx b/api_docs/kbn_shared_ux_avatar_solution.mdx index ca985f8def57f..34420d758256d 100644 --- a/api_docs/kbn_shared_ux_avatar_solution.mdx +++ b/api_docs/kbn_shared_ux_avatar_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-solution title: "@kbn/shared-ux-avatar-solution" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-solution plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-solution'] --- import kbnSharedUxAvatarSolutionObj from './kbn_shared_ux_avatar_solution.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx index d46452f9b87a2..e40292299834c 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen title: "@kbn/shared-ux-button-exit-full-screen" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen'] --- import kbnSharedUxButtonExitFullScreenObj from './kbn_shared_ux_button_exit_full_screen.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index 1a6f70e7feb65..5846cd99313b0 100644 --- a/api_docs/kbn_shared_ux_button_toolbar.mdx +++ b/api_docs/kbn_shared_ux_button_toolbar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-toolbar title: "@kbn/shared-ux-button-toolbar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-toolbar plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-toolbar'] --- import kbnSharedUxButtonToolbarObj from './kbn_shared_ux_button_toolbar.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data.mdx b/api_docs/kbn_shared_ux_card_no_data.mdx index 6c8a2488dc2ba..7b436db7c1fdb 100644 --- a/api_docs/kbn_shared_ux_card_no_data.mdx +++ b/api_docs/kbn_shared_ux_card_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data title: "@kbn/shared-ux-card-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data'] --- import kbnSharedUxCardNoDataObj from './kbn_shared_ux_card_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx index c72f33a6ddb7a..61f8ea7ebb99a 100644 --- a/api_docs/kbn_shared_ux_card_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_card_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-card-no-data-mocks title: "@kbn/shared-ux-card-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-card-no-data-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-card-no-data-mocks'] --- import kbnSharedUxCardNoDataMocksObj from './kbn_shared_ux_card_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_chrome_navigation.mdx b/api_docs/kbn_shared_ux_chrome_navigation.mdx index 7b115c188a8ae..856a2fd1d0e06 100644 --- a/api_docs/kbn_shared_ux_chrome_navigation.mdx +++ b/api_docs/kbn_shared_ux_chrome_navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-chrome-navigation title: "@kbn/shared-ux-chrome-navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-chrome-navigation plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-chrome-navigation'] --- import kbnSharedUxChromeNavigationObj from './kbn_shared_ux_chrome_navigation.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_error_boundary.mdx b/api_docs/kbn_shared_ux_error_boundary.mdx index 3d0be84d059b7..31c514703012c 100644 --- a/api_docs/kbn_shared_ux_error_boundary.mdx +++ b/api_docs/kbn_shared_ux_error_boundary.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-error-boundary title: "@kbn/shared-ux-error-boundary" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-error-boundary plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-error-boundary'] --- import kbnSharedUxErrorBoundaryObj from './kbn_shared_ux_error_boundary.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index ec761c439b56f..cbadb21f3c11a 100644 --- a/api_docs/kbn_shared_ux_file_context.mdx +++ b/api_docs/kbn_shared_ux_file_context.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-context title: "@kbn/shared-ux-file-context" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-context plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-context'] --- import kbnSharedUxFileContextObj from './kbn_shared_ux_file_context.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image.mdx b/api_docs/kbn_shared_ux_file_image.mdx index 8d419e197be85..28c0be09fa745 100644 --- a/api_docs/kbn_shared_ux_file_image.mdx +++ b/api_docs/kbn_shared_ux_file_image.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image title: "@kbn/shared-ux-file-image" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image'] --- import kbnSharedUxFileImageObj from './kbn_shared_ux_file_image.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_image_mocks.mdx b/api_docs/kbn_shared_ux_file_image_mocks.mdx index a5364b4a83b62..a96d4be1ff86e 100644 --- a/api_docs/kbn_shared_ux_file_image_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_image_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-image-mocks title: "@kbn/shared-ux-file-image-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-image-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-image-mocks'] --- import kbnSharedUxFileImageMocksObj from './kbn_shared_ux_file_image_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_mocks.mdx b/api_docs/kbn_shared_ux_file_mocks.mdx index 375338044977b..b11bb0382a8da 100644 --- a/api_docs/kbn_shared_ux_file_mocks.mdx +++ b/api_docs/kbn_shared_ux_file_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-mocks title: "@kbn/shared-ux-file-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-mocks'] --- import kbnSharedUxFileMocksObj from './kbn_shared_ux_file_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_picker.mdx b/api_docs/kbn_shared_ux_file_picker.mdx index 4e720cf099130..43c8e8e6bd7a9 100644 --- a/api_docs/kbn_shared_ux_file_picker.mdx +++ b/api_docs/kbn_shared_ux_file_picker.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-picker title: "@kbn/shared-ux-file-picker" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-picker plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-picker'] --- import kbnSharedUxFilePickerObj from './kbn_shared_ux_file_picker.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_types.mdx b/api_docs/kbn_shared_ux_file_types.mdx index 1d2521ab471a8..f92d7b417d22b 100644 --- a/api_docs/kbn_shared_ux_file_types.mdx +++ b/api_docs/kbn_shared_ux_file_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-types title: "@kbn/shared-ux-file-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-types'] --- import kbnSharedUxFileTypesObj from './kbn_shared_ux_file_types.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_upload.mdx b/api_docs/kbn_shared_ux_file_upload.mdx index 0b456d2f580c8..2073f4dc66de7 100644 --- a/api_docs/kbn_shared_ux_file_upload.mdx +++ b/api_docs/kbn_shared_ux_file_upload.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-upload title: "@kbn/shared-ux-file-upload" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-upload plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-upload'] --- import kbnSharedUxFileUploadObj from './kbn_shared_ux_file_upload.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_file_util.mdx b/api_docs/kbn_shared_ux_file_util.mdx index c1ea7e372b63b..c32af8ac68943 100644 --- a/api_docs/kbn_shared_ux_file_util.mdx +++ b/api_docs/kbn_shared_ux_file_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-file-util title: "@kbn/shared-ux-file-util" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-file-util plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-file-util'] --- import kbnSharedUxFileUtilObj from './kbn_shared_ux_file_util.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app.mdx b/api_docs/kbn_shared_ux_link_redirect_app.mdx index 55009311d4709..5f10067e8368e 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app title: "@kbn/shared-ux-link-redirect-app" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app'] --- import kbnSharedUxLinkRedirectAppObj from './kbn_shared_ux_link_redirect_app.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx index 7b25143ef1754..fd9fadce09090 100644 --- a/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx +++ b/api_docs/kbn_shared_ux_link_redirect_app_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-link-redirect-app-mocks title: "@kbn/shared-ux-link-redirect-app-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-link-redirect-app-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-link-redirect-app-mocks'] --- import kbnSharedUxLinkRedirectAppMocksObj from './kbn_shared_ux_link_redirect_app_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown.mdx b/api_docs/kbn_shared_ux_markdown.mdx index cbb96cfbd8a03..ad2c7edf6756d 100644 --- a/api_docs/kbn_shared_ux_markdown.mdx +++ b/api_docs/kbn_shared_ux_markdown.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown title: "@kbn/shared-ux-markdown" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown'] --- import kbnSharedUxMarkdownObj from './kbn_shared_ux_markdown.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_markdown_mocks.mdx b/api_docs/kbn_shared_ux_markdown_mocks.mdx index 34d00ec373d73..b4be1da76b413 100644 --- a/api_docs/kbn_shared_ux_markdown_mocks.mdx +++ b/api_docs/kbn_shared_ux_markdown_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-markdown-mocks title: "@kbn/shared-ux-markdown-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-markdown-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-markdown-mocks'] --- import kbnSharedUxMarkdownMocksObj from './kbn_shared_ux_markdown_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx index b9cb94e6f6e58..b456be3e2597b 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data title: "@kbn/shared-ux-page-analytics-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data'] --- import kbnSharedUxPageAnalyticsNoDataObj from './kbn_shared_ux_page_analytics_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx index 7322ee5529f9b..0ca90f685d190 100644 --- a/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_analytics_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-analytics-no-data-mocks title: "@kbn/shared-ux-page-analytics-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-analytics-no-data-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-analytics-no-data-mocks'] --- import kbnSharedUxPageAnalyticsNoDataMocksObj from './kbn_shared_ux_page_analytics_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx index f6eb753562437..357d99d864d2e 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data title: "@kbn/shared-ux-page-kibana-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data'] --- import kbnSharedUxPageKibanaNoDataObj from './kbn_shared_ux_page_kibana_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx index 11232377a40aa..906f5068af94a 100644 --- a/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-no-data-mocks title: "@kbn/shared-ux-page-kibana-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-no-data-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-no-data-mocks'] --- import kbnSharedUxPageKibanaNoDataMocksObj from './kbn_shared_ux_page_kibana_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template.mdx b/api_docs/kbn_shared_ux_page_kibana_template.mdx index 59c3cb82fda32..4c95733f276ea 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template title: "@kbn/shared-ux-page-kibana-template" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template'] --- import kbnSharedUxPageKibanaTemplateObj from './kbn_shared_ux_page_kibana_template.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx index 3740bb95463d1..2a6e5527ab773 100644 --- a/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_kibana_template_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-kibana-template-mocks title: "@kbn/shared-ux-page-kibana-template-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-kibana-template-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-kibana-template-mocks'] --- import kbnSharedUxPageKibanaTemplateMocksObj from './kbn_shared_ux_page_kibana_template_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data.mdx b/api_docs/kbn_shared_ux_page_no_data.mdx index 5e6d79ee7a5e4..ba5210b87311d 100644 --- a/api_docs/kbn_shared_ux_page_no_data.mdx +++ b/api_docs/kbn_shared_ux_page_no_data.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data title: "@kbn/shared-ux-page-no-data" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data'] --- import kbnSharedUxPageNoDataObj from './kbn_shared_ux_page_no_data.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config.mdx b/api_docs/kbn_shared_ux_page_no_data_config.mdx index 461de651302f9..5f08006390c2a 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config title: "@kbn/shared-ux-page-no-data-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config'] --- import kbnSharedUxPageNoDataConfigObj from './kbn_shared_ux_page_no_data_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx index bac32fe93d267..5a680a0aedef9 100644 --- a/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_config_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-config-mocks title: "@kbn/shared-ux-page-no-data-config-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-config-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-config-mocks'] --- import kbnSharedUxPageNoDataConfigMocksObj from './kbn_shared_ux_page_no_data_config_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx index 3cd38b6617f41..10de2da137f2d 100644 --- a/api_docs/kbn_shared_ux_page_no_data_mocks.mdx +++ b/api_docs/kbn_shared_ux_page_no_data_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-no-data-mocks title: "@kbn/shared-ux-page-no-data-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-no-data-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-no-data-mocks'] --- import kbnSharedUxPageNoDataMocksObj from './kbn_shared_ux_page_no_data_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_page_solution_nav.mdx b/api_docs/kbn_shared_ux_page_solution_nav.mdx index 2f056ef2f91f4..068b6ad9d6c64 100644 --- a/api_docs/kbn_shared_ux_page_solution_nav.mdx +++ b/api_docs/kbn_shared_ux_page_solution_nav.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-page-solution-nav title: "@kbn/shared-ux-page-solution-nav" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-page-solution-nav plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-page-solution-nav'] --- import kbnSharedUxPageSolutionNavObj from './kbn_shared_ux_page_solution_nav.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx index 7d2937d2c916a..f3e4c821865aa 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views title: "@kbn/shared-ux-prompt-no-data-views" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views'] --- import kbnSharedUxPromptNoDataViewsObj from './kbn_shared_ux_prompt_no_data_views.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx index e36683f7c4fab..1765813bc222f 100644 --- a/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx +++ b/api_docs/kbn_shared_ux_prompt_no_data_views_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-no-data-views-mocks title: "@kbn/shared-ux-prompt-no-data-views-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-no-data-views-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-no-data-views-mocks'] --- import kbnSharedUxPromptNoDataViewsMocksObj from './kbn_shared_ux_prompt_no_data_views_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_prompt_not_found.mdx b/api_docs/kbn_shared_ux_prompt_not_found.mdx index aaaa70c5dd2cd..f699709f5cf7b 100644 --- a/api_docs/kbn_shared_ux_prompt_not_found.mdx +++ b/api_docs/kbn_shared_ux_prompt_not_found.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-prompt-not-found title: "@kbn/shared-ux-prompt-not-found" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-prompt-not-found plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-prompt-not-found'] --- import kbnSharedUxPromptNotFoundObj from './kbn_shared_ux_prompt_not_found.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router.mdx b/api_docs/kbn_shared_ux_router.mdx index b80f269f03e6e..f16f8970e8eba 100644 --- a/api_docs/kbn_shared_ux_router.mdx +++ b/api_docs/kbn_shared_ux_router.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router title: "@kbn/shared-ux-router" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router'] --- import kbnSharedUxRouterObj from './kbn_shared_ux_router.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_router_mocks.mdx b/api_docs/kbn_shared_ux_router_mocks.mdx index 5c5c66506db12..c494eaf922b28 100644 --- a/api_docs/kbn_shared_ux_router_mocks.mdx +++ b/api_docs/kbn_shared_ux_router_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-router-mocks title: "@kbn/shared-ux-router-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-router-mocks plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-router-mocks'] --- import kbnSharedUxRouterMocksObj from './kbn_shared_ux_router_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_config.mdx b/api_docs/kbn_shared_ux_storybook_config.mdx index b533861ff609c..18d1110f606b8 100644 --- a/api_docs/kbn_shared_ux_storybook_config.mdx +++ b/api_docs/kbn_shared_ux_storybook_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-config title: "@kbn/shared-ux-storybook-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-config plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-config'] --- import kbnSharedUxStorybookConfigObj from './kbn_shared_ux_storybook_config.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_storybook_mock.mdx b/api_docs/kbn_shared_ux_storybook_mock.mdx index 3a8abbb3c9e0f..b7d7a7862dc37 100644 --- a/api_docs/kbn_shared_ux_storybook_mock.mdx +++ b/api_docs/kbn_shared_ux_storybook_mock.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-storybook-mock title: "@kbn/shared-ux-storybook-mock" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-storybook-mock plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 8af67226d97fd..e8a5b7adcd7aa 100644 --- a/api_docs/kbn_shared_ux_utility.mdx +++ b/api_docs/kbn_shared_ux_utility.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-utility title: "@kbn/shared-ux-utility" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-utility plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-utility'] --- import kbnSharedUxUtilityObj from './kbn_shared_ux_utility.devdocs.json'; diff --git a/api_docs/kbn_slo_schema.mdx b/api_docs/kbn_slo_schema.mdx index 7d7eaf9dae007..67e3cd96761e5 100644 --- a/api_docs/kbn_slo_schema.mdx +++ b/api_docs/kbn_slo_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-slo-schema title: "@kbn/slo-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/slo-schema plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index bb87f4fa3840f..117cc9e371ea3 100644 --- a/api_docs/kbn_some_dev_log.mdx +++ b/api_docs/kbn_some_dev_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-some-dev-log title: "@kbn/some-dev-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/some-dev-log plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_sort_predicates.mdx b/api_docs/kbn_sort_predicates.mdx index b55751fd20d3d..dba89512be442 100644 --- a/api_docs/kbn_sort_predicates.mdx +++ b/api_docs/kbn_sort_predicates.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-sort-predicates title: "@kbn/sort-predicates" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/sort-predicates plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/sort-predicates'] --- import kbnSortPredicatesObj from './kbn_sort_predicates.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index b5c905c4e798c..a8a9a4896e3eb 100644 --- a/api_docs/kbn_std.mdx +++ b/api_docs/kbn_std.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-std title: "@kbn/std" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/std plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/std'] --- import kbnStdObj from './kbn_std.devdocs.json'; diff --git a/api_docs/kbn_stdio_dev_helpers.mdx b/api_docs/kbn_stdio_dev_helpers.mdx index 496e4b1a7f0ea..a3d517e6c83d5 100644 --- a/api_docs/kbn_stdio_dev_helpers.mdx +++ b/api_docs/kbn_stdio_dev_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-stdio-dev-helpers title: "@kbn/stdio-dev-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/stdio-dev-helpers plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/stdio-dev-helpers'] --- import kbnStdioDevHelpersObj from './kbn_stdio_dev_helpers.devdocs.json'; diff --git a/api_docs/kbn_storybook.mdx b/api_docs/kbn_storybook.mdx index 7507b7bb0a273..f48bd619b5f4c 100644 --- a/api_docs/kbn_storybook.mdx +++ b/api_docs/kbn_storybook.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-storybook title: "@kbn/storybook" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/storybook plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 8c59440f65844..1f925cd03a61e 100644 --- a/api_docs/kbn_telemetry_tools.mdx +++ b/api_docs/kbn_telemetry_tools.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-telemetry-tools title: "@kbn/telemetry-tools" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/telemetry-tools plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/telemetry-tools'] --- import kbnTelemetryToolsObj from './kbn_telemetry_tools.devdocs.json'; diff --git a/api_docs/kbn_test.mdx b/api_docs/kbn_test.mdx index df4dfabb943f4..c76dc5175d6ca 100644 --- a/api_docs/kbn_test.mdx +++ b/api_docs/kbn_test.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test title: "@kbn/test" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_eui_helpers.mdx b/api_docs/kbn_test_eui_helpers.mdx index 80d5cde4a222d..fddd812cc31ba 100644 --- a/api_docs/kbn_test_eui_helpers.mdx +++ b/api_docs/kbn_test_eui_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-eui-helpers title: "@kbn/test-eui-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-eui-helpers plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-eui-helpers'] --- import kbnTestEuiHelpersObj from './kbn_test_eui_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 79f86a1458afc..628057a123bd3 100644 --- a/api_docs/kbn_test_jest_helpers.mdx +++ b/api_docs/kbn_test_jest_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-jest-helpers title: "@kbn/test-jest-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-jest-helpers plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-jest-helpers'] --- import kbnTestJestHelpersObj from './kbn_test_jest_helpers.devdocs.json'; diff --git a/api_docs/kbn_test_subj_selector.mdx b/api_docs/kbn_test_subj_selector.mdx index f5611593606a1..d5ab305dc5a85 100644 --- a/api_docs/kbn_test_subj_selector.mdx +++ b/api_docs/kbn_test_subj_selector.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-test-subj-selector title: "@kbn/test-subj-selector" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/test-subj-selector plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.devdocs.json b/api_docs/kbn_text_based_editor.devdocs.json index 8331afd578b82..465126ea2f695 100644 --- a/api_docs/kbn_text_based_editor.devdocs.json +++ b/api_docs/kbn_text_based_editor.devdocs.json @@ -595,6 +595,22 @@ "path": "packages/kbn-text-based-editor/src/text_based_languages_editor.tsx", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/text-based-editor", + "id": "def-public.TextBasedLanguagesEditorProps.hideTimeFilterInfo", + "type": "CompoundType", + "tags": [], + "label": "hideTimeFilterInfo", + "description": [ + "hide @timestamp info" + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-text-based-editor/src/text_based_languages_editor.tsx", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index a3dd2c70f167a..b0b0d657c0641 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 30 | 0 | 13 | 0 | +| 31 | 0 | 13 | 0 | ## Client diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index b3075f857174f..dc25b6370ac74 100644 --- a/api_docs/kbn_tooling_log.mdx +++ b/api_docs/kbn_tooling_log.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-tooling-log title: "@kbn/tooling-log" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/tooling-log plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_triggers_actions_ui_types.mdx b/api_docs/kbn_triggers_actions_ui_types.mdx index 83e9589fc441e..7e914a9007c37 100644 --- a/api_docs/kbn_triggers_actions_ui_types.mdx +++ b/api_docs/kbn_triggers_actions_ui_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-triggers-actions-ui-types title: "@kbn/triggers-actions-ui-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/triggers-actions-ui-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 514eff8e92823..728094988b1c8 100644 --- a/api_docs/kbn_ts_projects.mdx +++ b/api_docs/kbn_ts_projects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ts-projects title: "@kbn/ts-projects" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ts-projects plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ts-projects'] --- import kbnTsProjectsObj from './kbn_ts_projects.devdocs.json'; diff --git a/api_docs/kbn_typed_react_router_config.mdx b/api_docs/kbn_typed_react_router_config.mdx index 967bb6435da56..d5a452ada9ebc 100644 --- a/api_docs/kbn_typed_react_router_config.mdx +++ b/api_docs/kbn_typed_react_router_config.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-typed-react-router-config title: "@kbn/typed-react-router-config" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/typed-react-router-config plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/typed-react-router-config'] --- import kbnTypedReactRouterConfigObj from './kbn_typed_react_router_config.devdocs.json'; diff --git a/api_docs/kbn_ui_actions_browser.mdx b/api_docs/kbn_ui_actions_browser.mdx index 00160594e7b90..b9ee31108b7dc 100644 --- a/api_docs/kbn_ui_actions_browser.mdx +++ b/api_docs/kbn_ui_actions_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-actions-browser title: "@kbn/ui-actions-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-actions-browser plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-actions-browser'] --- import kbnUiActionsBrowserObj from './kbn_ui_actions_browser.devdocs.json'; diff --git a/api_docs/kbn_ui_shared_deps_src.mdx b/api_docs/kbn_ui_shared_deps_src.mdx index eee339ad882f2..9644d54b2be9d 100644 --- a/api_docs/kbn_ui_shared_deps_src.mdx +++ b/api_docs/kbn_ui_shared_deps_src.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-shared-deps-src title: "@kbn/ui-shared-deps-src" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-shared-deps-src plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index be7e2c06e9ae6..6b69eb944408a 100644 --- a/api_docs/kbn_ui_theme.mdx +++ b/api_docs/kbn_ui_theme.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ui-theme title: "@kbn/ui-theme" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ui-theme plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index af2f60673138f..fe96ce9105a10 100644 --- a/api_docs/kbn_unified_data_table.mdx +++ b/api_docs/kbn_unified_data_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-data-table title: "@kbn/unified-data-table" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-data-table plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.devdocs.json'; diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 4752500390d33..8d92c3eb28030 100644 --- a/api_docs/kbn_unified_doc_viewer.mdx +++ b/api_docs/kbn_unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-doc-viewer title: "@kbn/unified-doc-viewer" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-doc-viewer plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-doc-viewer'] --- import kbnUnifiedDocViewerObj from './kbn_unified_doc_viewer.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 86b3763fb908c..0337bf7e5589a 100644 --- a/api_docs/kbn_unified_field_list.mdx +++ b/api_docs/kbn_unified_field_list.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unified-field-list title: "@kbn/unified-field-list" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unified-field-list plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_badge.mdx b/api_docs/kbn_unsaved_changes_badge.mdx index 89d83a9ba795a..6a53ea3aedac9 100644 --- a/api_docs/kbn_unsaved_changes_badge.mdx +++ b/api_docs/kbn_unsaved_changes_badge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-badge title: "@kbn/unsaved-changes-badge" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-badge plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 6e48ff5868e81..cd2fb62e96a08 100644 --- a/api_docs/kbn_use_tracked_promise.mdx +++ b/api_docs/kbn_use_tracked_promise.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-use-tracked-promise title: "@kbn/use-tracked-promise" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/use-tracked-promise plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/use-tracked-promise'] --- import kbnUseTrackedPromiseObj from './kbn_use_tracked_promise.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 912376085de53..a362f08f579ea 100644 --- a/api_docs/kbn_user_profile_components.mdx +++ b/api_docs/kbn_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-user-profile-components title: "@kbn/user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/user-profile-components plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index 884cfb2020848..d44b4980125b5 100644 --- a/api_docs/kbn_utility_types.mdx +++ b/api_docs/kbn_utility_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types title: "@kbn/utility-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types'] --- import kbnUtilityTypesObj from './kbn_utility_types.devdocs.json'; diff --git a/api_docs/kbn_utility_types_jest.mdx b/api_docs/kbn_utility_types_jest.mdx index 356b1e826143d..e8663d10645c7 100644 --- a/api_docs/kbn_utility_types_jest.mdx +++ b/api_docs/kbn_utility_types_jest.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utility-types-jest title: "@kbn/utility-types-jest" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utility-types-jest plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utility-types-jest'] --- import kbnUtilityTypesJestObj from './kbn_utility_types_jest.devdocs.json'; diff --git a/api_docs/kbn_utils.mdx b/api_docs/kbn_utils.mdx index 08f34ff18d3a4..7800595721783 100644 --- a/api_docs/kbn_utils.mdx +++ b/api_docs/kbn_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-utils title: "@kbn/utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index fb3158f1da716..dc3a6987919e4 100644 --- a/api_docs/kbn_visualization_ui_components.mdx +++ b/api_docs/kbn_visualization_ui_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-ui-components title: "@kbn/visualization-ui-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-ui-components plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_visualization_utils.mdx b/api_docs/kbn_visualization_utils.mdx index 58c79415488c8..585435c969ea6 100644 --- a/api_docs/kbn_visualization_utils.mdx +++ b/api_docs/kbn_visualization_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-visualization-utils title: "@kbn/visualization-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/visualization-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-utils'] --- import kbnVisualizationUtilsObj from './kbn_visualization_utils.devdocs.json'; diff --git a/api_docs/kbn_xstate_utils.mdx b/api_docs/kbn_xstate_utils.mdx index b58481c40158c..cf8c64a6ac733 100644 --- a/api_docs/kbn_xstate_utils.mdx +++ b/api_docs/kbn_xstate_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-xstate-utils title: "@kbn/xstate-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/xstate-utils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/xstate-utils'] --- import kbnXstateUtilsObj from './kbn_xstate_utils.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index 32b2fd4c09173..c21917b1a590e 100644 --- a/api_docs/kbn_yarn_lock_validator.mdx +++ b/api_docs/kbn_yarn_lock_validator.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-yarn-lock-validator title: "@kbn/yarn-lock-validator" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/yarn-lock-validator plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index efbfa2a918e2e..f66c5cb5faa50 100644 --- a/api_docs/kbn_zod_helpers.mdx +++ b/api_docs/kbn_zod_helpers.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod-helpers title: "@kbn/zod-helpers" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod-helpers plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod-helpers'] --- import kbnZodHelpersObj from './kbn_zod_helpers.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index d5934c3348727..97f23584360d0 100644 --- a/api_docs/kibana_overview.mdx +++ b/api_docs/kibana_overview.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaOverview title: "kibanaOverview" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaOverview plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 06759f899813f..77d9f3426cd8a 100644 --- a/api_docs/kibana_react.mdx +++ b/api_docs/kibana_react.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaReact title: "kibanaReact" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaReact plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaReact'] --- import kibanaReactObj from './kibana_react.devdocs.json'; diff --git a/api_docs/kibana_utils.mdx b/api_docs/kibana_utils.mdx index 312082ffc1151..05aa2cf297aad 100644 --- a/api_docs/kibana_utils.mdx +++ b/api_docs/kibana_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kibanaUtils title: "kibanaUtils" image: https://source.unsplash.com/400x175/?github description: API docs for the kibanaUtils plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaUtils'] --- import kibanaUtilsObj from './kibana_utils.devdocs.json'; diff --git a/api_docs/kubernetes_security.mdx b/api_docs/kubernetes_security.mdx index 43383c2774448..34bee0d228e68 100644 --- a/api_docs/kubernetes_security.mdx +++ b/api_docs/kubernetes_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kubernetesSecurity title: "kubernetesSecurity" image: https://source.unsplash.com/400x175/?github description: API docs for the kubernetesSecurity plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 1f9b84429f287..f4a09a08ef403 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index 598a9fd4a2009..766fe60d58743 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index 2b9903bc57796..4e9e1cb3cc7d2 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 3cdb1c219b39b..0e001cd6efaf3 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index cda0c4449b6ff..9571660c344d5 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 30d42432a2e22..c1aca6608be4f 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/logs_explorer.devdocs.json b/api_docs/logs_explorer.devdocs.json index a12d78ba193f3..143de97ecd90a 100644 --- a/api_docs/logs_explorer.devdocs.json +++ b/api_docs/logs_explorer.devdocs.json @@ -613,6 +613,35 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "logsExplorer", + "id": "def-public.LogsExplorerCustomizationEvents", + "type": "Interface", + "tags": [], + "label": "LogsExplorerCustomizationEvents", + "description": [], + "path": "x-pack/plugins/observability_solution/logs_explorer/public/customizations/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "logsExplorer", + "id": "def-public.LogsExplorerCustomizationEvents.onUknownDataViewSelection", + "type": "Function", + "tags": [], + "label": "onUknownDataViewSelection", + "description": [], + "signature": [ + "OnUknownDataViewSelectionHandler", + " | undefined" + ], + "path": "x-pack/plugins/observability_solution/logs_explorer/public/customizations/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "logsExplorer", "id": "def-public.LogsExplorerCustomizations", @@ -647,6 +676,27 @@ "path": "x-pack/plugins/observability_solution/logs_explorer/public/customizations/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "logsExplorer", + "id": "def-public.LogsExplorerCustomizations.events", + "type": "Object", + "tags": [], + "label": "events", + "description": [], + "signature": [ + { + "pluginId": "logsExplorer", + "scope": "public", + "docId": "kibLogsExplorerPluginApi", + "section": "def-public.LogsExplorerCustomizationEvents", + "text": "LogsExplorerCustomizationEvents" + }, + " | undefined" + ], + "path": "x-pack/plugins/observability_solution/logs_explorer/public/customizations/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -1483,6 +1533,114 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "logsExplorer", + "id": "def-common.isDatasetSelection", + "type": "Function", + "tags": [], + "label": "isDatasetSelection", + "description": [], + "signature": [ + "(input: any) => input is ", + "DatasetSelection" + ], + "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "logsExplorer", + "id": "def-common.isDatasetSelection.$1", + "type": "Any", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "logsExplorer", + "id": "def-common.isDataViewSelection", + "type": "Function", + "tags": [], + "label": "isDataViewSelection", + "description": [], + "signature": [ + "(input: any) => input is ", + "DataViewSelection" + ], + "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "logsExplorer", + "id": "def-common.isDataViewSelection.$1", + "type": "Any", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "logsExplorer", + "id": "def-common.isUnresolvedDatasetSelection", + "type": "Function", + "tags": [], + "label": "isUnresolvedDatasetSelection", + "description": [], + "signature": [ + "(input: any) => input is ", + { + "pluginId": "logsExplorer", + "scope": "common", + "docId": "kibLogsExplorerPluginApi", + "section": "def-common.UnresolvedDatasetSelection", + "text": "UnresolvedDatasetSelection" + } + ], + "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/index.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "logsExplorer", + "id": "def-common.isUnresolvedDatasetSelection.$1", + "type": "Any", + "tags": [], + "label": "input", + "description": [], + "signature": [ + "any" + ], + "path": "x-pack/plugins/observability_solution/logs_explorer/common/dataset_selection/index.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [ diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx index ac828ba72ba0c..9994705a17040 100644 --- a/api_docs/logs_explorer.mdx +++ b/api_docs/logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsExplorer title: "logsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logsExplorer plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsExplorer'] --- import logsExplorerObj from './logs_explorer.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 101 | 0 | 101 | 20 | +| 110 | 3 | 110 | 22 | ## Client diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index e8f4874859060..cf32fed75e713 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index 71e501ffffc03..3e18875bd4add 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 7b199f6dfba5f..ef2162bfb8ed2 100644 --- a/api_docs/maps.mdx +++ b/api_docs/maps.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/maps title: "maps" image: https://source.unsplash.com/400x175/?github description: API docs for the maps plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index c33fe1e1c7642..2c16ebfdb6bc4 100644 --- a/api_docs/maps_ems.mdx +++ b/api_docs/maps_ems.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mapsEms title: "mapsEms" image: https://source.unsplash.com/400x175/?github description: API docs for the mapsEms plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 3935c907531f8..b47a56b09e203 100644 --- a/api_docs/metrics_data_access.mdx +++ b/api_docs/metrics_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/metricsDataAccess title: "metricsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the metricsDataAccess plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 3331506b9c5fa..2b0f049d02950 100644 --- a/api_docs/ml.mdx +++ b/api_docs/ml.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ml title: "ml" image: https://source.unsplash.com/400x175/?github description: API docs for the ml plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/mock_idp_plugin.mdx b/api_docs/mock_idp_plugin.mdx index e5545ec17b5c2..f54dad1b33a93 100644 --- a/api_docs/mock_idp_plugin.mdx +++ b/api_docs/mock_idp_plugin.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/mockIdpPlugin title: "mockIdpPlugin" image: https://source.unsplash.com/400x175/?github description: API docs for the mockIdpPlugin plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mockIdpPlugin'] --- import mockIdpPluginObj from './mock_idp_plugin.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 3965396db8d4b..dae523bddee60 100644 --- a/api_docs/monitoring.mdx +++ b/api_docs/monitoring.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoring title: "monitoring" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoring plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoring'] --- import monitoringObj from './monitoring.devdocs.json'; diff --git a/api_docs/monitoring_collection.mdx b/api_docs/monitoring_collection.mdx index bfe93e071f136..920bfdf1f14a4 100644 --- a/api_docs/monitoring_collection.mdx +++ b/api_docs/monitoring_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/monitoringCollection title: "monitoringCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the monitoringCollection plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'monitoringCollection'] --- import monitoringCollectionObj from './monitoring_collection.devdocs.json'; diff --git a/api_docs/navigation.mdx b/api_docs/navigation.mdx index 7851e94b2dfbd..d102e85cca5ee 100644 --- a/api_docs/navigation.mdx +++ b/api_docs/navigation.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/navigation title: "navigation" image: https://source.unsplash.com/400x175/?github description: API docs for the navigation plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'navigation'] --- import navigationObj from './navigation.devdocs.json'; diff --git a/api_docs/newsfeed.mdx b/api_docs/newsfeed.mdx index b6589cb0683f5..32192c1dab7cf 100644 --- a/api_docs/newsfeed.mdx +++ b/api_docs/newsfeed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/newsfeed title: "newsfeed" image: https://source.unsplash.com/400x175/?github description: API docs for the newsfeed plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/no_data_page.mdx b/api_docs/no_data_page.mdx index d2f97d4f62ef2..e148cd7d28afc 100644 --- a/api_docs/no_data_page.mdx +++ b/api_docs/no_data_page.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/noDataPage title: "noDataPage" image: https://source.unsplash.com/400x175/?github description: API docs for the noDataPage plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'noDataPage'] --- import noDataPageObj from './no_data_page.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index e92509095de3a..2daa972e3f4b6 100644 --- a/api_docs/notifications.mdx +++ b/api_docs/notifications.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/notifications title: "notifications" image: https://source.unsplash.com/400x175/?github description: API docs for the notifications plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 6a50b4da56747..0dd9541e3381a 100644 --- a/api_docs/observability.mdx +++ b/api_docs/observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observability title: "observability" image: https://source.unsplash.com/400x175/?github description: API docs for the observability plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index e00640c86f4d0..e82e8fd7dd5bb 100644 --- a/api_docs/observability_a_i_assistant.mdx +++ b/api_docs/observability_a_i_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistant title: "observabilityAIAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistant plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index b8ae535a5e308..6ef18aa1164b6 100644 --- a/api_docs/observability_logs_explorer.mdx +++ b/api_docs/observability_logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityLogsExplorer title: "observabilityLogsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityLogsExplorer plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityLogsExplorer'] --- import observabilityLogsExplorerObj from './observability_logs_explorer.devdocs.json'; diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 9b4d3798480e9..6d8e42f1415ec 100644 --- a/api_docs/observability_onboarding.mdx +++ b/api_docs/observability_onboarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityOnboarding title: "observabilityOnboarding" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityOnboarding plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index bdff319b804fb..0bbd546aa6ad5 100644 --- a/api_docs/observability_shared.mdx +++ b/api_docs/observability_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityShared title: "observabilityShared" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityShared plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 47a2ca9d8fe24..e1150121b9dbe 100644 --- a/api_docs/osquery.mdx +++ b/api_docs/osquery.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/osquery title: "osquery" image: https://source.unsplash.com/400x175/?github description: API docs for the osquery plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/painless_lab.mdx b/api_docs/painless_lab.mdx index 74737403ce6af..ae9dae32288f0 100644 --- a/api_docs/painless_lab.mdx +++ b/api_docs/painless_lab.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/painlessLab title: "painlessLab" image: https://source.unsplash.com/400x175/?github description: API docs for the painlessLab plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'painlessLab'] --- import painlessLabObj from './painless_lab.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index d0e33838f6bf2..67f3129e0b5ae 100644 --- a/api_docs/plugin_directory.mdx +++ b/api_docs/plugin_directory.mdx @@ -7,7 +7,7 @@ id: kibDevDocsPluginDirectory slug: /kibana-dev-docs/api-meta/plugin-api-directory title: Directory description: Directory of public APIs available through plugins or packages. -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 44811 | 228 | 33755 | 1743 | +| 45093 | 231 | 34035 | 1746 | ## Plugin Directory @@ -125,7 +125,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 117 | 0 | 42 | 10 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | A dashboard panel for creating links to dashboards or external links. | 57 | 0 | 57 | 6 | | | [@elastic/security-detection-engine](https://github.com/orgs/elastic/teams/security-detection-engine) | - | 226 | 0 | 97 | 52 | -| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin provides a LogsExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption. | 101 | 0 | 101 | 20 | +| | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin provides a LogsExplorer component using the Discover customization framework, offering several affordances specifically designed for log consumption. | 110 | 3 | 110 | 22 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | Exposes the shared components and APIs to access and visualize logs. | 302 | 0 | 276 | 32 | | logstash | [@elastic/logstash](https://github.com/orgs/elastic/teams/logstash) | - | 0 | 0 | 0 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 45 | 0 | 45 | 7 | @@ -179,12 +179,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 23 | 0 | 23 | 3 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 4 | 0 | 4 | 1 | | synthetics | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | This plugin visualizes data from Synthetics and Heartbeat, and integrates with other Observability solutions. | 0 | 0 | 0 | 0 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 105 | 0 | 62 | 5 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 108 | 0 | 64 | 5 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 45 | 0 | 1 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 31 | 0 | 26 | 6 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 1 | 0 | 1 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 6 | 0 | 0 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 26 | 0 | 10 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 27 | 0 | 10 | 0 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | Elastic threat intelligence helps you see if you are open to or have been subject to current or historical known threats | 30 | 0 | 14 | 5 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 240 | 1 | 196 | 17 | | | [@elastic/ml-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 | @@ -467,13 +467,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 14 | 0 | 13 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 39 | 0 | 39 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 0 | 52 | 1 | -| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 39 | 0 | 15 | 1 | +| | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 37 | 0 | 14 | 1 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 22 | 0 | 18 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 38 | 0 | 30 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 0 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 3 | 0 | 3 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 31 | 0 | 31 | 1 | -| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 550 | 6 | 510 | 2 | +| | [@elastic/appex-qa](https://github.com/orgs/elastic/teams/appex-qa) | - | 551 | 6 | 511 | 3 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 0 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 1 | 0 | 1 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 26 | 0 | 26 | 1 | @@ -588,7 +588,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 122 | 0 | 119 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 76 | 0 | 76 | 0 | -| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 2815 | 0 | 2815 | 0 | +| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 3084 | 0 | 3084 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 18 | 1 | 17 | 1 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 25 | 0 | 25 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 20 | 0 | 18 | 1 | @@ -676,7 +676,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 14 | 0 | 8 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 137 | 5 | 105 | 2 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 30 | 0 | 13 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 31 | 0 | 13 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 72 | 0 | 55 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 11 | 0 | 11 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 39 | 0 | 25 | 1 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 469404a9f3c69..e458e5861636a 100644 --- a/api_docs/presentation_panel.mdx +++ b/api_docs/presentation_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationPanel title: "presentationPanel" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationPanel plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationPanel'] --- import presentationPanelObj from './presentation_panel.devdocs.json'; diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 82569c0e35c78..f22614bdeeb2d 100644 --- a/api_docs/presentation_util.mdx +++ b/api_docs/presentation_util.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/presentationUtil title: "presentationUtil" image: https://source.unsplash.com/400x175/?github description: API docs for the presentationUtil plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'presentationUtil'] --- import presentationUtilObj from './presentation_util.devdocs.json'; diff --git a/api_docs/profiling.mdx b/api_docs/profiling.mdx index d5c241bf355f5..2c763e57da0d4 100644 --- a/api_docs/profiling.mdx +++ b/api_docs/profiling.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profiling title: "profiling" image: https://source.unsplash.com/400x175/?github description: API docs for the profiling plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/profiling_data_access.mdx b/api_docs/profiling_data_access.mdx index 4d60578a14cbe..30325572a010e 100644 --- a/api_docs/profiling_data_access.mdx +++ b/api_docs/profiling_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/profilingDataAccess title: "profilingDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the profilingDataAccess plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profilingDataAccess'] --- import profilingDataAccessObj from './profiling_data_access.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index c79c1e99d80af..f0414182f9da4 100644 --- a/api_docs/remote_clusters.mdx +++ b/api_docs/remote_clusters.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/remoteClusters title: "remoteClusters" image: https://source.unsplash.com/400x175/?github description: API docs for the remoteClusters plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'remoteClusters'] --- import remoteClustersObj from './remote_clusters.devdocs.json'; diff --git a/api_docs/reporting.mdx b/api_docs/reporting.mdx index c311159e82129..de93d4513ef78 100644 --- a/api_docs/reporting.mdx +++ b/api_docs/reporting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/reporting title: "reporting" image: https://source.unsplash.com/400x175/?github description: API docs for the reporting plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'reporting'] --- import reportingObj from './reporting.devdocs.json'; diff --git a/api_docs/rollup.mdx b/api_docs/rollup.mdx index 5411caf5eefee..465d30a62044d 100644 --- a/api_docs/rollup.mdx +++ b/api_docs/rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/rollup title: "rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the rollup plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 9d6ea93bda893..d7db1a5749f38 100644 --- a/api_docs/rule_registry.mdx +++ b/api_docs/rule_registry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ruleRegistry title: "ruleRegistry" image: https://source.unsplash.com/400x175/?github description: API docs for the ruleRegistry plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ruleRegistry'] --- import ruleRegistryObj from './rule_registry.devdocs.json'; diff --git a/api_docs/runtime_fields.mdx b/api_docs/runtime_fields.mdx index df5d5a547c1c2..799cef10ae69d 100644 --- a/api_docs/runtime_fields.mdx +++ b/api_docs/runtime_fields.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/runtimeFields title: "runtimeFields" image: https://source.unsplash.com/400x175/?github description: API docs for the runtimeFields plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 71ebce3a72429..bdf93018dcdd8 100644 --- a/api_docs/saved_objects.mdx +++ b/api_docs/saved_objects.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjects title: "savedObjects" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjects plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index 9daa358ee3a4c..724c45bad5095 100644 --- a/api_docs/saved_objects_finder.mdx +++ b/api_docs/saved_objects_finder.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsFinder title: "savedObjectsFinder" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsFinder plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.devdocs.json'; diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index ba9db2e838535..fa4b71c9fd35f 100644 --- a/api_docs/saved_objects_management.mdx +++ b/api_docs/saved_objects_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsManagement title: "savedObjectsManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsManagement plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 447ee6db7226b..47c709317e746 100644 --- a/api_docs/saved_objects_tagging.mdx +++ b/api_docs/saved_objects_tagging.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTagging title: "savedObjectsTagging" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTagging plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTagging'] --- import savedObjectsTaggingObj from './saved_objects_tagging.devdocs.json'; diff --git a/api_docs/saved_objects_tagging_oss.mdx b/api_docs/saved_objects_tagging_oss.mdx index 2c74784ee9444..dc5e0f98e01c8 100644 --- a/api_docs/saved_objects_tagging_oss.mdx +++ b/api_docs/saved_objects_tagging_oss.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedObjectsTaggingOss title: "savedObjectsTaggingOss" image: https://source.unsplash.com/400x175/?github description: API docs for the savedObjectsTaggingOss plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 8ddc100aeef0f..91dbd45d32d65 100644 --- a/api_docs/saved_search.mdx +++ b/api_docs/saved_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/savedSearch title: "savedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the savedSearch plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedSearch'] --- import savedSearchObj from './saved_search.devdocs.json'; diff --git a/api_docs/screenshot_mode.mdx b/api_docs/screenshot_mode.mdx index bdd903277fc73..b3766e982db41 100644 --- a/api_docs/screenshot_mode.mdx +++ b/api_docs/screenshot_mode.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotMode title: "screenshotMode" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotMode plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotMode'] --- import screenshotModeObj from './screenshot_mode.devdocs.json'; diff --git a/api_docs/screenshotting.mdx b/api_docs/screenshotting.mdx index e7fa7742ead03..256e37f25dd8e 100644 --- a/api_docs/screenshotting.mdx +++ b/api_docs/screenshotting.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/screenshotting title: "screenshotting" image: https://source.unsplash.com/400x175/?github description: API docs for the screenshotting plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 25450c772882c..a952be1139c5b 100644 --- a/api_docs/security.mdx +++ b/api_docs/security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/security title: "security" image: https://source.unsplash.com/400x175/?github description: API docs for the security plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index 81bd662e184a2..6d88b25227209 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -114,7 +114,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly alertSuppressionForIndicatorMatchRuleEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly perFieldPrebuiltRulesDiffingEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly alertSuppressionForIndicatorMatchRuleEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly perFieldPrebuiltRulesDiffingEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/plugin.tsx", "deprecated": false, @@ -568,7 +568,7 @@ "\nExperimental flag needed to enable the link" ], "signature": [ - "\"assistantModelEvaluation\" | \"assistantStreamingEnabled\" | \"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"newUserDetailsFlyout\" | \"newUserDetailsFlyoutManagedUser\" | \"newHostDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"alertSuppressionForIndicatorMatchRuleEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | \"timelineEsqlTabDisabled\" | \"perFieldPrebuiltRulesDiffingEnabled\" | undefined" + "\"assistantModelEvaluation\" | \"assistantStreamingEnabled\" | \"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"newUserDetailsFlyout\" | \"newUserDetailsFlyoutManagedUser\" | \"newHostDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"alertSuppressionForIndicatorMatchRuleEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | \"timelineEsqlTabDisabled\" | \"analyzerDatePickersAndSourcererDisabled\" | \"perFieldPrebuiltRulesDiffingEnabled\" | undefined" ], "path": "x-pack/plugins/security_solution/public/common/links/types.ts", "deprecated": false, @@ -648,7 +648,7 @@ "\nExperimental flag needed to disable the link. Opposite of experimentalKey" ], "signature": [ - "\"assistantModelEvaluation\" | \"assistantStreamingEnabled\" | \"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"newUserDetailsFlyout\" | \"newUserDetailsFlyoutManagedUser\" | \"newHostDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"alertSuppressionForIndicatorMatchRuleEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | \"timelineEsqlTabDisabled\" | \"perFieldPrebuiltRulesDiffingEnabled\" | undefined" + "\"assistantModelEvaluation\" | \"assistantStreamingEnabled\" | \"tGridEnabled\" | \"tGridEventRenderedViewEnabled\" | \"excludePoliciesInFilterEnabled\" | \"kubernetesEnabled\" | \"chartEmbeddablesEnabled\" | \"donutChartEmbeddablesEnabled\" | \"previewTelemetryUrlEnabled\" | \"insightsRelatedAlertsByProcessAncestry\" | \"extendedRuleExecutionLoggingEnabled\" | \"socTrendsEnabled\" | \"responseActionsEnabled\" | \"endpointResponseActionsEnabled\" | \"responseActionUploadEnabled\" | \"automatedProcessActionsEnabled\" | \"responseActionsSentinelOneV1Enabled\" | \"alertsPageChartsEnabled\" | \"alertTypeEnabled\" | \"expandableFlyoutInCreateRuleEnabled\" | \"alertsPageFiltersEnabled\" | \"newUserDetailsFlyout\" | \"newUserDetailsFlyoutManagedUser\" | \"newHostDetailsFlyout\" | \"riskScoringPersistence\" | \"riskScoringRoutesEnabled\" | \"esqlRulesDisabled\" | \"protectionUpdatesEnabled\" | \"disableTimelineSaveTour\" | \"riskEnginePrivilegesRouteEnabled\" | \"alertSuppressionForIndicatorMatchRuleEnabled\" | \"sentinelOneDataInAnalyzerEnabled\" | \"sentinelOneManualHostActionsEnabled\" | \"crowdstrikeDataInAnalyzerEnabled\" | \"jsonPrebuiltRulesDiffingEnabled\" | \"timelineEsqlTabDisabled\" | \"analyzerDatePickersAndSourcererDisabled\" | \"perFieldPrebuiltRulesDiffingEnabled\" | undefined" ], "path": "x-pack/plugins/security_solution/public/common/links/types.ts", "deprecated": false, @@ -1986,7 +1986,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly alertSuppressionForIndicatorMatchRuleEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly perFieldPrebuiltRulesDiffingEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly alertSuppressionForIndicatorMatchRuleEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly perFieldPrebuiltRulesDiffingEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/public/types.ts", "deprecated": false, @@ -3105,7 +3105,7 @@ "\nThe security solution generic experimental features" ], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly alertSuppressionForIndicatorMatchRuleEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly perFieldPrebuiltRulesDiffingEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly alertSuppressionForIndicatorMatchRuleEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly perFieldPrebuiltRulesDiffingEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/server/plugin_contract.ts", "deprecated": false, @@ -3281,7 +3281,7 @@ "label": "ExperimentalFeatures", "description": [], "signature": [ - "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly alertSuppressionForIndicatorMatchRuleEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly perFieldPrebuiltRulesDiffingEnabled: boolean; }" + "{ readonly tGridEnabled: boolean; readonly tGridEventRenderedViewEnabled: boolean; readonly excludePoliciesInFilterEnabled: boolean; readonly kubernetesEnabled: boolean; readonly chartEmbeddablesEnabled: boolean; readonly donutChartEmbeddablesEnabled: boolean; readonly previewTelemetryUrlEnabled: boolean; readonly insightsRelatedAlertsByProcessAncestry: boolean; readonly extendedRuleExecutionLoggingEnabled: boolean; readonly assistantStreamingEnabled: boolean; readonly socTrendsEnabled: boolean; readonly responseActionsEnabled: boolean; readonly endpointResponseActionsEnabled: boolean; readonly responseActionUploadEnabled: boolean; readonly automatedProcessActionsEnabled: boolean; readonly responseActionsSentinelOneV1Enabled: boolean; readonly alertsPageChartsEnabled: boolean; readonly alertTypeEnabled: boolean; readonly expandableFlyoutInCreateRuleEnabled: boolean; readonly alertsPageFiltersEnabled: boolean; readonly assistantModelEvaluation: boolean; readonly newUserDetailsFlyout: boolean; readonly newUserDetailsFlyoutManagedUser: boolean; readonly newHostDetailsFlyout: boolean; readonly riskScoringPersistence: boolean; readonly riskScoringRoutesEnabled: boolean; readonly esqlRulesDisabled: boolean; readonly protectionUpdatesEnabled: boolean; readonly disableTimelineSaveTour: boolean; readonly riskEnginePrivilegesRouteEnabled: boolean; readonly alertSuppressionForIndicatorMatchRuleEnabled: boolean; readonly sentinelOneDataInAnalyzerEnabled: boolean; readonly sentinelOneManualHostActionsEnabled: boolean; readonly crowdstrikeDataInAnalyzerEnabled: boolean; readonly jsonPrebuiltRulesDiffingEnabled: boolean; readonly timelineEsqlTabDisabled: boolean; readonly analyzerDatePickersAndSourcererDisabled: boolean; readonly perFieldPrebuiltRulesDiffingEnabled: boolean; }" ], "path": "x-pack/plugins/security_solution/common/experimental_features.ts", "deprecated": false, @@ -3330,7 +3330,7 @@ "\nA list of allowed values that can be used in `xpack.securitySolution.enableExperimental`.\nThis object is then used to validate and parse the value entered." ], "signature": [ - "{ readonly tGridEnabled: true; readonly tGridEventRenderedViewEnabled: true; readonly excludePoliciesInFilterEnabled: false; readonly kubernetesEnabled: true; readonly chartEmbeddablesEnabled: true; readonly donutChartEmbeddablesEnabled: false; readonly previewTelemetryUrlEnabled: false; readonly insightsRelatedAlertsByProcessAncestry: true; readonly extendedRuleExecutionLoggingEnabled: false; readonly assistantStreamingEnabled: false; readonly socTrendsEnabled: false; readonly responseActionsEnabled: true; readonly endpointResponseActionsEnabled: true; readonly responseActionUploadEnabled: true; readonly automatedProcessActionsEnabled: false; readonly responseActionsSentinelOneV1Enabled: false; readonly alertsPageChartsEnabled: true; readonly alertTypeEnabled: false; readonly expandableFlyoutInCreateRuleEnabled: true; readonly alertsPageFiltersEnabled: true; readonly assistantModelEvaluation: false; readonly newUserDetailsFlyout: true; readonly newUserDetailsFlyoutManagedUser: false; readonly newHostDetailsFlyout: true; readonly riskScoringPersistence: true; readonly riskScoringRoutesEnabled: true; readonly esqlRulesDisabled: false; readonly protectionUpdatesEnabled: true; readonly disableTimelineSaveTour: false; readonly riskEnginePrivilegesRouteEnabled: true; readonly alertSuppressionForIndicatorMatchRuleEnabled: false; readonly sentinelOneDataInAnalyzerEnabled: false; readonly sentinelOneManualHostActionsEnabled: true; readonly crowdstrikeDataInAnalyzerEnabled: false; readonly jsonPrebuiltRulesDiffingEnabled: true; readonly timelineEsqlTabDisabled: false; readonly perFieldPrebuiltRulesDiffingEnabled: false; }" + "{ readonly tGridEnabled: true; readonly tGridEventRenderedViewEnabled: true; readonly excludePoliciesInFilterEnabled: false; readonly kubernetesEnabled: true; readonly chartEmbeddablesEnabled: true; readonly donutChartEmbeddablesEnabled: false; readonly previewTelemetryUrlEnabled: false; readonly insightsRelatedAlertsByProcessAncestry: true; readonly extendedRuleExecutionLoggingEnabled: false; readonly assistantStreamingEnabled: false; readonly socTrendsEnabled: false; readonly responseActionsEnabled: true; readonly endpointResponseActionsEnabled: true; readonly responseActionUploadEnabled: true; readonly automatedProcessActionsEnabled: false; readonly responseActionsSentinelOneV1Enabled: false; readonly alertsPageChartsEnabled: true; readonly alertTypeEnabled: false; readonly expandableFlyoutInCreateRuleEnabled: true; readonly alertsPageFiltersEnabled: true; readonly assistantModelEvaluation: false; readonly newUserDetailsFlyout: true; readonly newUserDetailsFlyoutManagedUser: false; readonly newHostDetailsFlyout: true; readonly riskScoringPersistence: true; readonly riskScoringRoutesEnabled: true; readonly esqlRulesDisabled: false; readonly protectionUpdatesEnabled: true; readonly disableTimelineSaveTour: false; readonly riskEnginePrivilegesRouteEnabled: true; readonly alertSuppressionForIndicatorMatchRuleEnabled: false; readonly sentinelOneDataInAnalyzerEnabled: false; readonly sentinelOneManualHostActionsEnabled: true; readonly crowdstrikeDataInAnalyzerEnabled: false; readonly jsonPrebuiltRulesDiffingEnabled: true; readonly timelineEsqlTabDisabled: false; readonly analyzerDatePickersAndSourcererDisabled: false; readonly perFieldPrebuiltRulesDiffingEnabled: false; }" ], "path": "x-pack/plugins/security_solution/common/experimental_features.ts", "deprecated": false, diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index b8332ab536246..64f41d64cdb60 100644 --- a/api_docs/security_solution.mdx +++ b/api_docs/security_solution.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolution title: "securitySolution" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolution plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index 1aa7b62a02208..f87343b329ff4 100644 --- a/api_docs/security_solution_ess.mdx +++ b/api_docs/security_solution_ess.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionEss title: "securitySolutionEss" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionEss plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionEss'] --- import securitySolutionEssObj from './security_solution_ess.devdocs.json'; diff --git a/api_docs/security_solution_serverless.mdx b/api_docs/security_solution_serverless.mdx index 240a0960328c9..bf9acd05891b1 100644 --- a/api_docs/security_solution_serverless.mdx +++ b/api_docs/security_solution_serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/securitySolutionServerless title: "securitySolutionServerless" image: https://source.unsplash.com/400x175/?github description: API docs for the securitySolutionServerless plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolutionServerless'] --- import securitySolutionServerlessObj from './security_solution_serverless.devdocs.json'; diff --git a/api_docs/serverless.mdx b/api_docs/serverless.mdx index eeefcee2580c9..c38858e43d6cf 100644 --- a/api_docs/serverless.mdx +++ b/api_docs/serverless.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverless title: "serverless" image: https://source.unsplash.com/400x175/?github description: API docs for the serverless plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverless'] --- import serverlessObj from './serverless.devdocs.json'; diff --git a/api_docs/serverless_observability.mdx b/api_docs/serverless_observability.mdx index 3a959a183cd21..f052b29c3f5a3 100644 --- a/api_docs/serverless_observability.mdx +++ b/api_docs/serverless_observability.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessObservability title: "serverlessObservability" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessObservability plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessObservability'] --- import serverlessObservabilityObj from './serverless_observability.devdocs.json'; diff --git a/api_docs/serverless_search.mdx b/api_docs/serverless_search.mdx index 91ef2eb05ad1c..8fa3429780525 100644 --- a/api_docs/serverless_search.mdx +++ b/api_docs/serverless_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/serverlessSearch title: "serverlessSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the serverlessSearch plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'serverlessSearch'] --- import serverlessSearchObj from './serverless_search.devdocs.json'; diff --git a/api_docs/session_view.mdx b/api_docs/session_view.mdx index 41bb7c4f0739f..01801e80b7352 100644 --- a/api_docs/session_view.mdx +++ b/api_docs/session_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/sessionView title: "sessionView" image: https://source.unsplash.com/400x175/?github description: API docs for the sessionView plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'sessionView'] --- import sessionViewObj from './session_view.devdocs.json'; diff --git a/api_docs/share.mdx b/api_docs/share.mdx index a6f687a338ab0..7f6ca4a066c2f 100644 --- a/api_docs/share.mdx +++ b/api_docs/share.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/share title: "share" image: https://source.unsplash.com/400x175/?github description: API docs for the share plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 08a4e7200ee98..81fd954a14afe 100644 --- a/api_docs/snapshot_restore.mdx +++ b/api_docs/snapshot_restore.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/snapshotRestore title: "snapshotRestore" image: https://source.unsplash.com/400x175/?github description: API docs for the snapshotRestore plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'snapshotRestore'] --- import snapshotRestoreObj from './snapshot_restore.devdocs.json'; diff --git a/api_docs/spaces.mdx b/api_docs/spaces.mdx index 54c0f05d1d1cb..20b18d32111e5 100644 --- a/api_docs/spaces.mdx +++ b/api_docs/spaces.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/spaces title: "spaces" image: https://source.unsplash.com/400x175/?github description: API docs for the spaces plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'spaces'] --- import spacesObj from './spaces.devdocs.json'; diff --git a/api_docs/stack_alerts.mdx b/api_docs/stack_alerts.mdx index 65721a9168034..7712328c66068 100644 --- a/api_docs/stack_alerts.mdx +++ b/api_docs/stack_alerts.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackAlerts title: "stackAlerts" image: https://source.unsplash.com/400x175/?github description: API docs for the stackAlerts plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackAlerts'] --- import stackAlertsObj from './stack_alerts.devdocs.json'; diff --git a/api_docs/stack_connectors.mdx b/api_docs/stack_connectors.mdx index a1036309e7f94..d6121852ba413 100644 --- a/api_docs/stack_connectors.mdx +++ b/api_docs/stack_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/stackConnectors title: "stackConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the stackConnectors plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.devdocs.json b/api_docs/task_manager.devdocs.json index 23398830c4a27..fd3ad76b48311 100644 --- a/api_docs/task_manager.devdocs.json +++ b/api_docs/task_manager.devdocs.json @@ -1378,6 +1378,20 @@ "path": "x-pack/plugins/task_manager/server/task.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "taskManager", + "id": "def-server.TaskInstance.timeoutOverride", + "type": "string", + "tags": [], + "label": "timeoutOverride", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/task_manager/server/task.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -1427,6 +1441,29 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "taskManager", + "id": "def-server.TaskRegisterDefinition.priority", + "type": "CompoundType", + "tags": [], + "label": "priority", + "description": [ + "\nAn optional definition of task priority. Tasks will be sorted by priority prior to claiming\nso high priority tasks will always be claimed before normal priority, which will always be\nclaimed before low priority" + ], + "signature": [ + { + "pluginId": "taskManager", + "scope": "server", + "docId": "kibTaskManagerPluginApi", + "section": "def-server.TaskPriority", + "text": "TaskPriority" + }, + " | undefined" + ], + "path": "x-pack/plugins/task_manager/server/task_type_dictionary.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "taskManager", "id": "def-server.TaskRegisterDefinition.description", @@ -1613,6 +1650,18 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "taskManager", + "id": "def-server.TaskPriority", + "type": "Enum", + "tags": [], + "label": "TaskPriority", + "description": [], + "path": "x-pack/plugins/task_manager/server/task.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "taskManager", "id": "def-server.TaskStatus", diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 1f48cd0d2942d..ba314dcced184 100644 --- a/api_docs/task_manager.mdx +++ b/api_docs/task_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/taskManager title: "taskManager" image: https://source.unsplash.com/400x175/?github description: API docs for the taskManager plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 105 | 0 | 62 | 5 | +| 108 | 0 | 64 | 5 | ## Server diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 9200736623687..41bacca406277 100644 --- a/api_docs/telemetry.mdx +++ b/api_docs/telemetry.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetry title: "telemetry" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetry plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetry'] --- import telemetryObj from './telemetry.devdocs.json'; diff --git a/api_docs/telemetry_collection_manager.mdx b/api_docs/telemetry_collection_manager.mdx index a77de5ccb73fe..4ca7b03008f58 100644 --- a/api_docs/telemetry_collection_manager.mdx +++ b/api_docs/telemetry_collection_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionManager title: "telemetryCollectionManager" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionManager plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionManager'] --- import telemetryCollectionManagerObj from './telemetry_collection_manager.devdocs.json'; diff --git a/api_docs/telemetry_collection_xpack.mdx b/api_docs/telemetry_collection_xpack.mdx index bcae50d2364fc..9d42ebe96a89a 100644 --- a/api_docs/telemetry_collection_xpack.mdx +++ b/api_docs/telemetry_collection_xpack.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryCollectionXpack title: "telemetryCollectionXpack" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryCollectionXpack plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryCollectionXpack'] --- import telemetryCollectionXpackObj from './telemetry_collection_xpack.devdocs.json'; diff --git a/api_docs/telemetry_management_section.mdx b/api_docs/telemetry_management_section.mdx index a035c4c9cc0cd..4177c80409877 100644 --- a/api_docs/telemetry_management_section.mdx +++ b/api_docs/telemetry_management_section.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/telemetryManagementSection title: "telemetryManagementSection" image: https://source.unsplash.com/400x175/?github description: API docs for the telemetryManagementSection plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.devdocs.json b/api_docs/text_based_languages.devdocs.json index be42f4c6c2369..1907c3cf4d6f4 100644 --- a/api_docs/text_based_languages.devdocs.json +++ b/api_docs/text_based_languages.devdocs.json @@ -427,6 +427,22 @@ "path": "packages/kbn-text-based-editor/src/text_based_languages_editor.tsx", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "textBasedLanguages", + "id": "def-public.TextBasedLanguagesEditorProps.hideTimeFilterInfo", + "type": "CompoundType", + "tags": [], + "label": "hideTimeFilterInfo", + "description": [ + "hide @timestamp info" + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-text-based-editor/src/text_based_languages_editor.tsx", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index aadef19963410..0c861230ce660 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 26 | 0 | 10 | 0 | +| 27 | 0 | 10 | 0 | ## Client diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 0175f1f6f82ed..63c9171caafc6 100644 --- a/api_docs/threat_intelligence.mdx +++ b/api_docs/threat_intelligence.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/threatIntelligence title: "threatIntelligence" image: https://source.unsplash.com/400x175/?github description: API docs for the threatIntelligence plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.devdocs.json b/api_docs/timelines.devdocs.json index a79de6ce82d32..a0b94462a22f3 100644 --- a/api_docs/timelines.devdocs.json +++ b/api_docs/timelines.devdocs.json @@ -4713,7 +4713,7 @@ "section": "def-common.Direction", "text": "Direction" }, - "; esTypes?: string[] | undefined; type?: string | undefined; }[]; language: \"eql\"; fieldRequested: string[]; params?: any; defaultIndex?: string[] | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; runtimeMappings?: Record; } | undefined; fetch_fields?: string[] | undefined; format?: string | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; indexType?: string | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; must: {}[]; must_not: {}[]; should: {}[]; }; } | undefined; eventCategoryField?: string | undefined; tiebreakerField?: string | undefined; timestampField?: string | undefined; size?: number | undefined; runTimeMappings?: Record; } | undefined; fetch_fields?: string[] | undefined; format?: string | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; }" + "; esTypes?: string[] | undefined; type?: string | undefined; }[]; language: \"eql\"; fieldRequested: string[]; id?: string | undefined; params?: any; defaultIndex?: string[] | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; runtimeMappings?: Record; } | undefined; fetch_fields?: string[] | undefined; format?: string | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; indexType?: string | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; must: {}[]; must_not: {}[]; should: {}[]; }; } | undefined; eventCategoryField?: string | undefined; tiebreakerField?: string | undefined; timestampField?: string | undefined; size?: number | undefined; runTimeMappings?: Record; } | undefined; fetch_fields?: string[] | undefined; format?: string | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; }" ], "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.ts", "deprecated": false, @@ -4744,7 +4744,7 @@ "section": "def-common.TimelineEventsQueries", "text": "TimelineEventsQueries" }, - ".all; params?: any; defaultIndex?: string[] | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; indexType?: string | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; authFilter?: {} | undefined; excludeEcsData?: boolean | undefined; filterQuery?: any; runtimeMappings?: Record; } | undefined; fetch_fields?: string[] | undefined; format?: string | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; }" + ".all; id?: string | undefined; params?: any; defaultIndex?: string[] | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; indexType?: string | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; authFilter?: {} | undefined; excludeEcsData?: boolean | undefined; filterQuery?: any; runtimeMappings?: Record; } | undefined; fetch_fields?: string[] | undefined; format?: string | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; }" ], "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.ts", "deprecated": false, @@ -4767,7 +4767,7 @@ "section": "def-common.TimelineEventsQueries", "text": "TimelineEventsQueries" }, - ".details; eventId: string; params?: any; defaultIndex?: string[] | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; must: {}[]; must_not: {}[]; should: {}[]; }; } | undefined; indexType?: string | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; authFilter?: {} | undefined; runtimeMappings?: Record; } | undefined; fetch_fields?: string[] | undefined; format?: string | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; }" + ".details; eventId: string; id?: string | undefined; params?: any; defaultIndex?: string[] | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; must: {}[]; must_not: {}[]; should: {}[]; }; } | undefined; indexType?: string | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; pagination?: Zod.objectInputType<{ activePage: Zod.ZodNumber; cursorStart: Zod.ZodOptional; querySize: Zod.ZodNumber; }, Zod.ZodTypeAny, \"passthrough\"> | undefined; authFilter?: {} | undefined; runtimeMappings?: Record; } | undefined; fetch_fields?: string[] | undefined; format?: string | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; }" ], "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.ts", "deprecated": false, @@ -4798,7 +4798,7 @@ "section": "def-common.LastEventIndexKey", "text": "LastEventIndexKey" }, - "; params?: any; defaultIndex?: string[] | undefined; indexType?: string | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; }" + "; id?: string | undefined; params?: any; defaultIndex?: string[] | undefined; indexType?: string | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; }" ], "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.ts", "deprecated": false, @@ -4821,7 +4821,7 @@ "section": "def-common.TimelineEventsQueries", "text": "TimelineEventsQueries" }, - ".kpi; params?: any; defaultIndex?: string[] | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; runtimeMappings?: Record; } | undefined; fetch_fields?: string[] | undefined; format?: string | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; must: {}[]; must_not: {}[]; should: {}[]; }; } | undefined; indexType?: string | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; }" + ".kpi; id?: string | undefined; params?: any; defaultIndex?: string[] | undefined; timerange?: { interval: string; from: string; to: string; } | undefined; runtimeMappings?: Record; } | undefined; fetch_fields?: string[] | undefined; format?: string | undefined; input_field?: string | undefined; target_field?: string | undefined; target_index?: string | undefined; }> | undefined; filterQuery?: string | Record | { range: Record; } | { query_string: { query: string; analyze_wildcard: boolean; }; } | { match: Record; } | { term: Record; } | { bool: { filter: {}[]; must: {}[]; must_not: {}[]; should: {}[]; }; } | undefined; indexType?: string | undefined; entityType?: \"events\" | \"sessions\" | undefined; filterStatus?: \"open\" | \"closed\" | \"acknowledged\" | undefined; }" ], "path": "x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.ts", "deprecated": false, diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 07bd793256f47..36b95a6d82a85 100644 --- a/api_docs/timelines.mdx +++ b/api_docs/timelines.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/timelines title: "timelines" image: https://source.unsplash.com/400x175/?github description: API docs for the timelines plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'timelines'] --- import timelinesObj from './timelines.devdocs.json'; diff --git a/api_docs/transform.mdx b/api_docs/transform.mdx index 26d82ef93afbe..d79e9939f748d 100644 --- a/api_docs/transform.mdx +++ b/api_docs/transform.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/transform title: "transform" image: https://source.unsplash.com/400x175/?github description: API docs for the transform plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.devdocs.json b/api_docs/triggers_actions_ui.devdocs.json index 7e62bbf35f609..6bf18d583b50e 100644 --- a/api_docs/triggers_actions_ui.devdocs.json +++ b/api_docs/triggers_actions_ui.devdocs.json @@ -1715,7 +1715,7 @@ "label": "transformRule", "description": [], "signature": [ - "({ rule_type_id: ruleTypeId, created_by: createdBy, updated_by: updatedBy, created_at: createdAt, updated_at: updatedAt, api_key_owner: apiKeyOwner, api_key_created_by_user: apiKeyCreatedByUser, notify_when: notifyWhen, mute_all: muteAll, muted_alert_ids: mutedInstanceIds, scheduled_task_id: scheduledTaskId, execution_status: executionStatus, actions: actions, snooze_schedule: snoozeSchedule, is_snoozed_until: isSnoozedUntil, active_snoozes: activeSnoozes, last_run: lastRun, next_run: nextRun, ...rest }: any) => any" + "({ rule_type_id: ruleTypeId, created_by: createdBy, updated_by: updatedBy, created_at: createdAt, updated_at: updatedAt, api_key_owner: apiKeyOwner, api_key_created_by_user: apiKeyCreatedByUser, notify_when: notifyWhen, mute_all: muteAll, muted_alert_ids: mutedInstanceIds, scheduled_task_id: scheduledTaskId, execution_status: executionStatus, actions: actions, snooze_schedule: snoozeSchedule, is_snoozed_until: isSnoozedUntil, active_snoozes: activeSnoozes, last_run: lastRun, next_run: nextRun, alert_delay: alertDelay, ...rest }: any) => any" ], "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/common_transformations.ts", "deprecated": false, @@ -1726,7 +1726,7 @@ "id": "def-public.transformRule.$1", "type": "Any", "tags": [], - "label": "{\n rule_type_id: ruleTypeId,\n created_by: createdBy,\n updated_by: updatedBy,\n created_at: createdAt,\n updated_at: updatedAt,\n api_key_owner: apiKeyOwner,\n api_key_created_by_user: apiKeyCreatedByUser,\n notify_when: notifyWhen,\n mute_all: muteAll,\n muted_alert_ids: mutedInstanceIds,\n scheduled_task_id: scheduledTaskId,\n execution_status: executionStatus,\n actions: actions,\n snooze_schedule: snoozeSchedule,\n is_snoozed_until: isSnoozedUntil,\n active_snoozes: activeSnoozes,\n last_run: lastRun,\n next_run: nextRun,\n ...rest\n}", + "label": "{\n rule_type_id: ruleTypeId,\n created_by: createdBy,\n updated_by: updatedBy,\n created_at: createdAt,\n updated_at: updatedAt,\n api_key_owner: apiKeyOwner,\n api_key_created_by_user: apiKeyCreatedByUser,\n notify_when: notifyWhen,\n mute_all: muteAll,\n muted_alert_ids: mutedInstanceIds,\n scheduled_task_id: scheduledTaskId,\n execution_status: executionStatus,\n actions: actions,\n snooze_schedule: snoozeSchedule,\n is_snoozed_until: isSnoozedUntil,\n active_snoozes: activeSnoozes,\n last_run: lastRun,\n next_run: nextRun,\n alert_delay: alertDelay,\n ...rest\n}", "description": [], "signature": [ "any" diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index a45ea7fd40ea0..c39c4e9836682 100644 --- a/api_docs/triggers_actions_ui.mdx +++ b/api_docs/triggers_actions_ui.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/triggersActionsUi title: "triggersActionsUi" image: https://source.unsplash.com/400x175/?github description: API docs for the triggersActionsUi plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.devdocs.json'; diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 289092142140b..f61e39a717831 100644 --- a/api_docs/ui_actions.mdx +++ b/api_docs/ui_actions.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActions title: "uiActions" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActions plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 0313f3c6fd8bf..8dbab07042f3a 100644 --- a/api_docs/ui_actions_enhanced.mdx +++ b/api_docs/ui_actions_enhanced.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uiActionsEnhanced title: "uiActionsEnhanced" image: https://source.unsplash.com/400x175/?github description: API docs for the uiActionsEnhanced plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_doc_viewer.mdx b/api_docs/unified_doc_viewer.mdx index 9a7a25705d440..dbc2842c5c1be 100644 --- a/api_docs/unified_doc_viewer.mdx +++ b/api_docs/unified_doc_viewer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedDocViewer title: "unifiedDocViewer" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedDocViewer plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedDocViewer'] --- import unifiedDocViewerObj from './unified_doc_viewer.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 70be7bd926290..4d4b633c61e74 100644 --- a/api_docs/unified_histogram.mdx +++ b/api_docs/unified_histogram.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedHistogram title: "unifiedHistogram" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedHistogram plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 81bc1acf675f6..97c3c7d505e89 100644 --- a/api_docs/unified_search.mdx +++ b/api_docs/unified_search.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch title: "unifiedSearch" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 267d5714e8bf2..2c8d6f0085045 100644 --- a/api_docs/unified_search_autocomplete.mdx +++ b/api_docs/unified_search_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/unifiedSearch-autocomplete title: "unifiedSearch.autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the unifiedSearch.autocomplete plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index 40cbb9f14526b..1b625d6d87d6c 100644 --- a/api_docs/uptime.mdx +++ b/api_docs/uptime.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/uptime title: "uptime" image: https://source.unsplash.com/400x175/?github description: API docs for the uptime plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uptime'] --- import uptimeObj from './uptime.devdocs.json'; diff --git a/api_docs/url_forwarding.mdx b/api_docs/url_forwarding.mdx index 181d7b6b408d8..2578a718c69cd 100644 --- a/api_docs/url_forwarding.mdx +++ b/api_docs/url_forwarding.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/urlForwarding title: "urlForwarding" image: https://source.unsplash.com/400x175/?github description: API docs for the urlForwarding plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'urlForwarding'] --- import urlForwardingObj from './url_forwarding.devdocs.json'; diff --git a/api_docs/usage_collection.mdx b/api_docs/usage_collection.mdx index 4c3cbb07e2f40..25c185d86082b 100644 --- a/api_docs/usage_collection.mdx +++ b/api_docs/usage_collection.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/usageCollection title: "usageCollection" image: https://source.unsplash.com/400x175/?github description: API docs for the usageCollection plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'usageCollection'] --- import usageCollectionObj from './usage_collection.devdocs.json'; diff --git a/api_docs/ux.mdx b/api_docs/ux.mdx index 9299322b1cd23..a683206753400 100644 --- a/api_docs/ux.mdx +++ b/api_docs/ux.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/ux title: "ux" image: https://source.unsplash.com/400x175/?github description: API docs for the ux plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ux'] --- import uxObj from './ux.devdocs.json'; diff --git a/api_docs/vis_default_editor.mdx b/api_docs/vis_default_editor.mdx index 33f297d940662..c948cd2cab037 100644 --- a/api_docs/vis_default_editor.mdx +++ b/api_docs/vis_default_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visDefaultEditor title: "visDefaultEditor" image: https://source.unsplash.com/400x175/?github description: API docs for the visDefaultEditor plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visDefaultEditor'] --- import visDefaultEditorObj from './vis_default_editor.devdocs.json'; diff --git a/api_docs/vis_type_gauge.mdx b/api_docs/vis_type_gauge.mdx index cc05f87950a88..f787785e9ca8d 100644 --- a/api_docs/vis_type_gauge.mdx +++ b/api_docs/vis_type_gauge.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeGauge title: "visTypeGauge" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeGauge plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeGauge'] --- import visTypeGaugeObj from './vis_type_gauge.devdocs.json'; diff --git a/api_docs/vis_type_heatmap.mdx b/api_docs/vis_type_heatmap.mdx index 2643bb31371ef..a84cbfe18df08 100644 --- a/api_docs/vis_type_heatmap.mdx +++ b/api_docs/vis_type_heatmap.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeHeatmap title: "visTypeHeatmap" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeHeatmap plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeHeatmap'] --- import visTypeHeatmapObj from './vis_type_heatmap.devdocs.json'; diff --git a/api_docs/vis_type_pie.mdx b/api_docs/vis_type_pie.mdx index dcc82d7f743bd..d0f9dd4f06d41 100644 --- a/api_docs/vis_type_pie.mdx +++ b/api_docs/vis_type_pie.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypePie title: "visTypePie" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypePie plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypePie'] --- import visTypePieObj from './vis_type_pie.devdocs.json'; diff --git a/api_docs/vis_type_table.mdx b/api_docs/vis_type_table.mdx index a086668a90210..4f5111f7be30a 100644 --- a/api_docs/vis_type_table.mdx +++ b/api_docs/vis_type_table.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTable title: "visTypeTable" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTable plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTable'] --- import visTypeTableObj from './vis_type_table.devdocs.json'; diff --git a/api_docs/vis_type_timelion.mdx b/api_docs/vis_type_timelion.mdx index aa497227e8d54..044965280ca53 100644 --- a/api_docs/vis_type_timelion.mdx +++ b/api_docs/vis_type_timelion.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimelion title: "visTypeTimelion" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimelion plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimelion'] --- import visTypeTimelionObj from './vis_type_timelion.devdocs.json'; diff --git a/api_docs/vis_type_timeseries.mdx b/api_docs/vis_type_timeseries.mdx index d5a6c221c68b7..8d857f21bcb51 100644 --- a/api_docs/vis_type_timeseries.mdx +++ b/api_docs/vis_type_timeseries.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeTimeseries title: "visTypeTimeseries" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeTimeseries plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeTimeseries'] --- import visTypeTimeseriesObj from './vis_type_timeseries.devdocs.json'; diff --git a/api_docs/vis_type_vega.mdx b/api_docs/vis_type_vega.mdx index 914be10e5a269..3d4098afce3a1 100644 --- a/api_docs/vis_type_vega.mdx +++ b/api_docs/vis_type_vega.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVega title: "visTypeVega" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVega plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVega'] --- import visTypeVegaObj from './vis_type_vega.devdocs.json'; diff --git a/api_docs/vis_type_vislib.mdx b/api_docs/vis_type_vislib.mdx index 78ec7040871aa..9a22546e09114 100644 --- a/api_docs/vis_type_vislib.mdx +++ b/api_docs/vis_type_vislib.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeVislib title: "visTypeVislib" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeVislib plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeVislib'] --- import visTypeVislibObj from './vis_type_vislib.devdocs.json'; diff --git a/api_docs/vis_type_xy.mdx b/api_docs/vis_type_xy.mdx index 69749720b36f3..66b705625d635 100644 --- a/api_docs/vis_type_xy.mdx +++ b/api_docs/vis_type_xy.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visTypeXy title: "visTypeXy" image: https://source.unsplash.com/400x175/?github description: API docs for the visTypeXy plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index ae1bfb4f54805..56c715fb1d0f6 100644 --- a/api_docs/visualizations.mdx +++ b/api_docs/visualizations.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/visualizations title: "visualizations" image: https://source.unsplash.com/400x175/?github description: API docs for the visualizations plugin -date: 2024-02-14 +date: 2024-02-16 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/docs/developer/architecture/core/saved-objects-service-use-case-examples.asciidoc b/docs/developer/architecture/core/saved-objects-service-use-case-examples.asciidoc new file mode 100644 index 0000000000000..2b2cbde0b3f1a --- /dev/null +++ b/docs/developer/architecture/core/saved-objects-service-use-case-examples.asciidoc @@ -0,0 +1,761 @@ +[[saved-objects-service-use-case-examples]] +=== Use-case examples + +These are example of the migration scenario currently supported (out of +the box) by the system. + +*note:* _more complex scenarios (e.g field mutation by copy/sync) could +already be implemented, but without the proper tooling exposed from +Core, most of the work related to sync and compatibility would have to +be implemented in the domain layer of the type owners, which is why +we’re not documenting them yet._ + +==== Adding a non-indexed field without default value + +We are currently in model version 1, and our type has 2 indexed fields +defined: `foo` and `bar`. + +The definition of the type at version 1 would look like: + +[source,ts] +---- +const myType: SavedObjectsType = { + name: 'test', + namespaceType: 'single', + switchToModelVersionAt: '8.10.0', + modelVersions: { + // initial (and current) model version + 1: { + changes: [], + schemas: { + // FC schema defining the known fields (indexed or not) for this version + forwardCompatibility: schema.object( + { foo: schema.string(), bar: schema.string() }, + { unknowns: 'ignore' } // note the `unknown: ignore` which is how we're evicting the unknown fields + ), + // schema that will be used to validate input during `create` and `bulkCreate` + create: schema.object( + { foo: schema.string(), bar: schema.string() }, + ) + }, + }, + }, + mappings: { + properties: { + foo: { type: 'text' }, + bar: { type: 'text' }, + }, + }, +}; +---- + +From here, say we want to introduce a new `dolly` field that is not +indexed, and that we don’t need to populate with a default value. + +To achieve that, we need to introduce a new model version, with the only +thing to do will be to define the associated schemas to include this new +field. + +The added model version would look like: + +[source,ts] +---- +// the new model version adding the `dolly` field +let modelVersion2: SavedObjectsModelVersion = { + // not an indexed field, no data backfill, so changes are actually empty + changes: [], + schemas: { + // the only addition in this model version: taking the new field into account for the schemas + forwardCompatibility: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + { unknowns: 'ignore' } // note the `unknown: ignore` which is how we're evicting the unknown fields + ), + create: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + ) + }, +}; +---- + +The full type definition after the addition of the new model version: + +[source,ts] +---- +const myType: SavedObjectsType = { + name: 'test', + namespaceType: 'single', + switchToModelVersionAt: '8.10.0', + modelVersions: { + 1: { + changes: [], + schemas: { + forwardCompatibility: schema.object( + { foo: schema.string(), bar: schema.string() }, + { unknowns: 'ignore' } + ), + create: schema.object( + { foo: schema.string(), bar: schema.string() }, + ) + }, + }, + 2: { + changes: [], + schemas: { + forwardCompatibility: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + { unknowns: 'ignore' } + ), + create: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + ) + }, + }, + }, + mappings: { + properties: { + foo: { type: 'text' }, + bar: { type: 'text' }, + }, + }, +}; +---- + +==== Adding an indexed field without default value + +This scenario is fairly close to the previous one. The difference being +that working with an indexed field means adding a `mappings_addition` +change and to also update the root mappings accordingly. + +To reuse the previous example, let’s say the `dolly` field we want to +add would need to be indexed instead. + +In that case, the new version needs to do the following: - add a +`mappings_addition` type change to define the new mappings - update the +root `mappings` accordingly - add the updated schemas as we did for the +previous example + +The new version definition would look like: + +[source,ts] +---- +let modelVersion2: SavedObjectsModelVersion = { + // add a change defining the mapping for the new field + changes: [ + { + type: 'mappings_addition', + addedMappings: { + dolly: { type: 'text' }, + }, + }, + ], + schemas: { + // adding the new field to the forwardCompatibility schema + forwardCompatibility: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + { unknowns: 'ignore' } + ), + create: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + ) + }, +}; +---- + +As said, we will also need to update the root mappings definition: + +[source,ts] +---- +mappings: { + properties: { + foo: { type: 'text' }, + bar: { type: 'text' }, + dolly: { type: 'text' }, + }, +}, +---- + +the full type definition after the addition of the model version 2 would +be: + +[source,ts] +---- +const myType: SavedObjectsType = { + name: 'test', + namespaceType: 'single', + switchToModelVersionAt: '8.10.0', + modelVersions: { + 1: { + changes: [ + { + type: 'mappings_addition', + addedMappings: { + foo: { type: 'text' }, + bar: { type: 'text' }, + }, + }, + ], + schemas: { + forwardCompatibility: schema.object( + { foo: schema.string(), bar: schema.string() }, + { unknowns: 'ignore' } + ), + create: schema.object( + { foo: schema.string(), bar: schema.string() }, + ) + }, + }, + 2: { + changes: [ + { + type: 'mappings_addition', + addedMappings: { + dolly: { type: 'text' }, + }, + }, + ], + schemas: { + forwardCompatibility: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + { unknowns: 'ignore' } + ), + create: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + ) + }, + }, + }, + mappings: { + properties: { + foo: { type: 'text' }, + bar: { type: 'text' }, + dolly: { type: 'text' }, + }, + }, +}; +---- + +==== Adding an indexed field with a default value + +Now a slightly different scenario where we’d like to populate the newly +introduced field with a default value. + +In that case, we’d need to add an additional `data_backfill` change to +populate the new field’s value (in addition to the `mappings_addition` +one): + +[source,ts] +---- +let modelVersion2: SavedObjectsModelVersion = { + changes: [ + // setting the `dolly` field's default value. + { + type: 'data_backfill', + transform: (document) => { + return { attributes: { dolly: 'default_value' } }; + }, + }, + // define the mappings for the new field + { + type: 'mappings_addition', + addedMappings: { + dolly: { type: 'text' }, + }, + }, + ], + schemas: { + // define `dolly` as an know field in the schema + forwardCompatibility: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + { unknowns: 'ignore' } + ), + create: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + ) + }, +}; +---- + +The full type definition would look like: + +[source,ts] +---- +const myType: SavedObjectsType = { + name: 'test', + namespaceType: 'single', + switchToModelVersionAt: '8.10.0', + modelVersions: { + 1: { + changes: [ + { + type: 'mappings_addition', + addedMappings: { + foo: { type: 'text' }, + bar: { type: 'text' }, + }, + }, + ], + schemas: { + forwardCompatibility: schema.object( + { foo: schema.string(), bar: schema.string() }, + { unknowns: 'ignore' } + ), + create: schema.object( + { foo: schema.string(), bar: schema.string() }, + ) + }, + }, + 2: { + changes: [ + { + type: 'data_backfill', + transform: (document) => { + return { attributes: { dolly: 'default_value' } }; + }, + }, + { + type: 'mappings_addition', + addedMappings: { + dolly: { type: 'text' }, + }, + }, + ], + schemas: { + forwardCompatibility: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + { unknowns: 'ignore' } + ), + create: schema.object( + { foo: schema.string(), bar: schema.string(), dolly: schema.string() }, + ) + }, + }, + }, + mappings: { + properties: { + foo: { type: 'text' }, + bar: { type: 'text' }, + dolly: { type: 'text' }, + }, + }, +}; +---- + +*Note:* _if the field was non-indexed, we would just not use the +`mappings_addition` change or update the mappings (as done in example +1)_ + +==== Removing an existing field + +We are currently in model version 1, and our type has 2 indexed fields +defined: `kept` and `removed`. + +The definition of the type at version 1 would look like: + +[source,ts] +---- +const myType: SavedObjectsType = { + name: 'test', + namespaceType: 'single', + switchToModelVersionAt: '8.10.0', + modelVersions: { + // initial (and current) model version + 1: { + changes: [], + schemas: { + // FC schema defining the known fields (indexed or not) for this version + forwardCompatibility: schema.object( + { kept: schema.string(), removed: schema.string() }, + { unknowns: 'ignore' } // note the `unknown: ignore` which is how we're evicting the unknown fields + ), + // schema that will be used to validate input during `create` and `bulkCreate` + create: schema.object( + { kept: schema.string(), removed: schema.string() }, + ) + }, + }, + }, + mappings: { + properties: { + kept: { type: 'text' }, + removed: { type: 'text' }, + }, + }, +}; +---- + +From here, say we want to remove the `removed` field, as our application +doesn’t need it anymore since a recent change. + +The first thing to understand here is the impact toward backward +compatibility: Say that Kibana version `X` was still using this field, +and that we stopped utilizing the field in version `X+1`. + +We can’t remove the data in version `X+1`, as we need to be able to +rollback to the prior version at *any time*. If we were to delete the +data of this `removed` field during the upgrade to version `X+1`, and if +then, for any reason, we’d need to rollback to version `X`, it would +cause a data loss, as version `X` was still using this field, but it +would no longer present in our document after the rollback. + +Which is why we need to perform any field removal as a 2-step operation: +- release `X`: Kibana still utilize the field - release `X+1`: Kibana no +longer utilize the field, but the data is still present in the documents +- release `X+2`: The data is effectively deleted from the documents. + +That way, any prior-version rollback (`X+2` to `X+1` *or* `X+1` to `X` +is safe in term of data integrity) + +The main question then, is what’s the best way of having our application +layer simply ignore this `removed` field during version `X+1`, as we +don’t want this field (now non-utilized) to be returned from the +persistence layer, as it could ``pollute'' the higher-layers where the +field is effectively no longer used or even known. + +This can easily be done by introducing a new version and using the +`forwardCompatibility` schema to ``shallow'' the field. + +The `X+1` model version would look like: + +[source,ts] +---- +// the new model version ignoring the `removed` field +let modelVersion2: SavedObjectsModelVersion = { + changes: [], + schemas: { + forwardCompatibility: schema.object( + { kept: schema.string() }, // `removed` is no longer defined here + { unknowns: 'ignore' } + ), + create: schema.object( + { kept: schema.string() }, // `removed` is no longer defined here + ) + }, +}; +---- + +The full type definition after the addition of the new model version: + +[source,ts] +---- +const myType: SavedObjectsType = { + name: 'test', + namespaceType: 'single', + switchToModelVersionAt: '8.10.0', + modelVersions: { + // initial (and current) model version + 1: { + changes: [], + schemas: { + // FC schema defining the known fields (indexed or not) for this version + forwardCompatibility: schema.object( + { kept: schema.string(), removed: schema.string() }, + { unknowns: 'ignore' } // note the `unknown: ignore` which is how we're evicting the unknown fields + ), + // schema that will be used to validate input during `create` and `bulkCreate` + create: schema.object( + { kept: schema.string(), removed: schema.string() }, + ) + }, + }, + 2: { + changes: [], + schemas: { + forwardCompatibility: schema.object( + { kept: schema.string() }, // `removed` is no longer defined here + { unknowns: 'ignore' } + ), + create: schema.object( + { kept: schema.string() }, // `removed` is no longer defined here + ) + }, + } + }, + mappings: { + properties: { + kept: { type: 'text' }, + removed: { type: 'text' }, + }, + }, +}; +---- + +then, in a *later* release, we can then deploy the change that will +effectively remove the data from the documents: + +[source,ts] +---- +// the new model version ignoring the `removed` field +let modelVersion3: SavedObjectsModelVersion = { + changes: [ // define a data_removal change to delete the field + { + type: 'data_removal', + removedAttributePaths: ['removed'] + } + ], + schemas: { + forwardCompatibility: schema.object( + { kept: schema.string() }, + { unknowns: 'ignore' } + ), + create: schema.object( + { kept: schema.string() }, + ) + }, +}; +---- + +The full type definition after the data removal would look like: + +[source,ts] +---- +const myType: SavedObjectsType = { + name: 'test', + namespaceType: 'single', + switchToModelVersionAt: '8.10.0', + modelVersions: { + // initial (and current) model version + 1: { + changes: [], + schemas: { + // FC schema defining the known fields (indexed or not) for this version + forwardCompatibility: schema.object( + { kept: schema.string(), removed: schema.string() }, + { unknowns: 'ignore' } // note the `unknown: ignore` which is how we're evicting the unknown fields + ), + // schema that will be used to validate input during `create` and `bulkCreate` + create: schema.object( + { kept: schema.string(), removed: schema.string() }, + ) + }, + }, + 2: { + changes: [], + schemas: { + forwardCompatibility: schema.object( + { kept: schema.string() }, // `removed` is no longer defined here + { unknowns: 'ignore' } + ), + create: schema.object( + { kept: schema.string() }, // `removed` is no longer defined here + ) + }, + }, + 3: { + changes: [ // define a data_removal change to delete the field + { + type: 'data_removal', + removedAttributePaths: ['removed'] + } + ], + schemas: { + forwardCompatibility: schema.object( + { kept: schema.string() }, + { unknowns: 'ignore' } + ), + create: schema.object( + { kept: schema.string() }, + ) + }, + } + }, + mappings: { + properties: { + kept: { type: 'text' }, + removed: { type: 'text' }, + }, + }, +}; +---- + +=== Testing model versions + +Model versions definitions are more structured than the legacy migration +functions, which makes them harder to test without the proper tooling. +This is why a set of testing tools and utilities are exposed from the +`@kbn/core-test-helpers-model-versions` package, to help properly test +the logic associated with model version and their associated +transformations. + +==== Tooling for unit tests + +For unit tests, the package exposes utilities to easily test the impact +of transforming documents from a model version to another one, either +upward or backward. + +===== Model version test migrator + +The `createModelVersionTestMigrator` helper allows to create a test +migrator that can be used to test model version changes between +versions, by transforming documents the same way the migration algorithm +would during an upgrade. + +*Example:* + +[source,ts] +---- +import { + createModelVersionTestMigrator, + type ModelVersionTestMigrator +} from '@kbn/core-test-helpers-model-versions'; + +const mySoTypeDefinition = someSoType(); + +describe('mySoTypeDefinition model version transformations', () => { + let migrator: ModelVersionTestMigrator; + + beforeEach(() => { + migrator = createModelVersionTestMigrator({ type: mySoTypeDefinition }); + }); + + describe('Model version 2', () => { + it('properly backfill the expected fields when converting from v1 to v2', () => { + const obj = createSomeSavedObject(); + + const migrated = migrator.migrate({ + document: obj, + fromVersion: 1, + toVersion: 2, + }); + + expect(migrated.properties).toEqual(expectedV2Properties); + }); + + it('properly removes the expected fields when converting from v2 to v1', () => { + const obj = createSomeSavedObject(); + + const migrated = migrator.migrate({ + document: obj, + fromVersion: 2, + toVersion: 1, + }); + + expect(migrated.properties).toEqual(expectedV1Properties); + }); + }); +}); +---- + +==== Tooling for integration tests + +During integration tests, we can boot a real Elasticsearch cluster, +allowing us to manipulate SO documents in a way almost similar to how it +would be done on production runtime. With integration tests, we can even +simulate the cohabitation of two Kibana instances with different model +versions to assert the behavior of their interactions. + +===== Model version test bed + +The package exposes a `createModelVersionTestBed` function that can be +used to fully setup a test bed for model version integration testing. It +can be used to start and stop the ES server, and to initiate the +migration between the two versions we’re testing. + +*Example:* + +[source,ts] +---- +import { + createModelVersionTestBed, + type ModelVersionTestKit +} from '@kbn/core-test-helpers-model-versions'; + +describe('myIntegrationTest', () => { + const testbed = createModelVersionTestBed(); + let testkit: ModelVersionTestKit; + + beforeAll(async () => { + await testbed.startES(); + }); + + afterAll(async () => { + await testbed.stopES(); + }); + + beforeEach(async () => { + // prepare the test, preparing the index and performing the SO migration + testkit = await testbed.prepareTestKit({ + savedObjectDefinitions: [{ + definition: mySoTypeDefinition, + // the model version that will be used for the "before" version + modelVersionBefore: 1, + // the model version that will be used for the "after" version + modelVersionAfter: 2, + }] + }) + }); + + afterEach(async () => { + if(testkit) { + // delete the indices between each tests to perform a migration again + await testkit.tearsDown(); + } + }); + + it('can be used to test model version cohabitation', async () => { + // last registered version is `1` (modelVersionBefore) + const repositoryV1 = testkit.repositoryBefore; + // last registered version is `2` (modelVersionAfter) + const repositoryV2 = testkit.repositoryAfter; + + // do something with the two repositories, e.g + await repositoryV1.create(someAttrs, { id }); + const v2docReadFromV1 = await repositoryV2.get('my-type', id); + expect(v2docReadFromV1.attributes).toEqual(whatIExpect); + }); +}); +---- + +*Limitations:* + +Because the test bed is only creating the parts of Core required to +instantiate the two SO repositories, and because we’re not able to +properly load all plugins (for proper isolation), the integration test +bed currently has some limitations: + +* no extensions are enabled +** no security +** no encryption +** no spaces +* all SO types will be using the same SO index + +=== Limitations and edge cases in serverless environments + +The serverless environment, and the fact that upgrade in such +environments are performed in a way where, at some point, the old and +new version of the application are living in cohabitation, leads to some +particularities regarding the way the SO APIs works, and to some +limitations / edge case that we need to document + +==== Using the `fields` option of the `find` savedObjects API + +By default, the `find` API (as any other SO API returning documents) +will migrate all documents before returning them, to ensure that +documents can be used by both versions during a cohabitation (e.g an old +node searching for documents already migrated, or a new node searching +for documents not yet migrated). + +However, when using the `fields` option of the `find` API, the documents +can’t be migrated, as some model version changes can’t be applied +against a partial set of attributes. For this reason, when the `fields` +option is provided, the documents returned from `find` will *not* be +migrated. + +Which is why, when using this option, the API consumer needs to make +sure that _all_ the fields passed to the `fields` option *were already +present in the prior model version*. Otherwise, it may lead to +inconsistencies during upgrades, where newly introduced or backfilled +fields may not necessarily appear in the documents returned from the +`search` API when the option is used. + +(_note_: both the previous and next version of Kibana must follow this +rule then) + +==== Using `bulkUpdate` for fields with large `json` blobs + +The savedObjects `bulkUpdate` API will update documents client-side and +then reindex the updated documents. These update operations are done +in-memory, and cause memory constraint issues when updating many objects +with large `json` blobs stored in some fields. As such, we recommend +against using `bulkUpdate` for savedObjects that: - use arrays (as these +tend to be large objects) - store large `json` blobs in some fields + diff --git a/docs/developer/architecture/core/saved-objects-service.asciidoc b/docs/developer/architecture/core/saved-objects-service.asciidoc index eb9f1c7fd4516..71ece4ae3d735 100644 --- a/docs/developer/architecture/core/saved-objects-service.asciidoc +++ b/docs/developer/architecture/core/saved-objects-service.asciidoc @@ -47,6 +47,11 @@ export const dashboardVisualization: SavedObjectsType = { name: 'dashboard_visualization', // <1> hidden: true, namespaceType: 'multiple-isolated', // <2> + switchToModelVersionAt: '8.10.0', + modelVersions: { + 1: modelVersion1, + 2: modelVersion2, + }, mappings: { dynamic: false, properties: { @@ -58,10 +63,7 @@ export const dashboardVisualization: SavedObjectsType = { }, }, }, - migrations: { - '1.0.0': migratedashboardVisualizationToV1, - '2.0.0': migratedashboardVisualizationToV2, - }, + // ...other mandatory properties }; ---- <1> Since the name of a Saved Object type may form part of the URL path for the @@ -95,33 +97,32 @@ Each Saved Object type can define it's own {es} field mappings. Because multiple Saved Object types can share the same index, mappings defined by a type will be nested under a top-level field that matches the type name. -For example, the mappings defined by the `dashboard_visualization` Saved +For example, the mappings defined by the `search` Saved Object type: -.src/plugins/my_plugin/server/saved_objects/dashboard_visualization.ts +https://github.com/elastic/kibana/blob/main/src/plugins/saved_search/server/saved_objects/search.ts#L19-L70[.src/plugins/saved_search/server/saved_objects/search.ts] [source,typescript] ---- import { SavedObjectsType } from 'src/core/server'; - -export const dashboardVisualization: SavedObjectsType = { - name: 'dashboard_visualization', - ... +// ... other imports +export function getSavedSearchObjectType: SavedObjectsType = { // <1> + name: 'search', + hidden: false, + namespaceType: 'multiple-isolated', mappings: { + dynamic: false, properties: { - dynamic: false, - description: { - type: 'text', - }, - hits: { - type: 'integer', - }, + title: { type: 'text' }, + description: { type: 'text' }, }, }, - migrations: { ... }, + modelVersions: { ... }, + // ...other optional properties }; ---- +<1> Simplification -Will result in the following mappings being applied to the `.kibana` index: +Will result in the following mappings being applied to the `.kibana_analytics` index: [source,json] ---- { @@ -129,14 +130,14 @@ Will result in the following mappings being applied to the `.kibana` index: "dynamic": "strict", "properties": { ... - "dashboard_vizualization": { + "search": { "dynamic": false, "properties": { - "description": { + "title": { "type": "text", }, - "hits": { - "type": "integer", + "description": { + "type": "text", }, }, } @@ -157,242 +158,336 @@ Saved Object types should never use `dynamic: true` as this can cause an arbitrary amount of fields to be added to the `.kibana` index. [[saved-objects-service-writing-migrations]] -==== Writing Migrations +==== Writing Migrations by defining model versions -Saved Objects support schema changes between Kibana versions, which we call -migrations. Migrations are applied when a Kibana installation is upgraded from -one version to the next, when exports are imported via the Saved Objects -Management UI, or when a new object is created via the HTTP API. +Saved Objects support changes using `modelVersions``. The modelVersion API is a new way to define transformations +(_``migrations''_) for your savedObject types, and will replace the +``legacy'' migration API after Kibana version `8.10.0`. The legacy migration API has been deprecated, meaning it is no longer possible to register migrations using the legacy system. -Each Saved Object type may define migrations for its schema. Migrations are -specified by the Kibana version number, receive an input document, and must -return the fully migrated document to be persisted to Elasticsearch. +Model versions are decoupled from the stack version and satisfy the requirements for zero downtime and backward-compatibility. -Let's say we want to define two migrations: -- In version 1.1.0, we want to drop the `subtitle` field and append it to the - title -- In version 1.4.0, we want to add a new `id` field to every panel with a newly - generated UUID. +Each Saved Object type may define model versions for its schema and are bound to a given https://github.com/elastic/kibana/blob/9b330e493216e8dde3166451e4714966f63f5ab7/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts#L22-L27[savedObject type]. Changes to a saved object type are +specified by defining a new model. -First, the current `mappings` should always reflect the latest or "target" -schema. Next, we should define a migration function for each step in the schema -evolution: +=== Defining model versions -src/plugins/my_plugin/server/saved_objects/dashboard_visualization.ts -[source,typescript] +As for old migrations, model versions are bound to a given +https://github.com/elastic/kibana/blob/9b330e493216e8dde3166451e4714966f63f5ab7/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts#L22-L27[savedObject +type] + +When registering a SO type, a new +https://github.com/elastic/kibana/blob/9a6a2ccdff619f827b31c40dd9ed30cb27203da7/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts#L138-L177[modelVersions] +property is available. This attribute is a map of +https://github.com/elastic/kibana/blob/9a6a2ccdff619f827b31c40dd9ed30cb27203da7/packages/core/saved-objects/core-saved-objects-server/src/model_version/model_version.ts#L12-L20[SavedObjectsModelVersion] +which is the top-level type/container to define model versions. + +This map follows a similar `{ [version number] => version definition }` +format as the old migration map, however a given SO type’s model version +is now identified by a single integer. + +The first version must be numbered as version 1, incrementing by one for +each new version. + +That way: - SO type versions are decoupled from stack versioning - SO +type versions are independent between types + +_a *valid* version numbering:_ + +[source,ts] +---- +const myType: SavedObjectsType = { + name: 'test', + switchToModelVersionAt: '8.10.0', + modelVersions: { + 1: modelVersion1, // valid: start with version 1 + 2: modelVersion2, // valid: no gap between versions + }, + // ...other mandatory properties +}; ---- -import { SavedObjectsType, SavedObjectMigrationFn } from 'src/core/server'; -import uuid from 'uuid'; -interface DashboardVisualizationPre110 { - title: string; - subtitle: string; - panels: Array<{}>; -} -interface DashboardVisualization110 { - title: string; - panels: Array<{}>; -} +_an *invalid* version numbering:_ -interface DashboardVisualization140 { - title: string; - panels: Array<{ id: string }>; -} +[source,ts] +---- +const myType: SavedObjectsType = { + name: 'test', + switchToModelVersionAt: '8.10.0', + modelVersions: { + 2: modelVersion2, // invalid: first version must be 1 + 4: modelVersion3, // invalid: skipped version 3 + }, + // ...other mandatory properties +}; +---- -const migrateDashboardVisualization110: SavedObjectMigrationFn< - DashboardVisualizationPre110, // <1> - DashboardVisualization110 -> = (doc) => { - const { subtitle, ...attributesWithoutSubtitle } = doc.attributes; - return { - ...doc, // <2> - attributes: { - ...attributesWithoutSubtitle, - title: `${doc.attributes.title} - ${doc.attributes.subtitle}`, +=== Structure of a model version + +https://github.com/elastic/kibana/blob/9b330e493216e8dde3166451e4714966f63f5ab7/packages/core/saved-objects/core-saved-objects-server/src/model_version/model_version.ts#L12-L20[Model +versions] are not just functions as the previous migrations were, but +structured objects describing how the version behaves and what changed +since the last one. + +_A base example of what a model version can look like:_ + +[source,ts] +---- +const myType: SavedObjectsType = { + name: 'test', + switchToModelVersionAt: '8.10.0', + modelVersions: { + 1: { + changes: [ + { + type: 'mappings_addition', + addedMappings: { + someNewField: { type: 'text' }, + }, + }, + { + type: 'data_backfill', + transform: someBackfillFunction, + }, + ], + schemas: { + forwardCompatibility: fcSchema, + create: createSchema, + }, }, - }; + }, + // ...other mandatory properties }; +---- + +*Note:* Having multiple changes of the same type for a given version is +supported by design to allow merging different sources (to prepare for +an eventual higher-level API) -const migrateDashboardVisualization140: SavedObjectMigrationFn< - DashboardVisualization110, - DashboardVisualization140 -> = (doc) => { - const outPanels = doc.attributes.panels?.map((panel) => { - return { ...panel, id: uuid.v4() }; - }); - return { - ...doc, - attributes: { - ...doc.attributes, - panels: outPanels, +_This definition would be perfectly valid:_ + +[source,ts] +---- +const version1: SavedObjectsModelVersion = { + changes: [ + { + type: 'mappings_addition', + addedMappings: { + someNewField: { type: 'text' }, + }, + }, + { + type: 'mappings_addition', + addedMappings: { + anotherNewField: { type: 'text' }, + }, }, - }; + ], }; +---- -export const dashboardVisualization: SavedObjectsType = { - name: 'dashboard_visualization', // <1> - /** ... */ - migrations: { - // Takes a pre 1.1.0 doc, and converts it to 1.1.0 - '1.1.0': migrateDashboardVisualization110, +It’s currently composed of two main properties: + +==== changes + +https://github.com/elastic/kibana/blob/9b330e493216e8dde3166451e4714966f63f5ab7/packages/core/saved-objects/core-saved-objects-server/src/model_version/model_version.ts#L21-L51[link +to the TS doc for `changes`] + +Describes the list of changes applied during this version. + +*Important:* This is the part that replaces the old migration system, +and allows defining when a version adds new mapping, mutates the +documents, or other type-related changes. + +The current types of changes are: + +===== - mappings_addition + +Used to define new mappings introduced in a given version. - // Takes a 1.1.0 doc, and converts it to 1.4.0 - '1.4.0': migrateDashboardVisualization140, // <3> +_Usage example:_ + +[source,ts] +---- +const change: SavedObjectsModelMappingsAdditionChange = { + type: 'mappings_addition', + addedMappings: { + newField: { type: 'text' }, + existingNestedField: { + properties: { + newNestedProp: { type: 'keyword' }, + }, + }, }, }; ---- -<1> It is useful to define an interface for each version of the schema. This -allows TypeScript to ensure that you are properly handling the input and output -types correctly as the schema evolves. -<2> Returning a shallow copy is necessary to avoid type errors when using -different types for the input and output shape. -<3> Migrations do not have to be defined for every version. The version number -of a migration must always be the earliest Kibana version in which this -migration was released. So if you are creating a migration which will be -part of the v7.10.0 release, but will also be backported and released as -v7.9.3, the migration version should be: 7.9.3. -Migrations should be written defensively, an exception in a migration function -will prevent a Kibana upgrade from succeeding and will cause downtime for our -users. Having said that, if a document is encountered that is not in the -expected shape, migrations are encouraged to throw an exception to abort the -upgrade. In most scenarios, it is better to fail an upgrade than to silently -ignore a corrupt document which can cause unexpected behaviour at some future -point in time. +*note:* _When adding mappings, the root `type.mappings` must also be +updated accordingly (as it was done previously)._ -WARNING: Do not attempt to change the `migrationVersion`, `id`, or `type` fields -within a migration function, this is not supported. +===== - mappings_deprecation -It is critical that you have extensive tests to ensure that migrations behave -as expected with all possible input documents. Given how simple it is to test -all the branch conditions in a migration function and the high impact of a bug -in this code, there's really no reason not to aim for 100% test code coverage. +Used to flag mappings as no longer being used and ready to be removed. -==== Type visibility -It is recommended that plugins only expose Saved Object types that are necessary. -That is so to provide better backward compatibility. +_Usage example:_ -There are two options to register a type: either as completely unexposed to the global Saved Objects HTTP APIs and client or to only expose it to the client but not to the APIs. - -===== Hidden types +[source,ts] +---- +let change: SavedObjectsModelMappingsDeprecationChange = { + type: 'mappings_deprecation', + deprecatedMappings: ['someDeprecatedField', 'someNested.deprecatedField'], +}; +---- -In case when the type is not hidden, it will be exposed via the global Saved Objects HTTP API. -That brings the limitation of introducing backward incompatible changes as there might be a service consuming the API. +*note:* _It is currently not possible to remove fields from an existing +index’s mapping (without reindexing into another index), so the mappings +flagged with this change type won’t be deleted for now, but this should +still be used to allow our system to clean the mappings once upstream +(ES) unblock us._ -This is a formal limitation not prohibiting backward incompatible changes in the migrations. -But in case of such changes on the hidden types, they can be resolved and encapsulated on the intermediate layer in the plugin API. +===== - data_backfill -Hence, the main idea is that all the interactions with the Saved Objects should be done via the plugin API rather than via the Saved Objects HTTP API. +Used to populate fields (indexed or not) added in the same version. -By default, the hidden types will not be accessible in the Saved Objects client. -To make them accessible, they should be explicitly listed in the `includedHiddenTypes` parameters upon client creation. +_Usage example:_ -[source,typescript] +[source,ts] +---- +let change: SavedObjectsModelDataBackfillChange = { + type: 'data_backfill', + transform: (document) => { + return { attributes: { someAddedField: 'defaultValue' } }; + }, +}; ---- -import { CoreStart, Plugin } from '@kbn/core/server'; -class SomePlugin implements Plugin { - // ... +*note:* _Even if no check is performed to ensure it, this type of model +change should only be used to backfill newly introduced fields._ - public start({ savedObjects }: CoreStart) { - // ... +===== - data_removal - const savedObjectsClient = savedObjects.getScopedClient( - request, - { includedHiddenTypes: ['dashboard_visualization'] } - ); +Used to remove data (unset fields) from all documents of the type. - // ... - } -} +_Usage example:_ + +[source,ts] +---- +let change: SavedObjectsModelDataRemovalChange = { + type: 'data_removal', + attributePaths: ['someRootAttributes', 'some.nested.attribute'], +}; ---- -===== Hidden from the HTTP APIs +*note:* _Due to backward compatibility, field utilization must be +stopped in a prior release before actual data removal (in case of +rollback). Please refer to the field removal migration example below in +this document_ -When a saved object is registered as hidden from the HTTP APIs, it will remain exposed to the global Saved Objects client: +===== - unsafe_transform -[source,typescript] ----- -import { SavedObjectsType } from 'src/core/server'; +Used to execute an arbitrary transformation function. -export const myCustomVisualization: SavedObjectsType = { - name: 'my_custom_visualization', // <1> - hidden: false, - hiddenFromHttpApis: true, // <2> - namespaceType: 'multiple-isolated', - mappings: { - dynamic: false, - properties: { - description: { - type: 'text', - }, - hits: { - type: 'integer', - }, - }, - }, - migrations: { - '1.0.0': migrateMyCustomVisualizationToV1, - '2.0.0': migrateMyCustomVisualizationToV2, +_Usage example:_ + +[source,ts] +---- +let change: SavedObjectsModelUnsafeTransformChange = { + type: 'unsafe_transform', + transformFn: (document) => { + document.attributes.someAddedField = 'defaultValue'; + return { document }; }, }; ---- -<1> MyCustomVisualization types have their own domain-specific HTTP API's that leverage the global Saved Objects client -<2> This field determines "hidden from http apis" behavior -- any attempts to use the global Saved Objects HTTP APIs will throw errors +*note:* _Using such transformations is potentially unsafe, given the +migration system will have no knowledge of which kind of operations will +effectively be executed against the documents. Those should only be used +when there’s no other way to cover one’s migration needs._ *Please reach +out to the development team if you think you need to use this, as you +theoretically shouldn’t.* + +==== schemas + +https://github.com/elastic/kibana/blob/9b330e493216e8dde3166451e4714966f63f5ab7/packages/core/saved-objects/core-saved-objects-server/src/model_version/schemas.ts#L11-L16[link +to the TS doc for `schemas`] + +The schemas associated with this version. Schemas are used to validate +or convert SO documents at various stages of their lifecycle. -=== Client side usage +The currently available schemas are: -==== References +===== forwardCompatibility -When a Saved Object declares `references` to other Saved Objects, the -Saved Objects Export API will automatically export the target object with all -of its references. This makes it easy for users to export the entire -reference graph of an object. +This is a new concept introduced by model versions. This schema is used +for inter-version compatibility. -If a Saved Object can't be used on its own, that is, it needs other objects -to exist for a feature to function correctly, that Saved Object should declare -references to all the objects it requires. For example, a `dashboard` -object might have panels for several `visualization` objects. When these -`visualization` objects don't exist, the dashboard cannot be rendered -correctly. The `dashboard` object should declare references to all its -visualizations. +When retrieving a savedObject document from an index, if the version of +the document is higher than the latest version known of the Kibana +instance, the document will go through the `forwardCompatibility` schema +of the associated model version. -However, `visualization` objects can continue to be rendered or embedded into -other dashboards even if the `dashboard` it was originally embedded into -doesn't exist. As a result, `visualization` objects should not declare -references to `dashboard` objects. +*Important:* These conversion mechanism shouldn’t assert the data +itself, and only strip unknown fields to convert the document to the +*shape* of the document at the given version. -For each referenced object, an `id`, `type` and `name` are added to the -`references` array: +Basically, this schema should keep all the known fields of a given +version, and remove all the unknown fields, without throwing. -[source, typescript] +Forward compatibility schema can be implemented in two different ways. + +[arabic] +. Using `config-schema` + +_Example of schema for a version having two fields: someField and +anotherField_ + +[source,ts] ---- -router.get( - { path: '/some-path', validate: false }, - async (context, req, res) => { - const object = await context.core.savedObjects.client.create( - 'dashboard', - { - title: 'my dashboard', - panels: [ - { visualization: 'vis1' }, // <1> - ], - indexPattern: 'indexPattern1' - }, - { references: [ - { id: '...', type: 'visualization', name: 'vis1' }, - { id: '...', type: 'index_pattern', name: 'indexPattern1' }, - ] - } - ) - ... - } +const versionSchema = schema.object( + { + someField: schema.maybe(schema.string()), + anotherField: schema.maybe(schema.string()), + }, + { unknowns: 'ignore' } ); ---- -<1> Note how `dashboard.panels[0].visualization` stores the `name` property of -the reference (not the `id` directly) to be able to uniquely identify this -reference. This guarantees that the id the reference points to always remains -up to date. If a visualization `id` was directly stored in -`dashboard.panels[0].visualization` there is a risk that this `id` gets -updated without updating the reference in the references array. + +*Important:* Note the `{ unknowns: 'ignore' }` in the schema’s options. +This is required when using `config-schema` based schemas, as this what +will evict the additional fields without throwing an error. + +[arabic, start=2] +. Using a plain javascript function + +_Example of schema for a version having two fields: someField and +anotherField_ + +[source,ts] +---- +const versionSchema: SavedObjectModelVersionEvictionFn = (attributes) => { + const knownFields = ['someField', 'anotherField']; + return pick(attributes, knownFields); +} +---- + +*note:* _Even if highly recommended, implementing this schema is not +strictly required. Type owners can manage unknown fields and +inter-version compatibility themselves in their service layer instead._ + +===== create + +This is a direct replacement for +https://github.com/elastic/kibana/blob/9b330e493216e8dde3166451e4714966f63f5ab7/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts#L75-L82[the +old SavedObjectType.schemas] definition, now directly included in the +model version definition. + +As a refresher the `create` schema is a `@kbn/config-schema` object-type +schema, and is used to validate the properties of the document during +`create` and `bulkCreate` operations. + +*note:* _Implementing this schema is optional, but still recommended, as +otherwise there will be no validating when importing objects_ + +For implementation examples, refer to <>. + +include::saved-objects-service-use-case-examples.asciidoc[leveloffset=+1] diff --git a/package.json b/package.json index e17e13f176d84..5137b9b97de00 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "dashboarding" ], "private": true, - "version": "8.13.0", + "version": "8.14.0", "branch": "main", "types": "./kibana.d.ts", "tsdocMetadata": "./build/tsdoc-metadata.json", diff --git a/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts b/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts index 716b31406649c..53b52d04f376b 100644 --- a/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts +++ b/packages/core/saved-objects/core-saved-objects-server/src/saved_objects_type.ts @@ -70,6 +70,7 @@ export interface SavedObjectsType { mappings: SavedObjectsTypeMappingDefinition; /** * An optional map of {@link SavedObjectMigrationFn | migrations} or a function returning a map of {@link SavedObjectMigrationFn | migrations} to be used to migrate the type. + * @deprecated Use {@link SavedObjectsType.modelVersions | modelVersions} instead. */ migrations?: SavedObjectMigrationMap | (() => SavedObjectMigrationMap); /** @@ -78,6 +79,7 @@ export interface SavedObjectsType { * When provided, calls to {@link SavedObjectsClient.create | create} will be validated against this schema. * * See {@link SavedObjectsValidationMap} for more details. + * @deprecated Use {@link SavedObjectsType.modelVersions | modelVersions} instead. */ schemas?: SavedObjectsValidationMap | (() => SavedObjectsValidationMap); /** @@ -177,7 +179,7 @@ export interface SavedObjectsType { modelVersions?: SavedObjectsModelVersionMap | SavedObjectsModelVersionMapProvider; /** - * Allows to opt-in to the new model version API. + * Allows to opt-in to the model version API. * * Must be a valid semver version (with the patch version being necessarily 0) * diff --git a/packages/kbn-expandable-flyout/README.md b/packages/kbn-expandable-flyout/README.md index ceac69e20722f..2baa93ee6058b 100644 --- a/packages/kbn-expandable-flyout/README.md +++ b/packages/kbn-expandable-flyout/README.md @@ -13,8 +13,6 @@ The flyout is composed of 3 sections: ## Design decisions -The expandable-flyout package is designed to render a single flyout for an entire plugin. While displaying multiple flyouts might be feasible, it will be a bit complicated, and we recommend instead to build multiple panels, with each their own context to manage their data (for example, take a look at the Security Solution [setup](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout)). - The expandable-flyout is making some strict UI design decisions: - when in collapsed mode (i.e. when only the right/preview section is open), the flyout's width linearly grows from its minimum value of 380px to its maximum value of 750px - when in expanded mode (i.e. when the left section is opened), the flyout's width changes depending on the browser's width: @@ -23,6 +21,25 @@ The expandable-flyout is making some strict UI design decisions: > While the expandable-flyout will work on very small screens, having both the right and left sections visible at the same time will not be a good experience to the user. We recommend only showing the right panel, and therefore handling this situation when you build your panels by considering hiding the actions that could open the left panel (like the expand details button in the [FlyoutNavigation](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout/shared/components/flyout_navigation.tsx)). +## State persistence + +The expandable flyout offers 2 ways of managing its state: + +### Memory storage + +The default behavior saves the state of the flyout in memory. The state is internal to the package and based on an isolated redux context. Using this mode means the state will not be persisted when sharing url or reloading browser pages. + +### Url storage + +The second way (done by setting the `urlKey` prop to a string value) saves the state of the flyout in the url. This allows the flyout to be automatically reopened when users refresh the browser page, or when users share an url. The `urlKey` will be used as the url parameter. + +**_Note: the word `memory` cannot be used as an `urlKey` as it is reserved for the memory storage behavior. You can use any other string value, try to use something that should be unique._** + +> We highly recommend NOT nesting flyouts in your code, as it would cause conflicts for the url keys. We recommend instead to build multiple panels, with each their own context to manage their data (for example, take a look at the Security Solution [setup](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security_solution/public/flyout)). +> +> A good solution is for example to have one instance of a flyout at a page level, and then have multiple panels that can be opened in that flyout. + + ## Package API The ExpandableFlyout [React component](https://github.com/elastic/kibana/tree/main/packages/kbn-expandable-flyout/src/index.tsx) renders the UI, leveraging an [EuiFlyout](https://eui.elastic.co/#/layout/flyout). @@ -46,10 +63,15 @@ To control (or mutate) flyout's layout, you can utilize [useExpandableFlyoutApi] To use the expandable flyout in your plugin, first you need wrap your code with the [context provider](https://github.com/elastic/kibana/blob/main/packages/kbn-expandable-flyout/src/context.tsx) at a high enough level as follows: ```typescript jsx +// state stored in the url + + ... + + + +// state stored in memory - ... - ``` @@ -60,13 +82,6 @@ Then use the [React UI component](https://github.com/elastic/kibana/tree/main/pa ``` _where `myPanels` is a list of all the panels that can be rendered in the flyout_ -## State persistence - -The expandable flyout offers 2 ways of managing its state: -- the default behavior saves the state of the flyout in the url. This allows the flyout to be automatically reopened when users refresh the browser page, or when users share a url -- the second way (done by setting the `storage` prop to `memory`) stores the state of the flyout in memory. This means that the flyout will not be reopened when users refresh the browser page, or when users share a url - - ## Terminology ### Section diff --git a/packages/kbn-expandable-flyout/index.ts b/packages/kbn-expandable-flyout/index.ts index d4299d676667f..e5eaae99c26f8 100644 --- a/packages/kbn-expandable-flyout/index.ts +++ b/packages/kbn-expandable-flyout/index.ts @@ -11,11 +11,9 @@ export { ExpandableFlyout } from './src'; export { useExpandableFlyoutApi } from './src/hooks/use_expandable_flyout_api'; export { useExpandableFlyoutState } from './src/hooks/use_expandable_flyout_state'; -export { type State as ExpandableFlyoutState } from './src/state'; +export { type FlyoutState as ExpandableFlyoutState } from './src/state'; export { ExpandableFlyoutProvider } from './src/provider'; export type { ExpandableFlyoutProps } from './src'; export type { FlyoutPanelProps, PanelPath, ExpandableFlyoutApi } from './src/types'; - -export { EXPANDABLE_FLYOUT_URL_KEY } from './src/constants'; diff --git a/packages/kbn-expandable-flyout/src/actions.ts b/packages/kbn-expandable-flyout/src/actions.ts index 56b6317032bc6..66ba9d900720b 100644 --- a/packages/kbn-expandable-flyout/src/actions.ts +++ b/packages/kbn-expandable-flyout/src/actions.ts @@ -23,24 +23,99 @@ export enum ActionType { } export const openPanelsAction = createAction<{ + /** + * Panel to render in the right section + */ right?: FlyoutPanelProps; + /** + * Panel to render in the left section + */ left?: FlyoutPanelProps; + /** + * Panels to render in the preview section + */ preview?: FlyoutPanelProps; + /** + * Unique identifier for the flyout (either the urlKey or 'memory') + */ + id: string; }>(ActionType.openFlyout); -export const openRightPanelAction = createAction(ActionType.openRightPanel); -export const openLeftPanelAction = createAction(ActionType.openLeftPanel); -export const openPreviewPanelAction = createAction(ActionType.openPreviewPanel); +export const openRightPanelAction = createAction<{ + /** + * Panel to render in the right section + */ + right: FlyoutPanelProps; + /** + * Unique identifier for the flyout (either the urlKey or 'memory') + */ + id: string; +}>(ActionType.openRightPanel); +export const openLeftPanelAction = createAction<{ + /** + * Panel to render in the left section + */ + left: FlyoutPanelProps; + /** + * Unique identifier for the flyout (either the urlKey or 'memory') + */ + id: string; +}>(ActionType.openLeftPanel); +export const openPreviewPanelAction = createAction<{ + /** + * Panels to render in the preview section + */ + preview: FlyoutPanelProps; + id: string; +}>(ActionType.openPreviewPanel); -export const closePanelsAction = createAction(ActionType.closeFlyout); -export const closeRightPanelAction = createAction(ActionType.closeRightPanel); -export const closeLeftPanelAction = createAction(ActionType.closeLeftPanel); -export const closePreviewPanelAction = createAction(ActionType.closePreviewPanel); +export const closePanelsAction = createAction<{ + /** + * Unique identifier for the flyout (either the urlKey or 'memory') + */ + id: string; +}>(ActionType.closeFlyout); +export const closeRightPanelAction = createAction<{ + /** + * Unique identifier for the flyout (either the urlKey or 'memory') + */ + id: string; +}>(ActionType.closeRightPanel); +export const closeLeftPanelAction = createAction<{ + /** + * Unique identifier for the flyout (either the urlKey or 'memory') + */ + id: string; +}>(ActionType.closeLeftPanel); +export const closePreviewPanelAction = createAction<{ + /** + * Unique identifier for the flyout (either the urlKey or 'memory') + */ + id: string; +}>(ActionType.closePreviewPanel); -export const previousPreviewPanelAction = createAction(ActionType.previousPreviewPanel); +export const previousPreviewPanelAction = createAction<{ + /** + * Unique identifier for the flyout (either the urlKey or 'memory') + */ + id: string; +}>(ActionType.previousPreviewPanel); export const urlChangedAction = createAction<{ + /** + * Panel to render in the right section + */ right?: FlyoutPanelProps; + /** + * Panel to render in the left section + */ left?: FlyoutPanelProps; + /** + * Panels to render in the preview section + */ preview?: FlyoutPanelProps; + /** + * Unique identifier for the flyout (either the urlKey or 'memory') + */ + id: string; }>(ActionType.urlChanged); diff --git a/packages/kbn-expandable-flyout/src/constants.ts b/packages/kbn-expandable-flyout/src/constants.ts index 4ee20ebb8e8f4..7e8236d0545f7 100644 --- a/packages/kbn-expandable-flyout/src/constants.ts +++ b/packages/kbn-expandable-flyout/src/constants.ts @@ -6,4 +6,7 @@ * Side Public License, v 1. */ -export const EXPANDABLE_FLYOUT_URL_KEY = 'eventFlyout' as const; +/** + * This is a reserved word that we use as an id when no urlKey is provided and we are in memory storage mode + */ +export const REDUX_ID_FOR_MEMORY_STORAGE = 'memory'; diff --git a/packages/kbn-expandable-flyout/src/context.tsx b/packages/kbn-expandable-flyout/src/context.tsx new file mode 100644 index 0000000000000..b7c75463776d9 --- /dev/null +++ b/packages/kbn-expandable-flyout/src/context.tsx @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { createContext, memo, useContext, useMemo } from 'react'; + +export interface ExpandableFlyoutContext { + /** + * Unique key to be used as url parameter to store the state of the flyout + */ + urlKey: string | undefined; +} + +export const ExpandableFlyoutContext = createContext( + undefined +); + +export interface ExpandableFlyoutContextProviderProps { + /** + * Unique key to be used as url parameter to store the state of the flyout + */ + urlKey: string | undefined; + /** + * React components to render + */ + children: React.ReactNode; +} + +/** + * Context used to share the value of the urlKey to the rest of the expandable flyout's code + */ +export const ExpandableFlyoutContextProvider = memo( + ({ urlKey, children }) => { + const contextValue = useMemo( + () => ({ + urlKey, + }), + [urlKey] + ); + + return ( + + {children} + + ); + } +); + +ExpandableFlyoutContextProvider.displayName = 'ExpandableFlyoutContextProvider'; + +export const useExpandableFlyoutContext = () => { + const context = useContext(ExpandableFlyoutContext); + if (context === undefined) { + throw new Error( + 'ExpandableFlyoutContext can only be used within ExpandableFlyoutContext provider' + ); + } + return context; +}; diff --git a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts index 9f42870a31c0f..dcfcf429e1086 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts +++ b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_api.ts @@ -7,6 +7,8 @@ */ import { useCallback, useMemo } from 'react'; +import { REDUX_ID_FOR_MEMORY_STORAGE } from '../constants'; +import { useExpandableFlyoutContext } from '../context'; import { closeLeftPanelAction, closePanelsAction, @@ -29,6 +31,10 @@ export type { ExpandableFlyoutApi }; export const useExpandableFlyoutApi = () => { const dispatch = useDispatch(); + const { urlKey } = useExpandableFlyoutContext(); + // if no urlKey is provided, we are in memory storage mode and use the reserved word 'memory' + const id = urlKey || REDUX_ID_FOR_MEMORY_STORAGE; + const openPanels = useCallback( ({ right, @@ -38,39 +44,43 @@ export const useExpandableFlyoutApi = () => { right?: FlyoutPanelProps; left?: FlyoutPanelProps; preview?: FlyoutPanelProps; - }) => dispatch(openPanelsAction({ right, left, preview })), - [dispatch] + }) => dispatch(openPanelsAction({ right, left, preview, id })), + [dispatch, id] ); const openRightPanel = useCallback( - (panel: FlyoutPanelProps) => dispatch(openRightPanelAction(panel)), - [dispatch] + (panel: FlyoutPanelProps) => dispatch(openRightPanelAction({ right: panel, id })), + [dispatch, id] ); const openLeftPanel = useCallback( - (panel: FlyoutPanelProps) => dispatch(openLeftPanelAction(panel)), - [dispatch] + (panel: FlyoutPanelProps) => dispatch(openLeftPanelAction({ left: panel, id })), + [dispatch, id] ); const openPreviewPanel = useCallback( - (panel: FlyoutPanelProps) => dispatch(openPreviewPanelAction(panel)), - [dispatch] + (panel: FlyoutPanelProps) => dispatch(openPreviewPanelAction({ preview: panel, id })), + [dispatch, id] ); - const closeRightPanel = useCallback(() => dispatch(closeRightPanelAction()), [dispatch]); + const closeRightPanel = useCallback( + () => dispatch(closeRightPanelAction({ id })), + [dispatch, id] + ); - const closeLeftPanel = useCallback(() => dispatch(closeLeftPanelAction()), [dispatch]); + const closeLeftPanel = useCallback(() => dispatch(closeLeftPanelAction({ id })), [dispatch, id]); - const closePreviewPanel = useCallback(() => dispatch(closePreviewPanelAction()), [dispatch]); + const closePreviewPanel = useCallback( + () => dispatch(closePreviewPanelAction({ id })), + [dispatch, id] + ); const previousPreviewPanel = useCallback( - () => dispatch(previousPreviewPanelAction()), - [dispatch] + () => dispatch(previousPreviewPanelAction({ id })), + [dispatch, id] ); - const closePanels = useCallback(() => { - dispatch(closePanelsAction()); - }, [dispatch]); + const closePanels = useCallback(() => dispatch(closePanelsAction({ id })), [dispatch, id]); const api: ExpandableFlyoutApi = useMemo( () => ({ diff --git a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts index 3ae9d69c4d0bc..015dfcd38f456 100644 --- a/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts +++ b/packages/kbn-expandable-flyout/src/hooks/use_expandable_flyout_state.ts @@ -6,11 +6,16 @@ * Side Public License, v 1. */ -import { stateSelector, useSelector } from '../redux'; +import { REDUX_ID_FOR_MEMORY_STORAGE } from '../constants'; +import { useExpandableFlyoutContext } from '../context'; +import { selectPanelsById, useSelector } from '../redux'; /** - * This hook allows you to access the flyout state, read open panels and previews. + * This hook allows you to access the flyout state, read open right, left and preview panels. */ export const useExpandableFlyoutState = () => { - return useSelector(stateSelector); + const { urlKey } = useExpandableFlyoutContext(); + // if no urlKey is provided, we are in memory storage mode and use the reserved word 'memory' + const id = urlKey || REDUX_ID_FOR_MEMORY_STORAGE; + return useSelector(selectPanelsById(id)); }; diff --git a/packages/kbn-expandable-flyout/src/index.test.tsx b/packages/kbn-expandable-flyout/src/index.test.tsx index 0b8b62ce7187a..d08a78c706781 100644 --- a/packages/kbn-expandable-flyout/src/index.test.tsx +++ b/packages/kbn-expandable-flyout/src/index.test.tsx @@ -18,7 +18,9 @@ import { } from './components/test_ids'; import { type State } from './state'; import { TestProvider } from './test/provider'; +import { REDUX_ID_FOR_MEMORY_STORAGE } from './constants'; +const id = REDUX_ID_FOR_MEMORY_STORAGE; const registeredPanels: Panel[] = [ { key: 'key', @@ -28,14 +30,12 @@ const registeredPanels: Panel[] = [ describe('ExpandableFlyout', () => { it(`shouldn't render flyout if no panels`, () => { - const context = { - right: undefined, - left: undefined, - preview: [], - } as unknown as State; + const state: State = { + byId: {}, + }; const result = render( - + ); @@ -44,16 +44,20 @@ describe('ExpandableFlyout', () => { }); it('should render right section', () => { - const context = { - right: { - id: 'key', + const state = { + byId: { + [id]: { + right: { + id: 'key', + }, + left: undefined, + preview: undefined, + }, }, - left: {}, - preview: [], - } as unknown as State; + }; const { getByTestId } = render( - + ); @@ -62,16 +66,20 @@ describe('ExpandableFlyout', () => { }); it('should render left section', () => { - const context = { - right: {}, - left: { - id: 'key', + const state = { + byId: { + [id]: { + right: undefined, + left: { + id: 'key', + }, + preview: undefined, + }, }, - preview: [], - } as unknown as State; + }; const { getByTestId } = render( - + ); @@ -80,18 +88,22 @@ describe('ExpandableFlyout', () => { }); it('should render preview section', () => { - const context = { - right: {}, - left: {}, - preview: [ - { - id: 'key', + const state = { + byId: { + [id]: { + right: undefined, + left: undefined, + preview: [ + { + id: 'key', + }, + ], }, - ], - } as State; + }, + }; const { getByTestId } = render( - + ); diff --git a/packages/kbn-expandable-flyout/src/provider.test.tsx b/packages/kbn-expandable-flyout/src/provider.test.tsx new file mode 100644 index 0000000000000..c6246eff9fa32 --- /dev/null +++ b/packages/kbn-expandable-flyout/src/provider.test.tsx @@ -0,0 +1,105 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { render } from '@testing-library/react'; +import { TestProvider } from './test/provider'; +import { UrlSynchronizer } from './provider'; +import * as actions from './actions'; +import { State } from './state'; +import { of } from 'rxjs'; + +const mockGet = jest.fn(); +const mockSet = jest.fn(); +const mockChange$ = jest.fn().mockReturnValue(of({})); +jest.mock('@kbn/kibana-utils-plugin/public'); +const { createKbnUrlStateStorage } = jest.requireMock('@kbn/kibana-utils-plugin/public'); + +const urlKey = 'urlKey'; + +describe('UrlSynchronizer', () => { + it(`should not dispatch any actions or update url if urlKey isn't passed`, () => { + const urlChangedAction = jest.spyOn(actions, 'urlChangedAction'); + + const initialState: State = { + byId: { + [urlKey]: { + right: { id: 'key1' }, + left: { id: 'key11' }, + preview: undefined, + }, + }, + needsSync: true, + }; + + render( + + + + ); + + expect(urlChangedAction).not.toHaveBeenCalled(); + expect(mockSet).not.toHaveBeenCalled(); + }); + + it('should update url if no panels exist', () => { + (createKbnUrlStateStorage as jest.Mock).mockReturnValue({ + get: mockGet, + set: mockSet, + change$: mockChange$, + }); + const initialState: State = { + byId: {}, + needsSync: true, + }; + + render( + + + + ); + + expect(mockSet).toHaveBeenCalledWith('urlKey', { + left: undefined, + right: undefined, + preview: undefined, + }); + }); + + it('should dispatch action and update url with the correct value', () => { + const urlChangedAction = jest.spyOn(actions, 'urlChangedAction'); + + (createKbnUrlStateStorage as jest.Mock).mockReturnValue({ + get: mockGet, + set: mockSet, + change$: mockChange$, + }); + const initialState: State = { + byId: { + [urlKey]: { + right: { id: 'key1' }, + left: { id: 'key2' }, + preview: undefined, + }, + }, + needsSync: true, + }; + + render( + + + + ); + + expect(urlChangedAction).toHaveBeenCalledWith({ + id: urlKey, + preview: undefined, + }); + expect(mockSet).toHaveBeenCalled(); + }); +}); diff --git a/packages/kbn-expandable-flyout/src/provider.tsx b/packages/kbn-expandable-flyout/src/provider.tsx index ba18bd189f6e4..d88df39ab61eb 100644 --- a/packages/kbn-expandable-flyout/src/provider.tsx +++ b/packages/kbn-expandable-flyout/src/provider.tsx @@ -9,21 +9,20 @@ import { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; import React, { FC, PropsWithChildren, useEffect, useMemo } from 'react'; import { Provider as ReduxProvider } from 'react-redux'; - import { useHistory } from 'react-router-dom'; -import { State } from './state'; +import { ExpandableFlyoutContextProvider, useExpandableFlyoutContext } from './context'; +import { FlyoutState } from './state'; import { useExpandableFlyoutState } from './hooks/use_expandable_flyout_state'; -import { EXPANDABLE_FLYOUT_URL_KEY } from './constants'; -import { Context, store, useDispatch } from './redux'; +import { Context, selectNeedsSync, store, useDispatch, useSelector } from './redux'; import { urlChangedAction } from './actions'; -export type ExpandableFlyoutStorageMode = 'memory' | 'url'; - /** * Dispatches actions when url state changes and initializes the state when the app is loaded with flyout url parameters */ -const UrlSynchronizer = () => { - const state = useExpandableFlyoutState(); +export const UrlSynchronizer = () => { + const { urlKey } = useExpandableFlyoutContext(); + const panels = useExpandableFlyoutState(); + const needsSync = useSelector(selectNeedsSync()); const dispatch = useDispatch(); const history = useHistory(); @@ -39,56 +38,64 @@ const UrlSynchronizer = () => { ); useEffect(() => { - const currentValue = urlStorage.get(EXPANDABLE_FLYOUT_URL_KEY); + if (!urlKey) { + return; + } + + const currentValue = urlStorage.get(urlKey); // Dispatch current value to redux store as it does not happen automatically if (currentValue) { - dispatch(urlChangedAction({ ...currentValue, preview: currentValue?.preview[0] })); + dispatch( + urlChangedAction({ + ...currentValue, + preview: currentValue?.preview?.[0], + id: urlKey, + }) + ); } - const subscription = urlStorage.change$(EXPANDABLE_FLYOUT_URL_KEY).subscribe((value) => { - dispatch(urlChangedAction({ ...value, preview: value?.preview?.[0] })); + const subscription = urlStorage.change$(urlKey).subscribe((value) => { + dispatch(urlChangedAction({ ...value, preview: value?.preview?.[0], id: urlKey })); }); return () => subscription.unsubscribe(); - }, [dispatch, urlStorage]); + }, [dispatch, urlKey, urlStorage]); useEffect(() => { - const { needsSync, ...stateToSync } = state; - - if (needsSync) { - urlStorage.set(EXPANDABLE_FLYOUT_URL_KEY, stateToSync); + if (!needsSync || !panels || !urlKey) { + return; } - }, [urlStorage, state]); + + const { left, right, preview } = panels; + urlStorage.set(urlKey, { left, right, preview }); + }, [needsSync, panels, urlKey, urlStorage]); return null; }; interface ExpandableFlyoutProviderProps { /** - * This allows the user to choose how the flyout storage is handled. - * Url storage syncs current values straight to the browser query string. + * Unique key to be used as url parameter to store the state of the flyout. + * Providing this will save the state of the flyout in the url. + * The word `memory` is reserved, do NOT use it! */ - storage?: ExpandableFlyoutStorageMode; + urlKey?: string; } /** * Wrap your plugin with this context for the ExpandableFlyout React component. - * Storage property allows you to specify how the flyout state works internally. - * With "url", it will be persisted into url and thus allow for deep linking & will survive webpage reloads. - * "memory" is based on an isolated redux context. The state is saved internally to the package, which means it will not be - * persisted when sharing url or reloading browser pages. */ export const ExpandableFlyoutProvider: FC> = ({ children, - storage = 'url', + urlKey, }) => { return ( - - <> - {storage === 'url' ? : null} + + + {urlKey ? : null} {children} - - + + ); }; diff --git a/packages/kbn-expandable-flyout/src/reducer.test.ts b/packages/kbn-expandable-flyout/src/reducer.test.ts index db18fbee3e2d7..df03d9277f946 100644 --- a/packages/kbn-expandable-flyout/src/reducer.test.ts +++ b/packages/kbn-expandable-flyout/src/reducer.test.ts @@ -21,6 +21,8 @@ import { previousPreviewPanelAction, } from './actions'; +const id1 = 'id1'; +const id2 = 'id2'; const rightPanel1: FlyoutPanelProps = { id: 'right1', path: { tab: 'tab' }, @@ -54,53 +56,109 @@ describe('reducer', () => { right: rightPanel1, left: leftPanel1, preview: previewPanel1, + id: id1, }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, needsSync: true, }); }); it('should override all panels in the state', () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1, { id: 'preview' }], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1, { id: 'preview' }], + }, + }, }; const action = openPanelsAction({ right: rightPanel2, left: leftPanel2, preview: previewPanel2, + id: id1, }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: leftPanel2, - right: rightPanel2, - preview: [previewPanel2], + byId: { + [id1]: { + left: leftPanel2, + right: rightPanel2, + preview: [previewPanel2], + }, + }, needsSync: true, }); }); it('should remove all panels despite only passing a single section ', () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, }; const action = openPanelsAction({ right: rightPanel2, + id: id1, }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: undefined, + byId: { + [id1]: { + left: undefined, + right: rightPanel2, + preview: undefined, + }, + }, + needsSync: true, + }); + }); + + it('should add panels to a new key', () => { + const state: State = { + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, + }; + const action = openPanelsAction({ right: rightPanel2, - preview: [], + id: id2, + }); + const newState: State = reducer(state, action); + + expect(newState).toEqual({ + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + [id2]: { + left: undefined, + right: rightPanel2, + preview: undefined, + }, + }, needsSync: true, }); }); @@ -109,30 +167,72 @@ describe('reducer', () => { describe('should handle openRightPanel action', () => { it('should add right panel to empty state', () => { const state: State = initialState; - const action = openRightPanelAction(rightPanel1); + const action = openRightPanelAction({ right: rightPanel1, id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: undefined, - right: rightPanel1, - preview: [], + byId: { + [id1]: { + left: undefined, + right: rightPanel1, + preview: undefined, + }, + }, needsSync: true, }); }); it('should replace right panel', () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, }; - const action = openRightPanelAction(rightPanel2); + const action = openRightPanelAction({ right: rightPanel2, id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: leftPanel1, - right: rightPanel2, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel2, + preview: [previewPanel1], + }, + }, + needsSync: true, + }); + }); + + it('should add right panel to a different key', () => { + const state: State = { + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, + }; + const action = openRightPanelAction({ right: rightPanel2, id: id2 }); + const newState: State = reducer(state, action); + + expect(newState).toEqual({ + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + [id2]: { + left: undefined, + right: rightPanel2, + preview: undefined, + }, + }, needsSync: true, }); }); @@ -141,30 +241,72 @@ describe('reducer', () => { describe('should handle openLeftPanel action', () => { it('should add left panel to empty state', () => { const state: State = initialState; - const action = openLeftPanelAction(leftPanel1); + const action = openLeftPanelAction({ left: leftPanel1, id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: leftPanel1, - right: undefined, - preview: [], + byId: { + [id1]: { + left: leftPanel1, + right: undefined, + preview: undefined, + }, + }, needsSync: true, }); }); it('should replace only left panel', () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, }; - const action = openLeftPanelAction(leftPanel2); + const action = openLeftPanelAction({ left: leftPanel2, id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: leftPanel2, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel2, + right: rightPanel1, + preview: [previewPanel1], + }, + }, + needsSync: true, + }); + }); + + it('should add left panel to a different key', () => { + const state: State = { + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, + }; + const action = openLeftPanelAction({ left: leftPanel2, id: id2 }); + const newState: State = reducer(state, action); + + expect(newState).toEqual({ + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + [id2]: { + left: leftPanel2, + right: undefined, + preview: undefined, + }, + }, needsSync: true, }); }); @@ -173,30 +315,72 @@ describe('reducer', () => { describe('should handle openPreviewPanel action', () => { it('should add preview panel to empty state', () => { const state: State = initialState; - const action = openPreviewPanelAction(previewPanel1); + const action = openPreviewPanelAction({ preview: previewPanel1, id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: undefined, - right: undefined, - preview: [previewPanel1], + byId: { + [id1]: { + left: undefined, + right: undefined, + preview: [previewPanel1], + }, + }, needsSync: true, }); }); it('should add preview panel to the list of preview panels', () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, }; - const action = openPreviewPanelAction(previewPanel2); + const action = openPreviewPanelAction({ preview: previewPanel2, id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1, previewPanel2], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1, previewPanel2], + }, + }, + needsSync: true, + }); + }); + + it('should add preview panel to a different key', () => { + const state: State = { + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, + }; + const action = openPreviewPanelAction({ preview: previewPanel2, id: id2 }); + const newState: State = reducer(state, action); + + expect(newState).toEqual({ + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + [id2]: { + left: undefined, + right: undefined, + preview: [previewPanel2], + }, + }, needsSync: true, }); }); @@ -205,7 +389,7 @@ describe('reducer', () => { describe('should handle closeRightPanel action', () => { it('should return empty state when removing right panel from empty state', () => { const state: State = initialState; - const action = closeRightPanelAction(); + const action = closeRightPanelAction({ id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ ...state, needsSync: true }); @@ -213,31 +397,68 @@ describe('reducer', () => { it(`should return unmodified state when removing right panel when no right panel exist`, () => { const state: State = { - left: leftPanel1, - right: undefined, - preview: [previewPanel1], - needsSync: true, + byId: { + [id1]: { + left: leftPanel1, + right: undefined, + preview: [previewPanel1], + }, + }, }; - const action = closeRightPanelAction(); + const action = closeRightPanelAction({ id: id1 }); const newState: State = reducer(state, action); - expect(newState).toEqual(state); + expect(newState).toEqual({ ...state, needsSync: true }); }); it('should remove right panel', () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, }; - const action = closeRightPanelAction(); + const action = closeRightPanelAction({ id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: leftPanel1, - right: undefined, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel1, + right: undefined, + preview: [previewPanel1], + }, + }, + needsSync: true, + }); + }); + + it('should not remove right panel for a different key', () => { + const state: State = { + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, + }; + const action = closeRightPanelAction({ id: id2 }); + + const newState: State = reducer(state, action); + + expect(newState).toEqual({ + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, needsSync: true, }); }); @@ -246,7 +467,7 @@ describe('reducer', () => { describe('should handle closeLeftPanel action', () => { it('should return empty state when removing left panel on empty state', () => { const state: State = initialState; - const action = closeLeftPanelAction(); + const action = closeLeftPanelAction({ id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ ...state, needsSync: true }); @@ -254,30 +475,66 @@ describe('reducer', () => { it(`should return unmodified state when removing left panel when no left panel exist`, () => { const state: State = { - left: undefined, - right: rightPanel1, - preview: [], - needsSync: true, + byId: { + [id1]: { + left: undefined, + right: rightPanel1, + preview: [previewPanel1], + }, + }, }; - const action = closeLeftPanelAction(); + const action = closeLeftPanelAction({ id: id1 }); const newState: State = reducer(state, action); - expect(newState).toEqual(state); + expect(newState).toEqual({ ...state, needsSync: true }); }); it('should remove left panel', () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, }; - const action = closeLeftPanelAction(); + const action = closeLeftPanelAction({ id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: undefined, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: undefined, + right: rightPanel1, + preview: [previewPanel1], + }, + }, + needsSync: true, + }); + }); + + it('should not remove left panel for a different key', () => { + const state: State = { + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, + }; + const action = closeLeftPanelAction({ id: id2 }); + const newState: State = reducer(state, action); + + expect(newState).toEqual({ + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, needsSync: true, }); }); @@ -285,20 +542,24 @@ describe('reducer', () => { describe('should handle closePreviewPanel action', () => { it('should return empty state when removing preview panel on empty state', () => { - const state: State = { ...initialState, needsSync: true }; - const action = closePreviewPanelAction(); + const state: State = initialState; + const action = closePreviewPanelAction({ id: id1 }); const newState: State = reducer(state, action); - expect(newState).toEqual(state); + expect(newState).toEqual({ ...state, needsSync: true }); }); it(`should return unmodified state when removing preview panel when no preview panel exist`, () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: undefined, + }, + }, }; - const action = closePreviewPanelAction(); + const action = closePreviewPanelAction({ id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ ...state, needsSync: true }); @@ -306,17 +567,50 @@ describe('reducer', () => { it('should remove all preview panels', () => { const state: State = { - left: rightPanel1, - right: leftPanel1, - preview: [previewPanel1, previewPanel2], + byId: { + [id1]: { + left: rightPanel1, + right: leftPanel1, + preview: [previewPanel1, previewPanel2], + }, + }, + }; + const action = closePreviewPanelAction({ id: id1 }); + const newState: State = reducer(state, action); + + expect(newState).toEqual({ + byId: { + [id1]: { + left: rightPanel1, + right: leftPanel1, + preview: undefined, + }, + }, + needsSync: true, + }); + }); + + it('should not remove preview panels for a different key', () => { + const state: State = { + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, }; - const action = closePreviewPanelAction(); + const action = closePreviewPanelAction({ id: id2 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: rightPanel1, - right: leftPanel1, - preview: [], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, needsSync: true, }); }); @@ -325,7 +619,7 @@ describe('reducer', () => { describe('should handle previousPreviewPanel action', () => { it('should return empty state when previous preview panel on an empty state', () => { const state: State = initialState; - const action = previousPreviewPanelAction(); + const action = previousPreviewPanelAction({ id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ ...initialState, needsSync: true }); @@ -333,30 +627,66 @@ describe('reducer', () => { it(`should return unmodified state when previous preview panel when no preview panel exist`, () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [], - needsSync: true, + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: undefined, + }, + }, }; - const action = previousPreviewPanelAction(); + const action = previousPreviewPanelAction({ id: id1 }); const newState: State = reducer(state, action); - expect(newState).toEqual(state); + expect(newState).toEqual({ ...state, needsSync: true }); }); it('should remove only last preview panel', () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1, previewPanel2], + byId: { + [id1]: { + left: rightPanel1, + right: leftPanel1, + preview: [previewPanel1, previewPanel2], + }, + }, }; - const action = previousPreviewPanelAction(); + const action = previousPreviewPanelAction({ id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: rightPanel1, + right: leftPanel1, + preview: [previewPanel1], + }, + }, + needsSync: true, + }); + }); + + it('should not remove the last preview panel for a different key', () => { + const state: State = { + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, + }; + const action = previousPreviewPanelAction({ id: id2 }); + const newState: State = reducer(state, action); + + expect(newState).toEqual({ + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, needsSync: true, }); }); @@ -365,7 +695,7 @@ describe('reducer', () => { describe('should handle closeFlyout action', () => { it('should return empty state when closing flyout on an empty state', () => { const state: State = initialState; - const action = closePanelsAction(); + const action = closePanelsAction({ id: id1 }); const newState: State = reducer(state, action); expect(newState).toEqual({ ...initialState, needsSync: true }); @@ -373,17 +703,50 @@ describe('reducer', () => { it('should remove all panels', () => { const state: State = { - left: leftPanel1, - right: rightPanel1, - preview: [previewPanel1], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, + }; + const action = closePanelsAction({ id: id1 }); + const newState: State = reducer(state, action); + + expect(newState).toEqual({ + byId: { + [id1]: { + left: undefined, + right: undefined, + preview: undefined, + }, + }, + needsSync: true, + }); + }); + + it('should not remove panels for a different key', () => { + const state: State = { + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, }; - const action = closePanelsAction(); + const action = closePanelsAction({ id: id2 }); const newState: State = reducer(state, action); expect(newState).toEqual({ - left: undefined, - right: undefined, - preview: [], + byId: { + [id1]: { + left: leftPanel1, + right: rightPanel1, + preview: [previewPanel1], + }, + }, needsSync: true, }); }); diff --git a/packages/kbn-expandable-flyout/src/reducer.ts b/packages/kbn-expandable-flyout/src/reducer.ts index 198f99d2785a6..617ad5e3a7c95 100644 --- a/packages/kbn-expandable-flyout/src/reducer.ts +++ b/packages/kbn-expandable-flyout/src/reducer.ts @@ -22,61 +22,123 @@ import { import { initialState } from './state'; export const reducer = createReducer(initialState, (builder) => { - builder.addCase(openPanelsAction, (state, { payload: { preview, left, right } }) => { - state.preview = preview ? [preview] : []; - state.right = right; - state.left = left; + builder.addCase(openPanelsAction, (state, { payload: { preview, left, right, id } }) => { + if (id in state.byId) { + state.byId[id].right = right; + state.byId[id].left = left; + state.byId[id].preview = preview ? [preview] : undefined; + } else { + state.byId[id] = { + left, + right, + preview: preview ? [preview] : undefined, + }; + } + state.needsSync = true; }); - builder.addCase(openLeftPanelAction, (state, { payload }) => { - state.left = payload; + builder.addCase(openLeftPanelAction, (state, { payload: { left, id } }) => { + if (id in state.byId) { + state.byId[id].left = left; + } else { + state.byId[id] = { + left, + right: undefined, + preview: undefined, + }; + } + state.needsSync = true; }); - builder.addCase(openRightPanelAction, (state, { payload }) => { - state.right = payload; + builder.addCase(openRightPanelAction, (state, { payload: { right, id } }) => { + if (id in state.byId) { + state.byId[id].right = right; + } else { + state.byId[id] = { + right, + left: undefined, + preview: undefined, + }; + } + state.needsSync = true; }); - builder.addCase(openPreviewPanelAction, (state, { payload }) => { - state.preview.push(payload); + builder.addCase(openPreviewPanelAction, (state, { payload: { preview, id } }) => { + if (id in state.byId) { + if (state.byId[id].preview) { + state.byId[id].preview?.push(preview); + } else { + state.byId[id].preview = preview ? [preview] : undefined; + } + } else { + state.byId[id] = { + right: undefined, + left: undefined, + preview: preview ? [preview] : undefined, + }; + } + state.needsSync = true; }); - builder.addCase(previousPreviewPanelAction, (state) => { - state.preview.pop(); + builder.addCase(previousPreviewPanelAction, (state, { payload: { id } }) => { + if (id in state.byId) { + state.byId[id].preview?.pop(); + } + state.needsSync = true; }); - builder.addCase(closePanelsAction, (state) => { - state.preview = []; - state.right = undefined; - state.left = undefined; + builder.addCase(closePanelsAction, (state, { payload: { id } }) => { + if (id in state.byId) { + state.byId[id].right = undefined; + state.byId[id].left = undefined; + state.byId[id].preview = undefined; + } + state.needsSync = true; }); - builder.addCase(closeLeftPanelAction, (state) => { - state.left = undefined; + builder.addCase(closeLeftPanelAction, (state, { payload: { id } }) => { + if (id in state.byId) { + state.byId[id].left = undefined; + } + state.needsSync = true; }); - builder.addCase(closeRightPanelAction, (state) => { - state.right = undefined; + builder.addCase(closeRightPanelAction, (state, { payload: { id } }) => { + if (id in state.byId) { + state.byId[id].right = undefined; + } + state.needsSync = true; }); - builder.addCase(closePreviewPanelAction, (state) => { - state.preview = []; + builder.addCase(closePreviewPanelAction, (state, { payload: { id } }) => { + if (id in state.byId) { + state.byId[id].preview = undefined; + } + state.needsSync = true; }); - builder.addCase(urlChangedAction, (state, { payload: { preview, left, right } }) => { - state.needsSync = false; - state.preview = preview ? [preview] : []; - state.left = left; - state.right = right; + builder.addCase(urlChangedAction, (state, { payload: { preview, left, right, id } }) => { + if (id in state.byId) { + state.byId[id].right = right; + state.byId[id].left = left; + state.byId[id].preview = preview ? [preview] : undefined; + } else { + state.byId[id] = { + right, + left, + preview: preview ? [preview] : undefined, + }; + } - return state; + state.needsSync = false; }); }); diff --git a/packages/kbn-expandable-flyout/src/redux.ts b/packages/kbn-expandable-flyout/src/redux.ts index d1f9d63c8a1a7..879e812ebcbea 100644 --- a/packages/kbn-expandable-flyout/src/redux.ts +++ b/packages/kbn-expandable-flyout/src/redux.ts @@ -9,6 +9,7 @@ import { createContext } from 'react'; import { createDispatchHook, createSelectorHook, ReactReduxContextValue } from 'react-redux'; import { configureStore } from '@reduxjs/toolkit'; +import { createSelector } from 'reselect'; import { reducer } from './reducer'; import { initialState, State } from './state'; @@ -26,4 +27,9 @@ export const Context = createContext>({ export const useDispatch = createDispatchHook(Context); export const useSelector = createSelectorHook(Context); -export const stateSelector = (state: State) => state; +const stateSelector = (state: State) => state; + +export const selectPanelsById = (id: string) => + createSelector(stateSelector, (state) => state.byId[id] || {}); + +export const selectNeedsSync = () => createSelector(stateSelector, (state) => state.needsSync); diff --git a/packages/kbn-expandable-flyout/src/state.ts b/packages/kbn-expandable-flyout/src/state.ts index 2724194759b2b..fa2be0dd103cb 100644 --- a/packages/kbn-expandable-flyout/src/state.ts +++ b/packages/kbn-expandable-flyout/src/state.ts @@ -8,7 +8,7 @@ import { FlyoutPanelProps } from './types'; -export interface State { +export interface FlyoutState { /** * Panel to render in the left section */ @@ -20,8 +20,16 @@ export interface State { /** * Panels to render in the preview section */ - preview: FlyoutPanelProps[]; + preview: FlyoutPanelProps[] | undefined; +} +export interface State { + /** + * Store the panels for multiple flyouts + */ + byId: { + [id: string]: FlyoutState; + }; /** * Is the flyout in sync with external storage (eg. url)? * This value can be used in useEffect for example, to control whether we should @@ -31,8 +39,6 @@ export interface State { } export const initialState: State = { - left: undefined, - right: undefined, - preview: [], + byId: {}, needsSync: false, }; diff --git a/packages/kbn-expandable-flyout/src/test/provider.tsx b/packages/kbn-expandable-flyout/src/test/provider.tsx index 448b36e0b3d30..896b563056206 100644 --- a/packages/kbn-expandable-flyout/src/test/provider.tsx +++ b/packages/kbn-expandable-flyout/src/test/provider.tsx @@ -9,17 +9,20 @@ import { Provider as ReduxProvider } from 'react-redux'; import { configureStore } from '@reduxjs/toolkit'; import React, { FC, PropsWithChildren } from 'react'; +import { ExpandableFlyoutContextProvider } from '../context'; import { reducer } from '../reducer'; import { Context } from '../redux'; import { initialState, State } from '../state'; interface TestProviderProps { state?: State; + urlKey?: string; } export const TestProvider: FC> = ({ children, state = initialState, + urlKey, }) => { const store = configureStore({ reducer, @@ -29,8 +32,10 @@ export const TestProvider: FC> = ({ }); return ( - - {children} - + + + {children} + + ); }; diff --git a/packages/kbn-ftr-common-functional-ui-services/services/all.ts b/packages/kbn-ftr-common-functional-ui-services/services/all.ts index 313aa6eb0b71f..bffa7468e14ea 100644 --- a/packages/kbn-ftr-common-functional-ui-services/services/all.ts +++ b/packages/kbn-ftr-common-functional-ui-services/services/all.ts @@ -11,6 +11,7 @@ import { RemoteProvider } from './remote'; import { FindProvider } from './find'; import { TestSubjects } from './test_subjects'; import { BrowserProvider } from './browser'; +import { ToastsService } from './toasts'; export const services = { retryOnStale: RetryOnStaleProvider, @@ -18,4 +19,5 @@ export const services = { find: FindProvider, testSubjects: TestSubjects, browser: BrowserProvider, + toasts: ToastsService, }; diff --git a/packages/kbn-ftr-common-functional-ui-services/services/toasts.ts b/packages/kbn-ftr-common-functional-ui-services/services/toasts.ts new file mode 100644 index 0000000000000..e13ec28ff61d5 --- /dev/null +++ b/packages/kbn-ftr-common-functional-ui-services/services/toasts.ts @@ -0,0 +1,156 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; +import { FtrService } from './ftr_provider_context'; +import { WebElementWrapper } from './web_element_wrapper'; + +export class ToastsService extends FtrService { + private readonly testSubjects = this.ctx.getService('testSubjects'); + private readonly retry = this.ctx.getService('retry'); + private readonly find = this.ctx.getService('find'); + private readonly config = this.ctx.getService('config'); + private readonly defaultFindTimeout = this.config.get('timeouts.find'); + /** + * Returns the title and message of a specific error toast. + * This method is specific to toasts created via `.addError` since they contain + * an additional button, that should not be part of the message. + * + * @param index The index of the toast (1-based, NOT 0-based!) of the toast. Use first by default. + * @param titleOnly If this is true, only the title of the error message is returned. There are error messages that only contain a title, no message. + * @returns The title and message of the specified error toast. + */ + public async getErrorByIndex( + index: number = 1, + titleOnly: boolean = false + ): Promise<{ title: string; message?: string }> { + const title = await this.getTitleByIndex(index); + if (titleOnly) return { title }; + + const toast = await this.getElementByIndex(index); + const messageElement = await this.testSubjects.findDescendant('errorToastMessage', toast); + const message: string = await messageElement.getVisibleText(); + + return { title, message }; + } + + public async toastMessageByTestSubj(testSubj = 'csp:toast-success') { + const testSubjSvc = this.testSubjects; + return { + async getElement(): Promise { + return await testSubjSvc.find(testSubj); + }, + async clickToastMessageLink(linkTestSubj = 'csp:toast-success-link') { + const element = await this.getElement(); + const link = await element.findByTestSubject(linkTestSubj); + await link.click(); + }, + }; + } + + /** + * Dismiss a specific toast from the toast list. Since toasts usually should time out themselves, + * you only need to call this for permanent toasts (e.g. error toasts). + * + * @param index The 1-based index of the toast to dismiss. Use first by default. + */ + public async dismissByIndex(index: number = 1): Promise { + const toast = await this.getElementByIndex(index); + await toast.moveMouseTo(); + const dismissButton = await this.testSubjects.findDescendant('toastCloseButton', toast); + await dismissButton.click(); + } + + public async dismissIfExists(): Promise { + const toastShown = await this.find.existsByCssSelector('.euiToast'); + if (toastShown) { + try { + await this.testSubjects.click('toastCloseButton'); + } catch (err) { + // ignore errors, toast clear themselves after timeout + } + } + } + + public async getTitleAndDismiss(): Promise { + const toast = await this.find.byCssSelector('.euiToast', 6 * this.defaultFindTimeout); + await toast.moveMouseTo(); + const title = await (await this.testSubjects.find('euiToastHeader__title')).getVisibleText(); + + await this.testSubjects.click('toastCloseButton'); + return title; + } + + public async dismiss(): Promise { + await this.testSubjects.click('toastCloseButton', 6 * this.defaultFindTimeout); + } + + public async dismissAll(): Promise { + const allToastElements = await this.getAll(); + + if (allToastElements.length === 0) return; + + for (const toastElement of allToastElements) { + try { + await toastElement.moveMouseTo(); + const closeBtn = await toastElement.findByTestSubject('toastCloseButton'); + await closeBtn.click(); + } catch (err) { + // ignore errors, toast clear themselves after timeout + } + } + } + + public async dismissAllWithChecks(): Promise { + await this.retry.tryForTime(30 * 1000, async (): Promise => { + await this.dismissAll(); + await this.assertCount(0); + }); + } + + public async assertCount(expectedCount: number): Promise { + await this.retry.tryForTime(5 * 1000, async (): Promise => { + const toastCount = await this.getCount({ timeout: 1000 }); + expect(toastCount).to.eql( + expectedCount, + `Toast count should be ${expectedCount} (got ${toastCount})` + ); + }); + } + + public async getElementByIndex(index: number): Promise { + return await (await this.getGlobalList()).findByCssSelector(`.euiToast:nth-child(${index})`); + } + + public async getTitleByIndex(index: number): Promise { + const resultToast = await this.getElementByIndex(index); + const titleElement = await this.testSubjects.findDescendant('euiToastHeader', resultToast); + const title: string = await titleElement.getVisibleText(); + return title; + } + + public async getContentByIndex(index: number): Promise { + const elem = await this.getElementByIndex(index); + return await elem.getVisibleText(); + } + + public async getAll(): Promise { + const list = await this.getGlobalList(); + return await list.findAllByCssSelector(`.euiToast`); + } + + private async getGlobalList(options?: { timeout?: number }): Promise { + return await this.testSubjects.find('globalToastList', options?.timeout); + } + + public async getCount(options?: { timeout?: number }): Promise { + const list = await this.getGlobalList(options); + const toasts = await list.findAllByCssSelector(`.euiToast`, options?.timeout); + return toasts.length; + } +} diff --git a/packages/kbn-ftr-common-functional-ui-services/tsconfig.json b/packages/kbn-ftr-common-functional-ui-services/tsconfig.json index ccba7988041f7..555e696f0ca51 100644 --- a/packages/kbn-ftr-common-functional-ui-services/tsconfig.json +++ b/packages/kbn-ftr-common-functional-ui-services/tsconfig.json @@ -12,6 +12,7 @@ "@kbn/repo-info", "@kbn/test-subj-selector", "@kbn/ftr-common-functional-services", - "@kbn/std" + "@kbn/std", + "@kbn/expect" ] } diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.g4 b/packages/kbn-monaco/src/esql/antlr/esql_lexer.g4 index 82fba96eeed10..76f846284b439 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_lexer.g4 +++ b/packages/kbn-monaco/src/esql/antlr/esql_lexer.g4 @@ -165,10 +165,14 @@ UNQUOTED_IDENTIFIER | (UNDERSCORE | ASPERAND) UNQUOTED_ID_BODY+ ; -QUOTED_IDENTIFIER +fragment QUOTED_ID : BACKQUOTE BACKQUOTE_BLOCK+ BACKQUOTE ; +QUOTED_IDENTIFIER + : QUOTED_ID + ; + EXPR_LINE_COMMENT : LINE_COMMENT -> channel(HIDDEN) ; @@ -228,17 +232,13 @@ fragment UNQUOTED_ID_BODY_WITH_PATTERN : (LETTER | DIGIT | UNDERSCORE | ASTERISK) ; -UNQUOTED_ID_PATTERN +fragment UNQUOTED_ID_PATTERN : (LETTER | ASTERISK) UNQUOTED_ID_BODY_WITH_PATTERN* | (UNDERSCORE | ASPERAND) UNQUOTED_ID_BODY_WITH_PATTERN+ ; -PROJECT_UNQUOTED_IDENTIFIER - : UNQUOTED_ID_PATTERN -> type(UNQUOTED_ID_PATTERN) - ; - -PROJECT_QUOTED_IDENTIFIER - : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER) +ID_PATTERN + : (UNQUOTED_ID_PATTERN | QUOTED_ID)+ ; PROJECT_LINE_COMMENT @@ -263,13 +263,8 @@ RENAME_DOT: DOT -> type(DOT); AS : A S; -RENAME_QUOTED_IDENTIFIER - : QUOTED_IDENTIFIER -> type(QUOTED_IDENTIFIER) - ; - -// use the unquoted pattern to let the parser invalidate fields with * -RENAME_UNQUOTED_IDENTIFIER - : UNQUOTED_ID_PATTERN -> type(UNQUOTED_ID_PATTERN) +RENAME_ID_PATTERN + : ID_PATTERN -> type(ID_PATTERN) ; RENAME_LINE_COMMENT @@ -331,8 +326,8 @@ ENRICH_FIELD_DOT: DOT -> type(DOT); ENRICH_FIELD_WITH : WITH -> type(WITH) ; -ENRICH_FIELD_UNQUOTED_IDENTIFIER - : UNQUOTED_ID_PATTERN -> type(UNQUOTED_ID_PATTERN) +ENRICH_FIELD_ID_PATTERN + : ID_PATTERN -> type(ID_PATTERN) ; ENRICH_FIELD_QUOTED_IDENTIFIER diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.interp b/packages/kbn-monaco/src/esql/antlr/esql_lexer.interp index 94bd0af8ab463..6c2e53ac67cdc 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_lexer.interp +++ b/packages/kbn-monaco/src/esql/antlr/esql_lexer.interp @@ -181,7 +181,7 @@ FROM_UNQUOTED_IDENTIFIER FROM_LINE_COMMENT FROM_MULTILINE_COMMENT FROM_WS -UNQUOTED_ID_PATTERN +ID_PATTERN PROJECT_LINE_COMMENT PROJECT_MULTILINE_COMMENT PROJECT_WS @@ -290,6 +290,7 @@ PERCENT OPENING_BRACKET CLOSING_BRACKET UNQUOTED_IDENTIFIER +QUOTED_ID QUOTED_IDENTIFIER EXPR_LINE_COMMENT EXPR_MULTILINE_COMMENT @@ -311,8 +312,7 @@ PROJECT_DOT PROJECT_COMMA UNQUOTED_ID_BODY_WITH_PATTERN UNQUOTED_ID_PATTERN -PROJECT_UNQUOTED_IDENTIFIER -PROJECT_QUOTED_IDENTIFIER +ID_PATTERN PROJECT_LINE_COMMENT PROJECT_MULTILINE_COMMENT PROJECT_WS @@ -321,8 +321,7 @@ RENAME_ASSIGN RENAME_COMMA RENAME_DOT AS -RENAME_QUOTED_IDENTIFIER -RENAME_UNQUOTED_IDENTIFIER +RENAME_ID_PATTERN RENAME_LINE_COMMENT RENAME_MULTILINE_COMMENT RENAME_WS @@ -342,7 +341,7 @@ ENRICH_FIELD_ASSIGN ENRICH_FIELD_COMMA ENRICH_FIELD_DOT ENRICH_FIELD_WITH -ENRICH_FIELD_UNQUOTED_IDENTIFIER +ENRICH_FIELD_ID_PATTERN ENRICH_FIELD_QUOTED_IDENTIFIER ENRICH_FIELD_LINE_COMMENT ENRICH_FIELD_MULTILINE_COMMENT @@ -411,4 +410,4 @@ SHOW_MODE SETTING_MODE atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 106, 1259, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, 4, 179, 9, 179, 4, 180, 9, 180, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 6, 19, 516, 10, 19, 13, 19, 14, 19, 517, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 526, 10, 20, 12, 20, 14, 20, 529, 11, 20, 3, 20, 5, 20, 532, 10, 20, 3, 20, 5, 20, 535, 10, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 7, 21, 544, 10, 21, 12, 21, 14, 21, 547, 11, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 6, 22, 555, 10, 22, 13, 22, 14, 22, 556, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 5, 33, 598, 10, 33, 3, 33, 6, 33, 601, 10, 33, 13, 33, 14, 33, 602, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 5, 36, 612, 10, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 5, 38, 619, 10, 38, 3, 39, 3, 39, 3, 39, 7, 39, 624, 10, 39, 12, 39, 14, 39, 627, 11, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 635, 10, 39, 12, 39, 14, 39, 638, 11, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 645, 10, 39, 3, 39, 5, 39, 648, 10, 39, 5, 39, 650, 10, 39, 3, 40, 6, 40, 653, 10, 40, 13, 40, 14, 40, 654, 3, 41, 6, 41, 658, 10, 41, 13, 41, 14, 41, 659, 3, 41, 3, 41, 7, 41, 664, 10, 41, 12, 41, 14, 41, 667, 11, 41, 3, 41, 3, 41, 6, 41, 671, 10, 41, 13, 41, 14, 41, 672, 3, 41, 6, 41, 676, 10, 41, 13, 41, 14, 41, 677, 3, 41, 3, 41, 7, 41, 682, 10, 41, 12, 41, 14, 41, 685, 11, 41, 5, 41, 687, 10, 41, 3, 41, 3, 41, 3, 41, 3, 41, 6, 41, 693, 10, 41, 13, 41, 14, 41, 694, 3, 41, 3, 41, 5, 41, 699, 10, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 7, 78, 827, 10, 78, 12, 78, 14, 78, 830, 11, 78, 3, 78, 3, 78, 5, 78, 834, 10, 78, 3, 78, 6, 78, 837, 10, 78, 13, 78, 14, 78, 838, 5, 78, 841, 10, 78, 3, 79, 3, 79, 6, 79, 845, 10, 79, 13, 79, 14, 79, 846, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 5, 89, 896, 10, 89, 3, 90, 6, 90, 899, 10, 90, 13, 90, 14, 90, 900, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 5, 98, 936, 10, 98, 3, 99, 3, 99, 5, 99, 940, 10, 99, 3, 99, 7, 99, 943, 10, 99, 12, 99, 14, 99, 946, 11, 99, 3, 99, 3, 99, 5, 99, 950, 10, 99, 3, 99, 6, 99, 953, 10, 99, 13, 99, 14, 99, 954, 5, 99, 957, 10, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 119, 3, 119, 3, 120, 6, 120, 1044, 10, 120, 13, 120, 14, 120, 1045, 3, 120, 3, 120, 5, 120, 1050, 10, 120, 3, 120, 6, 120, 1053, 10, 120, 13, 120, 14, 120, 1054, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 125, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 128, 3, 128, 3, 128, 3, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 130, 3, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 134, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, 3, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 149, 3, 149, 3, 149, 3, 149, 3, 149, 3, 150, 3, 150, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 6, 151, 1192, 10, 151, 13, 151, 14, 151, 1193, 3, 152, 3, 152, 3, 152, 3, 152, 3, 153, 3, 153, 3, 153, 3, 153, 3, 154, 3, 154, 3, 154, 3, 154, 3, 155, 3, 155, 3, 156, 3, 156, 3, 157, 3, 157, 3, 158, 3, 158, 3, 159, 3, 159, 3, 160, 3, 160, 3, 161, 3, 161, 3, 162, 3, 162, 3, 163, 3, 163, 3, 164, 3, 164, 3, 165, 3, 165, 3, 166, 3, 166, 3, 167, 3, 167, 3, 168, 3, 168, 3, 169, 3, 169, 3, 170, 3, 170, 3, 171, 3, 171, 3, 172, 3, 172, 3, 173, 3, 173, 3, 174, 3, 174, 3, 175, 3, 175, 3, 176, 3, 176, 3, 177, 3, 177, 3, 178, 3, 178, 3, 179, 3, 179, 3, 180, 3, 180, 4, 545, 636, 2, 2, 181, 13, 2, 3, 15, 2, 4, 17, 2, 5, 19, 2, 6, 21, 2, 7, 23, 2, 8, 25, 2, 9, 27, 2, 10, 29, 2, 11, 31, 2, 12, 33, 2, 13, 35, 2, 14, 37, 2, 15, 39, 2, 16, 41, 2, 17, 43, 2, 18, 45, 2, 19, 47, 2, 20, 49, 2, 21, 51, 2, 22, 53, 2, 23, 55, 2, 2, 57, 2, 2, 59, 2, 24, 61, 2, 25, 63, 2, 26, 65, 2, 27, 67, 2, 2, 69, 2, 2, 71, 2, 2, 73, 2, 2, 75, 2, 2, 77, 2, 2, 79, 2, 2, 81, 2, 2, 83, 2, 2, 85, 2, 2, 87, 2, 28, 89, 2, 29, 91, 2, 30, 93, 2, 31, 95, 2, 32, 97, 2, 33, 99, 2, 34, 101, 2, 35, 103, 2, 36, 105, 2, 37, 107, 2, 38, 109, 2, 39, 111, 2, 40, 113, 2, 41, 115, 2, 42, 117, 2, 43, 119, 2, 44, 121, 2, 45, 123, 2, 46, 125, 2, 47, 127, 2, 48, 129, 2, 49, 131, 2, 50, 133, 2, 51, 135, 2, 52, 137, 2, 53, 139, 2, 54, 141, 2, 55, 143, 2, 56, 145, 2, 57, 147, 2, 58, 149, 2, 59, 151, 2, 60, 153, 2, 61, 155, 2, 62, 157, 2, 63, 159, 2, 64, 161, 2, 65, 163, 2, 66, 165, 2, 67, 167, 2, 68, 169, 2, 69, 171, 2, 70, 173, 2, 71, 175, 2, 2, 177, 2, 2, 179, 2, 2, 181, 2, 2, 183, 2, 2, 185, 2, 72, 187, 2, 2, 189, 2, 73, 191, 2, 2, 193, 2, 74, 195, 2, 75, 197, 2, 76, 199, 2, 2, 201, 2, 2, 203, 2, 2, 205, 2, 2, 207, 2, 77, 209, 2, 2, 211, 2, 2, 213, 2, 78, 215, 2, 79, 217, 2, 80, 219, 2, 2, 221, 2, 2, 223, 2, 2, 225, 2, 2, 227, 2, 81, 229, 2, 2, 231, 2, 2, 233, 2, 82, 235, 2, 83, 237, 2, 84, 239, 2, 2, 241, 2, 2, 243, 2, 85, 245, 2, 86, 247, 2, 2, 249, 2, 87, 251, 2, 2, 253, 2, 2, 255, 2, 88, 257, 2, 89, 259, 2, 90, 261, 2, 2, 263, 2, 2, 265, 2, 2, 267, 2, 2, 269, 2, 2, 271, 2, 2, 273, 2, 2, 275, 2, 91, 277, 2, 92, 279, 2, 93, 281, 2, 2, 283, 2, 2, 285, 2, 2, 287, 2, 2, 289, 2, 94, 291, 2, 95, 293, 2, 96, 295, 2, 2, 297, 2, 97, 299, 2, 98, 301, 2, 99, 303, 2, 100, 305, 2, 101, 307, 2, 2, 309, 2, 102, 311, 2, 103, 313, 2, 104, 315, 2, 105, 317, 2, 106, 319, 2, 2, 321, 2, 2, 323, 2, 2, 325, 2, 2, 327, 2, 2, 329, 2, 2, 331, 2, 2, 333, 2, 2, 335, 2, 2, 337, 2, 2, 339, 2, 2, 341, 2, 2, 343, 2, 2, 345, 2, 2, 347, 2, 2, 349, 2, 2, 351, 2, 2, 353, 2, 2, 355, 2, 2, 357, 2, 2, 359, 2, 2, 361, 2, 2, 363, 2, 2, 365, 2, 2, 367, 2, 2, 369, 2, 2, 13, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 40, 8, 2, 11, 12, 15, 15, 34, 34, 49, 49, 93, 93, 95, 95, 4, 2, 12, 12, 15, 15, 5, 2, 11, 12, 15, 15, 34, 34, 3, 2, 50, 59, 4, 2, 67, 92, 99, 124, 7, 2, 36, 36, 94, 94, 112, 112, 116, 116, 118, 118, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 3, 2, 98, 98, 12, 2, 11, 12, 15, 15, 34, 34, 46, 46, 49, 49, 63, 63, 93, 93, 95, 95, 98, 98, 126, 126, 4, 2, 44, 44, 49, 49, 13, 2, 11, 12, 15, 15, 34, 34, 36, 37, 46, 46, 49, 49, 60, 60, 62, 62, 64, 65, 94, 94, 126, 126, 4, 2, 67, 67, 99, 99, 4, 2, 68, 68, 100, 100, 4, 2, 69, 69, 101, 101, 4, 2, 70, 70, 102, 102, 4, 2, 72, 72, 104, 104, 4, 2, 73, 73, 105, 105, 4, 2, 74, 74, 106, 106, 4, 2, 75, 75, 107, 107, 4, 2, 76, 76, 108, 108, 4, 2, 77, 77, 109, 109, 4, 2, 78, 78, 110, 110, 4, 2, 79, 79, 111, 111, 4, 2, 80, 80, 112, 112, 4, 2, 81, 81, 113, 113, 4, 2, 82, 82, 114, 114, 4, 2, 83, 83, 115, 115, 4, 2, 84, 84, 116, 116, 4, 2, 85, 85, 117, 117, 4, 2, 86, 86, 118, 118, 4, 2, 87, 87, 119, 119, 4, 2, 88, 88, 120, 120, 4, 2, 89, 89, 121, 121, 4, 2, 90, 90, 122, 122, 4, 2, 91, 91, 123, 123, 4, 2, 92, 92, 124, 124, 2, 1261, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 3, 55, 3, 2, 2, 2, 3, 57, 3, 2, 2, 2, 3, 59, 3, 2, 2, 2, 3, 61, 3, 2, 2, 2, 3, 63, 3, 2, 2, 2, 4, 65, 3, 2, 2, 2, 4, 87, 3, 2, 2, 2, 4, 89, 3, 2, 2, 2, 4, 91, 3, 2, 2, 2, 4, 93, 3, 2, 2, 2, 4, 95, 3, 2, 2, 2, 4, 97, 3, 2, 2, 2, 4, 99, 3, 2, 2, 2, 4, 101, 3, 2, 2, 2, 4, 103, 3, 2, 2, 2, 4, 105, 3, 2, 2, 2, 4, 107, 3, 2, 2, 2, 4, 109, 3, 2, 2, 2, 4, 111, 3, 2, 2, 2, 4, 113, 3, 2, 2, 2, 4, 115, 3, 2, 2, 2, 4, 117, 3, 2, 2, 2, 4, 119, 3, 2, 2, 2, 4, 121, 3, 2, 2, 2, 4, 123, 3, 2, 2, 2, 4, 125, 3, 2, 2, 2, 4, 127, 3, 2, 2, 2, 4, 129, 3, 2, 2, 2, 4, 131, 3, 2, 2, 2, 4, 133, 3, 2, 2, 2, 4, 135, 3, 2, 2, 2, 4, 137, 3, 2, 2, 2, 4, 139, 3, 2, 2, 2, 4, 141, 3, 2, 2, 2, 4, 143, 3, 2, 2, 2, 4, 145, 3, 2, 2, 2, 4, 147, 3, 2, 2, 2, 4, 149, 3, 2, 2, 2, 4, 151, 3, 2, 2, 2, 4, 153, 3, 2, 2, 2, 4, 155, 3, 2, 2, 2, 4, 157, 3, 2, 2, 2, 4, 159, 3, 2, 2, 2, 4, 161, 3, 2, 2, 2, 4, 163, 3, 2, 2, 2, 4, 165, 3, 2, 2, 2, 4, 167, 3, 2, 2, 2, 4, 169, 3, 2, 2, 2, 4, 171, 3, 2, 2, 2, 4, 173, 3, 2, 2, 2, 5, 175, 3, 2, 2, 2, 5, 177, 3, 2, 2, 2, 5, 179, 3, 2, 2, 2, 5, 181, 3, 2, 2, 2, 5, 183, 3, 2, 2, 2, 5, 185, 3, 2, 2, 2, 5, 189, 3, 2, 2, 2, 5, 191, 3, 2, 2, 2, 5, 193, 3, 2, 2, 2, 5, 195, 3, 2, 2, 2, 5, 197, 3, 2, 2, 2, 6, 199, 3, 2, 2, 2, 6, 201, 3, 2, 2, 2, 6, 203, 3, 2, 2, 2, 6, 207, 3, 2, 2, 2, 6, 209, 3, 2, 2, 2, 6, 211, 3, 2, 2, 2, 6, 213, 3, 2, 2, 2, 6, 215, 3, 2, 2, 2, 6, 217, 3, 2, 2, 2, 7, 219, 3, 2, 2, 2, 7, 221, 3, 2, 2, 2, 7, 223, 3, 2, 2, 2, 7, 225, 3, 2, 2, 2, 7, 227, 3, 2, 2, 2, 7, 229, 3, 2, 2, 2, 7, 231, 3, 2, 2, 2, 7, 233, 3, 2, 2, 2, 7, 235, 3, 2, 2, 2, 7, 237, 3, 2, 2, 2, 8, 239, 3, 2, 2, 2, 8, 241, 3, 2, 2, 2, 8, 243, 3, 2, 2, 2, 8, 245, 3, 2, 2, 2, 8, 249, 3, 2, 2, 2, 8, 251, 3, 2, 2, 2, 8, 253, 3, 2, 2, 2, 8, 255, 3, 2, 2, 2, 8, 257, 3, 2, 2, 2, 8, 259, 3, 2, 2, 2, 9, 261, 3, 2, 2, 2, 9, 263, 3, 2, 2, 2, 9, 265, 3, 2, 2, 2, 9, 267, 3, 2, 2, 2, 9, 269, 3, 2, 2, 2, 9, 271, 3, 2, 2, 2, 9, 273, 3, 2, 2, 2, 9, 275, 3, 2, 2, 2, 9, 277, 3, 2, 2, 2, 9, 279, 3, 2, 2, 2, 10, 281, 3, 2, 2, 2, 10, 283, 3, 2, 2, 2, 10, 285, 3, 2, 2, 2, 10, 287, 3, 2, 2, 2, 10, 289, 3, 2, 2, 2, 10, 291, 3, 2, 2, 2, 10, 293, 3, 2, 2, 2, 11, 295, 3, 2, 2, 2, 11, 297, 3, 2, 2, 2, 11, 299, 3, 2, 2, 2, 11, 301, 3, 2, 2, 2, 11, 303, 3, 2, 2, 2, 11, 305, 3, 2, 2, 2, 12, 307, 3, 2, 2, 2, 12, 309, 3, 2, 2, 2, 12, 311, 3, 2, 2, 2, 12, 313, 3, 2, 2, 2, 12, 315, 3, 2, 2, 2, 12, 317, 3, 2, 2, 2, 13, 371, 3, 2, 2, 2, 15, 381, 3, 2, 2, 2, 17, 388, 3, 2, 2, 2, 19, 397, 3, 2, 2, 2, 21, 404, 3, 2, 2, 2, 23, 414, 3, 2, 2, 2, 25, 421, 3, 2, 2, 2, 27, 428, 3, 2, 2, 2, 29, 442, 3, 2, 2, 2, 31, 449, 3, 2, 2, 2, 33, 457, 3, 2, 2, 2, 35, 469, 3, 2, 2, 2, 37, 478, 3, 2, 2, 2, 39, 484, 3, 2, 2, 2, 41, 491, 3, 2, 2, 2, 43, 498, 3, 2, 2, 2, 45, 506, 3, 2, 2, 2, 47, 515, 3, 2, 2, 2, 49, 521, 3, 2, 2, 2, 51, 538, 3, 2, 2, 2, 53, 554, 3, 2, 2, 2, 55, 560, 3, 2, 2, 2, 57, 565, 3, 2, 2, 2, 59, 570, 3, 2, 2, 2, 61, 574, 3, 2, 2, 2, 63, 578, 3, 2, 2, 2, 65, 582, 3, 2, 2, 2, 67, 586, 3, 2, 2, 2, 69, 588, 3, 2, 2, 2, 71, 590, 3, 2, 2, 2, 73, 593, 3, 2, 2, 2, 75, 595, 3, 2, 2, 2, 77, 604, 3, 2, 2, 2, 79, 606, 3, 2, 2, 2, 81, 611, 3, 2, 2, 2, 83, 613, 3, 2, 2, 2, 85, 618, 3, 2, 2, 2, 87, 649, 3, 2, 2, 2, 89, 652, 3, 2, 2, 2, 91, 698, 3, 2, 2, 2, 93, 700, 3, 2, 2, 2, 95, 703, 3, 2, 2, 2, 97, 707, 3, 2, 2, 2, 99, 711, 3, 2, 2, 2, 101, 713, 3, 2, 2, 2, 103, 715, 3, 2, 2, 2, 105, 720, 3, 2, 2, 2, 107, 722, 3, 2, 2, 2, 109, 728, 3, 2, 2, 2, 111, 734, 3, 2, 2, 2, 113, 739, 3, 2, 2, 2, 115, 741, 3, 2, 2, 2, 117, 744, 3, 2, 2, 2, 119, 747, 3, 2, 2, 2, 121, 752, 3, 2, 2, 2, 123, 756, 3, 2, 2, 2, 125, 761, 3, 2, 2, 2, 127, 767, 3, 2, 2, 2, 129, 770, 3, 2, 2, 2, 131, 772, 3, 2, 2, 2, 133, 778, 3, 2, 2, 2, 135, 780, 3, 2, 2, 2, 137, 785, 3, 2, 2, 2, 139, 788, 3, 2, 2, 2, 141, 791, 3, 2, 2, 2, 143, 794, 3, 2, 2, 2, 145, 796, 3, 2, 2, 2, 147, 799, 3, 2, 2, 2, 149, 801, 3, 2, 2, 2, 151, 804, 3, 2, 2, 2, 153, 806, 3, 2, 2, 2, 155, 808, 3, 2, 2, 2, 157, 810, 3, 2, 2, 2, 159, 812, 3, 2, 2, 2, 161, 814, 3, 2, 2, 2, 163, 819, 3, 2, 2, 2, 165, 840, 3, 2, 2, 2, 167, 842, 3, 2, 2, 2, 169, 850, 3, 2, 2, 2, 171, 854, 3, 2, 2, 2, 173, 858, 3, 2, 2, 2, 175, 862, 3, 2, 2, 2, 177, 867, 3, 2, 2, 2, 179, 871, 3, 2, 2, 2, 181, 875, 3, 2, 2, 2, 183, 879, 3, 2, 2, 2, 185, 883, 3, 2, 2, 2, 187, 895, 3, 2, 2, 2, 189, 898, 3, 2, 2, 2, 191, 902, 3, 2, 2, 2, 193, 906, 3, 2, 2, 2, 195, 910, 3, 2, 2, 2, 197, 914, 3, 2, 2, 2, 199, 918, 3, 2, 2, 2, 201, 923, 3, 2, 2, 2, 203, 927, 3, 2, 2, 2, 205, 935, 3, 2, 2, 2, 207, 956, 3, 2, 2, 2, 209, 958, 3, 2, 2, 2, 211, 962, 3, 2, 2, 2, 213, 966, 3, 2, 2, 2, 215, 970, 3, 2, 2, 2, 217, 974, 3, 2, 2, 2, 219, 978, 3, 2, 2, 2, 221, 983, 3, 2, 2, 2, 223, 987, 3, 2, 2, 2, 225, 991, 3, 2, 2, 2, 227, 995, 3, 2, 2, 2, 229, 998, 3, 2, 2, 2, 231, 1002, 3, 2, 2, 2, 233, 1006, 3, 2, 2, 2, 235, 1010, 3, 2, 2, 2, 237, 1014, 3, 2, 2, 2, 239, 1018, 3, 2, 2, 2, 241, 1023, 3, 2, 2, 2, 243, 1028, 3, 2, 2, 2, 245, 1033, 3, 2, 2, 2, 247, 1040, 3, 2, 2, 2, 249, 1049, 3, 2, 2, 2, 251, 1056, 3, 2, 2, 2, 253, 1060, 3, 2, 2, 2, 255, 1064, 3, 2, 2, 2, 257, 1068, 3, 2, 2, 2, 259, 1072, 3, 2, 2, 2, 261, 1076, 3, 2, 2, 2, 263, 1082, 3, 2, 2, 2, 265, 1086, 3, 2, 2, 2, 267, 1090, 3, 2, 2, 2, 269, 1094, 3, 2, 2, 2, 271, 1098, 3, 2, 2, 2, 273, 1102, 3, 2, 2, 2, 275, 1106, 3, 2, 2, 2, 277, 1110, 3, 2, 2, 2, 279, 1114, 3, 2, 2, 2, 281, 1118, 3, 2, 2, 2, 283, 1123, 3, 2, 2, 2, 285, 1127, 3, 2, 2, 2, 287, 1131, 3, 2, 2, 2, 289, 1135, 3, 2, 2, 2, 291, 1139, 3, 2, 2, 2, 293, 1143, 3, 2, 2, 2, 295, 1147, 3, 2, 2, 2, 297, 1152, 3, 2, 2, 2, 299, 1157, 3, 2, 2, 2, 301, 1167, 3, 2, 2, 2, 303, 1171, 3, 2, 2, 2, 305, 1175, 3, 2, 2, 2, 307, 1179, 3, 2, 2, 2, 309, 1184, 3, 2, 2, 2, 311, 1191, 3, 2, 2, 2, 313, 1195, 3, 2, 2, 2, 315, 1199, 3, 2, 2, 2, 317, 1203, 3, 2, 2, 2, 319, 1207, 3, 2, 2, 2, 321, 1209, 3, 2, 2, 2, 323, 1211, 3, 2, 2, 2, 325, 1213, 3, 2, 2, 2, 327, 1215, 3, 2, 2, 2, 329, 1217, 3, 2, 2, 2, 331, 1219, 3, 2, 2, 2, 333, 1221, 3, 2, 2, 2, 335, 1223, 3, 2, 2, 2, 337, 1225, 3, 2, 2, 2, 339, 1227, 3, 2, 2, 2, 341, 1229, 3, 2, 2, 2, 343, 1231, 3, 2, 2, 2, 345, 1233, 3, 2, 2, 2, 347, 1235, 3, 2, 2, 2, 349, 1237, 3, 2, 2, 2, 351, 1239, 3, 2, 2, 2, 353, 1241, 3, 2, 2, 2, 355, 1243, 3, 2, 2, 2, 357, 1245, 3, 2, 2, 2, 359, 1247, 3, 2, 2, 2, 361, 1249, 3, 2, 2, 2, 363, 1251, 3, 2, 2, 2, 365, 1253, 3, 2, 2, 2, 367, 1255, 3, 2, 2, 2, 369, 1257, 3, 2, 2, 2, 371, 372, 5, 325, 158, 2, 372, 373, 5, 335, 163, 2, 373, 374, 5, 355, 173, 2, 374, 375, 5, 355, 173, 2, 375, 376, 5, 327, 159, 2, 376, 377, 5, 323, 157, 2, 377, 378, 5, 357, 174, 2, 378, 379, 3, 2, 2, 2, 379, 380, 8, 2, 2, 2, 380, 14, 3, 2, 2, 2, 381, 382, 5, 325, 158, 2, 382, 383, 5, 353, 172, 2, 383, 384, 5, 347, 169, 2, 384, 385, 5, 349, 170, 2, 385, 386, 3, 2, 2, 2, 386, 387, 8, 3, 3, 2, 387, 16, 3, 2, 2, 2, 388, 389, 5, 327, 159, 2, 389, 390, 5, 345, 168, 2, 390, 391, 5, 353, 172, 2, 391, 392, 5, 335, 163, 2, 392, 393, 5, 323, 157, 2, 393, 394, 5, 333, 162, 2, 394, 395, 3, 2, 2, 2, 395, 396, 8, 4, 4, 2, 396, 18, 3, 2, 2, 2, 397, 398, 5, 327, 159, 2, 398, 399, 5, 361, 176, 2, 399, 400, 5, 319, 155, 2, 400, 401, 5, 341, 166, 2, 401, 402, 3, 2, 2, 2, 402, 403, 8, 5, 2, 2, 403, 20, 3, 2, 2, 2, 404, 405, 5, 327, 159, 2, 405, 406, 5, 365, 178, 2, 406, 407, 5, 349, 170, 2, 407, 408, 5, 341, 166, 2, 408, 409, 5, 319, 155, 2, 409, 410, 5, 335, 163, 2, 410, 411, 5, 345, 168, 2, 411, 412, 3, 2, 2, 2, 412, 413, 8, 6, 5, 2, 413, 22, 3, 2, 2, 2, 414, 415, 5, 329, 160, 2, 415, 416, 5, 353, 172, 2, 416, 417, 5, 347, 169, 2, 417, 418, 5, 343, 167, 2, 418, 419, 3, 2, 2, 2, 419, 420, 8, 7, 6, 2, 420, 24, 3, 2, 2, 2, 421, 422, 5, 331, 161, 2, 422, 423, 5, 353, 172, 2, 423, 424, 5, 347, 169, 2, 424, 425, 5, 339, 165, 2, 425, 426, 3, 2, 2, 2, 426, 427, 8, 8, 2, 2, 427, 26, 3, 2, 2, 2, 428, 429, 5, 335, 163, 2, 429, 430, 5, 345, 168, 2, 430, 431, 5, 341, 166, 2, 431, 432, 5, 335, 163, 2, 432, 433, 5, 345, 168, 2, 433, 434, 5, 327, 159, 2, 434, 435, 5, 355, 173, 2, 435, 436, 5, 357, 174, 2, 436, 437, 5, 319, 155, 2, 437, 438, 5, 357, 174, 2, 438, 439, 5, 355, 173, 2, 439, 440, 3, 2, 2, 2, 440, 441, 8, 9, 2, 2, 441, 28, 3, 2, 2, 2, 442, 443, 5, 339, 165, 2, 443, 444, 5, 327, 159, 2, 444, 445, 5, 327, 159, 2, 445, 446, 5, 349, 170, 2, 446, 447, 3, 2, 2, 2, 447, 448, 8, 10, 3, 2, 448, 30, 3, 2, 2, 2, 449, 450, 5, 341, 166, 2, 450, 451, 5, 335, 163, 2, 451, 452, 5, 343, 167, 2, 452, 453, 5, 335, 163, 2, 453, 454, 5, 357, 174, 2, 454, 455, 3, 2, 2, 2, 455, 456, 8, 11, 2, 2, 456, 32, 3, 2, 2, 2, 457, 458, 5, 343, 167, 2, 458, 459, 5, 361, 176, 2, 459, 460, 5, 83, 37, 2, 460, 461, 5, 327, 159, 2, 461, 462, 5, 365, 178, 2, 462, 463, 5, 349, 170, 2, 463, 464, 5, 319, 155, 2, 464, 465, 5, 345, 168, 2, 465, 466, 5, 325, 158, 2, 466, 467, 3, 2, 2, 2, 467, 468, 8, 12, 7, 2, 468, 34, 3, 2, 2, 2, 469, 470, 5, 353, 172, 2, 470, 471, 5, 327, 159, 2, 471, 472, 5, 345, 168, 2, 472, 473, 5, 319, 155, 2, 473, 474, 5, 343, 167, 2, 474, 475, 5, 327, 159, 2, 475, 476, 3, 2, 2, 2, 476, 477, 8, 13, 8, 2, 477, 36, 3, 2, 2, 2, 478, 479, 5, 353, 172, 2, 479, 480, 5, 347, 169, 2, 480, 481, 5, 363, 177, 2, 481, 482, 3, 2, 2, 2, 482, 483, 8, 14, 2, 2, 483, 38, 3, 2, 2, 2, 484, 485, 5, 355, 173, 2, 485, 486, 5, 333, 162, 2, 486, 487, 5, 347, 169, 2, 487, 488, 5, 363, 177, 2, 488, 489, 3, 2, 2, 2, 489, 490, 8, 15, 9, 2, 490, 40, 3, 2, 2, 2, 491, 492, 5, 355, 173, 2, 492, 493, 5, 347, 169, 2, 493, 494, 5, 353, 172, 2, 494, 495, 5, 357, 174, 2, 495, 496, 3, 2, 2, 2, 496, 497, 8, 16, 2, 2, 497, 42, 3, 2, 2, 2, 498, 499, 5, 355, 173, 2, 499, 500, 5, 357, 174, 2, 500, 501, 5, 319, 155, 2, 501, 502, 5, 357, 174, 2, 502, 503, 5, 355, 173, 2, 503, 504, 3, 2, 2, 2, 504, 505, 8, 17, 2, 2, 505, 44, 3, 2, 2, 2, 506, 507, 5, 363, 177, 2, 507, 508, 5, 333, 162, 2, 508, 509, 5, 327, 159, 2, 509, 510, 5, 353, 172, 2, 510, 511, 5, 327, 159, 2, 511, 512, 3, 2, 2, 2, 512, 513, 8, 18, 2, 2, 513, 46, 3, 2, 2, 2, 514, 516, 10, 2, 2, 2, 515, 514, 3, 2, 2, 2, 516, 517, 3, 2, 2, 2, 517, 515, 3, 2, 2, 2, 517, 518, 3, 2, 2, 2, 518, 519, 3, 2, 2, 2, 519, 520, 8, 19, 2, 2, 520, 48, 3, 2, 2, 2, 521, 522, 7, 49, 2, 2, 522, 523, 7, 49, 2, 2, 523, 527, 3, 2, 2, 2, 524, 526, 10, 3, 2, 2, 525, 524, 3, 2, 2, 2, 526, 529, 3, 2, 2, 2, 527, 525, 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 528, 531, 3, 2, 2, 2, 529, 527, 3, 2, 2, 2, 530, 532, 7, 15, 2, 2, 531, 530, 3, 2, 2, 2, 531, 532, 3, 2, 2, 2, 532, 534, 3, 2, 2, 2, 533, 535, 7, 12, 2, 2, 534, 533, 3, 2, 2, 2, 534, 535, 3, 2, 2, 2, 535, 536, 3, 2, 2, 2, 536, 537, 8, 20, 10, 2, 537, 50, 3, 2, 2, 2, 538, 539, 7, 49, 2, 2, 539, 540, 7, 44, 2, 2, 540, 545, 3, 2, 2, 2, 541, 544, 5, 51, 21, 2, 542, 544, 11, 2, 2, 2, 543, 541, 3, 2, 2, 2, 543, 542, 3, 2, 2, 2, 544, 547, 3, 2, 2, 2, 545, 546, 3, 2, 2, 2, 545, 543, 3, 2, 2, 2, 546, 548, 3, 2, 2, 2, 547, 545, 3, 2, 2, 2, 548, 549, 7, 44, 2, 2, 549, 550, 7, 49, 2, 2, 550, 551, 3, 2, 2, 2, 551, 552, 8, 21, 10, 2, 552, 52, 3, 2, 2, 2, 553, 555, 9, 4, 2, 2, 554, 553, 3, 2, 2, 2, 555, 556, 3, 2, 2, 2, 556, 554, 3, 2, 2, 2, 556, 557, 3, 2, 2, 2, 557, 558, 3, 2, 2, 2, 558, 559, 8, 22, 10, 2, 559, 54, 3, 2, 2, 2, 560, 561, 5, 161, 76, 2, 561, 562, 3, 2, 2, 2, 562, 563, 8, 23, 11, 2, 563, 564, 8, 23, 12, 2, 564, 56, 3, 2, 2, 2, 565, 566, 5, 65, 28, 2, 566, 567, 3, 2, 2, 2, 567, 568, 8, 24, 13, 2, 568, 569, 8, 24, 14, 2, 569, 58, 3, 2, 2, 2, 570, 571, 5, 53, 22, 2, 571, 572, 3, 2, 2, 2, 572, 573, 8, 25, 10, 2, 573, 60, 3, 2, 2, 2, 574, 575, 5, 49, 20, 2, 575, 576, 3, 2, 2, 2, 576, 577, 8, 26, 10, 2, 577, 62, 3, 2, 2, 2, 578, 579, 5, 51, 21, 2, 579, 580, 3, 2, 2, 2, 580, 581, 8, 27, 10, 2, 581, 64, 3, 2, 2, 2, 582, 583, 7, 126, 2, 2, 583, 584, 3, 2, 2, 2, 584, 585, 8, 28, 14, 2, 585, 66, 3, 2, 2, 2, 586, 587, 9, 5, 2, 2, 587, 68, 3, 2, 2, 2, 588, 589, 9, 6, 2, 2, 589, 70, 3, 2, 2, 2, 590, 591, 7, 94, 2, 2, 591, 592, 9, 7, 2, 2, 592, 72, 3, 2, 2, 2, 593, 594, 10, 8, 2, 2, 594, 74, 3, 2, 2, 2, 595, 597, 9, 9, 2, 2, 596, 598, 9, 10, 2, 2, 597, 596, 3, 2, 2, 2, 597, 598, 3, 2, 2, 2, 598, 600, 3, 2, 2, 2, 599, 601, 5, 67, 29, 2, 600, 599, 3, 2, 2, 2, 601, 602, 3, 2, 2, 2, 602, 600, 3, 2, 2, 2, 602, 603, 3, 2, 2, 2, 603, 76, 3, 2, 2, 2, 604, 605, 7, 66, 2, 2, 605, 78, 3, 2, 2, 2, 606, 607, 7, 98, 2, 2, 607, 80, 3, 2, 2, 2, 608, 612, 10, 11, 2, 2, 609, 610, 7, 98, 2, 2, 610, 612, 7, 98, 2, 2, 611, 608, 3, 2, 2, 2, 611, 609, 3, 2, 2, 2, 612, 82, 3, 2, 2, 2, 613, 614, 7, 97, 2, 2, 614, 84, 3, 2, 2, 2, 615, 619, 5, 69, 30, 2, 616, 619, 5, 67, 29, 2, 617, 619, 5, 83, 37, 2, 618, 615, 3, 2, 2, 2, 618, 616, 3, 2, 2, 2, 618, 617, 3, 2, 2, 2, 619, 86, 3, 2, 2, 2, 620, 625, 7, 36, 2, 2, 621, 624, 5, 71, 31, 2, 622, 624, 5, 73, 32, 2, 623, 621, 3, 2, 2, 2, 623, 622, 3, 2, 2, 2, 624, 627, 3, 2, 2, 2, 625, 623, 3, 2, 2, 2, 625, 626, 3, 2, 2, 2, 626, 628, 3, 2, 2, 2, 627, 625, 3, 2, 2, 2, 628, 650, 7, 36, 2, 2, 629, 630, 7, 36, 2, 2, 630, 631, 7, 36, 2, 2, 631, 632, 7, 36, 2, 2, 632, 636, 3, 2, 2, 2, 633, 635, 10, 3, 2, 2, 634, 633, 3, 2, 2, 2, 635, 638, 3, 2, 2, 2, 636, 637, 3, 2, 2, 2, 636, 634, 3, 2, 2, 2, 637, 639, 3, 2, 2, 2, 638, 636, 3, 2, 2, 2, 639, 640, 7, 36, 2, 2, 640, 641, 7, 36, 2, 2, 641, 642, 7, 36, 2, 2, 642, 644, 3, 2, 2, 2, 643, 645, 7, 36, 2, 2, 644, 643, 3, 2, 2, 2, 644, 645, 3, 2, 2, 2, 645, 647, 3, 2, 2, 2, 646, 648, 7, 36, 2, 2, 647, 646, 3, 2, 2, 2, 647, 648, 3, 2, 2, 2, 648, 650, 3, 2, 2, 2, 649, 620, 3, 2, 2, 2, 649, 629, 3, 2, 2, 2, 650, 88, 3, 2, 2, 2, 651, 653, 5, 67, 29, 2, 652, 651, 3, 2, 2, 2, 653, 654, 3, 2, 2, 2, 654, 652, 3, 2, 2, 2, 654, 655, 3, 2, 2, 2, 655, 90, 3, 2, 2, 2, 656, 658, 5, 67, 29, 2, 657, 656, 3, 2, 2, 2, 658, 659, 3, 2, 2, 2, 659, 657, 3, 2, 2, 2, 659, 660, 3, 2, 2, 2, 660, 661, 3, 2, 2, 2, 661, 665, 5, 105, 48, 2, 662, 664, 5, 67, 29, 2, 663, 662, 3, 2, 2, 2, 664, 667, 3, 2, 2, 2, 665, 663, 3, 2, 2, 2, 665, 666, 3, 2, 2, 2, 666, 699, 3, 2, 2, 2, 667, 665, 3, 2, 2, 2, 668, 670, 5, 105, 48, 2, 669, 671, 5, 67, 29, 2, 670, 669, 3, 2, 2, 2, 671, 672, 3, 2, 2, 2, 672, 670, 3, 2, 2, 2, 672, 673, 3, 2, 2, 2, 673, 699, 3, 2, 2, 2, 674, 676, 5, 67, 29, 2, 675, 674, 3, 2, 2, 2, 676, 677, 3, 2, 2, 2, 677, 675, 3, 2, 2, 2, 677, 678, 3, 2, 2, 2, 678, 686, 3, 2, 2, 2, 679, 683, 5, 105, 48, 2, 680, 682, 5, 67, 29, 2, 681, 680, 3, 2, 2, 2, 682, 685, 3, 2, 2, 2, 683, 681, 3, 2, 2, 2, 683, 684, 3, 2, 2, 2, 684, 687, 3, 2, 2, 2, 685, 683, 3, 2, 2, 2, 686, 679, 3, 2, 2, 2, 686, 687, 3, 2, 2, 2, 687, 688, 3, 2, 2, 2, 688, 689, 5, 75, 33, 2, 689, 699, 3, 2, 2, 2, 690, 692, 5, 105, 48, 2, 691, 693, 5, 67, 29, 2, 692, 691, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 692, 3, 2, 2, 2, 694, 695, 3, 2, 2, 2, 695, 696, 3, 2, 2, 2, 696, 697, 5, 75, 33, 2, 697, 699, 3, 2, 2, 2, 698, 657, 3, 2, 2, 2, 698, 668, 3, 2, 2, 2, 698, 675, 3, 2, 2, 2, 698, 690, 3, 2, 2, 2, 699, 92, 3, 2, 2, 2, 700, 701, 5, 321, 156, 2, 701, 702, 5, 367, 179, 2, 702, 94, 3, 2, 2, 2, 703, 704, 5, 319, 155, 2, 704, 705, 5, 345, 168, 2, 705, 706, 5, 325, 158, 2, 706, 96, 3, 2, 2, 2, 707, 708, 5, 319, 155, 2, 708, 709, 5, 355, 173, 2, 709, 710, 5, 323, 157, 2, 710, 98, 3, 2, 2, 2, 711, 712, 7, 63, 2, 2, 712, 100, 3, 2, 2, 2, 713, 714, 7, 46, 2, 2, 714, 102, 3, 2, 2, 2, 715, 716, 5, 325, 158, 2, 716, 717, 5, 327, 159, 2, 717, 718, 5, 355, 173, 2, 718, 719, 5, 323, 157, 2, 719, 104, 3, 2, 2, 2, 720, 721, 7, 48, 2, 2, 721, 106, 3, 2, 2, 2, 722, 723, 5, 329, 160, 2, 723, 724, 5, 319, 155, 2, 724, 725, 5, 341, 166, 2, 725, 726, 5, 355, 173, 2, 726, 727, 5, 327, 159, 2, 727, 108, 3, 2, 2, 2, 728, 729, 5, 329, 160, 2, 729, 730, 5, 335, 163, 2, 730, 731, 5, 353, 172, 2, 731, 732, 5, 355, 173, 2, 732, 733, 5, 357, 174, 2, 733, 110, 3, 2, 2, 2, 734, 735, 5, 341, 166, 2, 735, 736, 5, 319, 155, 2, 736, 737, 5, 355, 173, 2, 737, 738, 5, 357, 174, 2, 738, 112, 3, 2, 2, 2, 739, 740, 7, 42, 2, 2, 740, 114, 3, 2, 2, 2, 741, 742, 5, 335, 163, 2, 742, 743, 5, 345, 168, 2, 743, 116, 3, 2, 2, 2, 744, 745, 5, 335, 163, 2, 745, 746, 5, 355, 173, 2, 746, 118, 3, 2, 2, 2, 747, 748, 5, 341, 166, 2, 748, 749, 5, 335, 163, 2, 749, 750, 5, 339, 165, 2, 750, 751, 5, 327, 159, 2, 751, 120, 3, 2, 2, 2, 752, 753, 5, 345, 168, 2, 753, 754, 5, 347, 169, 2, 754, 755, 5, 357, 174, 2, 755, 122, 3, 2, 2, 2, 756, 757, 5, 345, 168, 2, 757, 758, 5, 359, 175, 2, 758, 759, 5, 341, 166, 2, 759, 760, 5, 341, 166, 2, 760, 124, 3, 2, 2, 2, 761, 762, 5, 345, 168, 2, 762, 763, 5, 359, 175, 2, 763, 764, 5, 341, 166, 2, 764, 765, 5, 341, 166, 2, 765, 766, 5, 355, 173, 2, 766, 126, 3, 2, 2, 2, 767, 768, 5, 347, 169, 2, 768, 769, 5, 353, 172, 2, 769, 128, 3, 2, 2, 2, 770, 771, 7, 65, 2, 2, 771, 130, 3, 2, 2, 2, 772, 773, 5, 353, 172, 2, 773, 774, 5, 341, 166, 2, 774, 775, 5, 335, 163, 2, 775, 776, 5, 339, 165, 2, 776, 777, 5, 327, 159, 2, 777, 132, 3, 2, 2, 2, 778, 779, 7, 43, 2, 2, 779, 134, 3, 2, 2, 2, 780, 781, 5, 357, 174, 2, 781, 782, 5, 353, 172, 2, 782, 783, 5, 359, 175, 2, 783, 784, 5, 327, 159, 2, 784, 136, 3, 2, 2, 2, 785, 786, 7, 63, 2, 2, 786, 787, 7, 63, 2, 2, 787, 138, 3, 2, 2, 2, 788, 789, 7, 63, 2, 2, 789, 790, 7, 128, 2, 2, 790, 140, 3, 2, 2, 2, 791, 792, 7, 35, 2, 2, 792, 793, 7, 63, 2, 2, 793, 142, 3, 2, 2, 2, 794, 795, 7, 62, 2, 2, 795, 144, 3, 2, 2, 2, 796, 797, 7, 62, 2, 2, 797, 798, 7, 63, 2, 2, 798, 146, 3, 2, 2, 2, 799, 800, 7, 64, 2, 2, 800, 148, 3, 2, 2, 2, 801, 802, 7, 64, 2, 2, 802, 803, 7, 63, 2, 2, 803, 150, 3, 2, 2, 2, 804, 805, 7, 45, 2, 2, 805, 152, 3, 2, 2, 2, 806, 807, 7, 47, 2, 2, 807, 154, 3, 2, 2, 2, 808, 809, 7, 44, 2, 2, 809, 156, 3, 2, 2, 2, 810, 811, 7, 49, 2, 2, 811, 158, 3, 2, 2, 2, 812, 813, 7, 39, 2, 2, 813, 160, 3, 2, 2, 2, 814, 815, 7, 93, 2, 2, 815, 816, 3, 2, 2, 2, 816, 817, 8, 76, 2, 2, 817, 818, 8, 76, 2, 2, 818, 162, 3, 2, 2, 2, 819, 820, 7, 95, 2, 2, 820, 821, 3, 2, 2, 2, 821, 822, 8, 77, 14, 2, 822, 823, 8, 77, 14, 2, 823, 164, 3, 2, 2, 2, 824, 828, 5, 69, 30, 2, 825, 827, 5, 85, 38, 2, 826, 825, 3, 2, 2, 2, 827, 830, 3, 2, 2, 2, 828, 826, 3, 2, 2, 2, 828, 829, 3, 2, 2, 2, 829, 841, 3, 2, 2, 2, 830, 828, 3, 2, 2, 2, 831, 834, 5, 83, 37, 2, 832, 834, 5, 77, 34, 2, 833, 831, 3, 2, 2, 2, 833, 832, 3, 2, 2, 2, 834, 836, 3, 2, 2, 2, 835, 837, 5, 85, 38, 2, 836, 835, 3, 2, 2, 2, 837, 838, 3, 2, 2, 2, 838, 836, 3, 2, 2, 2, 838, 839, 3, 2, 2, 2, 839, 841, 3, 2, 2, 2, 840, 824, 3, 2, 2, 2, 840, 833, 3, 2, 2, 2, 841, 166, 3, 2, 2, 2, 842, 844, 5, 79, 35, 2, 843, 845, 5, 81, 36, 2, 844, 843, 3, 2, 2, 2, 845, 846, 3, 2, 2, 2, 846, 844, 3, 2, 2, 2, 846, 847, 3, 2, 2, 2, 847, 848, 3, 2, 2, 2, 848, 849, 5, 79, 35, 2, 849, 168, 3, 2, 2, 2, 850, 851, 5, 49, 20, 2, 851, 852, 3, 2, 2, 2, 852, 853, 8, 80, 10, 2, 853, 170, 3, 2, 2, 2, 854, 855, 5, 51, 21, 2, 855, 856, 3, 2, 2, 2, 856, 857, 8, 81, 10, 2, 857, 172, 3, 2, 2, 2, 858, 859, 5, 53, 22, 2, 859, 860, 3, 2, 2, 2, 860, 861, 8, 82, 10, 2, 861, 174, 3, 2, 2, 2, 862, 863, 5, 65, 28, 2, 863, 864, 3, 2, 2, 2, 864, 865, 8, 83, 13, 2, 865, 866, 8, 83, 14, 2, 866, 176, 3, 2, 2, 2, 867, 868, 5, 161, 76, 2, 868, 869, 3, 2, 2, 2, 869, 870, 8, 84, 11, 2, 870, 178, 3, 2, 2, 2, 871, 872, 5, 163, 77, 2, 872, 873, 3, 2, 2, 2, 873, 874, 8, 85, 15, 2, 874, 180, 3, 2, 2, 2, 875, 876, 5, 101, 46, 2, 876, 877, 3, 2, 2, 2, 877, 878, 8, 86, 16, 2, 878, 182, 3, 2, 2, 2, 879, 880, 5, 99, 45, 2, 880, 881, 3, 2, 2, 2, 881, 882, 8, 87, 17, 2, 882, 184, 3, 2, 2, 2, 883, 884, 5, 343, 167, 2, 884, 885, 5, 327, 159, 2, 885, 886, 5, 357, 174, 2, 886, 887, 5, 319, 155, 2, 887, 888, 5, 325, 158, 2, 888, 889, 5, 319, 155, 2, 889, 890, 5, 357, 174, 2, 890, 891, 5, 319, 155, 2, 891, 186, 3, 2, 2, 2, 892, 896, 10, 12, 2, 2, 893, 894, 7, 49, 2, 2, 894, 896, 10, 13, 2, 2, 895, 892, 3, 2, 2, 2, 895, 893, 3, 2, 2, 2, 896, 188, 3, 2, 2, 2, 897, 899, 5, 187, 89, 2, 898, 897, 3, 2, 2, 2, 899, 900, 3, 2, 2, 2, 900, 898, 3, 2, 2, 2, 900, 901, 3, 2, 2, 2, 901, 190, 3, 2, 2, 2, 902, 903, 5, 167, 79, 2, 903, 904, 3, 2, 2, 2, 904, 905, 8, 91, 18, 2, 905, 192, 3, 2, 2, 2, 906, 907, 5, 49, 20, 2, 907, 908, 3, 2, 2, 2, 908, 909, 8, 92, 10, 2, 909, 194, 3, 2, 2, 2, 910, 911, 5, 51, 21, 2, 911, 912, 3, 2, 2, 2, 912, 913, 8, 93, 10, 2, 913, 196, 3, 2, 2, 2, 914, 915, 5, 53, 22, 2, 915, 916, 3, 2, 2, 2, 916, 917, 8, 94, 10, 2, 917, 198, 3, 2, 2, 2, 918, 919, 5, 65, 28, 2, 919, 920, 3, 2, 2, 2, 920, 921, 8, 95, 13, 2, 921, 922, 8, 95, 14, 2, 922, 200, 3, 2, 2, 2, 923, 924, 5, 105, 48, 2, 924, 925, 3, 2, 2, 2, 925, 926, 8, 96, 19, 2, 926, 202, 3, 2, 2, 2, 927, 928, 5, 101, 46, 2, 928, 929, 3, 2, 2, 2, 929, 930, 8, 97, 16, 2, 930, 204, 3, 2, 2, 2, 931, 936, 5, 69, 30, 2, 932, 936, 5, 67, 29, 2, 933, 936, 5, 83, 37, 2, 934, 936, 5, 155, 73, 2, 935, 931, 3, 2, 2, 2, 935, 932, 3, 2, 2, 2, 935, 933, 3, 2, 2, 2, 935, 934, 3, 2, 2, 2, 936, 206, 3, 2, 2, 2, 937, 940, 5, 69, 30, 2, 938, 940, 5, 155, 73, 2, 939, 937, 3, 2, 2, 2, 939, 938, 3, 2, 2, 2, 940, 944, 3, 2, 2, 2, 941, 943, 5, 205, 98, 2, 942, 941, 3, 2, 2, 2, 943, 946, 3, 2, 2, 2, 944, 942, 3, 2, 2, 2, 944, 945, 3, 2, 2, 2, 945, 957, 3, 2, 2, 2, 946, 944, 3, 2, 2, 2, 947, 950, 5, 83, 37, 2, 948, 950, 5, 77, 34, 2, 949, 947, 3, 2, 2, 2, 949, 948, 3, 2, 2, 2, 950, 952, 3, 2, 2, 2, 951, 953, 5, 205, 98, 2, 952, 951, 3, 2, 2, 2, 953, 954, 3, 2, 2, 2, 954, 952, 3, 2, 2, 2, 954, 955, 3, 2, 2, 2, 955, 957, 3, 2, 2, 2, 956, 939, 3, 2, 2, 2, 956, 949, 3, 2, 2, 2, 957, 208, 3, 2, 2, 2, 958, 959, 5, 207, 99, 2, 959, 960, 3, 2, 2, 2, 960, 961, 8, 100, 20, 2, 961, 210, 3, 2, 2, 2, 962, 963, 5, 167, 79, 2, 963, 964, 3, 2, 2, 2, 964, 965, 8, 101, 18, 2, 965, 212, 3, 2, 2, 2, 966, 967, 5, 49, 20, 2, 967, 968, 3, 2, 2, 2, 968, 969, 8, 102, 10, 2, 969, 214, 3, 2, 2, 2, 970, 971, 5, 51, 21, 2, 971, 972, 3, 2, 2, 2, 972, 973, 8, 103, 10, 2, 973, 216, 3, 2, 2, 2, 974, 975, 5, 53, 22, 2, 975, 976, 3, 2, 2, 2, 976, 977, 8, 104, 10, 2, 977, 218, 3, 2, 2, 2, 978, 979, 5, 65, 28, 2, 979, 980, 3, 2, 2, 2, 980, 981, 8, 105, 13, 2, 981, 982, 8, 105, 14, 2, 982, 220, 3, 2, 2, 2, 983, 984, 5, 99, 45, 2, 984, 985, 3, 2, 2, 2, 985, 986, 8, 106, 17, 2, 986, 222, 3, 2, 2, 2, 987, 988, 5, 101, 46, 2, 988, 989, 3, 2, 2, 2, 989, 990, 8, 107, 16, 2, 990, 224, 3, 2, 2, 2, 991, 992, 5, 105, 48, 2, 992, 993, 3, 2, 2, 2, 993, 994, 8, 108, 19, 2, 994, 226, 3, 2, 2, 2, 995, 996, 5, 319, 155, 2, 996, 997, 5, 355, 173, 2, 997, 228, 3, 2, 2, 2, 998, 999, 5, 167, 79, 2, 999, 1000, 3, 2, 2, 2, 1000, 1001, 8, 110, 18, 2, 1001, 230, 3, 2, 2, 2, 1002, 1003, 5, 207, 99, 2, 1003, 1004, 3, 2, 2, 2, 1004, 1005, 8, 111, 20, 2, 1005, 232, 3, 2, 2, 2, 1006, 1007, 5, 49, 20, 2, 1007, 1008, 3, 2, 2, 2, 1008, 1009, 8, 112, 10, 2, 1009, 234, 3, 2, 2, 2, 1010, 1011, 5, 51, 21, 2, 1011, 1012, 3, 2, 2, 2, 1012, 1013, 8, 113, 10, 2, 1013, 236, 3, 2, 2, 2, 1014, 1015, 5, 53, 22, 2, 1015, 1016, 3, 2, 2, 2, 1016, 1017, 8, 114, 10, 2, 1017, 238, 3, 2, 2, 2, 1018, 1019, 5, 65, 28, 2, 1019, 1020, 3, 2, 2, 2, 1020, 1021, 8, 115, 13, 2, 1021, 1022, 8, 115, 14, 2, 1022, 240, 3, 2, 2, 2, 1023, 1024, 5, 161, 76, 2, 1024, 1025, 3, 2, 2, 2, 1025, 1026, 8, 116, 11, 2, 1026, 1027, 8, 116, 21, 2, 1027, 242, 3, 2, 2, 2, 1028, 1029, 5, 347, 169, 2, 1029, 1030, 5, 345, 168, 2, 1030, 1031, 3, 2, 2, 2, 1031, 1032, 8, 117, 22, 2, 1032, 244, 3, 2, 2, 2, 1033, 1034, 5, 363, 177, 2, 1034, 1035, 5, 335, 163, 2, 1035, 1036, 5, 357, 174, 2, 1036, 1037, 5, 333, 162, 2, 1037, 1038, 3, 2, 2, 2, 1038, 1039, 8, 118, 22, 2, 1039, 246, 3, 2, 2, 2, 1040, 1041, 10, 14, 2, 2, 1041, 248, 3, 2, 2, 2, 1042, 1044, 5, 247, 119, 2, 1043, 1042, 3, 2, 2, 2, 1044, 1045, 3, 2, 2, 2, 1045, 1043, 3, 2, 2, 2, 1045, 1046, 3, 2, 2, 2, 1046, 1047, 3, 2, 2, 2, 1047, 1048, 5, 309, 150, 2, 1048, 1050, 3, 2, 2, 2, 1049, 1043, 3, 2, 2, 2, 1049, 1050, 3, 2, 2, 2, 1050, 1052, 3, 2, 2, 2, 1051, 1053, 5, 247, 119, 2, 1052, 1051, 3, 2, 2, 2, 1053, 1054, 3, 2, 2, 2, 1054, 1052, 3, 2, 2, 2, 1054, 1055, 3, 2, 2, 2, 1055, 250, 3, 2, 2, 2, 1056, 1057, 5, 167, 79, 2, 1057, 1058, 3, 2, 2, 2, 1058, 1059, 8, 121, 18, 2, 1059, 252, 3, 2, 2, 2, 1060, 1061, 5, 249, 120, 2, 1061, 1062, 3, 2, 2, 2, 1062, 1063, 8, 122, 23, 2, 1063, 254, 3, 2, 2, 2, 1064, 1065, 5, 49, 20, 2, 1065, 1066, 3, 2, 2, 2, 1066, 1067, 8, 123, 10, 2, 1067, 256, 3, 2, 2, 2, 1068, 1069, 5, 51, 21, 2, 1069, 1070, 3, 2, 2, 2, 1070, 1071, 8, 124, 10, 2, 1071, 258, 3, 2, 2, 2, 1072, 1073, 5, 53, 22, 2, 1073, 1074, 3, 2, 2, 2, 1074, 1075, 8, 125, 10, 2, 1075, 260, 3, 2, 2, 2, 1076, 1077, 5, 65, 28, 2, 1077, 1078, 3, 2, 2, 2, 1078, 1079, 8, 126, 13, 2, 1079, 1080, 8, 126, 14, 2, 1080, 1081, 8, 126, 14, 2, 1081, 262, 3, 2, 2, 2, 1082, 1083, 5, 99, 45, 2, 1083, 1084, 3, 2, 2, 2, 1084, 1085, 8, 127, 17, 2, 1085, 264, 3, 2, 2, 2, 1086, 1087, 5, 101, 46, 2, 1087, 1088, 3, 2, 2, 2, 1088, 1089, 8, 128, 16, 2, 1089, 266, 3, 2, 2, 2, 1090, 1091, 5, 105, 48, 2, 1091, 1092, 3, 2, 2, 2, 1092, 1093, 8, 129, 19, 2, 1093, 268, 3, 2, 2, 2, 1094, 1095, 5, 245, 118, 2, 1095, 1096, 3, 2, 2, 2, 1096, 1097, 8, 130, 24, 2, 1097, 270, 3, 2, 2, 2, 1098, 1099, 5, 207, 99, 2, 1099, 1100, 3, 2, 2, 2, 1100, 1101, 8, 131, 20, 2, 1101, 272, 3, 2, 2, 2, 1102, 1103, 5, 167, 79, 2, 1103, 1104, 3, 2, 2, 2, 1104, 1105, 8, 132, 18, 2, 1105, 274, 3, 2, 2, 2, 1106, 1107, 5, 49, 20, 2, 1107, 1108, 3, 2, 2, 2, 1108, 1109, 8, 133, 10, 2, 1109, 276, 3, 2, 2, 2, 1110, 1111, 5, 51, 21, 2, 1111, 1112, 3, 2, 2, 2, 1112, 1113, 8, 134, 10, 2, 1113, 278, 3, 2, 2, 2, 1114, 1115, 5, 53, 22, 2, 1115, 1116, 3, 2, 2, 2, 1116, 1117, 8, 135, 10, 2, 1117, 280, 3, 2, 2, 2, 1118, 1119, 5, 65, 28, 2, 1119, 1120, 3, 2, 2, 2, 1120, 1121, 8, 136, 13, 2, 1121, 1122, 8, 136, 14, 2, 1122, 282, 3, 2, 2, 2, 1123, 1124, 5, 105, 48, 2, 1124, 1125, 3, 2, 2, 2, 1125, 1126, 8, 137, 19, 2, 1126, 284, 3, 2, 2, 2, 1127, 1128, 5, 167, 79, 2, 1128, 1129, 3, 2, 2, 2, 1129, 1130, 8, 138, 18, 2, 1130, 286, 3, 2, 2, 2, 1131, 1132, 5, 165, 78, 2, 1132, 1133, 3, 2, 2, 2, 1133, 1134, 8, 139, 25, 2, 1134, 288, 3, 2, 2, 2, 1135, 1136, 5, 49, 20, 2, 1136, 1137, 3, 2, 2, 2, 1137, 1138, 8, 140, 10, 2, 1138, 290, 3, 2, 2, 2, 1139, 1140, 5, 51, 21, 2, 1140, 1141, 3, 2, 2, 2, 1141, 1142, 8, 141, 10, 2, 1142, 292, 3, 2, 2, 2, 1143, 1144, 5, 53, 22, 2, 1144, 1145, 3, 2, 2, 2, 1145, 1146, 8, 142, 10, 2, 1146, 294, 3, 2, 2, 2, 1147, 1148, 5, 65, 28, 2, 1148, 1149, 3, 2, 2, 2, 1149, 1150, 8, 143, 13, 2, 1150, 1151, 8, 143, 14, 2, 1151, 296, 3, 2, 2, 2, 1152, 1153, 5, 335, 163, 2, 1153, 1154, 5, 345, 168, 2, 1154, 1155, 5, 329, 160, 2, 1155, 1156, 5, 347, 169, 2, 1156, 298, 3, 2, 2, 2, 1157, 1158, 5, 329, 160, 2, 1158, 1159, 5, 359, 175, 2, 1159, 1160, 5, 345, 168, 2, 1160, 1161, 5, 323, 157, 2, 1161, 1162, 5, 357, 174, 2, 1162, 1163, 5, 335, 163, 2, 1163, 1164, 5, 347, 169, 2, 1164, 1165, 5, 345, 168, 2, 1165, 1166, 5, 355, 173, 2, 1166, 300, 3, 2, 2, 2, 1167, 1168, 5, 49, 20, 2, 1168, 1169, 3, 2, 2, 2, 1169, 1170, 8, 146, 10, 2, 1170, 302, 3, 2, 2, 2, 1171, 1172, 5, 51, 21, 2, 1172, 1173, 3, 2, 2, 2, 1173, 1174, 8, 147, 10, 2, 1174, 304, 3, 2, 2, 2, 1175, 1176, 5, 53, 22, 2, 1176, 1177, 3, 2, 2, 2, 1177, 1178, 8, 148, 10, 2, 1178, 306, 3, 2, 2, 2, 1179, 1180, 5, 163, 77, 2, 1180, 1181, 3, 2, 2, 2, 1181, 1182, 8, 149, 15, 2, 1182, 1183, 8, 149, 14, 2, 1183, 308, 3, 2, 2, 2, 1184, 1185, 7, 60, 2, 2, 1185, 310, 3, 2, 2, 2, 1186, 1192, 5, 77, 34, 2, 1187, 1192, 5, 67, 29, 2, 1188, 1192, 5, 105, 48, 2, 1189, 1192, 5, 69, 30, 2, 1190, 1192, 5, 83, 37, 2, 1191, 1186, 3, 2, 2, 2, 1191, 1187, 3, 2, 2, 2, 1191, 1188, 3, 2, 2, 2, 1191, 1189, 3, 2, 2, 2, 1191, 1190, 3, 2, 2, 2, 1192, 1193, 3, 2, 2, 2, 1193, 1191, 3, 2, 2, 2, 1193, 1194, 3, 2, 2, 2, 1194, 312, 3, 2, 2, 2, 1195, 1196, 5, 49, 20, 2, 1196, 1197, 3, 2, 2, 2, 1197, 1198, 8, 152, 10, 2, 1198, 314, 3, 2, 2, 2, 1199, 1200, 5, 51, 21, 2, 1200, 1201, 3, 2, 2, 2, 1201, 1202, 8, 153, 10, 2, 1202, 316, 3, 2, 2, 2, 1203, 1204, 5, 53, 22, 2, 1204, 1205, 3, 2, 2, 2, 1205, 1206, 8, 154, 10, 2, 1206, 318, 3, 2, 2, 2, 1207, 1208, 9, 15, 2, 2, 1208, 320, 3, 2, 2, 2, 1209, 1210, 9, 16, 2, 2, 1210, 322, 3, 2, 2, 2, 1211, 1212, 9, 17, 2, 2, 1212, 324, 3, 2, 2, 2, 1213, 1214, 9, 18, 2, 2, 1214, 326, 3, 2, 2, 2, 1215, 1216, 9, 9, 2, 2, 1216, 328, 3, 2, 2, 2, 1217, 1218, 9, 19, 2, 2, 1218, 330, 3, 2, 2, 2, 1219, 1220, 9, 20, 2, 2, 1220, 332, 3, 2, 2, 2, 1221, 1222, 9, 21, 2, 2, 1222, 334, 3, 2, 2, 2, 1223, 1224, 9, 22, 2, 2, 1224, 336, 3, 2, 2, 2, 1225, 1226, 9, 23, 2, 2, 1226, 338, 3, 2, 2, 2, 1227, 1228, 9, 24, 2, 2, 1228, 340, 3, 2, 2, 2, 1229, 1230, 9, 25, 2, 2, 1230, 342, 3, 2, 2, 2, 1231, 1232, 9, 26, 2, 2, 1232, 344, 3, 2, 2, 2, 1233, 1234, 9, 27, 2, 2, 1234, 346, 3, 2, 2, 2, 1235, 1236, 9, 28, 2, 2, 1236, 348, 3, 2, 2, 2, 1237, 1238, 9, 29, 2, 2, 1238, 350, 3, 2, 2, 2, 1239, 1240, 9, 30, 2, 2, 1240, 352, 3, 2, 2, 2, 1241, 1242, 9, 31, 2, 2, 1242, 354, 3, 2, 2, 2, 1243, 1244, 9, 32, 2, 2, 1244, 356, 3, 2, 2, 2, 1245, 1246, 9, 33, 2, 2, 1246, 358, 3, 2, 2, 2, 1247, 1248, 9, 34, 2, 2, 1248, 360, 3, 2, 2, 2, 1249, 1250, 9, 35, 2, 2, 1250, 362, 3, 2, 2, 2, 1251, 1252, 9, 36, 2, 2, 1252, 364, 3, 2, 2, 2, 1253, 1254, 9, 37, 2, 2, 1254, 366, 3, 2, 2, 2, 1255, 1256, 9, 38, 2, 2, 1256, 368, 3, 2, 2, 2, 1257, 1258, 9, 39, 2, 2, 1258, 370, 3, 2, 2, 2, 57, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 517, 527, 531, 534, 543, 545, 556, 597, 602, 611, 618, 623, 625, 636, 644, 647, 649, 654, 659, 665, 672, 677, 683, 686, 694, 698, 828, 833, 838, 840, 846, 895, 900, 935, 939, 944, 949, 954, 956, 1045, 1049, 1054, 1191, 1193, 26, 7, 4, 2, 7, 6, 2, 7, 8, 2, 7, 3, 2, 7, 5, 2, 7, 10, 2, 7, 7, 2, 7, 11, 2, 2, 3, 2, 9, 65, 2, 7, 2, 2, 9, 27, 2, 6, 2, 2, 9, 66, 2, 9, 35, 2, 9, 34, 2, 9, 68, 2, 9, 37, 2, 9, 77, 2, 7, 12, 2, 7, 9, 2, 9, 87, 2, 9, 86, 2, 9, 67, 2] \ No newline at end of file +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 2, 106, 1253, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 4, 161, 9, 161, 4, 162, 9, 162, 4, 163, 9, 163, 4, 164, 9, 164, 4, 165, 9, 165, 4, 166, 9, 166, 4, 167, 9, 167, 4, 168, 9, 168, 4, 169, 9, 169, 4, 170, 9, 170, 4, 171, 9, 171, 4, 172, 9, 172, 4, 173, 9, 173, 4, 174, 9, 174, 4, 175, 9, 175, 4, 176, 9, 176, 4, 177, 9, 177, 4, 178, 9, 178, 4, 179, 9, 179, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 6, 19, 514, 10, 19, 13, 19, 14, 19, 515, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 524, 10, 20, 12, 20, 14, 20, 527, 11, 20, 3, 20, 5, 20, 530, 10, 20, 3, 20, 5, 20, 533, 10, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 7, 21, 542, 10, 21, 12, 21, 14, 21, 545, 11, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 6, 22, 553, 10, 22, 13, 22, 14, 22, 554, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 5, 33, 596, 10, 33, 3, 33, 6, 33, 599, 10, 33, 13, 33, 14, 33, 600, 3, 34, 3, 34, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 5, 36, 610, 10, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 5, 38, 617, 10, 38, 3, 39, 3, 39, 3, 39, 7, 39, 622, 10, 39, 12, 39, 14, 39, 625, 11, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 7, 39, 633, 10, 39, 12, 39, 14, 39, 636, 11, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 643, 10, 39, 3, 39, 5, 39, 646, 10, 39, 5, 39, 648, 10, 39, 3, 40, 6, 40, 651, 10, 40, 13, 40, 14, 40, 652, 3, 41, 6, 41, 656, 10, 41, 13, 41, 14, 41, 657, 3, 41, 3, 41, 7, 41, 662, 10, 41, 12, 41, 14, 41, 665, 11, 41, 3, 41, 3, 41, 6, 41, 669, 10, 41, 13, 41, 14, 41, 670, 3, 41, 6, 41, 674, 10, 41, 13, 41, 14, 41, 675, 3, 41, 3, 41, 7, 41, 680, 10, 41, 12, 41, 14, 41, 683, 11, 41, 5, 41, 685, 10, 41, 3, 41, 3, 41, 3, 41, 3, 41, 6, 41, 691, 10, 41, 13, 41, 14, 41, 692, 3, 41, 3, 41, 5, 41, 697, 10, 41, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 72, 3, 72, 3, 73, 3, 73, 3, 74, 3, 74, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 7, 78, 825, 10, 78, 12, 78, 14, 78, 828, 11, 78, 3, 78, 3, 78, 5, 78, 832, 10, 78, 3, 78, 6, 78, 835, 10, 78, 13, 78, 14, 78, 836, 5, 78, 839, 10, 78, 3, 79, 3, 79, 6, 79, 843, 10, 79, 13, 79, 14, 79, 844, 3, 79, 3, 79, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 5, 90, 896, 10, 90, 3, 91, 6, 91, 899, 10, 91, 13, 91, 14, 91, 900, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 5, 99, 936, 10, 99, 3, 100, 3, 100, 5, 100, 940, 10, 100, 3, 100, 7, 100, 943, 10, 100, 12, 100, 14, 100, 946, 11, 100, 3, 100, 3, 100, 5, 100, 950, 10, 100, 3, 100, 6, 100, 953, 10, 100, 13, 100, 14, 100, 954, 5, 100, 957, 10, 100, 3, 101, 3, 101, 6, 101, 961, 10, 101, 13, 101, 14, 101, 962, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 119, 6, 119, 1038, 10, 119, 13, 119, 14, 119, 1039, 3, 119, 3, 119, 5, 119, 1044, 10, 119, 3, 119, 6, 119, 1047, 10, 119, 13, 119, 14, 119, 1048, 3, 120, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 128, 3, 128, 3, 128, 3, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 130, 3, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 134, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, 3, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 3, 145, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 149, 3, 149, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 6, 150, 1186, 10, 150, 13, 150, 14, 150, 1187, 3, 151, 3, 151, 3, 151, 3, 151, 3, 152, 3, 152, 3, 152, 3, 152, 3, 153, 3, 153, 3, 153, 3, 153, 3, 154, 3, 154, 3, 155, 3, 155, 3, 156, 3, 156, 3, 157, 3, 157, 3, 158, 3, 158, 3, 159, 3, 159, 3, 160, 3, 160, 3, 161, 3, 161, 3, 162, 3, 162, 3, 163, 3, 163, 3, 164, 3, 164, 3, 165, 3, 165, 3, 166, 3, 166, 3, 167, 3, 167, 3, 168, 3, 168, 3, 169, 3, 169, 3, 170, 3, 170, 3, 171, 3, 171, 3, 172, 3, 172, 3, 173, 3, 173, 3, 174, 3, 174, 3, 175, 3, 175, 3, 176, 3, 176, 3, 177, 3, 177, 3, 178, 3, 178, 3, 179, 3, 179, 4, 543, 634, 2, 2, 180, 13, 2, 3, 15, 2, 4, 17, 2, 5, 19, 2, 6, 21, 2, 7, 23, 2, 8, 25, 2, 9, 27, 2, 10, 29, 2, 11, 31, 2, 12, 33, 2, 13, 35, 2, 14, 37, 2, 15, 39, 2, 16, 41, 2, 17, 43, 2, 18, 45, 2, 19, 47, 2, 20, 49, 2, 21, 51, 2, 22, 53, 2, 23, 55, 2, 2, 57, 2, 2, 59, 2, 24, 61, 2, 25, 63, 2, 26, 65, 2, 27, 67, 2, 2, 69, 2, 2, 71, 2, 2, 73, 2, 2, 75, 2, 2, 77, 2, 2, 79, 2, 2, 81, 2, 2, 83, 2, 2, 85, 2, 2, 87, 2, 28, 89, 2, 29, 91, 2, 30, 93, 2, 31, 95, 2, 32, 97, 2, 33, 99, 2, 34, 101, 2, 35, 103, 2, 36, 105, 2, 37, 107, 2, 38, 109, 2, 39, 111, 2, 40, 113, 2, 41, 115, 2, 42, 117, 2, 43, 119, 2, 44, 121, 2, 45, 123, 2, 46, 125, 2, 47, 127, 2, 48, 129, 2, 49, 131, 2, 50, 133, 2, 51, 135, 2, 52, 137, 2, 53, 139, 2, 54, 141, 2, 55, 143, 2, 56, 145, 2, 57, 147, 2, 58, 149, 2, 59, 151, 2, 60, 153, 2, 61, 155, 2, 62, 157, 2, 63, 159, 2, 64, 161, 2, 65, 163, 2, 66, 165, 2, 67, 167, 2, 2, 169, 2, 68, 171, 2, 69, 173, 2, 70, 175, 2, 71, 177, 2, 2, 179, 2, 2, 181, 2, 2, 183, 2, 2, 185, 2, 2, 187, 2, 72, 189, 2, 2, 191, 2, 73, 193, 2, 2, 195, 2, 74, 197, 2, 75, 199, 2, 76, 201, 2, 2, 203, 2, 2, 205, 2, 2, 207, 2, 2, 209, 2, 2, 211, 2, 77, 213, 2, 78, 215, 2, 79, 217, 2, 80, 219, 2, 2, 221, 2, 2, 223, 2, 2, 225, 2, 2, 227, 2, 81, 229, 2, 2, 231, 2, 82, 233, 2, 83, 235, 2, 84, 237, 2, 2, 239, 2, 2, 241, 2, 85, 243, 2, 86, 245, 2, 2, 247, 2, 87, 249, 2, 2, 251, 2, 2, 253, 2, 88, 255, 2, 89, 257, 2, 90, 259, 2, 2, 261, 2, 2, 263, 2, 2, 265, 2, 2, 267, 2, 2, 269, 2, 2, 271, 2, 2, 273, 2, 91, 275, 2, 92, 277, 2, 93, 279, 2, 2, 281, 2, 2, 283, 2, 2, 285, 2, 2, 287, 2, 94, 289, 2, 95, 291, 2, 96, 293, 2, 2, 295, 2, 97, 297, 2, 98, 299, 2, 99, 301, 2, 100, 303, 2, 101, 305, 2, 2, 307, 2, 102, 309, 2, 103, 311, 2, 104, 313, 2, 105, 315, 2, 106, 317, 2, 2, 319, 2, 2, 321, 2, 2, 323, 2, 2, 325, 2, 2, 327, 2, 2, 329, 2, 2, 331, 2, 2, 333, 2, 2, 335, 2, 2, 337, 2, 2, 339, 2, 2, 341, 2, 2, 343, 2, 2, 345, 2, 2, 347, 2, 2, 349, 2, 2, 351, 2, 2, 353, 2, 2, 355, 2, 2, 357, 2, 2, 359, 2, 2, 361, 2, 2, 363, 2, 2, 365, 2, 2, 367, 2, 2, 13, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 40, 8, 2, 11, 12, 15, 15, 34, 34, 49, 49, 93, 93, 95, 95, 4, 2, 12, 12, 15, 15, 5, 2, 11, 12, 15, 15, 34, 34, 3, 2, 50, 59, 4, 2, 67, 92, 99, 124, 7, 2, 36, 36, 94, 94, 112, 112, 116, 116, 118, 118, 6, 2, 12, 12, 15, 15, 36, 36, 94, 94, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 3, 2, 98, 98, 12, 2, 11, 12, 15, 15, 34, 34, 46, 46, 49, 49, 63, 63, 93, 93, 95, 95, 98, 98, 126, 126, 4, 2, 44, 44, 49, 49, 13, 2, 11, 12, 15, 15, 34, 34, 36, 37, 46, 46, 49, 49, 60, 60, 62, 62, 64, 65, 94, 94, 126, 126, 4, 2, 67, 67, 99, 99, 4, 2, 68, 68, 100, 100, 4, 2, 69, 69, 101, 101, 4, 2, 70, 70, 102, 102, 4, 2, 72, 72, 104, 104, 4, 2, 73, 73, 105, 105, 4, 2, 74, 74, 106, 106, 4, 2, 75, 75, 107, 107, 4, 2, 76, 76, 108, 108, 4, 2, 77, 77, 109, 109, 4, 2, 78, 78, 110, 110, 4, 2, 79, 79, 111, 111, 4, 2, 80, 80, 112, 112, 4, 2, 81, 81, 113, 113, 4, 2, 82, 82, 114, 114, 4, 2, 83, 83, 115, 115, 4, 2, 84, 84, 116, 116, 4, 2, 85, 85, 117, 117, 4, 2, 86, 86, 118, 118, 4, 2, 87, 87, 119, 119, 4, 2, 88, 88, 120, 120, 4, 2, 89, 89, 121, 121, 4, 2, 90, 90, 122, 122, 4, 2, 91, 91, 123, 123, 4, 2, 92, 92, 124, 124, 2, 1255, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 3, 55, 3, 2, 2, 2, 3, 57, 3, 2, 2, 2, 3, 59, 3, 2, 2, 2, 3, 61, 3, 2, 2, 2, 3, 63, 3, 2, 2, 2, 4, 65, 3, 2, 2, 2, 4, 87, 3, 2, 2, 2, 4, 89, 3, 2, 2, 2, 4, 91, 3, 2, 2, 2, 4, 93, 3, 2, 2, 2, 4, 95, 3, 2, 2, 2, 4, 97, 3, 2, 2, 2, 4, 99, 3, 2, 2, 2, 4, 101, 3, 2, 2, 2, 4, 103, 3, 2, 2, 2, 4, 105, 3, 2, 2, 2, 4, 107, 3, 2, 2, 2, 4, 109, 3, 2, 2, 2, 4, 111, 3, 2, 2, 2, 4, 113, 3, 2, 2, 2, 4, 115, 3, 2, 2, 2, 4, 117, 3, 2, 2, 2, 4, 119, 3, 2, 2, 2, 4, 121, 3, 2, 2, 2, 4, 123, 3, 2, 2, 2, 4, 125, 3, 2, 2, 2, 4, 127, 3, 2, 2, 2, 4, 129, 3, 2, 2, 2, 4, 131, 3, 2, 2, 2, 4, 133, 3, 2, 2, 2, 4, 135, 3, 2, 2, 2, 4, 137, 3, 2, 2, 2, 4, 139, 3, 2, 2, 2, 4, 141, 3, 2, 2, 2, 4, 143, 3, 2, 2, 2, 4, 145, 3, 2, 2, 2, 4, 147, 3, 2, 2, 2, 4, 149, 3, 2, 2, 2, 4, 151, 3, 2, 2, 2, 4, 153, 3, 2, 2, 2, 4, 155, 3, 2, 2, 2, 4, 157, 3, 2, 2, 2, 4, 159, 3, 2, 2, 2, 4, 161, 3, 2, 2, 2, 4, 163, 3, 2, 2, 2, 4, 165, 3, 2, 2, 2, 4, 169, 3, 2, 2, 2, 4, 171, 3, 2, 2, 2, 4, 173, 3, 2, 2, 2, 4, 175, 3, 2, 2, 2, 5, 177, 3, 2, 2, 2, 5, 179, 3, 2, 2, 2, 5, 181, 3, 2, 2, 2, 5, 183, 3, 2, 2, 2, 5, 185, 3, 2, 2, 2, 5, 187, 3, 2, 2, 2, 5, 191, 3, 2, 2, 2, 5, 193, 3, 2, 2, 2, 5, 195, 3, 2, 2, 2, 5, 197, 3, 2, 2, 2, 5, 199, 3, 2, 2, 2, 6, 201, 3, 2, 2, 2, 6, 203, 3, 2, 2, 2, 6, 205, 3, 2, 2, 2, 6, 211, 3, 2, 2, 2, 6, 213, 3, 2, 2, 2, 6, 215, 3, 2, 2, 2, 6, 217, 3, 2, 2, 2, 7, 219, 3, 2, 2, 2, 7, 221, 3, 2, 2, 2, 7, 223, 3, 2, 2, 2, 7, 225, 3, 2, 2, 2, 7, 227, 3, 2, 2, 2, 7, 229, 3, 2, 2, 2, 7, 231, 3, 2, 2, 2, 7, 233, 3, 2, 2, 2, 7, 235, 3, 2, 2, 2, 8, 237, 3, 2, 2, 2, 8, 239, 3, 2, 2, 2, 8, 241, 3, 2, 2, 2, 8, 243, 3, 2, 2, 2, 8, 247, 3, 2, 2, 2, 8, 249, 3, 2, 2, 2, 8, 251, 3, 2, 2, 2, 8, 253, 3, 2, 2, 2, 8, 255, 3, 2, 2, 2, 8, 257, 3, 2, 2, 2, 9, 259, 3, 2, 2, 2, 9, 261, 3, 2, 2, 2, 9, 263, 3, 2, 2, 2, 9, 265, 3, 2, 2, 2, 9, 267, 3, 2, 2, 2, 9, 269, 3, 2, 2, 2, 9, 271, 3, 2, 2, 2, 9, 273, 3, 2, 2, 2, 9, 275, 3, 2, 2, 2, 9, 277, 3, 2, 2, 2, 10, 279, 3, 2, 2, 2, 10, 281, 3, 2, 2, 2, 10, 283, 3, 2, 2, 2, 10, 285, 3, 2, 2, 2, 10, 287, 3, 2, 2, 2, 10, 289, 3, 2, 2, 2, 10, 291, 3, 2, 2, 2, 11, 293, 3, 2, 2, 2, 11, 295, 3, 2, 2, 2, 11, 297, 3, 2, 2, 2, 11, 299, 3, 2, 2, 2, 11, 301, 3, 2, 2, 2, 11, 303, 3, 2, 2, 2, 12, 305, 3, 2, 2, 2, 12, 307, 3, 2, 2, 2, 12, 309, 3, 2, 2, 2, 12, 311, 3, 2, 2, 2, 12, 313, 3, 2, 2, 2, 12, 315, 3, 2, 2, 2, 13, 369, 3, 2, 2, 2, 15, 379, 3, 2, 2, 2, 17, 386, 3, 2, 2, 2, 19, 395, 3, 2, 2, 2, 21, 402, 3, 2, 2, 2, 23, 412, 3, 2, 2, 2, 25, 419, 3, 2, 2, 2, 27, 426, 3, 2, 2, 2, 29, 440, 3, 2, 2, 2, 31, 447, 3, 2, 2, 2, 33, 455, 3, 2, 2, 2, 35, 467, 3, 2, 2, 2, 37, 476, 3, 2, 2, 2, 39, 482, 3, 2, 2, 2, 41, 489, 3, 2, 2, 2, 43, 496, 3, 2, 2, 2, 45, 504, 3, 2, 2, 2, 47, 513, 3, 2, 2, 2, 49, 519, 3, 2, 2, 2, 51, 536, 3, 2, 2, 2, 53, 552, 3, 2, 2, 2, 55, 558, 3, 2, 2, 2, 57, 563, 3, 2, 2, 2, 59, 568, 3, 2, 2, 2, 61, 572, 3, 2, 2, 2, 63, 576, 3, 2, 2, 2, 65, 580, 3, 2, 2, 2, 67, 584, 3, 2, 2, 2, 69, 586, 3, 2, 2, 2, 71, 588, 3, 2, 2, 2, 73, 591, 3, 2, 2, 2, 75, 593, 3, 2, 2, 2, 77, 602, 3, 2, 2, 2, 79, 604, 3, 2, 2, 2, 81, 609, 3, 2, 2, 2, 83, 611, 3, 2, 2, 2, 85, 616, 3, 2, 2, 2, 87, 647, 3, 2, 2, 2, 89, 650, 3, 2, 2, 2, 91, 696, 3, 2, 2, 2, 93, 698, 3, 2, 2, 2, 95, 701, 3, 2, 2, 2, 97, 705, 3, 2, 2, 2, 99, 709, 3, 2, 2, 2, 101, 711, 3, 2, 2, 2, 103, 713, 3, 2, 2, 2, 105, 718, 3, 2, 2, 2, 107, 720, 3, 2, 2, 2, 109, 726, 3, 2, 2, 2, 111, 732, 3, 2, 2, 2, 113, 737, 3, 2, 2, 2, 115, 739, 3, 2, 2, 2, 117, 742, 3, 2, 2, 2, 119, 745, 3, 2, 2, 2, 121, 750, 3, 2, 2, 2, 123, 754, 3, 2, 2, 2, 125, 759, 3, 2, 2, 2, 127, 765, 3, 2, 2, 2, 129, 768, 3, 2, 2, 2, 131, 770, 3, 2, 2, 2, 133, 776, 3, 2, 2, 2, 135, 778, 3, 2, 2, 2, 137, 783, 3, 2, 2, 2, 139, 786, 3, 2, 2, 2, 141, 789, 3, 2, 2, 2, 143, 792, 3, 2, 2, 2, 145, 794, 3, 2, 2, 2, 147, 797, 3, 2, 2, 2, 149, 799, 3, 2, 2, 2, 151, 802, 3, 2, 2, 2, 153, 804, 3, 2, 2, 2, 155, 806, 3, 2, 2, 2, 157, 808, 3, 2, 2, 2, 159, 810, 3, 2, 2, 2, 161, 812, 3, 2, 2, 2, 163, 817, 3, 2, 2, 2, 165, 838, 3, 2, 2, 2, 167, 840, 3, 2, 2, 2, 169, 848, 3, 2, 2, 2, 171, 850, 3, 2, 2, 2, 173, 854, 3, 2, 2, 2, 175, 858, 3, 2, 2, 2, 177, 862, 3, 2, 2, 2, 179, 867, 3, 2, 2, 2, 181, 871, 3, 2, 2, 2, 183, 875, 3, 2, 2, 2, 185, 879, 3, 2, 2, 2, 187, 883, 3, 2, 2, 2, 189, 895, 3, 2, 2, 2, 191, 898, 3, 2, 2, 2, 193, 902, 3, 2, 2, 2, 195, 906, 3, 2, 2, 2, 197, 910, 3, 2, 2, 2, 199, 914, 3, 2, 2, 2, 201, 918, 3, 2, 2, 2, 203, 923, 3, 2, 2, 2, 205, 927, 3, 2, 2, 2, 207, 935, 3, 2, 2, 2, 209, 956, 3, 2, 2, 2, 211, 960, 3, 2, 2, 2, 213, 964, 3, 2, 2, 2, 215, 968, 3, 2, 2, 2, 217, 972, 3, 2, 2, 2, 219, 976, 3, 2, 2, 2, 221, 981, 3, 2, 2, 2, 223, 985, 3, 2, 2, 2, 225, 989, 3, 2, 2, 2, 227, 993, 3, 2, 2, 2, 229, 996, 3, 2, 2, 2, 231, 1000, 3, 2, 2, 2, 233, 1004, 3, 2, 2, 2, 235, 1008, 3, 2, 2, 2, 237, 1012, 3, 2, 2, 2, 239, 1017, 3, 2, 2, 2, 241, 1022, 3, 2, 2, 2, 243, 1027, 3, 2, 2, 2, 245, 1034, 3, 2, 2, 2, 247, 1043, 3, 2, 2, 2, 249, 1050, 3, 2, 2, 2, 251, 1054, 3, 2, 2, 2, 253, 1058, 3, 2, 2, 2, 255, 1062, 3, 2, 2, 2, 257, 1066, 3, 2, 2, 2, 259, 1070, 3, 2, 2, 2, 261, 1076, 3, 2, 2, 2, 263, 1080, 3, 2, 2, 2, 265, 1084, 3, 2, 2, 2, 267, 1088, 3, 2, 2, 2, 269, 1092, 3, 2, 2, 2, 271, 1096, 3, 2, 2, 2, 273, 1100, 3, 2, 2, 2, 275, 1104, 3, 2, 2, 2, 277, 1108, 3, 2, 2, 2, 279, 1112, 3, 2, 2, 2, 281, 1117, 3, 2, 2, 2, 283, 1121, 3, 2, 2, 2, 285, 1125, 3, 2, 2, 2, 287, 1129, 3, 2, 2, 2, 289, 1133, 3, 2, 2, 2, 291, 1137, 3, 2, 2, 2, 293, 1141, 3, 2, 2, 2, 295, 1146, 3, 2, 2, 2, 297, 1151, 3, 2, 2, 2, 299, 1161, 3, 2, 2, 2, 301, 1165, 3, 2, 2, 2, 303, 1169, 3, 2, 2, 2, 305, 1173, 3, 2, 2, 2, 307, 1178, 3, 2, 2, 2, 309, 1185, 3, 2, 2, 2, 311, 1189, 3, 2, 2, 2, 313, 1193, 3, 2, 2, 2, 315, 1197, 3, 2, 2, 2, 317, 1201, 3, 2, 2, 2, 319, 1203, 3, 2, 2, 2, 321, 1205, 3, 2, 2, 2, 323, 1207, 3, 2, 2, 2, 325, 1209, 3, 2, 2, 2, 327, 1211, 3, 2, 2, 2, 329, 1213, 3, 2, 2, 2, 331, 1215, 3, 2, 2, 2, 333, 1217, 3, 2, 2, 2, 335, 1219, 3, 2, 2, 2, 337, 1221, 3, 2, 2, 2, 339, 1223, 3, 2, 2, 2, 341, 1225, 3, 2, 2, 2, 343, 1227, 3, 2, 2, 2, 345, 1229, 3, 2, 2, 2, 347, 1231, 3, 2, 2, 2, 349, 1233, 3, 2, 2, 2, 351, 1235, 3, 2, 2, 2, 353, 1237, 3, 2, 2, 2, 355, 1239, 3, 2, 2, 2, 357, 1241, 3, 2, 2, 2, 359, 1243, 3, 2, 2, 2, 361, 1245, 3, 2, 2, 2, 363, 1247, 3, 2, 2, 2, 365, 1249, 3, 2, 2, 2, 367, 1251, 3, 2, 2, 2, 369, 370, 5, 323, 157, 2, 370, 371, 5, 333, 162, 2, 371, 372, 5, 353, 172, 2, 372, 373, 5, 353, 172, 2, 373, 374, 5, 325, 158, 2, 374, 375, 5, 321, 156, 2, 375, 376, 5, 355, 173, 2, 376, 377, 3, 2, 2, 2, 377, 378, 8, 2, 2, 2, 378, 14, 3, 2, 2, 2, 379, 380, 5, 323, 157, 2, 380, 381, 5, 351, 171, 2, 381, 382, 5, 345, 168, 2, 382, 383, 5, 347, 169, 2, 383, 384, 3, 2, 2, 2, 384, 385, 8, 3, 3, 2, 385, 16, 3, 2, 2, 2, 386, 387, 5, 325, 158, 2, 387, 388, 5, 343, 167, 2, 388, 389, 5, 351, 171, 2, 389, 390, 5, 333, 162, 2, 390, 391, 5, 321, 156, 2, 391, 392, 5, 331, 161, 2, 392, 393, 3, 2, 2, 2, 393, 394, 8, 4, 4, 2, 394, 18, 3, 2, 2, 2, 395, 396, 5, 325, 158, 2, 396, 397, 5, 359, 175, 2, 397, 398, 5, 317, 154, 2, 398, 399, 5, 339, 165, 2, 399, 400, 3, 2, 2, 2, 400, 401, 8, 5, 2, 2, 401, 20, 3, 2, 2, 2, 402, 403, 5, 325, 158, 2, 403, 404, 5, 363, 177, 2, 404, 405, 5, 347, 169, 2, 405, 406, 5, 339, 165, 2, 406, 407, 5, 317, 154, 2, 407, 408, 5, 333, 162, 2, 408, 409, 5, 343, 167, 2, 409, 410, 3, 2, 2, 2, 410, 411, 8, 6, 5, 2, 411, 22, 3, 2, 2, 2, 412, 413, 5, 327, 159, 2, 413, 414, 5, 351, 171, 2, 414, 415, 5, 345, 168, 2, 415, 416, 5, 341, 166, 2, 416, 417, 3, 2, 2, 2, 417, 418, 8, 7, 6, 2, 418, 24, 3, 2, 2, 2, 419, 420, 5, 329, 160, 2, 420, 421, 5, 351, 171, 2, 421, 422, 5, 345, 168, 2, 422, 423, 5, 337, 164, 2, 423, 424, 3, 2, 2, 2, 424, 425, 8, 8, 2, 2, 425, 26, 3, 2, 2, 2, 426, 427, 5, 333, 162, 2, 427, 428, 5, 343, 167, 2, 428, 429, 5, 339, 165, 2, 429, 430, 5, 333, 162, 2, 430, 431, 5, 343, 167, 2, 431, 432, 5, 325, 158, 2, 432, 433, 5, 353, 172, 2, 433, 434, 5, 355, 173, 2, 434, 435, 5, 317, 154, 2, 435, 436, 5, 355, 173, 2, 436, 437, 5, 353, 172, 2, 437, 438, 3, 2, 2, 2, 438, 439, 8, 9, 2, 2, 439, 28, 3, 2, 2, 2, 440, 441, 5, 337, 164, 2, 441, 442, 5, 325, 158, 2, 442, 443, 5, 325, 158, 2, 443, 444, 5, 347, 169, 2, 444, 445, 3, 2, 2, 2, 445, 446, 8, 10, 3, 2, 446, 30, 3, 2, 2, 2, 447, 448, 5, 339, 165, 2, 448, 449, 5, 333, 162, 2, 449, 450, 5, 341, 166, 2, 450, 451, 5, 333, 162, 2, 451, 452, 5, 355, 173, 2, 452, 453, 3, 2, 2, 2, 453, 454, 8, 11, 2, 2, 454, 32, 3, 2, 2, 2, 455, 456, 5, 341, 166, 2, 456, 457, 5, 359, 175, 2, 457, 458, 5, 83, 37, 2, 458, 459, 5, 325, 158, 2, 459, 460, 5, 363, 177, 2, 460, 461, 5, 347, 169, 2, 461, 462, 5, 317, 154, 2, 462, 463, 5, 343, 167, 2, 463, 464, 5, 323, 157, 2, 464, 465, 3, 2, 2, 2, 465, 466, 8, 12, 7, 2, 466, 34, 3, 2, 2, 2, 467, 468, 5, 351, 171, 2, 468, 469, 5, 325, 158, 2, 469, 470, 5, 343, 167, 2, 470, 471, 5, 317, 154, 2, 471, 472, 5, 341, 166, 2, 472, 473, 5, 325, 158, 2, 473, 474, 3, 2, 2, 2, 474, 475, 8, 13, 8, 2, 475, 36, 3, 2, 2, 2, 476, 477, 5, 351, 171, 2, 477, 478, 5, 345, 168, 2, 478, 479, 5, 361, 176, 2, 479, 480, 3, 2, 2, 2, 480, 481, 8, 14, 2, 2, 481, 38, 3, 2, 2, 2, 482, 483, 5, 353, 172, 2, 483, 484, 5, 331, 161, 2, 484, 485, 5, 345, 168, 2, 485, 486, 5, 361, 176, 2, 486, 487, 3, 2, 2, 2, 487, 488, 8, 15, 9, 2, 488, 40, 3, 2, 2, 2, 489, 490, 5, 353, 172, 2, 490, 491, 5, 345, 168, 2, 491, 492, 5, 351, 171, 2, 492, 493, 5, 355, 173, 2, 493, 494, 3, 2, 2, 2, 494, 495, 8, 16, 2, 2, 495, 42, 3, 2, 2, 2, 496, 497, 5, 353, 172, 2, 497, 498, 5, 355, 173, 2, 498, 499, 5, 317, 154, 2, 499, 500, 5, 355, 173, 2, 500, 501, 5, 353, 172, 2, 501, 502, 3, 2, 2, 2, 502, 503, 8, 17, 2, 2, 503, 44, 3, 2, 2, 2, 504, 505, 5, 361, 176, 2, 505, 506, 5, 331, 161, 2, 506, 507, 5, 325, 158, 2, 507, 508, 5, 351, 171, 2, 508, 509, 5, 325, 158, 2, 509, 510, 3, 2, 2, 2, 510, 511, 8, 18, 2, 2, 511, 46, 3, 2, 2, 2, 512, 514, 10, 2, 2, 2, 513, 512, 3, 2, 2, 2, 514, 515, 3, 2, 2, 2, 515, 513, 3, 2, 2, 2, 515, 516, 3, 2, 2, 2, 516, 517, 3, 2, 2, 2, 517, 518, 8, 19, 2, 2, 518, 48, 3, 2, 2, 2, 519, 520, 7, 49, 2, 2, 520, 521, 7, 49, 2, 2, 521, 525, 3, 2, 2, 2, 522, 524, 10, 3, 2, 2, 523, 522, 3, 2, 2, 2, 524, 527, 3, 2, 2, 2, 525, 523, 3, 2, 2, 2, 525, 526, 3, 2, 2, 2, 526, 529, 3, 2, 2, 2, 527, 525, 3, 2, 2, 2, 528, 530, 7, 15, 2, 2, 529, 528, 3, 2, 2, 2, 529, 530, 3, 2, 2, 2, 530, 532, 3, 2, 2, 2, 531, 533, 7, 12, 2, 2, 532, 531, 3, 2, 2, 2, 532, 533, 3, 2, 2, 2, 533, 534, 3, 2, 2, 2, 534, 535, 8, 20, 10, 2, 535, 50, 3, 2, 2, 2, 536, 537, 7, 49, 2, 2, 537, 538, 7, 44, 2, 2, 538, 543, 3, 2, 2, 2, 539, 542, 5, 51, 21, 2, 540, 542, 11, 2, 2, 2, 541, 539, 3, 2, 2, 2, 541, 540, 3, 2, 2, 2, 542, 545, 3, 2, 2, 2, 543, 544, 3, 2, 2, 2, 543, 541, 3, 2, 2, 2, 544, 546, 3, 2, 2, 2, 545, 543, 3, 2, 2, 2, 546, 547, 7, 44, 2, 2, 547, 548, 7, 49, 2, 2, 548, 549, 3, 2, 2, 2, 549, 550, 8, 21, 10, 2, 550, 52, 3, 2, 2, 2, 551, 553, 9, 4, 2, 2, 552, 551, 3, 2, 2, 2, 553, 554, 3, 2, 2, 2, 554, 552, 3, 2, 2, 2, 554, 555, 3, 2, 2, 2, 555, 556, 3, 2, 2, 2, 556, 557, 8, 22, 10, 2, 557, 54, 3, 2, 2, 2, 558, 559, 5, 161, 76, 2, 559, 560, 3, 2, 2, 2, 560, 561, 8, 23, 11, 2, 561, 562, 8, 23, 12, 2, 562, 56, 3, 2, 2, 2, 563, 564, 5, 65, 28, 2, 564, 565, 3, 2, 2, 2, 565, 566, 8, 24, 13, 2, 566, 567, 8, 24, 14, 2, 567, 58, 3, 2, 2, 2, 568, 569, 5, 53, 22, 2, 569, 570, 3, 2, 2, 2, 570, 571, 8, 25, 10, 2, 571, 60, 3, 2, 2, 2, 572, 573, 5, 49, 20, 2, 573, 574, 3, 2, 2, 2, 574, 575, 8, 26, 10, 2, 575, 62, 3, 2, 2, 2, 576, 577, 5, 51, 21, 2, 577, 578, 3, 2, 2, 2, 578, 579, 8, 27, 10, 2, 579, 64, 3, 2, 2, 2, 580, 581, 7, 126, 2, 2, 581, 582, 3, 2, 2, 2, 582, 583, 8, 28, 14, 2, 583, 66, 3, 2, 2, 2, 584, 585, 9, 5, 2, 2, 585, 68, 3, 2, 2, 2, 586, 587, 9, 6, 2, 2, 587, 70, 3, 2, 2, 2, 588, 589, 7, 94, 2, 2, 589, 590, 9, 7, 2, 2, 590, 72, 3, 2, 2, 2, 591, 592, 10, 8, 2, 2, 592, 74, 3, 2, 2, 2, 593, 595, 9, 9, 2, 2, 594, 596, 9, 10, 2, 2, 595, 594, 3, 2, 2, 2, 595, 596, 3, 2, 2, 2, 596, 598, 3, 2, 2, 2, 597, 599, 5, 67, 29, 2, 598, 597, 3, 2, 2, 2, 599, 600, 3, 2, 2, 2, 600, 598, 3, 2, 2, 2, 600, 601, 3, 2, 2, 2, 601, 76, 3, 2, 2, 2, 602, 603, 7, 66, 2, 2, 603, 78, 3, 2, 2, 2, 604, 605, 7, 98, 2, 2, 605, 80, 3, 2, 2, 2, 606, 610, 10, 11, 2, 2, 607, 608, 7, 98, 2, 2, 608, 610, 7, 98, 2, 2, 609, 606, 3, 2, 2, 2, 609, 607, 3, 2, 2, 2, 610, 82, 3, 2, 2, 2, 611, 612, 7, 97, 2, 2, 612, 84, 3, 2, 2, 2, 613, 617, 5, 69, 30, 2, 614, 617, 5, 67, 29, 2, 615, 617, 5, 83, 37, 2, 616, 613, 3, 2, 2, 2, 616, 614, 3, 2, 2, 2, 616, 615, 3, 2, 2, 2, 617, 86, 3, 2, 2, 2, 618, 623, 7, 36, 2, 2, 619, 622, 5, 71, 31, 2, 620, 622, 5, 73, 32, 2, 621, 619, 3, 2, 2, 2, 621, 620, 3, 2, 2, 2, 622, 625, 3, 2, 2, 2, 623, 621, 3, 2, 2, 2, 623, 624, 3, 2, 2, 2, 624, 626, 3, 2, 2, 2, 625, 623, 3, 2, 2, 2, 626, 648, 7, 36, 2, 2, 627, 628, 7, 36, 2, 2, 628, 629, 7, 36, 2, 2, 629, 630, 7, 36, 2, 2, 630, 634, 3, 2, 2, 2, 631, 633, 10, 3, 2, 2, 632, 631, 3, 2, 2, 2, 633, 636, 3, 2, 2, 2, 634, 635, 3, 2, 2, 2, 634, 632, 3, 2, 2, 2, 635, 637, 3, 2, 2, 2, 636, 634, 3, 2, 2, 2, 637, 638, 7, 36, 2, 2, 638, 639, 7, 36, 2, 2, 639, 640, 7, 36, 2, 2, 640, 642, 3, 2, 2, 2, 641, 643, 7, 36, 2, 2, 642, 641, 3, 2, 2, 2, 642, 643, 3, 2, 2, 2, 643, 645, 3, 2, 2, 2, 644, 646, 7, 36, 2, 2, 645, 644, 3, 2, 2, 2, 645, 646, 3, 2, 2, 2, 646, 648, 3, 2, 2, 2, 647, 618, 3, 2, 2, 2, 647, 627, 3, 2, 2, 2, 648, 88, 3, 2, 2, 2, 649, 651, 5, 67, 29, 2, 650, 649, 3, 2, 2, 2, 651, 652, 3, 2, 2, 2, 652, 650, 3, 2, 2, 2, 652, 653, 3, 2, 2, 2, 653, 90, 3, 2, 2, 2, 654, 656, 5, 67, 29, 2, 655, 654, 3, 2, 2, 2, 656, 657, 3, 2, 2, 2, 657, 655, 3, 2, 2, 2, 657, 658, 3, 2, 2, 2, 658, 659, 3, 2, 2, 2, 659, 663, 5, 105, 48, 2, 660, 662, 5, 67, 29, 2, 661, 660, 3, 2, 2, 2, 662, 665, 3, 2, 2, 2, 663, 661, 3, 2, 2, 2, 663, 664, 3, 2, 2, 2, 664, 697, 3, 2, 2, 2, 665, 663, 3, 2, 2, 2, 666, 668, 5, 105, 48, 2, 667, 669, 5, 67, 29, 2, 668, 667, 3, 2, 2, 2, 669, 670, 3, 2, 2, 2, 670, 668, 3, 2, 2, 2, 670, 671, 3, 2, 2, 2, 671, 697, 3, 2, 2, 2, 672, 674, 5, 67, 29, 2, 673, 672, 3, 2, 2, 2, 674, 675, 3, 2, 2, 2, 675, 673, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 684, 3, 2, 2, 2, 677, 681, 5, 105, 48, 2, 678, 680, 5, 67, 29, 2, 679, 678, 3, 2, 2, 2, 680, 683, 3, 2, 2, 2, 681, 679, 3, 2, 2, 2, 681, 682, 3, 2, 2, 2, 682, 685, 3, 2, 2, 2, 683, 681, 3, 2, 2, 2, 684, 677, 3, 2, 2, 2, 684, 685, 3, 2, 2, 2, 685, 686, 3, 2, 2, 2, 686, 687, 5, 75, 33, 2, 687, 697, 3, 2, 2, 2, 688, 690, 5, 105, 48, 2, 689, 691, 5, 67, 29, 2, 690, 689, 3, 2, 2, 2, 691, 692, 3, 2, 2, 2, 692, 690, 3, 2, 2, 2, 692, 693, 3, 2, 2, 2, 693, 694, 3, 2, 2, 2, 694, 695, 5, 75, 33, 2, 695, 697, 3, 2, 2, 2, 696, 655, 3, 2, 2, 2, 696, 666, 3, 2, 2, 2, 696, 673, 3, 2, 2, 2, 696, 688, 3, 2, 2, 2, 697, 92, 3, 2, 2, 2, 698, 699, 5, 319, 155, 2, 699, 700, 5, 365, 178, 2, 700, 94, 3, 2, 2, 2, 701, 702, 5, 317, 154, 2, 702, 703, 5, 343, 167, 2, 703, 704, 5, 323, 157, 2, 704, 96, 3, 2, 2, 2, 705, 706, 5, 317, 154, 2, 706, 707, 5, 353, 172, 2, 707, 708, 5, 321, 156, 2, 708, 98, 3, 2, 2, 2, 709, 710, 7, 63, 2, 2, 710, 100, 3, 2, 2, 2, 711, 712, 7, 46, 2, 2, 712, 102, 3, 2, 2, 2, 713, 714, 5, 323, 157, 2, 714, 715, 5, 325, 158, 2, 715, 716, 5, 353, 172, 2, 716, 717, 5, 321, 156, 2, 717, 104, 3, 2, 2, 2, 718, 719, 7, 48, 2, 2, 719, 106, 3, 2, 2, 2, 720, 721, 5, 327, 159, 2, 721, 722, 5, 317, 154, 2, 722, 723, 5, 339, 165, 2, 723, 724, 5, 353, 172, 2, 724, 725, 5, 325, 158, 2, 725, 108, 3, 2, 2, 2, 726, 727, 5, 327, 159, 2, 727, 728, 5, 333, 162, 2, 728, 729, 5, 351, 171, 2, 729, 730, 5, 353, 172, 2, 730, 731, 5, 355, 173, 2, 731, 110, 3, 2, 2, 2, 732, 733, 5, 339, 165, 2, 733, 734, 5, 317, 154, 2, 734, 735, 5, 353, 172, 2, 735, 736, 5, 355, 173, 2, 736, 112, 3, 2, 2, 2, 737, 738, 7, 42, 2, 2, 738, 114, 3, 2, 2, 2, 739, 740, 5, 333, 162, 2, 740, 741, 5, 343, 167, 2, 741, 116, 3, 2, 2, 2, 742, 743, 5, 333, 162, 2, 743, 744, 5, 353, 172, 2, 744, 118, 3, 2, 2, 2, 745, 746, 5, 339, 165, 2, 746, 747, 5, 333, 162, 2, 747, 748, 5, 337, 164, 2, 748, 749, 5, 325, 158, 2, 749, 120, 3, 2, 2, 2, 750, 751, 5, 343, 167, 2, 751, 752, 5, 345, 168, 2, 752, 753, 5, 355, 173, 2, 753, 122, 3, 2, 2, 2, 754, 755, 5, 343, 167, 2, 755, 756, 5, 357, 174, 2, 756, 757, 5, 339, 165, 2, 757, 758, 5, 339, 165, 2, 758, 124, 3, 2, 2, 2, 759, 760, 5, 343, 167, 2, 760, 761, 5, 357, 174, 2, 761, 762, 5, 339, 165, 2, 762, 763, 5, 339, 165, 2, 763, 764, 5, 353, 172, 2, 764, 126, 3, 2, 2, 2, 765, 766, 5, 345, 168, 2, 766, 767, 5, 351, 171, 2, 767, 128, 3, 2, 2, 2, 768, 769, 7, 65, 2, 2, 769, 130, 3, 2, 2, 2, 770, 771, 5, 351, 171, 2, 771, 772, 5, 339, 165, 2, 772, 773, 5, 333, 162, 2, 773, 774, 5, 337, 164, 2, 774, 775, 5, 325, 158, 2, 775, 132, 3, 2, 2, 2, 776, 777, 7, 43, 2, 2, 777, 134, 3, 2, 2, 2, 778, 779, 5, 355, 173, 2, 779, 780, 5, 351, 171, 2, 780, 781, 5, 357, 174, 2, 781, 782, 5, 325, 158, 2, 782, 136, 3, 2, 2, 2, 783, 784, 7, 63, 2, 2, 784, 785, 7, 63, 2, 2, 785, 138, 3, 2, 2, 2, 786, 787, 7, 63, 2, 2, 787, 788, 7, 128, 2, 2, 788, 140, 3, 2, 2, 2, 789, 790, 7, 35, 2, 2, 790, 791, 7, 63, 2, 2, 791, 142, 3, 2, 2, 2, 792, 793, 7, 62, 2, 2, 793, 144, 3, 2, 2, 2, 794, 795, 7, 62, 2, 2, 795, 796, 7, 63, 2, 2, 796, 146, 3, 2, 2, 2, 797, 798, 7, 64, 2, 2, 798, 148, 3, 2, 2, 2, 799, 800, 7, 64, 2, 2, 800, 801, 7, 63, 2, 2, 801, 150, 3, 2, 2, 2, 802, 803, 7, 45, 2, 2, 803, 152, 3, 2, 2, 2, 804, 805, 7, 47, 2, 2, 805, 154, 3, 2, 2, 2, 806, 807, 7, 44, 2, 2, 807, 156, 3, 2, 2, 2, 808, 809, 7, 49, 2, 2, 809, 158, 3, 2, 2, 2, 810, 811, 7, 39, 2, 2, 811, 160, 3, 2, 2, 2, 812, 813, 7, 93, 2, 2, 813, 814, 3, 2, 2, 2, 814, 815, 8, 76, 2, 2, 815, 816, 8, 76, 2, 2, 816, 162, 3, 2, 2, 2, 817, 818, 7, 95, 2, 2, 818, 819, 3, 2, 2, 2, 819, 820, 8, 77, 14, 2, 820, 821, 8, 77, 14, 2, 821, 164, 3, 2, 2, 2, 822, 826, 5, 69, 30, 2, 823, 825, 5, 85, 38, 2, 824, 823, 3, 2, 2, 2, 825, 828, 3, 2, 2, 2, 826, 824, 3, 2, 2, 2, 826, 827, 3, 2, 2, 2, 827, 839, 3, 2, 2, 2, 828, 826, 3, 2, 2, 2, 829, 832, 5, 83, 37, 2, 830, 832, 5, 77, 34, 2, 831, 829, 3, 2, 2, 2, 831, 830, 3, 2, 2, 2, 832, 834, 3, 2, 2, 2, 833, 835, 5, 85, 38, 2, 834, 833, 3, 2, 2, 2, 835, 836, 3, 2, 2, 2, 836, 834, 3, 2, 2, 2, 836, 837, 3, 2, 2, 2, 837, 839, 3, 2, 2, 2, 838, 822, 3, 2, 2, 2, 838, 831, 3, 2, 2, 2, 839, 166, 3, 2, 2, 2, 840, 842, 5, 79, 35, 2, 841, 843, 5, 81, 36, 2, 842, 841, 3, 2, 2, 2, 843, 844, 3, 2, 2, 2, 844, 842, 3, 2, 2, 2, 844, 845, 3, 2, 2, 2, 845, 846, 3, 2, 2, 2, 846, 847, 5, 79, 35, 2, 847, 168, 3, 2, 2, 2, 848, 849, 5, 167, 79, 2, 849, 170, 3, 2, 2, 2, 850, 851, 5, 49, 20, 2, 851, 852, 3, 2, 2, 2, 852, 853, 8, 81, 10, 2, 853, 172, 3, 2, 2, 2, 854, 855, 5, 51, 21, 2, 855, 856, 3, 2, 2, 2, 856, 857, 8, 82, 10, 2, 857, 174, 3, 2, 2, 2, 858, 859, 5, 53, 22, 2, 859, 860, 3, 2, 2, 2, 860, 861, 8, 83, 10, 2, 861, 176, 3, 2, 2, 2, 862, 863, 5, 65, 28, 2, 863, 864, 3, 2, 2, 2, 864, 865, 8, 84, 13, 2, 865, 866, 8, 84, 14, 2, 866, 178, 3, 2, 2, 2, 867, 868, 5, 161, 76, 2, 868, 869, 3, 2, 2, 2, 869, 870, 8, 85, 11, 2, 870, 180, 3, 2, 2, 2, 871, 872, 5, 163, 77, 2, 872, 873, 3, 2, 2, 2, 873, 874, 8, 86, 15, 2, 874, 182, 3, 2, 2, 2, 875, 876, 5, 101, 46, 2, 876, 877, 3, 2, 2, 2, 877, 878, 8, 87, 16, 2, 878, 184, 3, 2, 2, 2, 879, 880, 5, 99, 45, 2, 880, 881, 3, 2, 2, 2, 881, 882, 8, 88, 17, 2, 882, 186, 3, 2, 2, 2, 883, 884, 5, 341, 166, 2, 884, 885, 5, 325, 158, 2, 885, 886, 5, 355, 173, 2, 886, 887, 5, 317, 154, 2, 887, 888, 5, 323, 157, 2, 888, 889, 5, 317, 154, 2, 889, 890, 5, 355, 173, 2, 890, 891, 5, 317, 154, 2, 891, 188, 3, 2, 2, 2, 892, 896, 10, 12, 2, 2, 893, 894, 7, 49, 2, 2, 894, 896, 10, 13, 2, 2, 895, 892, 3, 2, 2, 2, 895, 893, 3, 2, 2, 2, 896, 190, 3, 2, 2, 2, 897, 899, 5, 189, 90, 2, 898, 897, 3, 2, 2, 2, 899, 900, 3, 2, 2, 2, 900, 898, 3, 2, 2, 2, 900, 901, 3, 2, 2, 2, 901, 192, 3, 2, 2, 2, 902, 903, 5, 169, 80, 2, 903, 904, 3, 2, 2, 2, 904, 905, 8, 92, 18, 2, 905, 194, 3, 2, 2, 2, 906, 907, 5, 49, 20, 2, 907, 908, 3, 2, 2, 2, 908, 909, 8, 93, 10, 2, 909, 196, 3, 2, 2, 2, 910, 911, 5, 51, 21, 2, 911, 912, 3, 2, 2, 2, 912, 913, 8, 94, 10, 2, 913, 198, 3, 2, 2, 2, 914, 915, 5, 53, 22, 2, 915, 916, 3, 2, 2, 2, 916, 917, 8, 95, 10, 2, 917, 200, 3, 2, 2, 2, 918, 919, 5, 65, 28, 2, 919, 920, 3, 2, 2, 2, 920, 921, 8, 96, 13, 2, 921, 922, 8, 96, 14, 2, 922, 202, 3, 2, 2, 2, 923, 924, 5, 105, 48, 2, 924, 925, 3, 2, 2, 2, 925, 926, 8, 97, 19, 2, 926, 204, 3, 2, 2, 2, 927, 928, 5, 101, 46, 2, 928, 929, 3, 2, 2, 2, 929, 930, 8, 98, 16, 2, 930, 206, 3, 2, 2, 2, 931, 936, 5, 69, 30, 2, 932, 936, 5, 67, 29, 2, 933, 936, 5, 83, 37, 2, 934, 936, 5, 155, 73, 2, 935, 931, 3, 2, 2, 2, 935, 932, 3, 2, 2, 2, 935, 933, 3, 2, 2, 2, 935, 934, 3, 2, 2, 2, 936, 208, 3, 2, 2, 2, 937, 940, 5, 69, 30, 2, 938, 940, 5, 155, 73, 2, 939, 937, 3, 2, 2, 2, 939, 938, 3, 2, 2, 2, 940, 944, 3, 2, 2, 2, 941, 943, 5, 207, 99, 2, 942, 941, 3, 2, 2, 2, 943, 946, 3, 2, 2, 2, 944, 942, 3, 2, 2, 2, 944, 945, 3, 2, 2, 2, 945, 957, 3, 2, 2, 2, 946, 944, 3, 2, 2, 2, 947, 950, 5, 83, 37, 2, 948, 950, 5, 77, 34, 2, 949, 947, 3, 2, 2, 2, 949, 948, 3, 2, 2, 2, 950, 952, 3, 2, 2, 2, 951, 953, 5, 207, 99, 2, 952, 951, 3, 2, 2, 2, 953, 954, 3, 2, 2, 2, 954, 952, 3, 2, 2, 2, 954, 955, 3, 2, 2, 2, 955, 957, 3, 2, 2, 2, 956, 939, 3, 2, 2, 2, 956, 949, 3, 2, 2, 2, 957, 210, 3, 2, 2, 2, 958, 961, 5, 209, 100, 2, 959, 961, 5, 167, 79, 2, 960, 958, 3, 2, 2, 2, 960, 959, 3, 2, 2, 2, 961, 962, 3, 2, 2, 2, 962, 960, 3, 2, 2, 2, 962, 963, 3, 2, 2, 2, 963, 212, 3, 2, 2, 2, 964, 965, 5, 49, 20, 2, 965, 966, 3, 2, 2, 2, 966, 967, 8, 102, 10, 2, 967, 214, 3, 2, 2, 2, 968, 969, 5, 51, 21, 2, 969, 970, 3, 2, 2, 2, 970, 971, 8, 103, 10, 2, 971, 216, 3, 2, 2, 2, 972, 973, 5, 53, 22, 2, 973, 974, 3, 2, 2, 2, 974, 975, 8, 104, 10, 2, 975, 218, 3, 2, 2, 2, 976, 977, 5, 65, 28, 2, 977, 978, 3, 2, 2, 2, 978, 979, 8, 105, 13, 2, 979, 980, 8, 105, 14, 2, 980, 220, 3, 2, 2, 2, 981, 982, 5, 99, 45, 2, 982, 983, 3, 2, 2, 2, 983, 984, 8, 106, 17, 2, 984, 222, 3, 2, 2, 2, 985, 986, 5, 101, 46, 2, 986, 987, 3, 2, 2, 2, 987, 988, 8, 107, 16, 2, 988, 224, 3, 2, 2, 2, 989, 990, 5, 105, 48, 2, 990, 991, 3, 2, 2, 2, 991, 992, 8, 108, 19, 2, 992, 226, 3, 2, 2, 2, 993, 994, 5, 317, 154, 2, 994, 995, 5, 353, 172, 2, 995, 228, 3, 2, 2, 2, 996, 997, 5, 211, 101, 2, 997, 998, 3, 2, 2, 2, 998, 999, 8, 110, 20, 2, 999, 230, 3, 2, 2, 2, 1000, 1001, 5, 49, 20, 2, 1001, 1002, 3, 2, 2, 2, 1002, 1003, 8, 111, 10, 2, 1003, 232, 3, 2, 2, 2, 1004, 1005, 5, 51, 21, 2, 1005, 1006, 3, 2, 2, 2, 1006, 1007, 8, 112, 10, 2, 1007, 234, 3, 2, 2, 2, 1008, 1009, 5, 53, 22, 2, 1009, 1010, 3, 2, 2, 2, 1010, 1011, 8, 113, 10, 2, 1011, 236, 3, 2, 2, 2, 1012, 1013, 5, 65, 28, 2, 1013, 1014, 3, 2, 2, 2, 1014, 1015, 8, 114, 13, 2, 1015, 1016, 8, 114, 14, 2, 1016, 238, 3, 2, 2, 2, 1017, 1018, 5, 161, 76, 2, 1018, 1019, 3, 2, 2, 2, 1019, 1020, 8, 115, 11, 2, 1020, 1021, 8, 115, 21, 2, 1021, 240, 3, 2, 2, 2, 1022, 1023, 5, 345, 168, 2, 1023, 1024, 5, 343, 167, 2, 1024, 1025, 3, 2, 2, 2, 1025, 1026, 8, 116, 22, 2, 1026, 242, 3, 2, 2, 2, 1027, 1028, 5, 361, 176, 2, 1028, 1029, 5, 333, 162, 2, 1029, 1030, 5, 355, 173, 2, 1030, 1031, 5, 331, 161, 2, 1031, 1032, 3, 2, 2, 2, 1032, 1033, 8, 117, 22, 2, 1033, 244, 3, 2, 2, 2, 1034, 1035, 10, 14, 2, 2, 1035, 246, 3, 2, 2, 2, 1036, 1038, 5, 245, 118, 2, 1037, 1036, 3, 2, 2, 2, 1038, 1039, 3, 2, 2, 2, 1039, 1037, 3, 2, 2, 2, 1039, 1040, 3, 2, 2, 2, 1040, 1041, 3, 2, 2, 2, 1041, 1042, 5, 307, 149, 2, 1042, 1044, 3, 2, 2, 2, 1043, 1037, 3, 2, 2, 2, 1043, 1044, 3, 2, 2, 2, 1044, 1046, 3, 2, 2, 2, 1045, 1047, 5, 245, 118, 2, 1046, 1045, 3, 2, 2, 2, 1047, 1048, 3, 2, 2, 2, 1048, 1046, 3, 2, 2, 2, 1048, 1049, 3, 2, 2, 2, 1049, 248, 3, 2, 2, 2, 1050, 1051, 5, 169, 80, 2, 1051, 1052, 3, 2, 2, 2, 1052, 1053, 8, 120, 18, 2, 1053, 250, 3, 2, 2, 2, 1054, 1055, 5, 247, 119, 2, 1055, 1056, 3, 2, 2, 2, 1056, 1057, 8, 121, 23, 2, 1057, 252, 3, 2, 2, 2, 1058, 1059, 5, 49, 20, 2, 1059, 1060, 3, 2, 2, 2, 1060, 1061, 8, 122, 10, 2, 1061, 254, 3, 2, 2, 2, 1062, 1063, 5, 51, 21, 2, 1063, 1064, 3, 2, 2, 2, 1064, 1065, 8, 123, 10, 2, 1065, 256, 3, 2, 2, 2, 1066, 1067, 5, 53, 22, 2, 1067, 1068, 3, 2, 2, 2, 1068, 1069, 8, 124, 10, 2, 1069, 258, 3, 2, 2, 2, 1070, 1071, 5, 65, 28, 2, 1071, 1072, 3, 2, 2, 2, 1072, 1073, 8, 125, 13, 2, 1073, 1074, 8, 125, 14, 2, 1074, 1075, 8, 125, 14, 2, 1075, 260, 3, 2, 2, 2, 1076, 1077, 5, 99, 45, 2, 1077, 1078, 3, 2, 2, 2, 1078, 1079, 8, 126, 17, 2, 1079, 262, 3, 2, 2, 2, 1080, 1081, 5, 101, 46, 2, 1081, 1082, 3, 2, 2, 2, 1082, 1083, 8, 127, 16, 2, 1083, 264, 3, 2, 2, 2, 1084, 1085, 5, 105, 48, 2, 1085, 1086, 3, 2, 2, 2, 1086, 1087, 8, 128, 19, 2, 1087, 266, 3, 2, 2, 2, 1088, 1089, 5, 243, 117, 2, 1089, 1090, 3, 2, 2, 2, 1090, 1091, 8, 129, 24, 2, 1091, 268, 3, 2, 2, 2, 1092, 1093, 5, 211, 101, 2, 1093, 1094, 3, 2, 2, 2, 1094, 1095, 8, 130, 20, 2, 1095, 270, 3, 2, 2, 2, 1096, 1097, 5, 169, 80, 2, 1097, 1098, 3, 2, 2, 2, 1098, 1099, 8, 131, 18, 2, 1099, 272, 3, 2, 2, 2, 1100, 1101, 5, 49, 20, 2, 1101, 1102, 3, 2, 2, 2, 1102, 1103, 8, 132, 10, 2, 1103, 274, 3, 2, 2, 2, 1104, 1105, 5, 51, 21, 2, 1105, 1106, 3, 2, 2, 2, 1106, 1107, 8, 133, 10, 2, 1107, 276, 3, 2, 2, 2, 1108, 1109, 5, 53, 22, 2, 1109, 1110, 3, 2, 2, 2, 1110, 1111, 8, 134, 10, 2, 1111, 278, 3, 2, 2, 2, 1112, 1113, 5, 65, 28, 2, 1113, 1114, 3, 2, 2, 2, 1114, 1115, 8, 135, 13, 2, 1115, 1116, 8, 135, 14, 2, 1116, 280, 3, 2, 2, 2, 1117, 1118, 5, 105, 48, 2, 1118, 1119, 3, 2, 2, 2, 1119, 1120, 8, 136, 19, 2, 1120, 282, 3, 2, 2, 2, 1121, 1122, 5, 169, 80, 2, 1122, 1123, 3, 2, 2, 2, 1123, 1124, 8, 137, 18, 2, 1124, 284, 3, 2, 2, 2, 1125, 1126, 5, 165, 78, 2, 1126, 1127, 3, 2, 2, 2, 1127, 1128, 8, 138, 25, 2, 1128, 286, 3, 2, 2, 2, 1129, 1130, 5, 49, 20, 2, 1130, 1131, 3, 2, 2, 2, 1131, 1132, 8, 139, 10, 2, 1132, 288, 3, 2, 2, 2, 1133, 1134, 5, 51, 21, 2, 1134, 1135, 3, 2, 2, 2, 1135, 1136, 8, 140, 10, 2, 1136, 290, 3, 2, 2, 2, 1137, 1138, 5, 53, 22, 2, 1138, 1139, 3, 2, 2, 2, 1139, 1140, 8, 141, 10, 2, 1140, 292, 3, 2, 2, 2, 1141, 1142, 5, 65, 28, 2, 1142, 1143, 3, 2, 2, 2, 1143, 1144, 8, 142, 13, 2, 1144, 1145, 8, 142, 14, 2, 1145, 294, 3, 2, 2, 2, 1146, 1147, 5, 333, 162, 2, 1147, 1148, 5, 343, 167, 2, 1148, 1149, 5, 327, 159, 2, 1149, 1150, 5, 345, 168, 2, 1150, 296, 3, 2, 2, 2, 1151, 1152, 5, 327, 159, 2, 1152, 1153, 5, 357, 174, 2, 1153, 1154, 5, 343, 167, 2, 1154, 1155, 5, 321, 156, 2, 1155, 1156, 5, 355, 173, 2, 1156, 1157, 5, 333, 162, 2, 1157, 1158, 5, 345, 168, 2, 1158, 1159, 5, 343, 167, 2, 1159, 1160, 5, 353, 172, 2, 1160, 298, 3, 2, 2, 2, 1161, 1162, 5, 49, 20, 2, 1162, 1163, 3, 2, 2, 2, 1163, 1164, 8, 145, 10, 2, 1164, 300, 3, 2, 2, 2, 1165, 1166, 5, 51, 21, 2, 1166, 1167, 3, 2, 2, 2, 1167, 1168, 8, 146, 10, 2, 1168, 302, 3, 2, 2, 2, 1169, 1170, 5, 53, 22, 2, 1170, 1171, 3, 2, 2, 2, 1171, 1172, 8, 147, 10, 2, 1172, 304, 3, 2, 2, 2, 1173, 1174, 5, 163, 77, 2, 1174, 1175, 3, 2, 2, 2, 1175, 1176, 8, 148, 15, 2, 1176, 1177, 8, 148, 14, 2, 1177, 306, 3, 2, 2, 2, 1178, 1179, 7, 60, 2, 2, 1179, 308, 3, 2, 2, 2, 1180, 1186, 5, 77, 34, 2, 1181, 1186, 5, 67, 29, 2, 1182, 1186, 5, 105, 48, 2, 1183, 1186, 5, 69, 30, 2, 1184, 1186, 5, 83, 37, 2, 1185, 1180, 3, 2, 2, 2, 1185, 1181, 3, 2, 2, 2, 1185, 1182, 3, 2, 2, 2, 1185, 1183, 3, 2, 2, 2, 1185, 1184, 3, 2, 2, 2, 1186, 1187, 3, 2, 2, 2, 1187, 1185, 3, 2, 2, 2, 1187, 1188, 3, 2, 2, 2, 1188, 310, 3, 2, 2, 2, 1189, 1190, 5, 49, 20, 2, 1190, 1191, 3, 2, 2, 2, 1191, 1192, 8, 151, 10, 2, 1192, 312, 3, 2, 2, 2, 1193, 1194, 5, 51, 21, 2, 1194, 1195, 3, 2, 2, 2, 1195, 1196, 8, 152, 10, 2, 1196, 314, 3, 2, 2, 2, 1197, 1198, 5, 53, 22, 2, 1198, 1199, 3, 2, 2, 2, 1199, 1200, 8, 153, 10, 2, 1200, 316, 3, 2, 2, 2, 1201, 1202, 9, 15, 2, 2, 1202, 318, 3, 2, 2, 2, 1203, 1204, 9, 16, 2, 2, 1204, 320, 3, 2, 2, 2, 1205, 1206, 9, 17, 2, 2, 1206, 322, 3, 2, 2, 2, 1207, 1208, 9, 18, 2, 2, 1208, 324, 3, 2, 2, 2, 1209, 1210, 9, 9, 2, 2, 1210, 326, 3, 2, 2, 2, 1211, 1212, 9, 19, 2, 2, 1212, 328, 3, 2, 2, 2, 1213, 1214, 9, 20, 2, 2, 1214, 330, 3, 2, 2, 2, 1215, 1216, 9, 21, 2, 2, 1216, 332, 3, 2, 2, 2, 1217, 1218, 9, 22, 2, 2, 1218, 334, 3, 2, 2, 2, 1219, 1220, 9, 23, 2, 2, 1220, 336, 3, 2, 2, 2, 1221, 1222, 9, 24, 2, 2, 1222, 338, 3, 2, 2, 2, 1223, 1224, 9, 25, 2, 2, 1224, 340, 3, 2, 2, 2, 1225, 1226, 9, 26, 2, 2, 1226, 342, 3, 2, 2, 2, 1227, 1228, 9, 27, 2, 2, 1228, 344, 3, 2, 2, 2, 1229, 1230, 9, 28, 2, 2, 1230, 346, 3, 2, 2, 2, 1231, 1232, 9, 29, 2, 2, 1232, 348, 3, 2, 2, 2, 1233, 1234, 9, 30, 2, 2, 1234, 350, 3, 2, 2, 2, 1235, 1236, 9, 31, 2, 2, 1236, 352, 3, 2, 2, 2, 1237, 1238, 9, 32, 2, 2, 1238, 354, 3, 2, 2, 2, 1239, 1240, 9, 33, 2, 2, 1240, 356, 3, 2, 2, 2, 1241, 1242, 9, 34, 2, 2, 1242, 358, 3, 2, 2, 2, 1243, 1244, 9, 35, 2, 2, 1244, 360, 3, 2, 2, 2, 1245, 1246, 9, 36, 2, 2, 1246, 362, 3, 2, 2, 2, 1247, 1248, 9, 37, 2, 2, 1248, 364, 3, 2, 2, 2, 1249, 1250, 9, 38, 2, 2, 1250, 366, 3, 2, 2, 2, 1251, 1252, 9, 39, 2, 2, 1252, 368, 3, 2, 2, 2, 59, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 515, 525, 529, 532, 541, 543, 554, 595, 600, 609, 616, 621, 623, 634, 642, 645, 647, 652, 657, 663, 670, 675, 681, 684, 692, 696, 826, 831, 836, 838, 844, 895, 900, 935, 939, 944, 949, 954, 956, 960, 962, 1039, 1043, 1048, 1185, 1187, 26, 7, 4, 2, 7, 6, 2, 7, 8, 2, 7, 3, 2, 7, 5, 2, 7, 10, 2, 7, 7, 2, 7, 11, 2, 2, 3, 2, 9, 65, 2, 7, 2, 2, 9, 27, 2, 6, 2, 2, 9, 66, 2, 9, 35, 2, 9, 34, 2, 9, 68, 2, 9, 37, 2, 9, 77, 2, 7, 12, 2, 7, 9, 2, 9, 87, 2, 9, 86, 2, 9, 67, 2] \ No newline at end of file diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.tokens b/packages/kbn-monaco/src/esql/antlr/esql_lexer.tokens index 1f49f7e26406b..57099c6b4681a 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_lexer.tokens +++ b/packages/kbn-monaco/src/esql/antlr/esql_lexer.tokens @@ -72,7 +72,7 @@ FROM_UNQUOTED_IDENTIFIER=71 FROM_LINE_COMMENT=72 FROM_MULTILINE_COMMENT=73 FROM_WS=74 -UNQUOTED_ID_PATTERN=75 +ID_PATTERN=75 PROJECT_LINE_COMMENT=76 PROJECT_MULTILINE_COMMENT=77 PROJECT_WS=78 diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts b/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts index 12f8c8617cd75..62d73860c3883 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts +++ b/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts @@ -91,7 +91,7 @@ export class esql_lexer extends Lexer { public static readonly FROM_LINE_COMMENT = 72; public static readonly FROM_MULTILINE_COMMENT = 73; public static readonly FROM_WS = 74; - public static readonly UNQUOTED_ID_PATTERN = 75; + public static readonly ID_PATTERN = 75; public static readonly PROJECT_LINE_COMMENT = 76; public static readonly PROJECT_MULTILINE_COMMENT = 77; public static readonly PROJECT_WS = 78; @@ -156,28 +156,27 @@ export class esql_lexer extends Lexer { "NOT", "NULL", "NULLS", "OR", "PARAM", "RLIKE", "RP", "TRUE", "EQ", "CIEQ", "NEQ", "LT", "LTE", "GT", "GTE", "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", "OPENING_BRACKET", "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", - "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", "EXPR_WS", - "FROM_PIPE", "FROM_OPENING_BRACKET", "FROM_CLOSING_BRACKET", "FROM_COMMA", - "FROM_ASSIGN", "METADATA", "FROM_UNQUOTED_IDENTIFIER_PART", "FROM_UNQUOTED_IDENTIFIER", - "FROM_QUOTED_IDENTIFIER", "FROM_LINE_COMMENT", "FROM_MULTILINE_COMMENT", - "FROM_WS", "PROJECT_PIPE", "PROJECT_DOT", "PROJECT_COMMA", "UNQUOTED_ID_BODY_WITH_PATTERN", - "UNQUOTED_ID_PATTERN", "PROJECT_UNQUOTED_IDENTIFIER", "PROJECT_QUOTED_IDENTIFIER", + "QUOTED_ID", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", + "EXPR_WS", "FROM_PIPE", "FROM_OPENING_BRACKET", "FROM_CLOSING_BRACKET", + "FROM_COMMA", "FROM_ASSIGN", "METADATA", "FROM_UNQUOTED_IDENTIFIER_PART", + "FROM_UNQUOTED_IDENTIFIER", "FROM_QUOTED_IDENTIFIER", "FROM_LINE_COMMENT", + "FROM_MULTILINE_COMMENT", "FROM_WS", "PROJECT_PIPE", "PROJECT_DOT", "PROJECT_COMMA", + "UNQUOTED_ID_BODY_WITH_PATTERN", "UNQUOTED_ID_PATTERN", "ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", "PROJECT_WS", "RENAME_PIPE", - "RENAME_ASSIGN", "RENAME_COMMA", "RENAME_DOT", "AS", "RENAME_QUOTED_IDENTIFIER", - "RENAME_UNQUOTED_IDENTIFIER", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", - "RENAME_WS", "ENRICH_PIPE", "ENRICH_OPENING_BRACKET", "ON", "WITH", "ENRICH_POLICY_NAME_BODY", - "ENRICH_POLICY_NAME", "ENRICH_QUOTED_IDENTIFIER", "ENRICH_MODE_UNQUOTED_VALUE", - "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_PIPE", - "ENRICH_FIELD_ASSIGN", "ENRICH_FIELD_COMMA", "ENRICH_FIELD_DOT", "ENRICH_FIELD_WITH", - "ENRICH_FIELD_UNQUOTED_IDENTIFIER", "ENRICH_FIELD_QUOTED_IDENTIFIER", - "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT", "ENRICH_FIELD_WS", - "MVEXPAND_PIPE", "MVEXPAND_DOT", "MVEXPAND_QUOTED_IDENTIFIER", "MVEXPAND_UNQUOTED_IDENTIFIER", - "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT", "MVEXPAND_WS", - "SHOW_PIPE", "INFO", "FUNCTIONS", "SHOW_LINE_COMMENT", "SHOW_MULTILINE_COMMENT", - "SHOW_WS", "SETTING_CLOSING_BRACKET", "COLON", "SETTING", "SETTING_LINE_COMMENT", - "SETTTING_MULTILINE_COMMENT", "SETTING_WS", "A", "B", "C", "D", "E", "F", - "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", - "U", "V", "W", "X", "Y", "Z", + "RENAME_ASSIGN", "RENAME_COMMA", "RENAME_DOT", "AS", "RENAME_ID_PATTERN", + "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", "RENAME_WS", "ENRICH_PIPE", + "ENRICH_OPENING_BRACKET", "ON", "WITH", "ENRICH_POLICY_NAME_BODY", "ENRICH_POLICY_NAME", + "ENRICH_QUOTED_IDENTIFIER", "ENRICH_MODE_UNQUOTED_VALUE", "ENRICH_LINE_COMMENT", + "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_PIPE", "ENRICH_FIELD_ASSIGN", + "ENRICH_FIELD_COMMA", "ENRICH_FIELD_DOT", "ENRICH_FIELD_WITH", "ENRICH_FIELD_ID_PATTERN", + "ENRICH_FIELD_QUOTED_IDENTIFIER", "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT", + "ENRICH_FIELD_WS", "MVEXPAND_PIPE", "MVEXPAND_DOT", "MVEXPAND_QUOTED_IDENTIFIER", + "MVEXPAND_UNQUOTED_IDENTIFIER", "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT", + "MVEXPAND_WS", "SHOW_PIPE", "INFO", "FUNCTIONS", "SHOW_LINE_COMMENT", + "SHOW_MULTILINE_COMMENT", "SHOW_WS", "SETTING_CLOSING_BRACKET", "COLON", + "SETTING", "SETTING_LINE_COMMENT", "SETTTING_MULTILINE_COMMENT", "SETTING_WS", + "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", + "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", ]; private static readonly _LITERAL_NAMES: Array = [ @@ -208,7 +207,7 @@ export class esql_lexer extends Lexer { "SLASH", "PERCENT", "OPENING_BRACKET", "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", "EXPR_WS", "METADATA", "FROM_UNQUOTED_IDENTIFIER", "FROM_LINE_COMMENT", "FROM_MULTILINE_COMMENT", - "FROM_WS", "UNQUOTED_ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", + "FROM_WS", "ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", "PROJECT_WS", "AS", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", "RENAME_WS", "ON", "WITH", "ENRICH_POLICY_NAME", "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT", @@ -249,7 +248,7 @@ export class esql_lexer extends Lexer { private static readonly _serializedATNSegments: number = 3; private static readonly _serializedATNSegment0: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02j\u04EB\b\x01" + + "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02j\u04E5\b\x01" + "\b\x01\b\x01\b\x01\b\x01\b\x01\b\x01\b\x01\b\x01\b\x01\b\x01\x04\x02\t" + "\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07\t" + "\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r\x04\x0E" + @@ -277,116 +276,115 @@ export class esql_lexer extends Lexer { "\t\xA0\x04\xA1\t\xA1\x04\xA2\t\xA2\x04\xA3\t\xA3\x04\xA4\t\xA4\x04\xA5" + "\t\xA5\x04\xA6\t\xA6\x04\xA7\t\xA7\x04\xA8\t\xA8\x04\xA9\t\xA9\x04\xAA" + "\t\xAA\x04\xAB\t\xAB\x04\xAC\t\xAC\x04\xAD\t\xAD\x04\xAE\t\xAE\x04\xAF" + - "\t\xAF\x04\xB0\t\xB0\x04\xB1\t\xB1\x04\xB2\t\xB2\x04\xB3\t\xB3\x04\xB4" + - "\t\xB4\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02" + - "\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03" + - "\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04" + - "\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06" + - "\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x07" + - "\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\b\x03\b\x03\b\x03" + - "\b\x03\b\x03\b\x03\b\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03" + - "\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\n\x03\n\x03\n\x03\n\x03\n\x03\n\x03" + - "\n\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\f\x03\f\x03\f\x03" + - "\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\r\x03" + - "\r\x03\r\x03\r\x03\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E" + - "\x03\x0E\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10" + - "\x03\x10\x03\x10\x03\x10\x03\x10\x03\x10\x03\x10\x03\x11\x03\x11\x03\x11" + - "\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12" + - "\x03\x12\x03\x12\x03\x12\x03\x12\x03\x13\x06\x13\u0204\n\x13\r\x13\x0E" + - "\x13\u0205\x03\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x14\x07\x14\u020E" + - "\n\x14\f\x14\x0E\x14\u0211\v\x14\x03\x14\x05\x14\u0214\n\x14\x03\x14\x05" + - "\x14\u0217\n\x14\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15" + - "\x07\x15\u0220\n\x15\f\x15\x0E\x15\u0223\v\x15\x03\x15\x03\x15\x03\x15" + - "\x03\x15\x03\x15\x03\x16\x06\x16\u022B\n\x16\r\x16\x0E\x16\u022C\x03\x16" + - "\x03\x16\x03\x17\x03\x17\x03\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18" + - "\x03\x18\x03\x18\x03\x19\x03\x19\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A" + - "\x03\x1A\x03\x1B\x03\x1B\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C" + - "\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03\x1F\x03 \x03 \x03" + - "!\x03!\x05!\u0256\n!\x03!\x06!\u0259\n!\r!\x0E!\u025A\x03\"\x03\"\x03" + - "#\x03#\x03$\x03$\x03$\x05$\u0264\n$\x03%\x03%\x03&\x03&\x03&\x05&\u026B" + - "\n&\x03\'\x03\'\x03\'\x07\'\u0270\n\'\f\'\x0E\'\u0273\v\'\x03\'\x03\'" + - "\x03\'\x03\'\x03\'\x03\'\x07\'\u027B\n\'\f\'\x0E\'\u027E\v\'\x03\'\x03" + - "\'\x03\'\x03\'\x03\'\x05\'\u0285\n\'\x03\'\x05\'\u0288\n\'\x05\'\u028A" + - "\n\'\x03(\x06(\u028D\n(\r(\x0E(\u028E\x03)\x06)\u0292\n)\r)\x0E)\u0293" + - "\x03)\x03)\x07)\u0298\n)\f)\x0E)\u029B\v)\x03)\x03)\x06)\u029F\n)\r)\x0E" + - ")\u02A0\x03)\x06)\u02A4\n)\r)\x0E)\u02A5\x03)\x03)\x07)\u02AA\n)\f)\x0E" + - ")\u02AD\v)\x05)\u02AF\n)\x03)\x03)\x03)\x03)\x06)\u02B5\n)\r)\x0E)\u02B6" + - "\x03)\x03)\x05)\u02BB\n)\x03*\x03*\x03*\x03+\x03+\x03+\x03+\x03,\x03," + - "\x03,\x03,\x03-\x03-\x03.\x03.\x03/\x03/\x03/\x03/\x03/\x030\x030\x03" + - "1\x031\x031\x031\x031\x031\x032\x032\x032\x032\x032\x032\x033\x033\x03" + - "3\x033\x033\x034\x034\x035\x035\x035\x036\x036\x036\x037\x037\x037\x03" + - "7\x037\x038\x038\x038\x038\x039\x039\x039\x039\x039\x03:\x03:\x03:\x03" + - ":\x03:\x03:\x03;\x03;\x03;\x03<\x03<\x03=\x03=\x03=\x03=\x03=\x03=\x03" + - ">\x03>\x03?\x03?\x03?\x03?\x03?\x03@\x03@\x03@\x03A\x03A\x03A\x03B\x03" + - "B\x03B\x03C\x03C\x03D\x03D\x03D\x03E\x03E\x03F\x03F\x03F\x03G\x03G\x03" + - "H\x03H\x03I\x03I\x03J\x03J\x03K\x03K\x03L\x03L\x03L\x03L\x03L\x03M\x03" + - "M\x03M\x03M\x03M\x03N\x03N\x07N\u033B\nN\fN\x0EN\u033E\vN\x03N\x03N\x05" + - "N\u0342\nN\x03N\x06N\u0345\nN\rN\x0EN\u0346\x05N\u0349\nN\x03O\x03O\x06" + - "O\u034D\nO\rO\x0EO\u034E\x03O\x03O\x03P\x03P\x03P\x03P\x03Q\x03Q\x03Q" + - "\x03Q\x03R\x03R\x03R\x03R\x03S\x03S\x03S\x03S\x03S\x03T\x03T\x03T\x03" + - "T\x03U\x03U\x03U\x03U\x03V\x03V\x03V\x03V\x03W\x03W\x03W\x03W\x03X\x03" + - "X\x03X\x03X\x03X\x03X\x03X\x03X\x03X\x03Y\x03Y\x03Y\x05Y\u0380\nY\x03" + - "Z\x06Z\u0383\nZ\rZ\x0EZ\u0384\x03[\x03[\x03[\x03[\x03\\\x03\\\x03\\\x03" + - "\\\x03]\x03]\x03]\x03]\x03^\x03^\x03^\x03^\x03_\x03_\x03_\x03_\x03_\x03" + - "`\x03`\x03`\x03`\x03a\x03a\x03a\x03a\x03b\x03b\x03b\x03b\x05b\u03A8\n" + - "b\x03c\x03c\x05c\u03AC\nc\x03c\x07c\u03AF\nc\fc\x0Ec\u03B2\vc\x03c\x03" + - "c\x05c\u03B6\nc\x03c\x06c\u03B9\nc\rc\x0Ec\u03BA\x05c\u03BD\nc\x03d\x03" + - "d\x03d\x03d\x03e\x03e\x03e\x03e\x03f\x03f\x03f\x03f\x03g\x03g\x03g\x03" + - "g\x03h\x03h\x03h\x03h\x03i\x03i\x03i\x03i\x03i\x03j\x03j\x03j\x03j\x03" + - "k\x03k\x03k\x03k\x03l\x03l\x03l\x03l\x03m\x03m\x03m\x03n\x03n\x03n\x03" + - "n\x03o\x03o\x03o\x03o\x03p\x03p\x03p\x03p\x03q\x03q\x03q\x03q\x03r\x03" + - "r\x03r\x03r\x03s\x03s\x03s\x03s\x03s\x03t\x03t\x03t\x03t\x03t\x03u\x03" + - "u\x03u\x03u\x03u\x03v\x03v\x03v\x03v\x03v\x03v\x03v\x03w\x03w\x03x\x06" + - "x\u0414\nx\rx\x0Ex\u0415\x03x\x03x\x05x\u041A\nx\x03x\x06x\u041D\nx\r" + - "x\x0Ex\u041E\x03y\x03y\x03y\x03y\x03z\x03z\x03z\x03z\x03{\x03{\x03{\x03" + - "{\x03|\x03|\x03|\x03|\x03}\x03}\x03}\x03}\x03~\x03~\x03~\x03~\x03~\x03" + - "~\x03\x7F\x03\x7F\x03\x7F\x03\x7F\x03\x80\x03\x80\x03\x80\x03\x80\x03" + - "\x81\x03\x81\x03\x81\x03\x81\x03\x82\x03\x82\x03\x82\x03\x82\x03\x83\x03" + - "\x83\x03\x83\x03\x83\x03\x84\x03\x84\x03\x84\x03\x84\x03\x85\x03\x85\x03" + - "\x85\x03\x85\x03\x86\x03\x86\x03\x86\x03\x86\x03\x87\x03\x87\x03\x87\x03" + - "\x87\x03\x88\x03\x88\x03\x88\x03\x88\x03\x88\x03\x89\x03\x89\x03\x89\x03" + - "\x89\x03\x8A\x03\x8A\x03\x8A\x03\x8A\x03\x8B\x03\x8B\x03\x8B\x03\x8B\x03" + - "\x8C\x03\x8C\x03\x8C\x03\x8C\x03\x8D\x03\x8D\x03\x8D\x03\x8D\x03\x8E\x03" + - "\x8E\x03\x8E\x03\x8E\x03\x8F\x03\x8F\x03\x8F\x03\x8F\x03\x8F\x03\x90\x03" + - "\x90\x03\x90\x03\x90\x03\x90\x03\x91\x03\x91\x03\x91\x03\x91\x03\x91\x03" + - "\x91\x03\x91\x03\x91\x03\x91\x03\x91\x03\x92\x03\x92\x03\x92\x03\x92\x03" + - "\x93\x03\x93\x03\x93\x03\x93\x03\x94\x03\x94\x03\x94\x03\x94\x03\x95\x03" + - "\x95\x03\x95\x03\x95\x03\x95\x03\x96\x03\x96\x03\x97\x03\x97\x03\x97\x03" + - "\x97\x03\x97\x06\x97\u04A8\n\x97\r\x97\x0E\x97\u04A9\x03\x98\x03\x98\x03" + - "\x98\x03\x98\x03\x99\x03\x99\x03\x99\x03\x99\x03\x9A\x03\x9A\x03\x9A\x03" + - "\x9A\x03\x9B\x03\x9B\x03\x9C\x03\x9C\x03\x9D\x03\x9D\x03\x9E\x03\x9E\x03" + - "\x9F\x03\x9F\x03\xA0\x03\xA0\x03\xA1\x03\xA1\x03\xA2\x03\xA2\x03\xA3\x03" + - "\xA3\x03\xA4\x03\xA4\x03\xA5\x03\xA5\x03\xA6\x03\xA6\x03\xA7\x03\xA7\x03" + - "\xA8\x03\xA8\x03\xA9\x03\xA9\x03\xAA\x03\xAA\x03\xAB\x03\xAB\x03\xAC\x03" + - "\xAC\x03\xAD\x03\xAD\x03\xAE\x03\xAE\x03\xAF\x03\xAF\x03\xB0\x03\xB0\x03" + - "\xB1\x03\xB1\x03\xB2\x03\xB2\x03\xB3\x03\xB3\x03\xB4\x03\xB4\x04\u0221" + - "\u027C\x02\x02\xB5\r\x02\x03\x0F\x02\x04\x11\x02\x05\x13\x02\x06\x15\x02" + - "\x07\x17\x02\b\x19\x02\t\x1B\x02\n\x1D\x02\v\x1F\x02\f!\x02\r#\x02\x0E" + - "%\x02\x0F\'\x02\x10)\x02\x11+\x02\x12-\x02\x13/\x02\x141\x02\x153\x02" + - "\x165\x02\x177\x02\x029\x02\x02;\x02\x18=\x02\x19?\x02\x1AA\x02\x1BC\x02" + - "\x02E\x02\x02G\x02\x02I\x02\x02K\x02\x02M\x02\x02O\x02\x02Q\x02\x02S\x02" + - "\x02U\x02\x02W\x02\x1CY\x02\x1D[\x02\x1E]\x02\x1F_\x02 a\x02!c\x02\"e" + - "\x02#g\x02$i\x02%k\x02&m\x02\'o\x02(q\x02)s\x02*u\x02+w\x02,y\x02-{\x02" + - ".}\x02/\x7F\x020\x81\x021\x83\x022\x85\x023\x87\x024\x89\x025\x8B\x02" + - "6\x8D\x027\x8F\x028\x91\x029\x93\x02:\x95\x02;\x97\x02<\x99\x02=\x9B\x02" + - ">\x9D\x02?\x9F\x02@\xA1\x02A\xA3\x02B\xA5\x02C\xA7\x02D\xA9\x02E\xAB\x02" + - "F\xAD\x02G\xAF\x02\x02\xB1\x02\x02\xB3\x02\x02\xB5\x02\x02\xB7\x02\x02" + - "\xB9\x02H\xBB\x02\x02\xBD\x02I\xBF\x02\x02\xC1\x02J\xC3\x02K\xC5\x02L" + - "\xC7\x02\x02\xC9\x02\x02\xCB\x02\x02\xCD\x02\x02\xCF\x02M\xD1\x02\x02" + - "\xD3\x02\x02\xD5\x02N\xD7\x02O\xD9\x02P\xDB\x02\x02\xDD\x02\x02\xDF\x02" + - "\x02\xE1\x02\x02\xE3\x02Q\xE5\x02\x02\xE7\x02\x02\xE9\x02R\xEB\x02S\xED" + - "\x02T\xEF\x02\x02\xF1\x02\x02\xF3\x02U\xF5\x02V\xF7\x02\x02\xF9\x02W\xFB" + - "\x02\x02\xFD\x02\x02\xFF\x02X\u0101\x02Y\u0103\x02Z\u0105\x02\x02\u0107" + - "\x02\x02\u0109\x02\x02\u010B\x02\x02\u010D\x02\x02\u010F\x02\x02\u0111" + - "\x02\x02\u0113\x02[\u0115\x02\\\u0117\x02]\u0119\x02\x02\u011B\x02\x02" + - "\u011D\x02\x02\u011F\x02\x02\u0121\x02^\u0123\x02_\u0125\x02`\u0127\x02" + - "\x02\u0129\x02a\u012B\x02b\u012D\x02c\u012F\x02d\u0131\x02e\u0133\x02" + - "\x02\u0135\x02f\u0137\x02g\u0139\x02h\u013B\x02i\u013D\x02j\u013F\x02" + - "\x02\u0141\x02\x02\u0143\x02\x02\u0145\x02\x02\u0147\x02\x02\u0149\x02" + - "\x02\u014B\x02\x02\u014D\x02\x02\u014F\x02\x02\u0151\x02\x02\u0153\x02" + - "\x02\u0155\x02\x02\u0157\x02\x02\u0159\x02\x02\u015B\x02\x02\u015D\x02" + - "\x02\u015F\x02\x02\u0161\x02\x02\u0163\x02\x02\u0165\x02\x02\u0167\x02" + - "\x02\u0169\x02\x02\u016B\x02\x02\u016D\x02\x02\u016F\x02\x02\u0171\x02" + + "\t\xAF\x04\xB0\t\xB0\x04\xB1\t\xB1\x04\xB2\t\xB2\x04\xB3\t\xB3\x03\x02" + + "\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02\x03\x02" + + "\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x04\x03\x04" + + "\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x05\x03\x05" + + "\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x06\x03\x06\x03\x06\x03\x06" + + "\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07" + + "\x03\x07\x03\x07\x03\x07\x03\x07\x03\b\x03\b\x03\b\x03\b\x03\b\x03\b\x03" + + "\b\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03" + + "\t\x03\t\x03\t\x03\n\x03\n\x03\n\x03\n\x03\n\x03\n\x03\n\x03\v\x03\v\x03" + + "\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03" + + "\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03\r\x03\r\x03\r\x03\r\x03" + + "\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0F" + + "\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x10\x03\x10\x03\x10" + + "\x03\x10\x03\x10\x03\x10\x03\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11" + + "\x03\x11\x03\x11\x03\x11\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12" + + "\x03\x12\x03\x12\x03\x13\x06\x13\u0202\n\x13\r\x13\x0E\x13\u0203\x03\x13" + + "\x03\x13\x03\x14\x03\x14\x03\x14\x03\x14\x07\x14\u020C\n\x14\f\x14\x0E" + + "\x14\u020F\v\x14\x03\x14\x05\x14\u0212\n\x14\x03\x14\x05\x14\u0215\n\x14" + + "\x03\x14\x03\x14\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15\x07\x15\u021E" + + "\n\x15\f\x15\x0E\x15\u0221\v\x15\x03\x15\x03\x15\x03\x15\x03\x15\x03\x15" + + "\x03\x16\x06\x16\u0229\n\x16\r\x16\x0E\x16\u022A\x03\x16\x03\x16\x03\x17" + + "\x03\x17\x03\x17\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x03\x18\x03\x18" + + "\x03\x19\x03\x19\x03\x19\x03\x19\x03\x1A\x03\x1A\x03\x1A\x03\x1A\x03\x1B" + + "\x03\x1B\x03\x1B\x03\x1B\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1D\x03\x1D" + + "\x03\x1E\x03\x1E\x03\x1F\x03\x1F\x03\x1F\x03 \x03 \x03!\x03!\x05!\u0254" + + "\n!\x03!\x06!\u0257\n!\r!\x0E!\u0258\x03\"\x03\"\x03#\x03#\x03$\x03$\x03" + + "$\x05$\u0262\n$\x03%\x03%\x03&\x03&\x03&\x05&\u0269\n&\x03\'\x03\'\x03" + + "\'\x07\'\u026E\n\'\f\'\x0E\'\u0271\v\'\x03\'\x03\'\x03\'\x03\'\x03\'\x03" + + "\'\x07\'\u0279\n\'\f\'\x0E\'\u027C\v\'\x03\'\x03\'\x03\'\x03\'\x03\'\x05" + + "\'\u0283\n\'\x03\'\x05\'\u0286\n\'\x05\'\u0288\n\'\x03(\x06(\u028B\n(" + + "\r(\x0E(\u028C\x03)\x06)\u0290\n)\r)\x0E)\u0291\x03)\x03)\x07)\u0296\n" + + ")\f)\x0E)\u0299\v)\x03)\x03)\x06)\u029D\n)\r)\x0E)\u029E\x03)\x06)\u02A2" + + "\n)\r)\x0E)\u02A3\x03)\x03)\x07)\u02A8\n)\f)\x0E)\u02AB\v)\x05)\u02AD" + + "\n)\x03)\x03)\x03)\x03)\x06)\u02B3\n)\r)\x0E)\u02B4\x03)\x03)\x05)\u02B9" + + "\n)\x03*\x03*\x03*\x03+\x03+\x03+\x03+\x03,\x03,\x03,\x03,\x03-\x03-\x03" + + ".\x03.\x03/\x03/\x03/\x03/\x03/\x030\x030\x031\x031\x031\x031\x031\x03" + + "1\x032\x032\x032\x032\x032\x032\x033\x033\x033\x033\x033\x034\x034\x03" + + "5\x035\x035\x036\x036\x036\x037\x037\x037\x037\x037\x038\x038\x038\x03" + + "8\x039\x039\x039\x039\x039\x03:\x03:\x03:\x03:\x03:\x03:\x03;\x03;\x03" + + ";\x03<\x03<\x03=\x03=\x03=\x03=\x03=\x03=\x03>\x03>\x03?\x03?\x03?\x03" + + "?\x03?\x03@\x03@\x03@\x03A\x03A\x03A\x03B\x03B\x03B\x03C\x03C\x03D\x03" + + "D\x03D\x03E\x03E\x03F\x03F\x03F\x03G\x03G\x03H\x03H\x03I\x03I\x03J\x03" + + "J\x03K\x03K\x03L\x03L\x03L\x03L\x03L\x03M\x03M\x03M\x03M\x03M\x03N\x03" + + "N\x07N\u0339\nN\fN\x0EN\u033C\vN\x03N\x03N\x05N\u0340\nN\x03N\x06N\u0343" + + "\nN\rN\x0EN\u0344\x05N\u0347\nN\x03O\x03O\x06O\u034B\nO\rO\x0EO\u034C" + + "\x03O\x03O\x03P\x03P\x03Q\x03Q\x03Q\x03Q\x03R\x03R\x03R\x03R\x03S\x03" + + "S\x03S\x03S\x03T\x03T\x03T\x03T\x03T\x03U\x03U\x03U\x03U\x03V\x03V\x03" + + "V\x03V\x03W\x03W\x03W\x03W\x03X\x03X\x03X\x03X\x03Y\x03Y\x03Y\x03Y\x03" + + "Y\x03Y\x03Y\x03Y\x03Y\x03Z\x03Z\x03Z\x05Z\u0380\nZ\x03[\x06[\u0383\n[" + + "\r[\x0E[\u0384\x03\\\x03\\\x03\\\x03\\\x03]\x03]\x03]\x03]\x03^\x03^\x03" + + "^\x03^\x03_\x03_\x03_\x03_\x03`\x03`\x03`\x03`\x03`\x03a\x03a\x03a\x03" + + "a\x03b\x03b\x03b\x03b\x03c\x03c\x03c\x03c\x05c\u03A8\nc\x03d\x03d\x05" + + "d\u03AC\nd\x03d\x07d\u03AF\nd\fd\x0Ed\u03B2\vd\x03d\x03d\x05d\u03B6\n" + + "d\x03d\x06d\u03B9\nd\rd\x0Ed\u03BA\x05d\u03BD\nd\x03e\x03e\x06e\u03C1" + + "\ne\re\x0Ee\u03C2\x03f\x03f\x03f\x03f\x03g\x03g\x03g\x03g\x03h\x03h\x03" + + "h\x03h\x03i\x03i\x03i\x03i\x03i\x03j\x03j\x03j\x03j\x03k\x03k\x03k\x03" + + "k\x03l\x03l\x03l\x03l\x03m\x03m\x03m\x03n\x03n\x03n\x03n\x03o\x03o\x03" + + "o\x03o\x03p\x03p\x03p\x03p\x03q\x03q\x03q\x03q\x03r\x03r\x03r\x03r\x03" + + "r\x03s\x03s\x03s\x03s\x03s\x03t\x03t\x03t\x03t\x03t\x03u\x03u\x03u\x03" + + "u\x03u\x03u\x03u\x03v\x03v\x03w\x06w\u040E\nw\rw\x0Ew\u040F\x03w\x03w" + + "\x05w\u0414\nw\x03w\x06w\u0417\nw\rw\x0Ew\u0418\x03x\x03x\x03x\x03x\x03" + + "y\x03y\x03y\x03y\x03z\x03z\x03z\x03z\x03{\x03{\x03{\x03{\x03|\x03|\x03" + + "|\x03|\x03}\x03}\x03}\x03}\x03}\x03}\x03~\x03~\x03~\x03~\x03\x7F\x03\x7F" + + "\x03\x7F\x03\x7F\x03\x80\x03\x80\x03\x80\x03\x80\x03\x81\x03\x81\x03\x81" + + "\x03\x81\x03\x82\x03\x82\x03\x82\x03\x82\x03\x83\x03\x83\x03\x83\x03\x83" + + "\x03\x84\x03\x84\x03\x84\x03\x84\x03\x85\x03\x85\x03\x85\x03\x85\x03\x86" + + "\x03\x86\x03\x86\x03\x86\x03\x87\x03\x87\x03\x87\x03\x87\x03\x87\x03\x88" + + "\x03\x88\x03\x88\x03\x88\x03\x89\x03\x89\x03\x89\x03\x89\x03\x8A\x03\x8A" + + "\x03\x8A\x03\x8A\x03\x8B\x03\x8B\x03\x8B\x03\x8B\x03\x8C\x03\x8C\x03\x8C" + + "\x03\x8C\x03\x8D\x03\x8D\x03\x8D\x03\x8D\x03\x8E\x03\x8E\x03\x8E\x03\x8E" + + "\x03\x8E\x03\x8F\x03\x8F\x03\x8F\x03\x8F\x03\x8F\x03\x90\x03\x90\x03\x90" + + "\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x90\x03\x91\x03\x91" + + "\x03\x91\x03\x91\x03\x92\x03\x92\x03\x92\x03\x92\x03\x93\x03\x93\x03\x93" + + "\x03\x93\x03\x94\x03\x94\x03\x94\x03\x94\x03\x94\x03\x95\x03\x95\x03\x96" + + "\x03\x96\x03\x96\x03\x96\x03\x96\x06\x96\u04A2\n\x96\r\x96\x0E\x96\u04A3" + + "\x03\x97\x03\x97\x03\x97\x03\x97\x03\x98\x03\x98\x03\x98\x03\x98\x03\x99" + + "\x03\x99\x03\x99\x03\x99\x03\x9A\x03\x9A\x03\x9B\x03\x9B\x03\x9C\x03\x9C" + + "\x03\x9D\x03\x9D\x03\x9E\x03\x9E\x03\x9F\x03\x9F\x03\xA0\x03\xA0\x03\xA1" + + "\x03\xA1\x03\xA2\x03\xA2\x03\xA3\x03\xA3\x03\xA4\x03\xA4\x03\xA5\x03\xA5" + + "\x03\xA6\x03\xA6\x03\xA7\x03\xA7\x03\xA8\x03\xA8\x03\xA9\x03\xA9\x03\xAA" + + "\x03\xAA\x03\xAB\x03\xAB\x03\xAC\x03\xAC\x03\xAD\x03\xAD\x03\xAE\x03\xAE" + + "\x03\xAF\x03\xAF\x03\xB0\x03\xB0\x03\xB1\x03\xB1\x03\xB2\x03\xB2\x03\xB3" + + "\x03\xB3\x04\u021F\u027A\x02\x02\xB4\r\x02\x03\x0F\x02\x04\x11\x02\x05" + + "\x13\x02\x06\x15\x02\x07\x17\x02\b\x19\x02\t\x1B\x02\n\x1D\x02\v\x1F\x02" + + "\f!\x02\r#\x02\x0E%\x02\x0F\'\x02\x10)\x02\x11+\x02\x12-\x02\x13/\x02" + + "\x141\x02\x153\x02\x165\x02\x177\x02\x029\x02\x02;\x02\x18=\x02\x19?\x02" + + "\x1AA\x02\x1BC\x02\x02E\x02\x02G\x02\x02I\x02\x02K\x02\x02M\x02\x02O\x02" + + "\x02Q\x02\x02S\x02\x02U\x02\x02W\x02\x1CY\x02\x1D[\x02\x1E]\x02\x1F_\x02" + + " a\x02!c\x02\"e\x02#g\x02$i\x02%k\x02&m\x02\'o\x02(q\x02)s\x02*u\x02+" + + "w\x02,y\x02-{\x02.}\x02/\x7F\x020\x81\x021\x83\x022\x85\x023\x87\x024" + + "\x89\x025\x8B\x026\x8D\x027\x8F\x028\x91\x029\x93\x02:\x95\x02;\x97\x02" + + "<\x99\x02=\x9B\x02>\x9D\x02?\x9F\x02@\xA1\x02A\xA3\x02B\xA5\x02C\xA7\x02" + + "\x02\xA9\x02D\xAB\x02E\xAD\x02F\xAF\x02G\xB1\x02\x02\xB3\x02\x02\xB5\x02" + + "\x02\xB7\x02\x02\xB9\x02\x02\xBB\x02H\xBD\x02\x02\xBF\x02I\xC1\x02\x02" + + "\xC3\x02J\xC5\x02K\xC7\x02L\xC9\x02\x02\xCB\x02\x02\xCD\x02\x02\xCF\x02" + + "\x02\xD1\x02\x02\xD3\x02M\xD5\x02N\xD7\x02O\xD9\x02P\xDB\x02\x02\xDD\x02" + + "\x02\xDF\x02\x02\xE1\x02\x02\xE3\x02Q\xE5\x02\x02\xE7\x02R\xE9\x02S\xEB" + + "\x02T\xED\x02\x02\xEF\x02\x02\xF1\x02U\xF3\x02V\xF5\x02\x02\xF7\x02W\xF9" + + "\x02\x02\xFB\x02\x02\xFD\x02X\xFF\x02Y\u0101\x02Z\u0103\x02\x02\u0105" + + "\x02\x02\u0107\x02\x02\u0109\x02\x02\u010B\x02\x02\u010D\x02\x02\u010F" + + "\x02\x02\u0111\x02[\u0113\x02\\\u0115\x02]\u0117\x02\x02\u0119\x02\x02" + + "\u011B\x02\x02\u011D\x02\x02\u011F\x02^\u0121\x02_\u0123\x02`\u0125\x02" + + "\x02\u0127\x02a\u0129\x02b\u012B\x02c\u012D\x02d\u012F\x02e\u0131\x02" + + "\x02\u0133\x02f\u0135\x02g\u0137\x02h\u0139\x02i\u013B\x02j\u013D\x02" + + "\x02\u013F\x02\x02\u0141\x02\x02\u0143\x02\x02\u0145\x02\x02\u0147\x02" + + "\x02\u0149\x02\x02\u014B\x02\x02\u014D\x02\x02\u014F\x02\x02\u0151\x02" + + "\x02\u0153\x02\x02\u0155\x02\x02\u0157\x02\x02\u0159\x02\x02\u015B\x02" + + "\x02\u015D\x02\x02\u015F\x02\x02\u0161\x02\x02\u0163\x02\x02\u0165\x02" + + "\x02\u0167\x02\x02\u0169\x02\x02\u016B\x02\x02\u016D\x02\x02\u016F\x02" + "\x02\r\x02\x03\x04\x05\x06\x07\b\t\n\v\f(\b\x02\v\f\x0F\x0F\"\"11]]__" + "\x04\x02\f\f\x0F\x0F\x05\x02\v\f\x0F\x0F\"\"\x03\x022;\x04\x02C\\c|\x07" + "\x02$$^^ppttvv\x06\x02\f\f\x0F\x0F$$^^\x04\x02GGgg\x04\x02--//\x03\x02" + @@ -395,7 +393,7 @@ export class esql_lexer extends Lexer { "\x02HHhh\x04\x02IIii\x04\x02JJjj\x04\x02KKkk\x04\x02LLll\x04\x02MMmm\x04" + "\x02NNnn\x04\x02OOoo\x04\x02PPpp\x04\x02QQqq\x04\x02RRrr\x04\x02SSss\x04" + "\x02TTtt\x04\x02UUuu\x04\x02VVvv\x04\x02WWww\x04\x02XXxx\x04\x02YYyy\x04" + - "\x02ZZzz\x04\x02[[{{\x04\x02\\\\||\x02\u04ED\x02\r\x03\x02\x02\x02\x02" + + "\x02ZZzz\x04\x02[[{{\x04\x02\\\\||\x02\u04E7\x02\r\x03\x02\x02\x02\x02" + "\x0F\x03\x02\x02\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02" + "\x15\x03\x02\x02\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02" + "\x1B\x03\x02\x02\x02\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02\x02" + @@ -416,460 +414,458 @@ export class esql_lexer extends Lexer { "\x03\x02\x02\x02\x04\x93\x03\x02\x02\x02\x04\x95\x03\x02\x02\x02\x04\x97" + "\x03\x02\x02\x02\x04\x99\x03\x02\x02\x02\x04\x9B\x03\x02\x02\x02\x04\x9D" + "\x03\x02\x02\x02\x04\x9F\x03\x02\x02\x02\x04\xA1\x03\x02\x02\x02\x04\xA3" + - "\x03\x02\x02\x02\x04\xA5\x03\x02\x02\x02\x04\xA7\x03\x02\x02\x02\x04\xA9" + - "\x03\x02\x02\x02\x04\xAB\x03\x02\x02\x02\x04\xAD\x03\x02\x02\x02\x05\xAF" + - "\x03\x02\x02\x02\x05\xB1\x03\x02\x02\x02\x05\xB3\x03\x02\x02\x02\x05\xB5" + - "\x03\x02\x02\x02\x05\xB7\x03\x02\x02\x02\x05\xB9\x03\x02\x02\x02\x05\xBD" + - "\x03\x02\x02\x02\x05\xBF\x03\x02\x02\x02\x05\xC1\x03\x02\x02\x02\x05\xC3" + - "\x03\x02\x02\x02\x05\xC5\x03\x02\x02\x02\x06\xC7\x03\x02\x02\x02\x06\xC9" + - "\x03\x02\x02\x02\x06\xCB\x03\x02\x02\x02\x06\xCF\x03\x02\x02\x02\x06\xD1" + - "\x03\x02\x02\x02\x06\xD3\x03\x02\x02\x02\x06\xD5\x03\x02\x02\x02\x06\xD7" + - "\x03\x02\x02\x02\x06\xD9\x03\x02\x02\x02\x07\xDB\x03\x02\x02\x02\x07\xDD" + - "\x03\x02\x02\x02\x07\xDF\x03\x02\x02\x02\x07\xE1\x03\x02\x02\x02\x07\xE3" + - "\x03\x02\x02\x02\x07\xE5\x03\x02\x02\x02\x07\xE7\x03\x02\x02\x02\x07\xE9" + - "\x03\x02\x02\x02\x07\xEB\x03\x02\x02\x02\x07\xED\x03\x02\x02\x02\b\xEF" + - "\x03\x02\x02\x02\b\xF1\x03\x02\x02\x02\b\xF3\x03\x02\x02\x02\b\xF5\x03" + - "\x02\x02\x02\b\xF9\x03\x02\x02\x02\b\xFB\x03\x02\x02\x02\b\xFD\x03\x02" + - "\x02\x02\b\xFF\x03\x02\x02\x02\b\u0101\x03\x02\x02\x02\b\u0103\x03\x02" + - "\x02\x02\t\u0105\x03\x02\x02\x02\t\u0107\x03\x02\x02\x02\t\u0109\x03\x02" + - "\x02\x02\t\u010B\x03\x02\x02\x02\t\u010D\x03\x02\x02\x02\t\u010F\x03\x02" + - "\x02\x02\t\u0111\x03\x02\x02\x02\t\u0113\x03\x02\x02\x02\t\u0115\x03\x02" + - "\x02\x02\t\u0117\x03\x02\x02\x02\n\u0119\x03\x02\x02\x02\n\u011B\x03\x02" + - "\x02\x02\n\u011D\x03\x02\x02\x02\n\u011F\x03\x02\x02\x02\n\u0121\x03\x02" + - "\x02\x02\n\u0123\x03\x02\x02\x02\n\u0125\x03\x02\x02\x02\v\u0127\x03\x02" + - "\x02\x02\v\u0129\x03\x02\x02\x02\v\u012B\x03\x02\x02\x02\v\u012D\x03\x02" + - "\x02\x02\v\u012F\x03\x02\x02\x02\v\u0131\x03\x02\x02\x02\f\u0133\x03\x02" + - "\x02\x02\f\u0135\x03\x02\x02\x02\f\u0137\x03\x02\x02\x02\f\u0139\x03\x02" + - "\x02\x02\f\u013B\x03\x02\x02\x02\f\u013D\x03\x02\x02\x02\r\u0173\x03\x02" + - "\x02\x02\x0F\u017D\x03\x02\x02\x02\x11\u0184\x03\x02\x02\x02\x13\u018D" + - "\x03\x02\x02\x02\x15\u0194\x03\x02\x02\x02\x17\u019E\x03\x02\x02\x02\x19" + - "\u01A5\x03\x02\x02\x02\x1B\u01AC\x03\x02\x02\x02\x1D\u01BA\x03\x02\x02" + - "\x02\x1F\u01C1\x03\x02\x02\x02!\u01C9\x03\x02\x02\x02#\u01D5\x03\x02\x02" + - "\x02%\u01DE\x03\x02\x02\x02\'\u01E4\x03\x02\x02\x02)\u01EB\x03\x02\x02" + - "\x02+\u01F2\x03\x02\x02\x02-\u01FA\x03\x02\x02\x02/\u0203\x03\x02\x02" + - "\x021\u0209\x03\x02\x02\x023\u021A\x03\x02\x02\x025\u022A\x03\x02\x02" + - "\x027\u0230\x03\x02\x02\x029\u0235\x03\x02\x02\x02;\u023A\x03\x02\x02" + - "\x02=\u023E\x03\x02\x02\x02?\u0242\x03\x02\x02\x02A\u0246\x03\x02\x02" + - "\x02C\u024A\x03\x02\x02\x02E\u024C\x03\x02\x02\x02G\u024E\x03\x02\x02" + - "\x02I\u0251\x03\x02\x02\x02K\u0253\x03\x02\x02\x02M\u025C\x03\x02\x02" + - "\x02O\u025E\x03\x02\x02\x02Q\u0263\x03\x02\x02\x02S\u0265\x03\x02\x02" + - "\x02U\u026A\x03\x02\x02\x02W\u0289\x03\x02\x02\x02Y\u028C\x03\x02\x02" + - "\x02[\u02BA\x03\x02\x02\x02]\u02BC\x03\x02\x02\x02_\u02BF\x03\x02\x02" + - "\x02a\u02C3\x03\x02\x02\x02c\u02C7\x03\x02\x02\x02e\u02C9\x03\x02\x02" + - "\x02g\u02CB\x03\x02\x02\x02i\u02D0\x03\x02\x02\x02k\u02D2\x03\x02\x02" + - "\x02m\u02D8\x03\x02\x02\x02o\u02DE\x03\x02\x02\x02q\u02E3\x03\x02\x02" + - "\x02s\u02E5\x03\x02\x02\x02u\u02E8\x03\x02\x02\x02w\u02EB\x03\x02\x02" + - "\x02y\u02F0\x03\x02\x02\x02{\u02F4\x03\x02\x02\x02}\u02F9\x03\x02\x02" + - "\x02\x7F\u02FF\x03\x02\x02\x02\x81\u0302\x03\x02\x02\x02\x83\u0304\x03" + - "\x02\x02\x02\x85\u030A\x03\x02\x02\x02\x87\u030C\x03\x02\x02\x02\x89\u0311" + - "\x03\x02\x02\x02\x8B\u0314\x03\x02\x02\x02\x8D\u0317\x03\x02\x02\x02\x8F" + - "\u031A\x03\x02\x02\x02\x91\u031C\x03\x02\x02\x02\x93\u031F\x03\x02\x02" + - "\x02\x95\u0321\x03\x02\x02\x02\x97\u0324\x03\x02\x02\x02\x99\u0326\x03" + - "\x02\x02\x02\x9B\u0328\x03\x02\x02\x02\x9D\u032A\x03\x02\x02\x02\x9F\u032C" + - "\x03\x02\x02\x02\xA1\u032E\x03\x02\x02\x02\xA3\u0333\x03\x02\x02\x02\xA5" + - "\u0348\x03\x02\x02\x02\xA7\u034A\x03\x02\x02\x02\xA9\u0352\x03\x02\x02" + - "\x02\xAB\u0356\x03\x02\x02\x02\xAD\u035A\x03\x02\x02\x02\xAF\u035E\x03" + - "\x02\x02\x02\xB1\u0363\x03\x02\x02\x02\xB3\u0367\x03\x02\x02\x02\xB5\u036B" + - "\x03\x02\x02\x02\xB7\u036F\x03\x02\x02\x02\xB9\u0373\x03\x02\x02\x02\xBB" + - "\u037F\x03\x02\x02\x02\xBD\u0382\x03\x02\x02\x02\xBF\u0386\x03\x02\x02" + - "\x02\xC1\u038A\x03\x02\x02\x02\xC3\u038E\x03\x02\x02\x02\xC5\u0392\x03" + - "\x02\x02\x02\xC7\u0396\x03\x02\x02\x02\xC9\u039B\x03\x02\x02\x02\xCB\u039F" + - "\x03\x02\x02\x02\xCD\u03A7\x03\x02\x02\x02\xCF\u03BC\x03\x02\x02\x02\xD1" + - "\u03BE\x03\x02\x02\x02\xD3\u03C2\x03\x02\x02\x02\xD5\u03C6\x03\x02\x02" + - "\x02\xD7\u03CA\x03\x02\x02\x02\xD9\u03CE\x03\x02\x02\x02\xDB\u03D2\x03" + - "\x02\x02\x02\xDD\u03D7\x03\x02\x02\x02\xDF\u03DB\x03\x02\x02\x02\xE1\u03DF" + - "\x03\x02\x02\x02\xE3\u03E3\x03\x02\x02\x02\xE5\u03E6\x03\x02\x02\x02\xE7" + - "\u03EA\x03\x02\x02\x02\xE9\u03EE\x03\x02\x02\x02\xEB\u03F2\x03\x02\x02" + - "\x02\xED\u03F6\x03\x02\x02\x02\xEF\u03FA\x03\x02\x02\x02\xF1\u03FF\x03" + - "\x02\x02\x02\xF3\u0404\x03\x02\x02\x02\xF5\u0409\x03\x02\x02\x02\xF7\u0410" + - "\x03\x02\x02\x02\xF9\u0419\x03\x02\x02\x02\xFB\u0420\x03\x02\x02\x02\xFD" + - "\u0424\x03\x02\x02\x02\xFF\u0428\x03\x02\x02\x02\u0101\u042C"; + "\x03\x02\x02\x02\x04\xA5\x03\x02\x02\x02\x04\xA9\x03\x02\x02\x02\x04\xAB" + + "\x03\x02\x02\x02\x04\xAD\x03\x02\x02\x02\x04\xAF\x03\x02\x02\x02\x05\xB1" + + "\x03\x02\x02\x02\x05\xB3\x03\x02\x02\x02\x05\xB5\x03\x02\x02\x02\x05\xB7" + + "\x03\x02\x02\x02\x05\xB9\x03\x02\x02\x02\x05\xBB\x03\x02\x02\x02\x05\xBF" + + "\x03\x02\x02\x02\x05\xC1\x03\x02\x02\x02\x05\xC3\x03\x02\x02\x02\x05\xC5" + + "\x03\x02\x02\x02\x05\xC7\x03\x02\x02\x02\x06\xC9\x03\x02\x02\x02\x06\xCB" + + "\x03\x02\x02\x02\x06\xCD\x03\x02\x02\x02\x06\xD3\x03\x02\x02\x02\x06\xD5" + + "\x03\x02\x02\x02\x06\xD7\x03\x02\x02\x02\x06\xD9\x03\x02\x02\x02\x07\xDB" + + "\x03\x02\x02\x02\x07\xDD\x03\x02\x02\x02\x07\xDF\x03\x02\x02\x02\x07\xE1" + + "\x03\x02\x02\x02\x07\xE3\x03\x02\x02\x02\x07\xE5\x03\x02\x02\x02\x07\xE7" + + "\x03\x02\x02\x02\x07\xE9\x03\x02\x02\x02\x07\xEB\x03\x02\x02\x02\b\xED" + + "\x03\x02\x02\x02\b\xEF\x03\x02\x02\x02\b\xF1\x03\x02\x02\x02\b\xF3\x03" + + "\x02\x02\x02\b\xF7\x03\x02\x02\x02\b\xF9\x03\x02\x02\x02\b\xFB\x03\x02" + + "\x02\x02\b\xFD\x03\x02\x02\x02\b\xFF\x03\x02\x02\x02\b\u0101\x03\x02\x02" + + "\x02\t\u0103\x03\x02\x02\x02\t\u0105\x03\x02\x02\x02\t\u0107\x03\x02\x02" + + "\x02\t\u0109\x03\x02\x02\x02\t\u010B\x03\x02\x02\x02\t\u010D\x03\x02\x02" + + "\x02\t\u010F\x03\x02\x02\x02\t\u0111\x03\x02\x02\x02\t\u0113\x03\x02\x02" + + "\x02\t\u0115\x03\x02\x02\x02\n\u0117\x03\x02\x02\x02\n\u0119\x03\x02\x02" + + "\x02\n\u011B\x03\x02\x02\x02\n\u011D\x03\x02\x02\x02\n\u011F\x03\x02\x02" + + "\x02\n\u0121\x03\x02\x02\x02\n\u0123\x03\x02\x02\x02\v\u0125\x03\x02\x02" + + "\x02\v\u0127\x03\x02\x02\x02\v\u0129\x03\x02\x02\x02\v\u012B\x03\x02\x02" + + "\x02\v\u012D\x03\x02\x02\x02\v\u012F\x03\x02\x02\x02\f\u0131\x03\x02\x02" + + "\x02\f\u0133\x03\x02\x02\x02\f\u0135\x03\x02\x02\x02\f\u0137\x03\x02\x02" + + "\x02\f\u0139\x03\x02\x02\x02\f\u013B\x03\x02\x02\x02\r\u0171\x03\x02\x02" + + "\x02\x0F\u017B\x03\x02\x02\x02\x11\u0182\x03\x02\x02\x02\x13\u018B\x03" + + "\x02\x02\x02\x15\u0192\x03\x02\x02\x02\x17\u019C\x03\x02\x02\x02\x19\u01A3" + + "\x03\x02\x02\x02\x1B\u01AA\x03\x02\x02\x02\x1D\u01B8\x03\x02\x02\x02\x1F" + + "\u01BF\x03\x02\x02\x02!\u01C7\x03\x02\x02\x02#\u01D3\x03\x02\x02\x02%" + + "\u01DC\x03\x02\x02\x02\'\u01E2\x03\x02\x02\x02)\u01E9\x03\x02\x02\x02" + + "+\u01F0\x03\x02\x02\x02-\u01F8\x03\x02\x02\x02/\u0201\x03\x02\x02\x02" + + "1\u0207\x03\x02\x02\x023\u0218\x03\x02\x02\x025\u0228\x03\x02\x02\x02" + + "7\u022E\x03\x02\x02\x029\u0233\x03\x02\x02\x02;\u0238\x03\x02\x02\x02" + + "=\u023C\x03\x02\x02\x02?\u0240\x03\x02\x02\x02A\u0244\x03\x02\x02\x02" + + "C\u0248\x03\x02\x02\x02E\u024A\x03\x02\x02\x02G\u024C\x03\x02\x02\x02" + + "I\u024F\x03\x02\x02\x02K\u0251\x03\x02\x02\x02M\u025A\x03\x02\x02\x02" + + "O\u025C\x03\x02\x02\x02Q\u0261\x03\x02\x02\x02S\u0263\x03\x02\x02\x02" + + "U\u0268\x03\x02\x02\x02W\u0287\x03\x02\x02\x02Y\u028A\x03\x02\x02\x02" + + "[\u02B8\x03\x02\x02\x02]\u02BA\x03\x02\x02\x02_\u02BD\x03\x02\x02\x02" + + "a\u02C1\x03\x02\x02\x02c\u02C5\x03\x02\x02\x02e\u02C7\x03\x02\x02\x02" + + "g\u02C9\x03\x02\x02\x02i\u02CE\x03\x02\x02\x02k\u02D0\x03\x02\x02\x02" + + "m\u02D6\x03\x02\x02\x02o\u02DC\x03\x02\x02\x02q\u02E1\x03\x02\x02\x02" + + "s\u02E3\x03\x02\x02\x02u\u02E6\x03\x02\x02\x02w\u02E9\x03\x02\x02\x02" + + "y\u02EE\x03\x02\x02\x02{\u02F2\x03\x02\x02\x02}\u02F7\x03\x02\x02\x02" + + "\x7F\u02FD\x03\x02\x02\x02\x81\u0300\x03\x02\x02\x02\x83\u0302\x03\x02" + + "\x02\x02\x85\u0308\x03\x02\x02\x02\x87\u030A\x03\x02\x02\x02\x89\u030F" + + "\x03\x02\x02\x02\x8B\u0312\x03\x02\x02\x02\x8D\u0315\x03\x02\x02\x02\x8F" + + "\u0318\x03\x02\x02\x02\x91\u031A\x03\x02\x02\x02\x93\u031D\x03\x02\x02" + + "\x02\x95\u031F\x03\x02\x02\x02\x97\u0322\x03\x02\x02\x02\x99\u0324\x03" + + "\x02\x02\x02\x9B\u0326\x03\x02\x02\x02\x9D\u0328\x03\x02\x02\x02\x9F\u032A" + + "\x03\x02\x02\x02\xA1\u032C\x03\x02\x02\x02\xA3\u0331\x03\x02\x02\x02\xA5" + + "\u0346\x03\x02\x02\x02\xA7\u0348\x03\x02\x02\x02\xA9\u0350\x03\x02\x02" + + "\x02\xAB\u0352\x03\x02\x02\x02\xAD\u0356\x03\x02\x02\x02\xAF\u035A\x03" + + "\x02\x02\x02\xB1\u035E\x03\x02\x02\x02\xB3\u0363\x03\x02\x02\x02\xB5\u0367" + + "\x03\x02\x02\x02\xB7\u036B\x03\x02\x02\x02\xB9\u036F\x03\x02\x02\x02\xBB" + + "\u0373\x03\x02\x02\x02\xBD\u037F\x03\x02\x02\x02\xBF\u0382\x03\x02\x02" + + "\x02\xC1\u0386\x03\x02\x02\x02\xC3\u038A\x03\x02\x02\x02\xC5\u038E\x03" + + "\x02\x02\x02\xC7\u0392\x03\x02\x02\x02\xC9\u0396\x03\x02\x02\x02\xCB\u039B" + + "\x03\x02\x02\x02\xCD\u039F\x03\x02\x02\x02\xCF\u03A7\x03\x02\x02\x02\xD1" + + "\u03BC\x03\x02\x02\x02\xD3\u03C0\x03\x02\x02\x02\xD5\u03C4\x03\x02\x02" + + "\x02\xD7\u03C8\x03\x02\x02\x02\xD9\u03CC\x03\x02\x02\x02\xDB\u03D0\x03" + + "\x02\x02\x02\xDD\u03D5\x03\x02\x02\x02\xDF\u03D9\x03\x02\x02\x02\xE1\u03DD" + + "\x03\x02\x02\x02\xE3\u03E1\x03\x02\x02\x02\xE5\u03E4\x03\x02\x02\x02\xE7" + + "\u03E8\x03\x02\x02\x02\xE9\u03EC\x03\x02\x02\x02\xEB\u03F0\x03\x02\x02" + + "\x02\xED\u03F4\x03\x02\x02\x02\xEF\u03F9\x03\x02\x02\x02\xF1\u03FE\x03" + + "\x02\x02\x02\xF3\u0403\x03\x02\x02\x02\xF5\u040A\x03\x02\x02\x02\xF7\u0413" + + "\x03\x02\x02\x02\xF9\u041A\x03\x02\x02\x02\xFB\u041E\x03\x02\x02\x02\xFD" + + "\u0422\x03\x02\x02\x02\xFF\u0426\x03\x02\x02\x02\u0101\u042A\x03\x02\x02" + + "\x02\u0103\u042E\x03\x02\x02\x02\u0105\u0434\x03\x02\x02\x02\u0107\u0438" + + "\x03\x02\x02\x02\u0109\u043C\x03\x02\x02\x02\u010B\u0440\x03"; private static readonly _serializedATNSegment1: string = - "\x03\x02\x02\x02\u0103\u0430\x03\x02\x02\x02\u0105\u0434\x03\x02\x02\x02" + - "\u0107\u043A\x03\x02\x02\x02\u0109\u043E\x03\x02\x02\x02\u010B\u0442\x03" + - "\x02\x02\x02\u010D\u0446\x03\x02\x02\x02\u010F\u044A\x03\x02\x02\x02\u0111" + - "\u044E\x03\x02\x02\x02\u0113\u0452\x03\x02\x02\x02\u0115\u0456\x03\x02" + - "\x02\x02\u0117\u045A\x03\x02\x02\x02\u0119\u045E\x03\x02\x02\x02\u011B" + - "\u0463\x03\x02\x02\x02\u011D\u0467\x03\x02\x02\x02\u011F\u046B\x03\x02" + - "\x02\x02\u0121\u046F\x03\x02\x02\x02\u0123\u0473\x03\x02\x02\x02\u0125" + - "\u0477\x03\x02\x02\x02\u0127\u047B\x03\x02\x02\x02\u0129\u0480\x03\x02" + - "\x02\x02\u012B\u0485\x03\x02\x02\x02\u012D\u048F\x03\x02\x02\x02\u012F" + - "\u0493\x03\x02\x02\x02\u0131\u0497\x03\x02\x02\x02\u0133\u049B\x03\x02" + - "\x02\x02\u0135\u04A0\x03\x02\x02\x02\u0137\u04A7\x03\x02\x02\x02\u0139" + - "\u04AB\x03\x02\x02\x02\u013B\u04AF\x03\x02\x02\x02\u013D\u04B3\x03\x02" + - "\x02\x02\u013F\u04B7\x03\x02\x02\x02\u0141\u04B9\x03\x02\x02\x02\u0143" + - "\u04BB\x03\x02\x02\x02\u0145\u04BD\x03\x02\x02\x02\u0147\u04BF\x03\x02" + - "\x02\x02\u0149\u04C1\x03\x02\x02\x02\u014B\u04C3\x03\x02\x02\x02\u014D" + - "\u04C5\x03\x02\x02\x02\u014F\u04C7\x03\x02\x02\x02\u0151\u04C9\x03\x02" + - "\x02\x02\u0153\u04CB\x03\x02\x02\x02\u0155\u04CD\x03\x02\x02\x02\u0157" + - "\u04CF\x03\x02\x02\x02\u0159\u04D1\x03\x02\x02\x02\u015B\u04D3\x03\x02" + - "\x02\x02\u015D\u04D5\x03\x02\x02\x02\u015F\u04D7\x03\x02\x02\x02\u0161" + - "\u04D9\x03\x02\x02\x02\u0163\u04DB\x03\x02\x02\x02\u0165\u04DD\x03\x02" + - "\x02\x02\u0167\u04DF\x03\x02\x02\x02\u0169\u04E1\x03\x02\x02\x02\u016B" + - "\u04E3\x03\x02\x02\x02\u016D\u04E5\x03\x02\x02\x02\u016F\u04E7\x03\x02" + - "\x02\x02\u0171\u04E9\x03\x02\x02\x02\u0173\u0174\x05\u0145\x9E\x02\u0174" + - "\u0175\x05\u014F\xA3\x02\u0175\u0176\x05\u0163\xAD\x02\u0176\u0177\x05" + - "\u0163\xAD\x02\u0177\u0178\x05\u0147\x9F\x02\u0178\u0179\x05\u0143\x9D" + - "\x02\u0179\u017A\x05\u0165\xAE\x02\u017A\u017B\x03\x02\x02\x02\u017B\u017C" + - "\b\x02\x02\x02\u017C\x0E\x03\x02\x02\x02\u017D\u017E\x05\u0145\x9E\x02" + - "\u017E\u017F\x05\u0161\xAC\x02\u017F\u0180\x05\u015B\xA9\x02\u0180\u0181" + - "\x05\u015D\xAA\x02\u0181\u0182\x03\x02\x02\x02\u0182\u0183\b\x03\x03\x02" + - "\u0183\x10\x03\x02\x02\x02\u0184\u0185\x05\u0147\x9F\x02\u0185\u0186\x05" + - "\u0159\xA8\x02\u0186\u0187\x05\u0161\xAC\x02\u0187\u0188\x05\u014F\xA3" + - "\x02\u0188\u0189\x05\u0143\x9D\x02\u0189\u018A\x05\u014D\xA2\x02\u018A" + - "\u018B\x03\x02\x02\x02\u018B\u018C\b\x04\x04\x02\u018C\x12\x03\x02\x02" + - "\x02\u018D\u018E\x05\u0147\x9F\x02\u018E\u018F\x05\u0169\xB0\x02\u018F" + - "\u0190\x05\u013F\x9B\x02\u0190\u0191\x05\u0155\xA6\x02\u0191\u0192\x03" + - "\x02\x02\x02\u0192\u0193\b\x05\x02\x02\u0193\x14\x03\x02\x02\x02\u0194" + - "\u0195\x05\u0147\x9F\x02\u0195\u0196\x05\u016D\xB2\x02\u0196\u0197\x05" + - "\u015D\xAA\x02\u0197\u0198\x05\u0155\xA6\x02\u0198\u0199\x05\u013F\x9B" + - "\x02\u0199\u019A\x05\u014F\xA3\x02\u019A\u019B\x05\u0159\xA8\x02\u019B" + - "\u019C\x03\x02\x02\x02\u019C\u019D\b\x06\x05\x02\u019D\x16\x03\x02\x02" + - "\x02\u019E\u019F\x05\u0149\xA0\x02\u019F\u01A0\x05\u0161\xAC\x02\u01A0" + - "\u01A1\x05\u015B\xA9\x02\u01A1\u01A2\x05\u0157\xA7\x02\u01A2\u01A3\x03" + - "\x02\x02\x02\u01A3\u01A4\b\x07\x06\x02\u01A4\x18\x03\x02\x02\x02\u01A5" + - "\u01A6\x05\u014B\xA1\x02\u01A6\u01A7\x05\u0161\xAC\x02\u01A7\u01A8\x05" + - "\u015B\xA9\x02\u01A8\u01A9\x05\u0153\xA5\x02\u01A9\u01AA\x03\x02\x02\x02" + - "\u01AA\u01AB\b\b\x02\x02\u01AB\x1A\x03\x02\x02\x02\u01AC\u01AD\x05\u014F" + - "\xA3\x02\u01AD\u01AE\x05\u0159\xA8\x02\u01AE\u01AF\x05\u0155\xA6\x02\u01AF" + - "\u01B0\x05\u014F\xA3\x02\u01B0\u01B1\x05\u0159\xA8\x02\u01B1\u01B2\x05" + - "\u0147\x9F\x02\u01B2\u01B3\x05\u0163\xAD\x02\u01B3\u01B4\x05\u0165\xAE" + - "\x02\u01B4\u01B5\x05\u013F\x9B\x02\u01B5\u01B6\x05\u0165\xAE\x02\u01B6" + - "\u01B7\x05\u0163\xAD\x02\u01B7\u01B8\x03\x02\x02\x02\u01B8\u01B9\b\t\x02" + - "\x02\u01B9\x1C\x03\x02\x02\x02\u01BA\u01BB\x05\u0153\xA5\x02\u01BB\u01BC" + - "\x05\u0147\x9F\x02\u01BC\u01BD\x05\u0147\x9F\x02\u01BD\u01BE\x05\u015D" + - "\xAA\x02\u01BE\u01BF\x03\x02\x02\x02\u01BF\u01C0\b\n\x03\x02\u01C0\x1E" + - "\x03\x02\x02\x02\u01C1\u01C2\x05\u0155\xA6\x02\u01C2\u01C3\x05\u014F\xA3" + - "\x02\u01C3\u01C4\x05\u0157\xA7\x02\u01C4\u01C5\x05\u014F\xA3\x02\u01C5" + - "\u01C6\x05\u0165\xAE\x02\u01C6\u01C7\x03\x02\x02\x02\u01C7\u01C8\b\v\x02" + - "\x02\u01C8 \x03\x02\x02\x02\u01C9\u01CA\x05\u0157\xA7\x02\u01CA\u01CB" + - "\x05\u0169\xB0\x02\u01CB\u01CC\x05S%\x02\u01CC\u01CD\x05\u0147\x9F\x02" + - "\u01CD\u01CE\x05\u016D\xB2\x02\u01CE\u01CF\x05\u015D\xAA\x02\u01CF\u01D0" + - "\x05\u013F\x9B\x02\u01D0\u01D1\x05\u0159\xA8\x02\u01D1\u01D2\x05\u0145" + - "\x9E\x02\u01D2\u01D3\x03\x02\x02\x02\u01D3\u01D4\b\f\x07\x02\u01D4\"\x03" + - "\x02\x02\x02\u01D5\u01D6\x05\u0161\xAC\x02\u01D6\u01D7\x05\u0147\x9F\x02" + - "\u01D7\u01D8\x05\u0159\xA8\x02\u01D8\u01D9\x05\u013F\x9B\x02\u01D9\u01DA" + - "\x05\u0157\xA7\x02\u01DA\u01DB\x05\u0147\x9F\x02\u01DB\u01DC\x03\x02\x02" + - "\x02\u01DC\u01DD\b\r\b\x02\u01DD$\x03\x02\x02\x02\u01DE\u01DF\x05\u0161" + - "\xAC\x02\u01DF\u01E0\x05\u015B\xA9\x02\u01E0\u01E1\x05\u016B\xB1\x02\u01E1" + - "\u01E2\x03\x02\x02\x02\u01E2\u01E3\b\x0E\x02\x02\u01E3&\x03\x02\x02\x02" + - "\u01E4\u01E5\x05\u0163\xAD\x02\u01E5\u01E6\x05\u014D\xA2\x02\u01E6\u01E7" + - "\x05\u015B\xA9\x02\u01E7\u01E8\x05\u016B\xB1\x02\u01E8\u01E9\x03\x02\x02" + - "\x02\u01E9\u01EA\b\x0F\t\x02\u01EA(\x03\x02\x02\x02\u01EB\u01EC\x05\u0163" + - "\xAD\x02\u01EC\u01ED\x05\u015B\xA9\x02\u01ED\u01EE\x05\u0161\xAC\x02\u01EE" + - "\u01EF\x05\u0165\xAE\x02\u01EF\u01F0\x03\x02\x02\x02\u01F0\u01F1\b\x10" + - "\x02\x02\u01F1*\x03\x02\x02\x02\u01F2\u01F3\x05\u0163\xAD\x02\u01F3\u01F4" + - "\x05\u0165\xAE\x02\u01F4\u01F5\x05\u013F\x9B\x02\u01F5\u01F6\x05\u0165" + - "\xAE\x02\u01F6\u01F7\x05\u0163\xAD\x02\u01F7\u01F8\x03\x02\x02\x02\u01F8" + - "\u01F9\b\x11\x02\x02\u01F9,\x03\x02\x02\x02\u01FA\u01FB\x05\u016B\xB1" + - "\x02\u01FB\u01FC\x05\u014D\xA2\x02\u01FC\u01FD\x05\u0147\x9F\x02\u01FD" + - "\u01FE\x05\u0161\xAC\x02\u01FE\u01FF\x05\u0147\x9F\x02\u01FF\u0200\x03" + - "\x02\x02\x02\u0200\u0201\b\x12\x02\x02\u0201.\x03\x02\x02\x02\u0202\u0204" + - "\n\x02\x02\x02\u0203\u0202\x03\x02\x02\x02\u0204\u0205\x03\x02\x02\x02" + - "\u0205\u0203\x03\x02\x02\x02\u0205\u0206\x03\x02\x02\x02\u0206\u0207\x03" + - "\x02\x02\x02\u0207\u0208\b\x13\x02\x02\u02080\x03\x02\x02\x02\u0209\u020A" + - "\x071\x02\x02\u020A\u020B\x071\x02\x02\u020B\u020F\x03\x02\x02\x02\u020C" + - "\u020E\n\x03\x02\x02\u020D\u020C\x03\x02\x02\x02\u020E\u0211\x03\x02\x02" + - "\x02\u020F\u020D\x03\x02\x02\x02\u020F\u0210\x03\x02\x02\x02\u0210\u0213" + - "\x03\x02\x02\x02\u0211\u020F\x03\x02\x02\x02\u0212\u0214\x07\x0F\x02\x02" + - "\u0213\u0212\x03\x02\x02\x02\u0213\u0214\x03\x02\x02\x02\u0214\u0216\x03" + - "\x02\x02\x02\u0215\u0217\x07\f\x02\x02\u0216\u0215\x03\x02\x02\x02\u0216" + - "\u0217\x03\x02\x02\x02\u0217\u0218\x03\x02\x02\x02\u0218\u0219\b\x14\n" + - "\x02\u02192\x03\x02\x02\x02\u021A\u021B\x071\x02\x02\u021B\u021C\x07," + - "\x02\x02\u021C\u0221\x03\x02\x02\x02\u021D\u0220\x053\x15\x02\u021E\u0220" + - "\v\x02\x02\x02\u021F\u021D\x03\x02\x02\x02\u021F\u021E\x03\x02\x02\x02" + - "\u0220\u0223\x03\x02\x02\x02\u0221\u0222\x03\x02\x02\x02\u0221\u021F\x03" + - "\x02\x02\x02\u0222\u0224\x03\x02\x02\x02\u0223\u0221\x03\x02\x02\x02\u0224" + - "\u0225\x07,\x02\x02\u0225\u0226\x071\x02\x02\u0226\u0227\x03\x02\x02\x02" + - "\u0227\u0228\b\x15\n\x02\u02284\x03\x02\x02\x02\u0229\u022B\t\x04\x02" + - "\x02\u022A\u0229\x03\x02\x02\x02\u022B\u022C\x03\x02\x02\x02\u022C\u022A" + - "\x03\x02\x02\x02\u022C\u022D\x03\x02\x02\x02\u022D\u022E\x03\x02\x02\x02" + - "\u022E\u022F\b\x16\n\x02\u022F6\x03\x02\x02\x02\u0230\u0231\x05\xA1L\x02" + - "\u0231\u0232\x03\x02\x02\x02\u0232\u0233\b\x17\v\x02\u0233\u0234\b\x17" + - "\f\x02\u02348\x03\x02\x02\x02\u0235\u0236\x05A\x1C\x02\u0236\u0237\x03" + - "\x02\x02\x02\u0237\u0238\b\x18\r\x02\u0238\u0239\b\x18\x0E\x02\u0239:" + - "\x03\x02\x02\x02\u023A\u023B\x055\x16\x02\u023B\u023C\x03\x02\x02\x02" + - "\u023C\u023D\b\x19\n\x02\u023D<\x03\x02\x02\x02\u023E\u023F\x051\x14\x02" + - "\u023F\u0240\x03\x02\x02\x02\u0240\u0241\b\x1A\n\x02\u0241>\x03\x02\x02" + - "\x02\u0242\u0243\x053\x15\x02\u0243\u0244\x03\x02\x02\x02\u0244\u0245" + - "\b\x1B\n\x02\u0245@\x03\x02\x02\x02\u0246\u0247\x07~\x02\x02\u0247\u0248" + - "\x03\x02\x02\x02\u0248\u0249\b\x1C\x0E\x02\u0249B\x03\x02\x02\x02\u024A" + - "\u024B\t\x05\x02\x02\u024BD\x03\x02\x02\x02\u024C\u024D\t\x06\x02\x02" + - "\u024DF\x03\x02\x02\x02\u024E\u024F\x07^\x02\x02\u024F\u0250\t\x07\x02" + - "\x02\u0250H\x03\x02\x02\x02\u0251\u0252\n\b\x02\x02\u0252J\x03\x02\x02" + - "\x02\u0253\u0255\t\t\x02\x02\u0254\u0256\t\n\x02\x02\u0255\u0254\x03\x02" + - "\x02\x02\u0255\u0256\x03\x02\x02\x02\u0256\u0258\x03\x02\x02\x02\u0257" + - "\u0259\x05C\x1D\x02\u0258\u0257\x03\x02\x02\x02\u0259\u025A\x03\x02\x02" + - "\x02\u025A\u0258\x03\x02\x02\x02\u025A\u025B\x03\x02\x02\x02\u025BL\x03" + - "\x02\x02\x02\u025C\u025D\x07B\x02\x02\u025DN\x03\x02\x02\x02\u025E\u025F" + - "\x07b\x02\x02\u025FP\x03\x02\x02\x02\u0260\u0264\n\v\x02\x02\u0261\u0262" + - "\x07b\x02\x02\u0262\u0264\x07b\x02\x02\u0263\u0260\x03\x02\x02\x02\u0263" + - "\u0261\x03\x02\x02\x02\u0264R\x03\x02\x02\x02\u0265\u0266\x07a\x02\x02" + - "\u0266T\x03\x02\x02\x02\u0267\u026B\x05E\x1E\x02\u0268\u026B\x05C\x1D" + - "\x02\u0269\u026B\x05S%\x02\u026A\u0267\x03\x02\x02\x02\u026A\u0268\x03" + - "\x02\x02\x02\u026A\u0269\x03\x02\x02\x02\u026BV\x03\x02\x02\x02\u026C" + - "\u0271\x07$\x02\x02\u026D\u0270\x05G\x1F\x02\u026E\u0270\x05I \x02\u026F" + - "\u026D\x03\x02\x02\x02\u026F\u026E\x03\x02\x02\x02\u0270\u0273\x03\x02" + - "\x02\x02\u0271\u026F\x03\x02\x02\x02\u0271\u0272\x03\x02\x02\x02\u0272" + - "\u0274\x03\x02\x02\x02\u0273\u0271\x03\x02\x02\x02\u0274\u028A\x07$\x02" + - "\x02\u0275\u0276\x07$\x02\x02\u0276\u0277\x07$\x02\x02\u0277\u0278\x07" + - "$\x02\x02\u0278\u027C\x03\x02\x02\x02\u0279\u027B\n\x03\x02\x02\u027A" + - "\u0279\x03\x02\x02\x02\u027B\u027E\x03\x02\x02\x02\u027C\u027D\x03\x02" + - "\x02\x02\u027C\u027A\x03\x02\x02\x02\u027D\u027F\x03\x02\x02\x02\u027E" + - "\u027C\x03\x02\x02\x02\u027F\u0280\x07$\x02\x02\u0280\u0281\x07$\x02\x02" + - "\u0281\u0282\x07$\x02\x02\u0282\u0284\x03\x02\x02\x02\u0283\u0285\x07" + - "$\x02\x02\u0284\u0283\x03\x02\x02\x02\u0284\u0285\x03\x02\x02\x02\u0285" + - "\u0287\x03\x02\x02\x02\u0286\u0288\x07$\x02\x02\u0287\u0286\x03\x02\x02" + - "\x02\u0287\u0288\x03\x02\x02\x02\u0288\u028A\x03\x02\x02\x02\u0289\u026C" + - "\x03\x02\x02\x02\u0289\u0275\x03\x02\x02\x02\u028AX\x03\x02\x02\x02\u028B" + - "\u028D\x05C\x1D\x02\u028C\u028B\x03\x02\x02\x02\u028D\u028E\x03\x02\x02" + - "\x02\u028E\u028C\x03\x02\x02\x02\u028E\u028F\x03\x02\x02\x02\u028FZ\x03" + - "\x02\x02\x02\u0290\u0292\x05C\x1D\x02\u0291\u0290\x03\x02\x02\x02\u0292" + - "\u0293\x03\x02\x02\x02\u0293\u0291\x03\x02\x02\x02\u0293\u0294\x03\x02" + - "\x02\x02\u0294\u0295\x03\x02\x02\x02\u0295\u0299\x05i0\x02\u0296\u0298" + - "\x05C\x1D\x02\u0297\u0296\x03\x02\x02\x02\u0298\u029B\x03\x02\x02\x02" + - "\u0299\u0297\x03\x02\x02\x02\u0299\u029A\x03\x02\x02\x02\u029A\u02BB\x03" + - "\x02\x02\x02\u029B\u0299\x03\x02\x02\x02\u029C\u029E\x05i0\x02\u029D\u029F" + - "\x05C\x1D\x02\u029E\u029D\x03\x02\x02\x02\u029F\u02A0\x03\x02\x02\x02" + - "\u02A0\u029E\x03\x02\x02\x02\u02A0\u02A1\x03\x02\x02\x02\u02A1\u02BB\x03" + - "\x02\x02\x02\u02A2\u02A4\x05C\x1D\x02\u02A3\u02A2\x03\x02\x02\x02\u02A4" + - "\u02A5\x03\x02\x02\x02\u02A5\u02A3\x03\x02\x02\x02\u02A5\u02A6\x03\x02" + - "\x02\x02\u02A6\u02AE\x03\x02\x02\x02\u02A7\u02AB\x05i0\x02\u02A8\u02AA" + - "\x05C\x1D\x02\u02A9\u02A8\x03\x02\x02\x02\u02AA\u02AD\x03\x02\x02\x02" + - "\u02AB\u02A9\x03\x02\x02\x02\u02AB\u02AC\x03\x02\x02\x02\u02AC\u02AF\x03" + - "\x02\x02\x02\u02AD\u02AB\x03\x02\x02\x02\u02AE\u02A7\x03\x02\x02\x02\u02AE" + - "\u02AF\x03\x02\x02\x02\u02AF\u02B0\x03\x02\x02\x02\u02B0\u02B1\x05K!\x02" + - "\u02B1\u02BB\x03\x02\x02\x02\u02B2\u02B4\x05i0\x02\u02B3\u02B5\x05C\x1D" + - "\x02\u02B4\u02B3\x03\x02\x02\x02\u02B5\u02B6\x03\x02\x02\x02\u02B6\u02B4" + - "\x03\x02\x02\x02\u02B6\u02B7\x03\x02\x02\x02\u02B7\u02B8\x03\x02\x02\x02" + - "\u02B8\u02B9\x05K!\x02\u02B9\u02BB\x03\x02\x02\x02\u02BA\u0291\x03\x02" + - "\x02\x02\u02BA\u029C\x03\x02\x02\x02\u02BA\u02A3\x03\x02\x02\x02\u02BA" + - "\u02B2\x03\x02\x02\x02\u02BB\\\x03\x02\x02\x02\u02BC\u02BD\x05\u0141\x9C" + - "\x02\u02BD\u02BE\x05\u016F\xB3\x02\u02BE^\x03\x02\x02\x02\u02BF\u02C0" + - "\x05\u013F\x9B\x02\u02C0\u02C1\x05\u0159\xA8\x02\u02C1\u02C2\x05\u0145" + - "\x9E\x02\u02C2`\x03\x02\x02\x02\u02C3\u02C4\x05\u013F\x9B\x02\u02C4\u02C5" + - "\x05\u0163\xAD\x02\u02C5\u02C6\x05\u0143\x9D\x02\u02C6b\x03\x02\x02\x02" + - "\u02C7\u02C8\x07?\x02\x02\u02C8d\x03\x02\x02\x02\u02C9\u02CA\x07.\x02" + - "\x02\u02CAf\x03\x02\x02\x02\u02CB\u02CC\x05\u0145\x9E\x02\u02CC\u02CD" + - "\x05\u0147\x9F\x02\u02CD\u02CE\x05\u0163\xAD\x02\u02CE\u02CF\x05\u0143" + - "\x9D\x02\u02CFh\x03\x02\x02\x02\u02D0\u02D1\x070\x02\x02\u02D1j\x03\x02" + - "\x02\x02\u02D2\u02D3\x05\u0149\xA0\x02\u02D3\u02D4\x05\u013F\x9B\x02\u02D4" + - "\u02D5\x05\u0155\xA6\x02\u02D5\u02D6\x05\u0163\xAD\x02\u02D6\u02D7\x05" + - "\u0147\x9F\x02\u02D7l\x03\x02\x02\x02\u02D8\u02D9\x05\u0149\xA0\x02\u02D9" + - "\u02DA\x05\u014F\xA3\x02\u02DA\u02DB\x05\u0161\xAC\x02\u02DB\u02DC\x05" + - "\u0163\xAD\x02\u02DC\u02DD\x05\u0165\xAE\x02\u02DDn\x03\x02\x02\x02\u02DE" + - "\u02DF\x05\u0155\xA6\x02\u02DF\u02E0\x05\u013F\x9B\x02\u02E0\u02E1\x05" + - "\u0163\xAD\x02\u02E1\u02E2\x05\u0165\xAE\x02\u02E2p\x03\x02\x02\x02\u02E3" + - "\u02E4\x07*\x02\x02\u02E4r\x03\x02\x02\x02\u02E5\u02E6\x05\u014F\xA3\x02" + - "\u02E6\u02E7\x05\u0159\xA8\x02\u02E7t\x03\x02\x02\x02\u02E8\u02E9\x05" + - "\u014F\xA3\x02\u02E9\u02EA\x05\u0163\xAD\x02\u02EAv\x03\x02\x02\x02\u02EB" + - "\u02EC\x05\u0155\xA6\x02\u02EC\u02ED\x05\u014F\xA3\x02\u02ED\u02EE\x05" + - "\u0153\xA5\x02\u02EE\u02EF\x05\u0147\x9F\x02\u02EFx\x03\x02\x02\x02\u02F0" + - "\u02F1\x05\u0159\xA8\x02\u02F1\u02F2\x05\u015B\xA9\x02\u02F2\u02F3\x05" + - "\u0165\xAE\x02\u02F3z\x03\x02\x02\x02\u02F4\u02F5\x05\u0159\xA8\x02\u02F5" + - "\u02F6\x05\u0167\xAF\x02\u02F6\u02F7\x05\u0155\xA6\x02\u02F7\u02F8\x05" + - "\u0155\xA6\x02\u02F8|\x03\x02\x02\x02\u02F9\u02FA\x05\u0159\xA8\x02\u02FA" + - "\u02FB\x05\u0167\xAF\x02\u02FB\u02FC\x05\u0155\xA6\x02\u02FC\u02FD\x05" + - "\u0155\xA6\x02\u02FD\u02FE\x05\u0163\xAD\x02\u02FE~\x03\x02\x02\x02\u02FF" + - "\u0300\x05\u015B\xA9\x02\u0300\u0301\x05\u0161\xAC\x02\u0301\x80\x03\x02" + - "\x02\x02\u0302\u0303\x07A\x02\x02\u0303\x82\x03\x02\x02\x02\u0304\u0305" + - "\x05\u0161\xAC\x02\u0305\u0306\x05\u0155\xA6\x02\u0306\u0307\x05\u014F" + - "\xA3\x02\u0307\u0308\x05\u0153\xA5\x02\u0308\u0309\x05\u0147\x9F\x02\u0309" + - "\x84\x03\x02\x02\x02\u030A\u030B\x07+\x02\x02\u030B\x86\x03\x02\x02\x02" + - "\u030C\u030D\x05\u0165\xAE\x02\u030D\u030E\x05\u0161\xAC\x02\u030E\u030F" + - "\x05\u0167\xAF\x02\u030F\u0310\x05\u0147\x9F\x02\u0310\x88\x03\x02\x02" + - "\x02\u0311\u0312\x07?\x02\x02\u0312\u0313\x07?\x02\x02\u0313\x8A\x03\x02" + - "\x02\x02\u0314\u0315\x07?\x02\x02\u0315\u0316\x07\x80\x02\x02\u0316\x8C" + - "\x03\x02\x02\x02\u0317\u0318\x07#\x02\x02\u0318\u0319\x07?\x02\x02\u0319" + - "\x8E\x03\x02\x02\x02\u031A\u031B\x07>\x02\x02\u031B\x90\x03\x02\x02\x02" + - "\u031C\u031D\x07>\x02\x02\u031D\u031E\x07?\x02\x02\u031E\x92\x03\x02\x02" + - "\x02\u031F\u0320\x07@\x02\x02\u0320\x94\x03\x02\x02\x02\u0321\u0322\x07" + - "@\x02\x02\u0322\u0323\x07?\x02\x02\u0323\x96\x03\x02\x02\x02\u0324\u0325" + - "\x07-\x02\x02\u0325\x98\x03\x02\x02\x02\u0326\u0327\x07/\x02\x02\u0327" + - "\x9A\x03\x02\x02\x02\u0328\u0329\x07,\x02\x02\u0329\x9C\x03\x02\x02\x02" + - "\u032A\u032B\x071\x02\x02\u032B\x9E\x03\x02\x02\x02\u032C\u032D\x07\'" + - "\x02\x02\u032D\xA0\x03\x02\x02\x02\u032E\u032F\x07]\x02\x02\u032F\u0330" + - "\x03\x02\x02\x02\u0330\u0331\bL\x02\x02\u0331\u0332\bL\x02\x02\u0332\xA2" + - "\x03\x02\x02\x02\u0333\u0334\x07_\x02\x02\u0334\u0335\x03\x02\x02\x02" + - "\u0335\u0336\bM\x0E\x02\u0336\u0337\bM\x0E\x02\u0337\xA4\x03\x02\x02\x02" + - "\u0338\u033C\x05E\x1E\x02\u0339\u033B\x05U&\x02\u033A\u0339\x03\x02\x02" + - "\x02\u033B\u033E\x03\x02\x02\x02\u033C\u033A\x03\x02\x02\x02\u033C\u033D" + - "\x03\x02\x02\x02\u033D\u0349\x03\x02\x02\x02\u033E\u033C\x03\x02\x02\x02" + - "\u033F\u0342\x05S%\x02\u0340\u0342\x05M\"\x02\u0341\u033F\x03\x02\x02" + - "\x02\u0341\u0340\x03\x02\x02\x02\u0342\u0344\x03\x02\x02\x02\u0343\u0345" + - "\x05U&\x02\u0344\u0343\x03\x02\x02\x02\u0345\u0346\x03\x02\x02\x02\u0346" + - "\u0344\x03\x02\x02\x02\u0346\u0347\x03\x02\x02\x02\u0347\u0349\x03\x02" + - "\x02\x02\u0348\u0338\x03\x02\x02\x02\u0348\u0341\x03\x02\x02\x02\u0349" + - "\xA6\x03\x02\x02\x02\u034A\u034C\x05O#\x02\u034B\u034D\x05Q$\x02\u034C" + - "\u034B\x03\x02\x02\x02\u034D\u034E\x03\x02\x02\x02\u034E\u034C\x03\x02" + - "\x02\x02\u034E\u034F\x03\x02\x02\x02\u034F\u0350\x03\x02\x02\x02\u0350" + - "\u0351\x05O#\x02\u0351\xA8\x03\x02\x02\x02\u0352\u0353\x051\x14\x02\u0353" + - "\u0354\x03\x02\x02\x02\u0354\u0355\bP\n\x02\u0355\xAA\x03\x02\x02\x02" + - "\u0356\u0357\x053\x15\x02\u0357\u0358\x03\x02\x02\x02\u0358\u0359\bQ\n" + - "\x02\u0359\xAC\x03\x02\x02\x02\u035A\u035B\x055\x16\x02\u035B\u035C\x03" + - "\x02\x02\x02\u035C\u035D\bR\n\x02\u035D\xAE\x03\x02\x02\x02\u035E\u035F" + - "\x05A\x1C\x02\u035F\u0360\x03\x02\x02\x02\u0360\u0361\bS\r\x02\u0361\u0362" + - "\bS\x0E\x02\u0362\xB0\x03\x02\x02\x02\u0363\u0364\x05\xA1L\x02\u0364\u0365" + - "\x03\x02\x02\x02\u0365\u0366\bT\v\x02\u0366\xB2\x03\x02\x02\x02\u0367" + - "\u0368\x05\xA3M\x02\u0368\u0369\x03\x02\x02\x02\u0369\u036A\bU\x0F\x02" + - "\u036A\xB4\x03\x02\x02\x02\u036B\u036C\x05e.\x02\u036C\u036D\x03\x02\x02" + - "\x02\u036D\u036E\bV\x10\x02\u036E\xB6\x03\x02\x02\x02\u036F\u0370\x05" + - "c-\x02\u0370\u0371\x03\x02\x02\x02\u0371\u0372\bW\x11\x02\u0372\xB8\x03" + - "\x02\x02\x02\u0373\u0374\x05\u0157\xA7\x02\u0374\u0375\x05\u0147\x9F\x02" + - "\u0375\u0376\x05\u0165\xAE\x02\u0376\u0377\x05\u013F\x9B\x02\u0377\u0378" + - "\x05\u0145\x9E\x02\u0378\u0379\x05\u013F\x9B\x02\u0379\u037A\x05\u0165" + - "\xAE\x02\u037A\u037B\x05\u013F\x9B\x02\u037B\xBA\x03\x02\x02\x02\u037C" + - "\u0380\n\f\x02\x02\u037D\u037E\x071\x02\x02\u037E\u0380\n\r\x02\x02\u037F" + - "\u037C\x03\x02\x02\x02\u037F\u037D\x03\x02\x02\x02\u0380\xBC\x03\x02\x02" + - "\x02\u0381\u0383\x05\xBBY\x02\u0382\u0381\x03\x02\x02\x02\u0383\u0384" + - "\x03\x02\x02\x02\u0384\u0382\x03\x02\x02\x02\u0384\u0385\x03\x02\x02\x02" + - "\u0385\xBE\x03\x02\x02\x02\u0386\u0387\x05\xA7O\x02\u0387\u0388\x03\x02" + - "\x02\x02\u0388\u0389\b[\x12\x02\u0389\xC0\x03\x02\x02\x02\u038A\u038B" + - "\x051\x14\x02\u038B\u038C\x03\x02\x02\x02\u038C\u038D\b\\\n\x02\u038D" + - "\xC2\x03\x02\x02\x02\u038E\u038F\x053\x15\x02\u038F\u0390\x03\x02\x02" + - "\x02\u0390\u0391\b]\n\x02\u0391\xC4\x03\x02\x02\x02\u0392\u0393\x055\x16" + - "\x02\u0393\u0394\x03\x02\x02\x02\u0394\u0395\b^\n\x02\u0395\xC6\x03\x02" + - "\x02\x02\u0396\u0397\x05A\x1C\x02\u0397\u0398\x03\x02\x02\x02\u0398\u0399" + - "\b_\r\x02\u0399\u039A\b_\x0E\x02\u039A\xC8\x03\x02\x02\x02\u039B\u039C" + - "\x05i0\x02\u039C\u039D\x03\x02\x02\x02\u039D\u039E\b`\x13\x02\u039E\xCA" + - "\x03\x02\x02\x02\u039F\u03A0\x05e.\x02\u03A0\u03A1\x03\x02\x02\x02\u03A1" + - "\u03A2\ba\x10\x02\u03A2\xCC\x03\x02\x02\x02\u03A3\u03A8\x05E\x1E\x02\u03A4" + - "\u03A8\x05C\x1D\x02\u03A5\u03A8\x05S%\x02\u03A6\u03A8\x05\x9BI\x02\u03A7" + - "\u03A3\x03\x02\x02\x02\u03A7\u03A4\x03\x02\x02\x02\u03A7\u03A5\x03\x02" + - "\x02\x02\u03A7\u03A6\x03\x02\x02\x02\u03A8\xCE\x03\x02\x02\x02\u03A9\u03AC" + - "\x05E\x1E\x02\u03AA\u03AC\x05\x9BI\x02\u03AB\u03A9\x03\x02\x02\x02\u03AB" + - "\u03AA\x03\x02\x02\x02\u03AC\u03B0\x03\x02\x02\x02\u03AD\u03AF\x05\xCD" + - "b\x02\u03AE\u03AD\x03\x02\x02\x02\u03AF\u03B2\x03\x02\x02\x02\u03B0\u03AE" + - "\x03\x02\x02\x02\u03B0\u03B1\x03\x02\x02\x02\u03B1\u03BD\x03\x02\x02\x02" + - "\u03B2\u03B0\x03\x02\x02\x02\u03B3\u03B6\x05S%\x02\u03B4\u03B6\x05M\"" + - "\x02\u03B5\u03B3\x03\x02\x02\x02\u03B5\u03B4\x03\x02\x02\x02\u03B6\u03B8" + - "\x03\x02\x02\x02\u03B7\u03B9\x05\xCDb\x02\u03B8\u03B7\x03\x02\x02\x02" + - "\u03B9\u03BA\x03\x02\x02\x02\u03BA\u03B8\x03\x02\x02\x02\u03BA\u03BB\x03" + - "\x02\x02\x02\u03BB\u03BD\x03\x02\x02\x02\u03BC\u03AB\x03\x02\x02\x02\u03BC" + - "\u03B5\x03\x02\x02\x02\u03BD\xD0\x03\x02\x02\x02\u03BE\u03BF\x05\xCFc" + - "\x02\u03BF\u03C0\x03\x02\x02\x02\u03C0\u03C1\bd\x14\x02\u03C1\xD2\x03" + - "\x02\x02\x02\u03C2\u03C3\x05\xA7O\x02\u03C3\u03C4\x03\x02\x02\x02\u03C4" + - "\u03C5\be\x12\x02\u03C5\xD4\x03\x02\x02\x02\u03C6\u03C7\x051\x14\x02\u03C7" + - "\u03C8\x03\x02\x02\x02\u03C8\u03C9\bf\n\x02\u03C9\xD6\x03\x02\x02\x02" + - "\u03CA\u03CB\x053\x15\x02\u03CB\u03CC\x03\x02\x02\x02\u03CC\u03CD\bg\n" + - "\x02\u03CD\xD8\x03\x02\x02\x02\u03CE\u03CF\x055\x16\x02\u03CF\u03D0\x03" + - "\x02\x02\x02\u03D0\u03D1\bh\n\x02\u03D1\xDA\x03\x02\x02\x02\u03D2\u03D3" + - "\x05A\x1C\x02\u03D3\u03D4\x03\x02\x02\x02\u03D4\u03D5\bi\r\x02\u03D5\u03D6" + - "\bi\x0E\x02\u03D6\xDC\x03\x02\x02\x02\u03D7\u03D8\x05c-\x02\u03D8\u03D9" + - "\x03\x02\x02\x02\u03D9\u03DA\bj\x11\x02\u03DA\xDE\x03\x02\x02\x02\u03DB" + - "\u03DC\x05e.\x02\u03DC\u03DD\x03\x02\x02\x02\u03DD\u03DE\bk\x10\x02\u03DE" + - "\xE0\x03\x02\x02\x02\u03DF\u03E0\x05i0\x02\u03E0\u03E1\x03\x02\x02\x02" + - "\u03E1\u03E2\bl\x13\x02\u03E2\xE2\x03\x02\x02\x02\u03E3\u03E4\x05\u013F" + - "\x9B\x02\u03E4\u03E5\x05\u0163\xAD\x02\u03E5\xE4\x03\x02\x02\x02\u03E6" + - "\u03E7\x05\xA7O\x02\u03E7\u03E8\x03\x02\x02\x02\u03E8\u03E9\bn\x12\x02" + - "\u03E9\xE6\x03\x02\x02\x02\u03EA\u03EB\x05\xCFc\x02\u03EB\u03EC\x03\x02" + - "\x02\x02\u03EC\u03ED\bo\x14\x02\u03ED\xE8\x03\x02\x02\x02\u03EE\u03EF" + - "\x051\x14\x02\u03EF\u03F0\x03\x02\x02\x02\u03F0\u03F1\bp\n\x02\u03F1\xEA" + - "\x03\x02\x02\x02\u03F2\u03F3\x053\x15\x02\u03F3\u03F4\x03\x02\x02\x02" + - "\u03F4\u03F5\bq\n\x02\u03F5\xEC\x03\x02\x02\x02\u03F6\u03F7\x055\x16\x02" + - "\u03F7\u03F8\x03\x02\x02\x02\u03F8\u03F9\br\n\x02\u03F9\xEE\x03\x02\x02" + - "\x02\u03FA\u03FB\x05A\x1C\x02\u03FB\u03FC\x03\x02\x02\x02\u03FC\u03FD" + - "\bs\r\x02\u03FD\u03FE\bs\x0E\x02\u03FE\xF0\x03\x02\x02\x02\u03FF\u0400" + - "\x05\xA1L\x02\u0400\u0401\x03\x02\x02\x02\u0401\u0402\bt\v\x02\u0402\u0403" + - "\bt\x15\x02\u0403\xF2\x03\x02\x02\x02\u0404\u0405\x05\u015B\xA9\x02\u0405" + - "\u0406\x05\u0159\xA8\x02\u0406\u0407\x03\x02\x02\x02\u0407\u0408\bu\x16" + - "\x02\u0408\xF4\x03\x02\x02\x02\u0409\u040A\x05\u016B\xB1\x02\u040A\u040B" + - "\x05\u014F\xA3\x02\u040B\u040C\x05\u0165\xAE\x02\u040C\u040D\x05\u014D" + - "\xA2\x02\u040D\u040E\x03\x02\x02\x02\u040E\u040F\bv\x16\x02\u040F\xF6" + - "\x03\x02\x02\x02\u0410\u0411\n\x0E\x02\x02\u0411\xF8\x03\x02\x02\x02\u0412" + - "\u0414\x05\xF7w\x02\u0413\u0412\x03\x02\x02\x02\u0414\u0415\x03\x02\x02" + - "\x02\u0415\u0413\x03\x02\x02\x02\u0415\u0416\x03\x02\x02\x02\u0416\u0417" + - "\x03\x02\x02\x02\u0417\u0418\x05\u0135\x96\x02\u0418\u041A\x03\x02\x02" + - "\x02\u0419\u0413\x03\x02\x02\x02\u0419\u041A\x03\x02\x02\x02\u041A\u041C" + - "\x03\x02\x02\x02\u041B\u041D\x05\xF7w\x02\u041C\u041B\x03\x02\x02\x02" + - "\u041D\u041E\x03\x02\x02\x02\u041E\u041C\x03\x02\x02\x02\u041E\u041F\x03" + - "\x02\x02\x02\u041F\xFA\x03\x02\x02\x02\u0420\u0421\x05\xA7O\x02\u0421" + - "\u0422\x03\x02\x02\x02\u0422\u0423\by\x12\x02\u0423\xFC\x03\x02\x02\x02" + - "\u0424\u0425\x05\xF9x\x02\u0425\u0426\x03\x02\x02\x02\u0426\u0427\bz\x17" + - "\x02\u0427\xFE\x03\x02\x02\x02\u0428\u0429\x051\x14\x02\u0429\u042A\x03" + - "\x02\x02\x02\u042A\u042B\b{\n\x02\u042B\u0100\x03\x02\x02\x02\u042C\u042D" + - "\x053\x15\x02\u042D\u042E\x03\x02\x02\x02\u042E\u042F\b|\n\x02\u042F\u0102" + - "\x03\x02\x02\x02\u0430\u0431\x055\x16\x02\u0431\u0432\x03\x02\x02\x02" + - "\u0432\u0433\b}\n\x02\u0433\u0104\x03\x02\x02\x02\u0434\u0435\x05A\x1C" + - "\x02\u0435\u0436\x03\x02\x02\x02\u0436\u0437\b~\r\x02\u0437\u0438\b~\x0E" + - "\x02\u0438\u0439\b~\x0E\x02\u0439\u0106\x03\x02\x02\x02\u043A\u043B\x05" + - "c-\x02\u043B\u043C\x03\x02\x02\x02\u043C\u043D\b\x7F\x11\x02\u043D\u0108" + - "\x03\x02\x02\x02\u043E\u043F\x05e.\x02\u043F\u0440\x03\x02\x02\x02\u0440" + - "\u0441\b\x80\x10\x02\u0441\u010A\x03\x02\x02\x02\u0442\u0443\x05i0\x02" + - "\u0443\u0444\x03\x02\x02\x02\u0444\u0445\b\x81\x13\x02\u0445\u010C\x03" + - "\x02\x02\x02\u0446\u0447\x05\xF5v\x02\u0447\u0448\x03\x02\x02\x02\u0448" + - "\u0449\b\x82\x18\x02\u0449\u010E\x03\x02\x02\x02\u044A\u044B\x05\xCFc" + - "\x02\u044B\u044C\x03\x02\x02\x02\u044C\u044D\b\x83"; + "\x02\x02\x02\u010D\u0444\x03\x02\x02\x02\u010F\u0448\x03\x02\x02\x02\u0111" + + "\u044C\x03\x02\x02\x02\u0113\u0450\x03\x02\x02\x02\u0115\u0454\x03\x02" + + "\x02\x02\u0117\u0458\x03\x02\x02\x02\u0119\u045D\x03\x02\x02\x02\u011B" + + "\u0461\x03\x02\x02\x02\u011D\u0465\x03\x02\x02\x02\u011F\u0469\x03\x02" + + "\x02\x02\u0121\u046D\x03\x02\x02\x02\u0123\u0471\x03\x02\x02\x02\u0125" + + "\u0475\x03\x02\x02\x02\u0127\u047A\x03\x02\x02\x02\u0129\u047F\x03\x02" + + "\x02\x02\u012B\u0489\x03\x02\x02\x02\u012D\u048D\x03\x02\x02\x02\u012F" + + "\u0491\x03\x02\x02\x02\u0131\u0495\x03\x02\x02\x02\u0133\u049A\x03\x02" + + "\x02\x02\u0135\u04A1\x03\x02\x02\x02\u0137\u04A5\x03\x02\x02\x02\u0139" + + "\u04A9\x03\x02\x02\x02\u013B\u04AD\x03\x02\x02\x02\u013D\u04B1\x03\x02" + + "\x02\x02\u013F\u04B3\x03\x02\x02\x02\u0141\u04B5\x03\x02\x02\x02\u0143" + + "\u04B7\x03\x02\x02\x02\u0145\u04B9\x03\x02\x02\x02\u0147\u04BB\x03\x02" + + "\x02\x02\u0149\u04BD\x03\x02\x02\x02\u014B\u04BF\x03\x02\x02\x02\u014D" + + "\u04C1\x03\x02\x02\x02\u014F\u04C3\x03\x02\x02\x02\u0151\u04C5\x03\x02" + + "\x02\x02\u0153\u04C7\x03\x02\x02\x02\u0155\u04C9\x03\x02\x02\x02\u0157" + + "\u04CB\x03\x02\x02\x02\u0159\u04CD\x03\x02\x02\x02\u015B\u04CF\x03\x02" + + "\x02\x02\u015D\u04D1\x03\x02\x02\x02\u015F\u04D3\x03\x02\x02\x02\u0161" + + "\u04D5\x03\x02\x02\x02\u0163\u04D7\x03\x02\x02\x02\u0165\u04D9\x03\x02" + + "\x02\x02\u0167\u04DB\x03\x02\x02\x02\u0169\u04DD\x03\x02\x02\x02\u016B" + + "\u04DF\x03\x02\x02\x02\u016D\u04E1\x03\x02\x02\x02\u016F\u04E3\x03\x02" + + "\x02\x02\u0171\u0172\x05\u0143\x9D\x02\u0172\u0173\x05\u014D\xA2\x02\u0173" + + "\u0174\x05\u0161\xAC\x02\u0174\u0175\x05\u0161\xAC\x02\u0175\u0176\x05" + + "\u0145\x9E\x02\u0176\u0177\x05\u0141\x9C\x02\u0177\u0178\x05\u0163\xAD" + + "\x02\u0178\u0179\x03\x02\x02\x02\u0179\u017A\b\x02\x02\x02\u017A\x0E\x03" + + "\x02\x02\x02\u017B\u017C\x05\u0143\x9D\x02\u017C\u017D\x05\u015F\xAB\x02" + + "\u017D\u017E\x05\u0159\xA8\x02\u017E\u017F\x05\u015B\xA9\x02\u017F\u0180" + + "\x03\x02\x02\x02\u0180\u0181\b\x03\x03\x02\u0181\x10\x03\x02\x02\x02\u0182" + + "\u0183\x05\u0145\x9E\x02\u0183\u0184\x05\u0157\xA7\x02\u0184\u0185\x05" + + "\u015F\xAB\x02\u0185\u0186\x05\u014D\xA2\x02\u0186\u0187\x05\u0141\x9C" + + "\x02\u0187\u0188\x05\u014B\xA1\x02\u0188\u0189\x03\x02\x02\x02\u0189\u018A" + + "\b\x04\x04\x02\u018A\x12\x03\x02\x02\x02\u018B\u018C\x05\u0145\x9E\x02" + + "\u018C\u018D\x05\u0167\xAF\x02\u018D\u018E\x05\u013D\x9A\x02\u018E\u018F" + + "\x05\u0153\xA5\x02\u018F\u0190\x03\x02\x02\x02\u0190\u0191\b\x05\x02\x02" + + "\u0191\x14\x03\x02\x02\x02\u0192\u0193\x05\u0145\x9E\x02\u0193\u0194\x05" + + "\u016B\xB1\x02\u0194\u0195\x05\u015B\xA9\x02\u0195\u0196\x05\u0153\xA5" + + "\x02\u0196\u0197\x05\u013D\x9A\x02\u0197\u0198\x05\u014D\xA2\x02\u0198" + + "\u0199\x05\u0157\xA7\x02\u0199\u019A\x03\x02\x02\x02\u019A\u019B\b\x06" + + "\x05\x02\u019B\x16\x03\x02\x02\x02\u019C\u019D\x05\u0147\x9F\x02\u019D" + + "\u019E\x05\u015F\xAB\x02\u019E\u019F\x05\u0159\xA8\x02\u019F\u01A0\x05" + + "\u0155\xA6\x02\u01A0\u01A1\x03\x02\x02\x02\u01A1\u01A2\b\x07\x06\x02\u01A2" + + "\x18\x03\x02\x02\x02\u01A3\u01A4\x05\u0149\xA0\x02\u01A4\u01A5\x05\u015F" + + "\xAB\x02\u01A5\u01A6\x05\u0159\xA8\x02\u01A6\u01A7\x05\u0151\xA4\x02\u01A7" + + "\u01A8\x03\x02\x02\x02\u01A8\u01A9\b\b\x02\x02\u01A9\x1A\x03\x02\x02\x02" + + "\u01AA\u01AB\x05\u014D\xA2\x02\u01AB\u01AC\x05\u0157\xA7\x02\u01AC\u01AD" + + "\x05\u0153\xA5\x02\u01AD\u01AE\x05\u014D\xA2\x02\u01AE\u01AF\x05\u0157" + + "\xA7\x02\u01AF\u01B0\x05\u0145\x9E\x02\u01B0\u01B1\x05\u0161\xAC\x02\u01B1" + + "\u01B2\x05\u0163\xAD\x02\u01B2\u01B3\x05\u013D\x9A\x02\u01B3\u01B4\x05" + + "\u0163\xAD\x02\u01B4\u01B5\x05\u0161\xAC\x02\u01B5\u01B6\x03\x02\x02\x02" + + "\u01B6\u01B7\b\t\x02\x02\u01B7\x1C\x03\x02\x02\x02\u01B8\u01B9\x05\u0151" + + "\xA4\x02\u01B9\u01BA\x05\u0145\x9E\x02\u01BA\u01BB\x05\u0145\x9E\x02\u01BB" + + "\u01BC\x05\u015B\xA9\x02\u01BC\u01BD\x03\x02\x02\x02\u01BD\u01BE\b\n\x03" + + "\x02\u01BE\x1E\x03\x02\x02\x02\u01BF\u01C0\x05\u0153\xA5\x02\u01C0\u01C1" + + "\x05\u014D\xA2\x02\u01C1\u01C2\x05\u0155\xA6\x02\u01C2\u01C3\x05\u014D" + + "\xA2\x02\u01C3\u01C4\x05\u0163\xAD\x02\u01C4\u01C5\x03\x02\x02\x02\u01C5" + + "\u01C6\b\v\x02\x02\u01C6 \x03\x02\x02\x02\u01C7\u01C8\x05\u0155\xA6\x02" + + "\u01C8\u01C9\x05\u0167\xAF\x02\u01C9\u01CA\x05S%\x02\u01CA\u01CB\x05\u0145" + + "\x9E\x02\u01CB\u01CC\x05\u016B\xB1\x02\u01CC\u01CD\x05\u015B\xA9\x02\u01CD" + + "\u01CE\x05\u013D\x9A\x02\u01CE\u01CF\x05\u0157\xA7\x02\u01CF\u01D0\x05" + + "\u0143\x9D\x02\u01D0\u01D1\x03\x02\x02\x02\u01D1\u01D2\b\f\x07\x02\u01D2" + + "\"\x03\x02\x02\x02\u01D3\u01D4\x05\u015F\xAB\x02\u01D4\u01D5\x05\u0145" + + "\x9E\x02\u01D5\u01D6\x05\u0157\xA7\x02\u01D6\u01D7\x05\u013D\x9A\x02\u01D7" + + "\u01D8\x05\u0155\xA6\x02\u01D8\u01D9\x05\u0145\x9E\x02\u01D9\u01DA\x03" + + "\x02\x02\x02\u01DA\u01DB\b\r\b\x02\u01DB$\x03\x02\x02\x02\u01DC\u01DD" + + "\x05\u015F\xAB\x02\u01DD\u01DE\x05\u0159\xA8\x02\u01DE\u01DF\x05\u0169" + + "\xB0\x02\u01DF\u01E0\x03\x02\x02\x02\u01E0\u01E1\b\x0E\x02\x02\u01E1&" + + "\x03\x02\x02\x02\u01E2\u01E3\x05\u0161\xAC\x02\u01E3\u01E4\x05\u014B\xA1" + + "\x02\u01E4\u01E5\x05\u0159\xA8\x02\u01E5\u01E6\x05\u0169\xB0\x02\u01E6" + + "\u01E7\x03\x02\x02\x02\u01E7\u01E8\b\x0F\t\x02\u01E8(\x03\x02\x02\x02" + + "\u01E9\u01EA\x05\u0161\xAC\x02\u01EA\u01EB\x05\u0159\xA8\x02\u01EB\u01EC" + + "\x05\u015F\xAB\x02\u01EC\u01ED\x05\u0163\xAD\x02\u01ED\u01EE\x03\x02\x02" + + "\x02\u01EE\u01EF\b\x10\x02\x02\u01EF*\x03\x02\x02\x02\u01F0\u01F1\x05" + + "\u0161\xAC\x02\u01F1\u01F2\x05\u0163\xAD\x02\u01F2\u01F3\x05\u013D\x9A" + + "\x02\u01F3\u01F4\x05\u0163\xAD\x02\u01F4\u01F5\x05\u0161\xAC\x02\u01F5" + + "\u01F6\x03\x02\x02\x02\u01F6\u01F7\b\x11\x02\x02\u01F7,\x03\x02\x02\x02" + + "\u01F8\u01F9\x05\u0169\xB0\x02\u01F9\u01FA\x05\u014B\xA1\x02\u01FA\u01FB" + + "\x05\u0145\x9E\x02\u01FB\u01FC\x05\u015F\xAB\x02\u01FC\u01FD\x05\u0145" + + "\x9E\x02\u01FD\u01FE\x03\x02\x02\x02\u01FE\u01FF\b\x12\x02\x02\u01FF." + + "\x03\x02\x02\x02\u0200\u0202\n\x02\x02\x02\u0201\u0200\x03\x02\x02\x02" + + "\u0202\u0203\x03\x02\x02\x02\u0203\u0201\x03\x02\x02\x02\u0203\u0204\x03" + + "\x02\x02\x02\u0204\u0205\x03\x02\x02\x02\u0205\u0206\b\x13\x02\x02\u0206" + + "0\x03\x02\x02\x02\u0207\u0208\x071\x02\x02\u0208\u0209\x071\x02\x02\u0209" + + "\u020D\x03\x02\x02\x02\u020A\u020C\n\x03\x02\x02\u020B\u020A\x03\x02\x02" + + "\x02\u020C\u020F\x03\x02\x02\x02\u020D\u020B\x03\x02\x02\x02\u020D\u020E" + + "\x03\x02\x02\x02\u020E\u0211\x03\x02\x02\x02\u020F\u020D\x03\x02\x02\x02" + + "\u0210\u0212\x07\x0F\x02\x02\u0211\u0210\x03\x02\x02\x02\u0211\u0212\x03" + + "\x02\x02\x02\u0212\u0214\x03\x02\x02\x02\u0213\u0215\x07\f\x02\x02\u0214" + + "\u0213\x03\x02\x02\x02\u0214\u0215\x03\x02\x02\x02\u0215\u0216\x03\x02" + + "\x02\x02\u0216\u0217\b\x14\n\x02\u02172\x03\x02\x02\x02\u0218\u0219\x07" + + "1\x02\x02\u0219\u021A\x07,\x02\x02\u021A\u021F\x03\x02\x02\x02\u021B\u021E" + + "\x053\x15\x02\u021C\u021E\v\x02\x02\x02\u021D\u021B\x03\x02\x02\x02\u021D" + + "\u021C\x03\x02\x02\x02\u021E\u0221\x03\x02\x02\x02\u021F\u0220\x03\x02" + + "\x02\x02\u021F\u021D\x03\x02\x02\x02\u0220\u0222\x03\x02\x02\x02\u0221" + + "\u021F\x03\x02\x02\x02\u0222\u0223\x07,\x02\x02\u0223\u0224\x071\x02\x02" + + "\u0224\u0225\x03\x02\x02\x02\u0225\u0226\b\x15\n\x02\u02264\x03\x02\x02" + + "\x02\u0227\u0229\t\x04\x02\x02\u0228\u0227\x03\x02\x02\x02\u0229\u022A" + + "\x03\x02\x02\x02\u022A\u0228\x03\x02\x02\x02\u022A\u022B\x03\x02\x02\x02" + + "\u022B\u022C\x03\x02\x02\x02\u022C\u022D\b\x16\n\x02\u022D6\x03\x02\x02" + + "\x02\u022E\u022F\x05\xA1L\x02\u022F\u0230\x03\x02\x02\x02\u0230\u0231" + + "\b\x17\v\x02\u0231\u0232\b\x17\f\x02\u02328\x03\x02\x02\x02\u0233\u0234" + + "\x05A\x1C\x02\u0234\u0235\x03\x02\x02\x02\u0235\u0236\b\x18\r\x02\u0236" + + "\u0237\b\x18\x0E\x02\u0237:\x03\x02\x02\x02\u0238\u0239\x055\x16\x02\u0239" + + "\u023A\x03\x02\x02\x02\u023A\u023B\b\x19\n\x02\u023B<\x03\x02\x02\x02" + + "\u023C\u023D\x051\x14\x02\u023D\u023E\x03\x02\x02\x02\u023E\u023F\b\x1A" + + "\n\x02\u023F>\x03\x02\x02\x02\u0240\u0241\x053\x15\x02\u0241\u0242\x03" + + "\x02\x02\x02\u0242\u0243\b\x1B\n\x02\u0243@\x03\x02\x02\x02\u0244\u0245" + + "\x07~\x02\x02\u0245\u0246\x03\x02\x02\x02\u0246\u0247\b\x1C\x0E\x02\u0247" + + "B\x03\x02\x02\x02\u0248\u0249\t\x05\x02\x02\u0249D\x03\x02\x02\x02\u024A" + + "\u024B\t\x06\x02\x02\u024BF\x03\x02\x02\x02\u024C\u024D\x07^\x02\x02\u024D" + + "\u024E\t\x07\x02\x02\u024EH\x03\x02\x02\x02\u024F\u0250\n\b\x02\x02\u0250" + + "J\x03\x02\x02\x02\u0251\u0253\t\t\x02\x02\u0252\u0254\t\n\x02\x02\u0253" + + "\u0252\x03\x02\x02\x02\u0253\u0254\x03\x02\x02\x02\u0254\u0256\x03\x02" + + "\x02\x02\u0255\u0257\x05C\x1D\x02\u0256\u0255\x03\x02\x02\x02\u0257\u0258" + + "\x03\x02\x02\x02\u0258\u0256\x03\x02\x02\x02\u0258\u0259\x03\x02\x02\x02" + + "\u0259L\x03\x02\x02\x02\u025A\u025B\x07B\x02\x02\u025BN\x03\x02\x02\x02" + + "\u025C\u025D\x07b\x02\x02\u025DP\x03\x02\x02\x02\u025E\u0262\n\v\x02\x02" + + "\u025F\u0260\x07b\x02\x02\u0260\u0262\x07b\x02\x02\u0261\u025E\x03\x02" + + "\x02\x02\u0261\u025F\x03\x02\x02\x02\u0262R\x03\x02\x02\x02\u0263\u0264" + + "\x07a\x02\x02\u0264T\x03\x02\x02\x02\u0265\u0269\x05E\x1E\x02\u0266\u0269" + + "\x05C\x1D\x02\u0267\u0269\x05S%\x02\u0268\u0265\x03\x02\x02\x02\u0268" + + "\u0266\x03\x02\x02\x02\u0268\u0267\x03\x02\x02\x02\u0269V\x03\x02\x02" + + "\x02\u026A\u026F\x07$\x02\x02\u026B\u026E\x05G\x1F\x02\u026C\u026E\x05" + + "I \x02\u026D\u026B\x03\x02\x02\x02\u026D\u026C\x03\x02\x02\x02\u026E\u0271" + + "\x03\x02\x02\x02\u026F\u026D\x03\x02\x02\x02\u026F\u0270\x03\x02\x02\x02" + + "\u0270\u0272\x03\x02\x02\x02\u0271\u026F\x03\x02\x02\x02\u0272\u0288\x07" + + "$\x02\x02\u0273\u0274\x07$\x02\x02\u0274\u0275\x07$\x02\x02\u0275\u0276" + + "\x07$\x02\x02\u0276\u027A\x03\x02\x02\x02\u0277\u0279\n\x03\x02\x02\u0278" + + "\u0277\x03\x02\x02\x02\u0279\u027C\x03\x02\x02\x02\u027A\u027B\x03\x02" + + "\x02\x02\u027A\u0278\x03\x02\x02\x02\u027B\u027D\x03\x02\x02\x02\u027C" + + "\u027A\x03\x02\x02\x02\u027D\u027E\x07$\x02\x02\u027E\u027F\x07$\x02\x02" + + "\u027F\u0280\x07$\x02\x02\u0280\u0282\x03\x02\x02\x02\u0281\u0283\x07" + + "$\x02\x02\u0282\u0281\x03\x02\x02\x02\u0282\u0283\x03\x02\x02\x02\u0283" + + "\u0285\x03\x02\x02\x02\u0284\u0286\x07$\x02\x02\u0285\u0284\x03\x02\x02" + + "\x02\u0285\u0286\x03\x02\x02\x02\u0286\u0288\x03\x02\x02\x02\u0287\u026A" + + "\x03\x02\x02\x02\u0287\u0273\x03\x02\x02\x02\u0288X\x03\x02\x02\x02\u0289" + + "\u028B\x05C\x1D\x02\u028A\u0289\x03\x02\x02\x02\u028B\u028C\x03\x02\x02" + + "\x02\u028C\u028A\x03\x02\x02\x02\u028C\u028D\x03\x02\x02\x02\u028DZ\x03" + + "\x02\x02\x02\u028E\u0290\x05C\x1D\x02\u028F\u028E\x03\x02\x02\x02\u0290" + + "\u0291\x03\x02\x02\x02\u0291\u028F\x03\x02\x02\x02\u0291\u0292\x03\x02" + + "\x02\x02\u0292\u0293\x03\x02\x02\x02\u0293\u0297\x05i0\x02\u0294\u0296" + + "\x05C\x1D\x02\u0295\u0294\x03\x02\x02\x02\u0296\u0299\x03\x02\x02\x02" + + "\u0297\u0295\x03\x02\x02\x02\u0297\u0298\x03\x02\x02\x02\u0298\u02B9\x03" + + "\x02\x02\x02\u0299\u0297\x03\x02\x02\x02\u029A\u029C\x05i0\x02\u029B\u029D" + + "\x05C\x1D\x02\u029C\u029B\x03\x02\x02\x02\u029D\u029E\x03\x02\x02\x02" + + "\u029E\u029C\x03\x02\x02\x02\u029E\u029F\x03\x02\x02\x02\u029F\u02B9\x03" + + "\x02\x02\x02\u02A0\u02A2\x05C\x1D\x02\u02A1\u02A0\x03\x02\x02\x02\u02A2" + + "\u02A3\x03\x02\x02\x02\u02A3\u02A1\x03\x02\x02\x02\u02A3\u02A4\x03\x02" + + "\x02\x02\u02A4\u02AC\x03\x02\x02\x02\u02A5\u02A9\x05i0\x02\u02A6\u02A8" + + "\x05C\x1D\x02\u02A7\u02A6\x03\x02\x02\x02\u02A8\u02AB\x03\x02\x02\x02" + + "\u02A9\u02A7\x03\x02\x02\x02\u02A9\u02AA\x03\x02\x02\x02\u02AA\u02AD\x03" + + "\x02\x02\x02\u02AB\u02A9\x03\x02\x02\x02\u02AC\u02A5\x03\x02\x02\x02\u02AC" + + "\u02AD\x03\x02\x02\x02\u02AD\u02AE\x03\x02\x02\x02\u02AE\u02AF\x05K!\x02" + + "\u02AF\u02B9\x03\x02\x02\x02\u02B0\u02B2\x05i0\x02\u02B1\u02B3\x05C\x1D" + + "\x02\u02B2\u02B1\x03\x02\x02\x02\u02B3\u02B4\x03\x02\x02\x02\u02B4\u02B2" + + "\x03\x02\x02\x02\u02B4\u02B5\x03\x02\x02\x02\u02B5\u02B6\x03\x02\x02\x02" + + "\u02B6\u02B7\x05K!\x02\u02B7\u02B9\x03\x02\x02\x02\u02B8\u028F\x03\x02" + + "\x02\x02\u02B8\u029A\x03\x02\x02\x02\u02B8\u02A1\x03\x02\x02\x02\u02B8" + + "\u02B0\x03\x02\x02\x02\u02B9\\\x03\x02\x02\x02\u02BA\u02BB\x05\u013F\x9B" + + "\x02\u02BB\u02BC\x05\u016D\xB2\x02\u02BC^\x03\x02\x02\x02\u02BD\u02BE" + + "\x05\u013D\x9A\x02\u02BE\u02BF\x05\u0157\xA7\x02\u02BF\u02C0\x05\u0143" + + "\x9D\x02\u02C0`\x03\x02\x02\x02\u02C1\u02C2\x05\u013D\x9A\x02\u02C2\u02C3" + + "\x05\u0161\xAC\x02\u02C3\u02C4\x05\u0141\x9C\x02\u02C4b\x03\x02\x02\x02" + + "\u02C5\u02C6\x07?\x02\x02\u02C6d\x03\x02\x02\x02\u02C7\u02C8\x07.\x02" + + "\x02\u02C8f\x03\x02\x02\x02\u02C9\u02CA\x05\u0143\x9D\x02\u02CA\u02CB" + + "\x05\u0145\x9E\x02\u02CB\u02CC\x05\u0161\xAC\x02\u02CC\u02CD\x05\u0141" + + "\x9C\x02\u02CDh\x03\x02\x02\x02\u02CE\u02CF\x070\x02\x02\u02CFj\x03\x02" + + "\x02\x02\u02D0\u02D1\x05\u0147\x9F\x02\u02D1\u02D2\x05\u013D\x9A\x02\u02D2" + + "\u02D3\x05\u0153\xA5\x02\u02D3\u02D4\x05\u0161\xAC\x02\u02D4\u02D5\x05" + + "\u0145\x9E\x02\u02D5l\x03\x02\x02\x02\u02D6\u02D7\x05\u0147\x9F\x02\u02D7" + + "\u02D8\x05\u014D\xA2\x02\u02D8\u02D9\x05\u015F\xAB\x02\u02D9\u02DA\x05" + + "\u0161\xAC\x02\u02DA\u02DB\x05\u0163\xAD\x02\u02DBn\x03\x02\x02\x02\u02DC" + + "\u02DD\x05\u0153\xA5\x02\u02DD\u02DE\x05\u013D\x9A\x02\u02DE\u02DF\x05" + + "\u0161\xAC\x02\u02DF\u02E0\x05\u0163\xAD\x02\u02E0p\x03\x02\x02\x02\u02E1" + + "\u02E2\x07*\x02\x02\u02E2r\x03\x02\x02\x02\u02E3\u02E4\x05\u014D\xA2\x02" + + "\u02E4\u02E5\x05\u0157\xA7\x02\u02E5t\x03\x02\x02\x02\u02E6\u02E7\x05" + + "\u014D\xA2\x02\u02E7\u02E8\x05\u0161\xAC\x02\u02E8v\x03\x02\x02\x02\u02E9" + + "\u02EA\x05\u0153\xA5\x02\u02EA\u02EB\x05\u014D\xA2\x02\u02EB\u02EC\x05" + + "\u0151\xA4\x02\u02EC\u02ED\x05\u0145\x9E\x02\u02EDx\x03\x02\x02\x02\u02EE" + + "\u02EF\x05\u0157\xA7\x02\u02EF\u02F0\x05\u0159\xA8\x02\u02F0\u02F1\x05" + + "\u0163\xAD\x02\u02F1z\x03\x02\x02\x02\u02F2\u02F3\x05\u0157\xA7\x02\u02F3" + + "\u02F4\x05\u0165\xAE\x02\u02F4\u02F5\x05\u0153\xA5\x02\u02F5\u02F6\x05" + + "\u0153\xA5\x02\u02F6|\x03\x02\x02\x02\u02F7\u02F8\x05\u0157\xA7\x02\u02F8" + + "\u02F9\x05\u0165\xAE\x02\u02F9\u02FA\x05\u0153\xA5\x02\u02FA\u02FB\x05" + + "\u0153\xA5\x02\u02FB\u02FC\x05\u0161\xAC\x02\u02FC~\x03\x02\x02\x02\u02FD" + + "\u02FE\x05\u0159\xA8\x02\u02FE\u02FF\x05\u015F\xAB\x02\u02FF\x80\x03\x02" + + "\x02\x02\u0300\u0301\x07A\x02\x02\u0301\x82\x03\x02\x02\x02\u0302\u0303" + + "\x05\u015F\xAB\x02\u0303\u0304\x05\u0153\xA5\x02\u0304\u0305\x05\u014D" + + "\xA2\x02\u0305\u0306\x05\u0151\xA4\x02\u0306\u0307\x05\u0145\x9E\x02\u0307" + + "\x84\x03\x02\x02\x02\u0308\u0309\x07+\x02\x02\u0309\x86\x03\x02\x02\x02" + + "\u030A\u030B\x05\u0163\xAD\x02\u030B\u030C\x05\u015F\xAB\x02\u030C\u030D" + + "\x05\u0165\xAE\x02\u030D\u030E\x05\u0145\x9E\x02\u030E\x88\x03\x02\x02" + + "\x02\u030F\u0310\x07?\x02\x02\u0310\u0311\x07?\x02\x02\u0311\x8A\x03\x02" + + "\x02\x02\u0312\u0313\x07?\x02\x02\u0313\u0314\x07\x80\x02\x02\u0314\x8C" + + "\x03\x02\x02\x02\u0315\u0316\x07#\x02\x02\u0316\u0317\x07?\x02\x02\u0317" + + "\x8E\x03\x02\x02\x02\u0318\u0319\x07>\x02\x02\u0319\x90\x03\x02\x02\x02" + + "\u031A\u031B\x07>\x02\x02\u031B\u031C\x07?\x02\x02\u031C\x92\x03\x02\x02" + + "\x02\u031D\u031E\x07@\x02\x02\u031E\x94\x03\x02\x02\x02\u031F\u0320\x07" + + "@\x02\x02\u0320\u0321\x07?\x02\x02\u0321\x96\x03\x02\x02\x02\u0322\u0323" + + "\x07-\x02\x02\u0323\x98\x03\x02\x02\x02\u0324\u0325\x07/\x02\x02\u0325" + + "\x9A\x03\x02\x02\x02\u0326\u0327\x07,\x02\x02\u0327\x9C\x03\x02\x02\x02" + + "\u0328\u0329\x071\x02\x02\u0329\x9E\x03\x02\x02\x02\u032A\u032B\x07\'" + + "\x02\x02\u032B\xA0\x03\x02\x02\x02\u032C\u032D\x07]\x02\x02\u032D\u032E" + + "\x03\x02\x02\x02\u032E\u032F\bL\x02\x02\u032F\u0330\bL\x02\x02\u0330\xA2" + + "\x03\x02\x02\x02\u0331\u0332\x07_\x02\x02\u0332\u0333\x03\x02\x02\x02" + + "\u0333\u0334\bM\x0E\x02\u0334\u0335\bM\x0E\x02\u0335\xA4\x03\x02\x02\x02" + + "\u0336\u033A\x05E\x1E\x02\u0337\u0339\x05U&\x02\u0338\u0337\x03\x02\x02" + + "\x02\u0339\u033C\x03\x02\x02\x02\u033A\u0338\x03\x02\x02\x02\u033A\u033B" + + "\x03\x02\x02\x02\u033B\u0347\x03\x02\x02\x02\u033C\u033A\x03\x02\x02\x02" + + "\u033D\u0340\x05S%\x02\u033E\u0340\x05M\"\x02\u033F\u033D\x03\x02\x02" + + "\x02\u033F\u033E\x03\x02\x02\x02\u0340\u0342\x03\x02\x02\x02\u0341\u0343" + + "\x05U&\x02\u0342\u0341\x03\x02\x02\x02\u0343\u0344\x03\x02\x02\x02\u0344" + + "\u0342\x03\x02\x02\x02\u0344\u0345\x03\x02\x02\x02\u0345\u0347\x03\x02" + + "\x02\x02\u0346\u0336\x03\x02\x02\x02\u0346\u033F\x03\x02\x02\x02\u0347" + + "\xA6\x03\x02\x02\x02\u0348\u034A\x05O#\x02\u0349\u034B\x05Q$\x02\u034A" + + "\u0349\x03\x02\x02\x02\u034B\u034C\x03\x02\x02\x02\u034C\u034A\x03\x02" + + "\x02\x02\u034C\u034D\x03\x02\x02\x02\u034D\u034E\x03\x02\x02\x02\u034E" + + "\u034F\x05O#\x02\u034F\xA8\x03\x02\x02\x02\u0350\u0351\x05\xA7O\x02\u0351" + + "\xAA\x03\x02\x02\x02\u0352\u0353\x051\x14\x02\u0353\u0354\x03\x02\x02" + + "\x02\u0354\u0355\bQ\n\x02\u0355\xAC\x03\x02\x02\x02\u0356\u0357\x053\x15" + + "\x02\u0357\u0358\x03\x02\x02\x02\u0358\u0359\bR\n\x02\u0359\xAE\x03\x02" + + "\x02\x02\u035A\u035B\x055\x16\x02\u035B\u035C\x03\x02\x02\x02\u035C\u035D" + + "\bS\n\x02\u035D\xB0\x03\x02\x02\x02\u035E\u035F\x05A\x1C\x02\u035F\u0360" + + "\x03\x02\x02\x02\u0360\u0361\bT\r\x02\u0361\u0362\bT\x0E\x02\u0362\xB2" + + "\x03\x02\x02\x02\u0363\u0364\x05\xA1L\x02\u0364\u0365\x03\x02\x02\x02" + + "\u0365\u0366\bU\v\x02\u0366\xB4\x03\x02\x02\x02\u0367\u0368\x05\xA3M\x02" + + "\u0368\u0369\x03\x02\x02\x02\u0369\u036A\bV\x0F\x02\u036A\xB6\x03\x02" + + "\x02\x02\u036B\u036C\x05e.\x02\u036C\u036D\x03\x02\x02\x02\u036D\u036E" + + "\bW\x10\x02\u036E\xB8\x03\x02\x02\x02\u036F\u0370\x05c-\x02\u0370\u0371" + + "\x03\x02\x02\x02\u0371\u0372\bX\x11\x02\u0372\xBA\x03\x02\x02\x02\u0373" + + "\u0374\x05\u0155\xA6\x02\u0374\u0375\x05\u0145\x9E\x02\u0375\u0376\x05" + + "\u0163\xAD\x02\u0376\u0377\x05\u013D\x9A\x02\u0377\u0378\x05\u0143\x9D" + + "\x02\u0378\u0379\x05\u013D\x9A\x02\u0379\u037A\x05\u0163\xAD\x02\u037A" + + "\u037B\x05\u013D\x9A\x02\u037B\xBC\x03\x02\x02\x02\u037C\u0380\n\f\x02" + + "\x02\u037D\u037E\x071\x02\x02\u037E\u0380\n\r\x02\x02\u037F\u037C\x03" + + "\x02\x02\x02\u037F\u037D\x03\x02\x02\x02\u0380\xBE\x03\x02\x02\x02\u0381" + + "\u0383\x05\xBDZ\x02\u0382\u0381\x03\x02\x02\x02\u0383\u0384\x03\x02\x02" + + "\x02\u0384\u0382\x03\x02\x02\x02\u0384\u0385\x03\x02\x02\x02\u0385\xC0" + + "\x03\x02\x02\x02\u0386\u0387\x05\xA9P\x02\u0387\u0388\x03\x02\x02\x02" + + "\u0388\u0389\b\\\x12\x02\u0389\xC2\x03\x02\x02\x02\u038A\u038B\x051\x14" + + "\x02\u038B\u038C\x03\x02\x02\x02\u038C\u038D\b]\n\x02\u038D\xC4\x03\x02" + + "\x02\x02\u038E\u038F\x053\x15\x02\u038F\u0390\x03\x02\x02\x02\u0390\u0391" + + "\b^\n\x02\u0391\xC6\x03\x02\x02\x02\u0392\u0393\x055\x16\x02\u0393\u0394" + + "\x03\x02\x02\x02\u0394\u0395\b_\n\x02\u0395\xC8\x03\x02\x02\x02\u0396" + + "\u0397\x05A\x1C\x02\u0397\u0398\x03\x02\x02\x02\u0398\u0399\b`\r\x02\u0399" + + "\u039A\b`\x0E\x02\u039A\xCA\x03\x02\x02\x02\u039B\u039C\x05i0\x02\u039C" + + "\u039D\x03\x02\x02\x02\u039D\u039E\ba\x13\x02\u039E\xCC\x03\x02\x02\x02" + + "\u039F\u03A0\x05e.\x02\u03A0\u03A1\x03\x02\x02\x02\u03A1\u03A2\bb\x10" + + "\x02\u03A2\xCE\x03\x02\x02\x02\u03A3\u03A8\x05E\x1E\x02\u03A4\u03A8\x05" + + "C\x1D\x02\u03A5\u03A8\x05S%\x02\u03A6\u03A8\x05\x9BI\x02\u03A7\u03A3\x03" + + "\x02\x02\x02\u03A7\u03A4\x03\x02\x02\x02\u03A7\u03A5\x03\x02\x02\x02\u03A7" + + "\u03A6\x03\x02\x02\x02\u03A8\xD0\x03\x02\x02\x02\u03A9\u03AC\x05E\x1E" + + "\x02\u03AA\u03AC\x05\x9BI\x02\u03AB\u03A9\x03\x02\x02\x02\u03AB\u03AA" + + "\x03\x02\x02\x02\u03AC\u03B0\x03\x02\x02\x02\u03AD\u03AF\x05\xCFc\x02" + + "\u03AE\u03AD\x03\x02\x02\x02\u03AF\u03B2\x03\x02\x02\x02\u03B0\u03AE\x03" + + "\x02\x02\x02\u03B0\u03B1\x03\x02\x02\x02\u03B1\u03BD\x03\x02\x02\x02\u03B2" + + "\u03B0\x03\x02\x02\x02\u03B3\u03B6\x05S%\x02\u03B4\u03B6\x05M\"\x02\u03B5" + + "\u03B3\x03\x02\x02\x02\u03B5\u03B4\x03\x02\x02\x02\u03B6\u03B8\x03\x02" + + "\x02\x02\u03B7\u03B9\x05\xCFc\x02\u03B8\u03B7\x03\x02\x02\x02\u03B9\u03BA" + + "\x03\x02\x02\x02\u03BA\u03B8\x03\x02\x02\x02\u03BA\u03BB\x03\x02\x02\x02" + + "\u03BB\u03BD\x03\x02\x02\x02\u03BC\u03AB\x03\x02\x02\x02\u03BC\u03B5\x03" + + "\x02\x02\x02\u03BD\xD2\x03\x02\x02\x02\u03BE\u03C1\x05\xD1d\x02\u03BF" + + "\u03C1\x05\xA7O\x02\u03C0\u03BE\x03\x02\x02\x02\u03C0\u03BF\x03\x02\x02" + + "\x02\u03C1\u03C2\x03\x02\x02\x02\u03C2\u03C0\x03\x02\x02\x02\u03C2\u03C3" + + "\x03\x02\x02\x02\u03C3\xD4\x03\x02\x02\x02\u03C4\u03C5\x051\x14\x02\u03C5" + + "\u03C6\x03\x02\x02\x02\u03C6\u03C7\bf\n\x02\u03C7\xD6\x03\x02\x02\x02" + + "\u03C8\u03C9\x053\x15\x02\u03C9\u03CA\x03\x02\x02\x02\u03CA\u03CB\bg\n" + + "\x02\u03CB\xD8\x03\x02\x02\x02\u03CC\u03CD\x055\x16\x02\u03CD\u03CE\x03" + + "\x02\x02\x02\u03CE\u03CF\bh\n\x02\u03CF\xDA\x03\x02\x02\x02\u03D0\u03D1" + + "\x05A\x1C\x02\u03D1\u03D2\x03\x02\x02\x02\u03D2\u03D3\bi\r\x02\u03D3\u03D4" + + "\bi\x0E\x02\u03D4\xDC\x03\x02\x02\x02\u03D5\u03D6\x05c-\x02\u03D6\u03D7" + + "\x03\x02\x02\x02\u03D7\u03D8\bj\x11\x02\u03D8\xDE\x03\x02\x02\x02\u03D9" + + "\u03DA\x05e.\x02\u03DA\u03DB\x03\x02\x02\x02\u03DB\u03DC\bk\x10\x02\u03DC" + + "\xE0\x03\x02\x02\x02\u03DD\u03DE\x05i0\x02\u03DE\u03DF\x03\x02\x02\x02" + + "\u03DF\u03E0\bl\x13\x02\u03E0\xE2\x03\x02\x02\x02\u03E1\u03E2\x05\u013D" + + "\x9A\x02\u03E2\u03E3\x05\u0161\xAC\x02\u03E3\xE4\x03\x02\x02\x02\u03E4" + + "\u03E5\x05\xD3e\x02\u03E5\u03E6\x03\x02\x02\x02\u03E6\u03E7\bn\x14\x02" + + "\u03E7\xE6\x03\x02\x02\x02\u03E8\u03E9\x051\x14\x02\u03E9\u03EA\x03\x02" + + "\x02\x02\u03EA\u03EB\bo\n\x02\u03EB\xE8\x03\x02\x02\x02\u03EC\u03ED\x05" + + "3\x15\x02\u03ED\u03EE\x03\x02\x02\x02\u03EE\u03EF\bp\n\x02\u03EF\xEA\x03" + + "\x02\x02\x02\u03F0\u03F1\x055\x16\x02\u03F1\u03F2\x03\x02\x02\x02\u03F2" + + "\u03F3\bq\n\x02\u03F3\xEC\x03\x02\x02\x02\u03F4\u03F5\x05A\x1C\x02\u03F5" + + "\u03F6\x03\x02\x02\x02\u03F6\u03F7\br\r\x02\u03F7\u03F8\br\x0E\x02\u03F8" + + "\xEE\x03\x02\x02\x02\u03F9\u03FA\x05\xA1L\x02\u03FA\u03FB\x03\x02\x02" + + "\x02\u03FB\u03FC\bs\v\x02\u03FC\u03FD\bs\x15\x02\u03FD\xF0\x03\x02\x02" + + "\x02\u03FE\u03FF\x05\u0159\xA8\x02\u03FF\u0400\x05\u0157\xA7\x02\u0400" + + "\u0401\x03\x02\x02\x02\u0401\u0402\bt\x16\x02\u0402\xF2\x03\x02\x02\x02" + + "\u0403\u0404\x05\u0169\xB0\x02\u0404\u0405\x05\u014D\xA2\x02\u0405\u0406" + + "\x05\u0163\xAD\x02\u0406\u0407\x05\u014B\xA1\x02\u0407\u0408\x03\x02\x02" + + "\x02\u0408\u0409\bu\x16\x02\u0409\xF4\x03\x02\x02\x02\u040A\u040B\n\x0E" + + "\x02\x02\u040B\xF6\x03\x02\x02\x02\u040C\u040E\x05\xF5v\x02\u040D\u040C" + + "\x03\x02\x02\x02\u040E\u040F\x03\x02\x02\x02\u040F\u040D\x03\x02\x02\x02" + + "\u040F\u0410\x03\x02\x02\x02\u0410\u0411\x03\x02\x02\x02\u0411\u0412\x05" + + "\u0133\x95\x02\u0412\u0414\x03\x02\x02\x02\u0413\u040D\x03\x02\x02\x02" + + "\u0413\u0414\x03\x02\x02\x02\u0414\u0416\x03\x02\x02\x02\u0415\u0417\x05" + + "\xF5v\x02\u0416\u0415\x03\x02\x02\x02\u0417\u0418\x03\x02\x02\x02\u0418" + + "\u0416\x03\x02\x02\x02\u0418\u0419\x03\x02\x02\x02\u0419\xF8\x03\x02\x02" + + "\x02\u041A\u041B\x05\xA9P\x02\u041B\u041C\x03\x02\x02\x02\u041C\u041D" + + "\bx\x12\x02\u041D\xFA\x03\x02\x02\x02\u041E\u041F\x05\xF7w\x02\u041F\u0420" + + "\x03\x02\x02\x02\u0420\u0421\by\x17\x02\u0421\xFC\x03\x02\x02\x02\u0422" + + "\u0423\x051\x14\x02\u0423\u0424\x03\x02\x02\x02\u0424\u0425\bz\n\x02\u0425" + + "\xFE\x03\x02\x02\x02\u0426\u0427\x053\x15\x02\u0427\u0428\x03\x02\x02" + + "\x02\u0428\u0429\b{\n\x02\u0429\u0100\x03\x02\x02\x02\u042A\u042B\x05" + + "5\x16\x02\u042B\u042C\x03\x02\x02\x02\u042C\u042D\b|\n\x02\u042D\u0102" + + "\x03\x02\x02\x02\u042E\u042F\x05A\x1C\x02\u042F\u0430\x03\x02\x02\x02" + + "\u0430\u0431\b}\r\x02\u0431\u0432\b}\x0E\x02\u0432\u0433\b}\x0E\x02\u0433" + + "\u0104\x03\x02\x02\x02\u0434\u0435\x05c-\x02\u0435\u0436\x03\x02\x02\x02" + + "\u0436\u0437\b~\x11\x02\u0437\u0106\x03\x02\x02\x02\u0438\u0439\x05e." + + "\x02\u0439\u043A\x03\x02\x02\x02\u043A\u043B\b\x7F\x10\x02\u043B\u0108" + + "\x03\x02\x02\x02\u043C\u043D\x05i0\x02\u043D\u043E\x03\x02\x02\x02\u043E" + + "\u043F\b\x80\x13\x02\u043F\u010A\x03\x02\x02\x02\u0440\u0441\x05\xF3u" + + "\x02\u0441\u0442\x03\x02\x02\x02\u0442\u0443\b\x81\x18\x02\u0443\u010C" + + "\x03\x02\x02\x02\u0444\u0445\x05\xD3e\x02\u0445\u0446\x03\x02\x02\x02" + + "\u0446\u0447\b\x82\x14\x02\u0447\u010E\x03\x02\x02\x02\u0448\u0449\x05" + + "\xA9P\x02\u0449\u044A\x03\x02\x02\x02\u044A\u044B\b\x83\x12\x02\u044B" + + "\u0110\x03\x02\x02\x02\u044C\u044D\x051\x14\x02\u044D\u044E\x03\x02\x02" + + "\x02\u044E\u044F\b\x84\n"; private static readonly _serializedATNSegment2: string = - "\x14\x02\u044D\u0110\x03\x02\x02\x02\u044E\u044F\x05\xA7O\x02\u044F\u0450" + - "\x03\x02\x02\x02\u0450\u0451\b\x84\x12\x02\u0451\u0112\x03\x02\x02\x02" + - "\u0452\u0453\x051\x14\x02\u0453\u0454\x03\x02\x02\x02\u0454\u0455\b\x85" + - "\n\x02\u0455\u0114\x03\x02\x02\x02\u0456\u0457\x053\x15\x02\u0457\u0458" + - "\x03\x02\x02\x02\u0458\u0459\b\x86\n\x02\u0459\u0116\x03\x02\x02\x02\u045A" + - "\u045B\x055\x16\x02\u045B\u045C\x03\x02\x02\x02\u045C\u045D\b\x87\n\x02" + - "\u045D\u0118\x03\x02\x02\x02\u045E\u045F\x05A\x1C\x02\u045F\u0460\x03" + - "\x02\x02\x02\u0460\u0461\b\x88\r\x02\u0461\u0462\b\x88\x0E\x02\u0462\u011A" + - "\x03\x02\x02\x02\u0463\u0464\x05i0\x02\u0464\u0465\x03\x02\x02\x02\u0465" + - "\u0466\b\x89\x13\x02\u0466\u011C\x03\x02\x02\x02\u0467\u0468\x05\xA7O" + - "\x02\u0468\u0469\x03\x02\x02\x02\u0469\u046A\b\x8A\x12\x02\u046A\u011E" + - "\x03\x02\x02\x02\u046B\u046C\x05\xA5N\x02\u046C\u046D\x03\x02\x02\x02" + - "\u046D\u046E\b\x8B\x19\x02\u046E\u0120\x03\x02\x02\x02\u046F\u0470\x05" + - "1\x14\x02\u0470\u0471\x03\x02\x02\x02\u0471\u0472\b\x8C\n\x02\u0472\u0122" + - "\x03\x02\x02\x02\u0473\u0474\x053\x15\x02\u0474\u0475\x03\x02\x02\x02" + - "\u0475\u0476\b\x8D\n\x02\u0476\u0124\x03\x02\x02\x02\u0477\u0478\x055" + - "\x16\x02\u0478\u0479\x03\x02\x02\x02\u0479\u047A\b\x8E\n\x02\u047A\u0126" + - "\x03\x02\x02\x02\u047B\u047C\x05A\x1C\x02\u047C\u047D\x03\x02\x02\x02" + - "\u047D\u047E\b\x8F\r\x02\u047E\u047F\b\x8F\x0E\x02\u047F\u0128\x03\x02" + - "\x02\x02\u0480\u0481\x05\u014F\xA3\x02\u0481\u0482\x05\u0159\xA8\x02\u0482" + - "\u0483\x05\u0149\xA0\x02\u0483\u0484\x05\u015B\xA9\x02\u0484\u012A\x03" + - "\x02\x02\x02\u0485\u0486\x05\u0149\xA0\x02\u0486\u0487\x05\u0167\xAF\x02" + - "\u0487\u0488\x05\u0159\xA8\x02\u0488\u0489\x05\u0143\x9D\x02\u0489\u048A" + - "\x05\u0165\xAE\x02\u048A\u048B\x05\u014F\xA3\x02\u048B\u048C\x05\u015B" + - "\xA9\x02\u048C\u048D\x05\u0159\xA8\x02\u048D\u048E\x05\u0163\xAD\x02\u048E" + - "\u012C\x03\x02\x02\x02\u048F\u0490\x051\x14\x02\u0490\u0491\x03\x02\x02" + - "\x02\u0491\u0492\b\x92\n\x02\u0492\u012E\x03\x02\x02\x02\u0493\u0494\x05" + - "3\x15\x02\u0494\u0495\x03\x02\x02\x02\u0495\u0496\b\x93\n\x02\u0496\u0130" + - "\x03\x02\x02\x02\u0497\u0498\x055\x16\x02\u0498\u0499\x03\x02\x02\x02" + - "\u0499\u049A\b\x94\n\x02\u049A\u0132\x03\x02\x02\x02\u049B\u049C\x05\xA3" + - "M\x02\u049C\u049D\x03\x02\x02\x02\u049D\u049E\b\x95\x0F\x02\u049E\u049F" + - "\b\x95\x0E\x02\u049F\u0134\x03\x02\x02\x02\u04A0\u04A1\x07<\x02\x02\u04A1" + - "\u0136\x03\x02\x02\x02\u04A2\u04A8\x05M\"\x02\u04A3\u04A8\x05C\x1D\x02" + - "\u04A4\u04A8\x05i0\x02\u04A5\u04A8\x05E\x1E\x02\u04A6\u04A8\x05S%\x02" + - "\u04A7\u04A2\x03\x02\x02\x02\u04A7\u04A3\x03\x02\x02\x02\u04A7\u04A4\x03" + - "\x02\x02\x02\u04A7\u04A5\x03\x02\x02\x02\u04A7\u04A6\x03\x02\x02\x02\u04A8" + - "\u04A9\x03\x02\x02\x02\u04A9\u04A7\x03\x02\x02\x02\u04A9\u04AA\x03\x02" + - "\x02\x02\u04AA\u0138\x03\x02\x02\x02\u04AB\u04AC\x051\x14\x02\u04AC\u04AD" + - "\x03\x02\x02\x02\u04AD\u04AE\b\x98\n\x02\u04AE\u013A\x03\x02\x02\x02\u04AF" + - "\u04B0\x053\x15\x02\u04B0\u04B1\x03\x02\x02\x02\u04B1\u04B2\b\x99\n\x02" + - "\u04B2\u013C\x03\x02\x02\x02\u04B3\u04B4\x055\x16\x02\u04B4\u04B5\x03" + - "\x02\x02\x02\u04B5\u04B6\b\x9A\n\x02\u04B6\u013E\x03\x02\x02\x02\u04B7" + - "\u04B8\t\x0F\x02\x02\u04B8\u0140\x03\x02\x02\x02\u04B9\u04BA\t\x10\x02" + - "\x02\u04BA\u0142\x03\x02\x02\x02\u04BB\u04BC\t\x11\x02\x02\u04BC\u0144" + - "\x03\x02\x02\x02\u04BD\u04BE\t\x12\x02\x02\u04BE\u0146\x03\x02\x02\x02" + - "\u04BF\u04C0\t\t\x02\x02\u04C0\u0148\x03\x02\x02\x02\u04C1\u04C2\t\x13" + - "\x02\x02\u04C2\u014A\x03\x02\x02\x02\u04C3\u04C4\t\x14\x02\x02\u04C4\u014C" + - "\x03\x02\x02\x02\u04C5\u04C6\t\x15\x02\x02\u04C6\u014E\x03\x02\x02\x02" + - "\u04C7\u04C8\t\x16\x02\x02\u04C8\u0150\x03\x02\x02\x02\u04C9\u04CA\t\x17" + - "\x02\x02\u04CA\u0152\x03\x02\x02\x02\u04CB\u04CC\t\x18\x02\x02\u04CC\u0154" + - "\x03\x02\x02\x02\u04CD\u04CE\t\x19\x02\x02\u04CE\u0156\x03\x02\x02\x02" + - "\u04CF\u04D0\t\x1A\x02\x02\u04D0\u0158\x03\x02\x02\x02\u04D1\u04D2\t\x1B" + - "\x02\x02\u04D2\u015A\x03\x02\x02\x02\u04D3\u04D4\t\x1C\x02\x02\u04D4\u015C" + - "\x03\x02\x02\x02\u04D5\u04D6\t\x1D\x02\x02\u04D6\u015E\x03\x02\x02\x02" + - "\u04D7\u04D8\t\x1E\x02\x02\u04D8\u0160\x03\x02\x02\x02\u04D9\u04DA\t\x1F" + - "\x02\x02\u04DA\u0162\x03\x02\x02\x02\u04DB\u04DC\t \x02\x02\u04DC\u0164" + - "\x03\x02\x02\x02\u04DD\u04DE\t!\x02\x02\u04DE\u0166\x03\x02\x02\x02\u04DF" + - "\u04E0\t\"\x02\x02\u04E0\u0168\x03\x02\x02\x02\u04E1\u04E2\t#\x02\x02" + - "\u04E2\u016A\x03\x02\x02\x02\u04E3\u04E4\t$\x02\x02\u04E4\u016C\x03\x02" + - "\x02\x02\u04E5\u04E6\t%\x02\x02\u04E6\u016E\x03\x02\x02\x02\u04E7\u04E8" + - "\t&\x02\x02\u04E8\u0170\x03\x02\x02\x02\u04E9\u04EA\t\'\x02\x02\u04EA" + - "\u0172\x03\x02\x02\x029\x02\x03\x04\x05\x06\x07\b\t\n\v\f\u0205\u020F" + - "\u0213\u0216\u021F\u0221\u022C\u0255\u025A\u0263\u026A\u026F\u0271\u027C" + - "\u0284\u0287\u0289\u028E\u0293\u0299\u02A0\u02A5\u02AB\u02AE\u02B6\u02BA" + - "\u033C\u0341\u0346\u0348\u034E\u037F\u0384\u03A7\u03AB\u03B0\u03B5\u03BA" + - "\u03BC\u0415\u0419\u041E\u04A7\u04A9\x1A\x07\x04\x02\x07\x06\x02\x07\b" + - "\x02\x07\x03\x02\x07\x05\x02\x07\n\x02\x07\x07\x02\x07\v\x02\x02\x03\x02" + - "\tA\x02\x07\x02\x02\t\x1B\x02\x06\x02\x02\tB\x02\t#\x02\t\"\x02\tD\x02" + - "\t%\x02\tM\x02\x07\f\x02\x07\t\x02\tW\x02\tV\x02\tC\x02"; + "\x02\u044F\u0112\x03\x02\x02\x02\u0450\u0451\x053\x15\x02\u0451\u0452" + + "\x03\x02\x02\x02\u0452\u0453\b\x85\n\x02\u0453\u0114\x03\x02\x02\x02\u0454" + + "\u0455\x055\x16\x02\u0455\u0456\x03\x02\x02\x02\u0456\u0457\b\x86\n\x02" + + "\u0457\u0116\x03\x02\x02\x02\u0458\u0459\x05A\x1C\x02\u0459\u045A\x03" + + "\x02\x02\x02\u045A\u045B\b\x87\r\x02\u045B\u045C\b\x87\x0E\x02\u045C\u0118" + + "\x03\x02\x02\x02\u045D\u045E\x05i0\x02\u045E\u045F\x03\x02\x02\x02\u045F" + + "\u0460\b\x88\x13\x02\u0460\u011A\x03\x02\x02\x02\u0461\u0462\x05\xA9P" + + "\x02\u0462\u0463\x03\x02\x02\x02\u0463\u0464\b\x89\x12\x02\u0464\u011C" + + "\x03\x02\x02\x02\u0465\u0466\x05\xA5N\x02\u0466\u0467\x03\x02\x02\x02" + + "\u0467\u0468\b\x8A\x19\x02\u0468\u011E\x03\x02\x02\x02\u0469\u046A\x05" + + "1\x14\x02\u046A\u046B\x03\x02\x02\x02\u046B\u046C\b\x8B\n\x02\u046C\u0120" + + "\x03\x02\x02\x02\u046D\u046E\x053\x15\x02\u046E\u046F\x03\x02\x02\x02" + + "\u046F\u0470\b\x8C\n\x02\u0470\u0122\x03\x02\x02\x02\u0471\u0472\x055" + + "\x16\x02\u0472\u0473\x03\x02\x02\x02\u0473\u0474\b\x8D\n\x02\u0474\u0124" + + "\x03\x02\x02\x02\u0475\u0476\x05A\x1C\x02\u0476\u0477\x03\x02\x02\x02" + + "\u0477\u0478\b\x8E\r\x02\u0478\u0479\b\x8E\x0E\x02\u0479\u0126\x03\x02" + + "\x02\x02\u047A\u047B\x05\u014D\xA2\x02\u047B\u047C\x05\u0157\xA7\x02\u047C" + + "\u047D\x05\u0147\x9F\x02\u047D\u047E\x05\u0159\xA8\x02\u047E\u0128\x03" + + "\x02\x02\x02\u047F\u0480\x05\u0147\x9F\x02\u0480\u0481\x05\u0165\xAE\x02" + + "\u0481\u0482\x05\u0157\xA7\x02\u0482\u0483\x05\u0141\x9C\x02\u0483\u0484" + + "\x05\u0163\xAD\x02\u0484\u0485\x05\u014D\xA2\x02\u0485\u0486\x05\u0159" + + "\xA8\x02\u0486\u0487\x05\u0157\xA7\x02\u0487\u0488\x05\u0161\xAC\x02\u0488" + + "\u012A\x03\x02\x02\x02\u0489\u048A\x051\x14\x02\u048A\u048B\x03\x02\x02" + + "\x02\u048B\u048C\b\x91\n\x02\u048C\u012C\x03\x02\x02\x02\u048D\u048E\x05" + + "3\x15\x02\u048E\u048F\x03\x02\x02\x02\u048F\u0490\b\x92\n\x02\u0490\u012E" + + "\x03\x02\x02\x02\u0491\u0492\x055\x16\x02\u0492\u0493\x03\x02\x02\x02" + + "\u0493\u0494\b\x93\n\x02\u0494\u0130\x03\x02\x02\x02\u0495\u0496\x05\xA3" + + "M\x02\u0496\u0497\x03\x02\x02\x02\u0497\u0498\b\x94\x0F\x02\u0498\u0499" + + "\b\x94\x0E\x02\u0499\u0132\x03\x02\x02\x02\u049A\u049B\x07<\x02\x02\u049B" + + "\u0134\x03\x02\x02\x02\u049C\u04A2\x05M\"\x02\u049D\u04A2\x05C\x1D\x02" + + "\u049E\u04A2\x05i0\x02\u049F\u04A2\x05E\x1E\x02\u04A0\u04A2\x05S%\x02" + + "\u04A1\u049C\x03\x02\x02\x02\u04A1\u049D\x03\x02\x02\x02\u04A1\u049E\x03" + + "\x02\x02\x02\u04A1\u049F\x03\x02\x02\x02\u04A1\u04A0\x03\x02\x02\x02\u04A2" + + "\u04A3\x03\x02\x02\x02\u04A3\u04A1\x03\x02\x02\x02\u04A3\u04A4\x03\x02" + + "\x02\x02\u04A4\u0136\x03\x02\x02\x02\u04A5\u04A6\x051\x14\x02\u04A6\u04A7" + + "\x03\x02\x02\x02\u04A7\u04A8\b\x97\n\x02\u04A8\u0138\x03\x02\x02\x02\u04A9" + + "\u04AA\x053\x15\x02\u04AA\u04AB\x03\x02\x02\x02\u04AB\u04AC\b\x98\n\x02" + + "\u04AC\u013A\x03\x02\x02\x02\u04AD\u04AE\x055\x16\x02\u04AE\u04AF\x03" + + "\x02\x02\x02\u04AF\u04B0\b\x99\n\x02\u04B0\u013C\x03\x02\x02\x02\u04B1" + + "\u04B2\t\x0F\x02\x02\u04B2\u013E\x03\x02\x02\x02\u04B3\u04B4\t\x10\x02" + + "\x02\u04B4\u0140\x03\x02\x02\x02\u04B5\u04B6\t\x11\x02\x02\u04B6\u0142" + + "\x03\x02\x02\x02\u04B7\u04B8\t\x12\x02\x02\u04B8\u0144\x03\x02\x02\x02" + + "\u04B9\u04BA\t\t\x02\x02\u04BA\u0146\x03\x02\x02\x02\u04BB\u04BC\t\x13" + + "\x02\x02\u04BC\u0148\x03\x02\x02\x02\u04BD\u04BE\t\x14\x02\x02\u04BE\u014A" + + "\x03\x02\x02\x02\u04BF\u04C0\t\x15\x02\x02\u04C0\u014C\x03\x02\x02\x02" + + "\u04C1\u04C2\t\x16\x02\x02\u04C2\u014E\x03\x02\x02\x02\u04C3\u04C4\t\x17" + + "\x02\x02\u04C4\u0150\x03\x02\x02\x02\u04C5\u04C6\t\x18\x02\x02\u04C6\u0152" + + "\x03\x02\x02\x02\u04C7\u04C8\t\x19\x02\x02\u04C8\u0154\x03\x02\x02\x02" + + "\u04C9\u04CA\t\x1A\x02\x02\u04CA\u0156\x03\x02\x02\x02\u04CB\u04CC\t\x1B" + + "\x02\x02\u04CC\u0158\x03\x02\x02\x02\u04CD\u04CE\t\x1C\x02\x02\u04CE\u015A" + + "\x03\x02\x02\x02\u04CF\u04D0\t\x1D\x02\x02\u04D0\u015C\x03\x02\x02\x02" + + "\u04D1\u04D2\t\x1E\x02\x02\u04D2\u015E\x03\x02\x02\x02\u04D3\u04D4\t\x1F" + + "\x02\x02\u04D4\u0160\x03\x02\x02\x02\u04D5\u04D6\t \x02\x02\u04D6\u0162" + + "\x03\x02\x02\x02\u04D7\u04D8\t!\x02\x02\u04D8\u0164\x03\x02\x02\x02\u04D9" + + "\u04DA\t\"\x02\x02\u04DA\u0166\x03\x02\x02\x02\u04DB\u04DC\t#\x02\x02" + + "\u04DC\u0168\x03\x02\x02\x02\u04DD\u04DE\t$\x02\x02\u04DE\u016A\x03\x02" + + "\x02\x02\u04DF\u04E0\t%\x02\x02\u04E0\u016C\x03\x02\x02\x02\u04E1\u04E2" + + "\t&\x02\x02\u04E2\u016E\x03\x02\x02\x02\u04E3\u04E4\t\'\x02\x02\u04E4" + + "\u0170\x03\x02\x02\x02;\x02\x03\x04\x05\x06\x07\b\t\n\v\f\u0203\u020D" + + "\u0211\u0214\u021D\u021F\u022A\u0253\u0258\u0261\u0268\u026D\u026F\u027A" + + "\u0282\u0285\u0287\u028C\u0291\u0297\u029E\u02A3\u02A9\u02AC\u02B4\u02B8" + + "\u033A\u033F\u0344\u0346\u034C\u037F\u0384\u03A7\u03AB\u03B0\u03B5\u03BA" + + "\u03BC\u03C0\u03C2\u040F\u0413\u0418\u04A1\u04A3\x1A\x07\x04\x02\x07\x06" + + "\x02\x07\b\x02\x07\x03\x02\x07\x05\x02\x07\n\x02\x07\x07\x02\x07\v\x02" + + "\x02\x03\x02\tA\x02\x07\x02\x02\t\x1B\x02\x06\x02\x02\tB\x02\t#\x02\t" + + "\"\x02\tD\x02\t%\x02\tM\x02\x07\f\x02\x07\t\x02\tW\x02\tV\x02\tC\x02"; public static readonly _serializedATN: string = Utils.join( [ esql_lexer._serializedATNSegment0, diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 b/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 index 06b955f84cd90..819a85e8ffa52 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 @@ -146,6 +146,10 @@ identifier ; identifierPattern + : ID_PATTERN + ; + +idPattern : UNQUOTED_ID_PATTERN | QUOTED_IDENTIFIER ; diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp b/packages/kbn-monaco/src/esql/antlr/esql_parser.interp index 3f76dcbcff6a0..4f87655f0d7ff 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.interp @@ -104,6 +104,7 @@ null null null null +null token symbolic names: null @@ -181,7 +182,7 @@ FROM_UNQUOTED_IDENTIFIER FROM_LINE_COMMENT FROM_MULTILINE_COMMENT FROM_WS -UNQUOTED_ID_PATTERN +ID_PATTERN PROJECT_LINE_COMMENT PROJECT_MULTILINE_COMMENT PROJECT_WS @@ -211,6 +212,7 @@ SETTING SETTING_LINE_COMMENT SETTTING_MULTILINE_COMMENT SETTING_WS +UNQUOTED_ID_PATTERN rule names: singleStatement @@ -239,6 +241,7 @@ qualifiedName qualifiedNamePattern identifier identifierPattern +idPattern constant limitCommand sortCommand @@ -266,4 +269,4 @@ enrichWithClause atn: -[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 106, 509, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 112, 10, 3, 12, 3, 14, 3, 115, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 121, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 136, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 148, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 155, 10, 7, 12, 7, 14, 7, 158, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 165, 10, 7, 3, 7, 3, 7, 5, 7, 169, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 177, 10, 7, 12, 7, 14, 7, 180, 11, 7, 3, 8, 3, 8, 5, 8, 184, 10, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 191, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 196, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 203, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 209, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 217, 10, 10, 12, 10, 14, 10, 220, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 229, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 237, 10, 12, 12, 12, 14, 12, 240, 11, 12, 5, 12, 242, 10, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 252, 10, 14, 12, 14, 14, 14, 255, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 262, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 268, 10, 16, 12, 16, 14, 16, 271, 11, 16, 3, 16, 5, 16, 274, 10, 16, 3, 17, 3, 17, 5, 17, 278, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 284, 10, 18, 12, 18, 14, 18, 287, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 5, 21, 298, 10, 21, 3, 21, 3, 21, 5, 21, 302, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 308, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 7, 24, 315, 10, 24, 12, 24, 14, 24, 318, 11, 24, 3, 25, 3, 25, 3, 25, 7, 25, 323, 10, 25, 12, 25, 14, 25, 326, 11, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 345, 10, 28, 12, 28, 14, 28, 348, 11, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 356, 10, 28, 12, 28, 14, 28, 359, 11, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 7, 28, 367, 10, 28, 12, 28, 14, 28, 370, 11, 28, 3, 28, 3, 28, 5, 28, 374, 10, 28, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 7, 30, 383, 10, 30, 12, 30, 14, 30, 386, 11, 30, 3, 31, 3, 31, 5, 31, 390, 10, 31, 3, 31, 3, 31, 5, 31, 394, 10, 31, 3, 32, 3, 32, 3, 32, 3, 32, 7, 32, 400, 10, 32, 12, 32, 14, 32, 403, 11, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 409, 10, 33, 12, 33, 14, 33, 412, 11, 33, 3, 34, 3, 34, 3, 34, 3, 34, 7, 34, 418, 10, 34, 12, 34, 14, 34, 421, 11, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 431, 10, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 7, 39, 443, 10, 39, 12, 39, 14, 39, 446, 11, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 5, 42, 456, 10, 42, 3, 43, 5, 43, 459, 10, 43, 3, 43, 3, 43, 3, 44, 5, 44, 464, 10, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 5, 49, 483, 10, 49, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 489, 10, 50, 3, 50, 3, 50, 3, 50, 3, 50, 7, 50, 495, 10, 50, 12, 50, 14, 50, 498, 11, 50, 5, 50, 500, 10, 50, 3, 51, 3, 51, 3, 51, 5, 51, 505, 10, 51, 3, 51, 3, 51, 3, 51, 2, 2, 5, 4, 12, 18, 52, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 88, 2, 90, 2, 92, 2, 94, 2, 96, 2, 98, 2, 100, 2, 2, 11, 3, 2, 60, 61, 3, 2, 62, 64, 4, 2, 68, 68, 73, 73, 3, 2, 67, 68, 4, 2, 68, 68, 77, 77, 4, 2, 33, 33, 36, 36, 3, 2, 39, 40, 4, 2, 38, 38, 52, 52, 3, 2, 53, 59, 2, 535, 2, 102, 3, 2, 2, 2, 4, 105, 3, 2, 2, 2, 6, 120, 3, 2, 2, 2, 8, 135, 3, 2, 2, 2, 10, 137, 3, 2, 2, 2, 12, 168, 3, 2, 2, 2, 14, 195, 3, 2, 2, 2, 16, 202, 3, 2, 2, 2, 18, 208, 3, 2, 2, 2, 20, 228, 3, 2, 2, 2, 22, 230, 3, 2, 2, 2, 24, 245, 3, 2, 2, 2, 26, 248, 3, 2, 2, 2, 28, 261, 3, 2, 2, 2, 30, 263, 3, 2, 2, 2, 32, 277, 3, 2, 2, 2, 34, 279, 3, 2, 2, 2, 36, 288, 3, 2, 2, 2, 38, 292, 3, 2, 2, 2, 40, 295, 3, 2, 2, 2, 42, 303, 3, 2, 2, 2, 44, 309, 3, 2, 2, 2, 46, 311, 3, 2, 2, 2, 48, 319, 3, 2, 2, 2, 50, 327, 3, 2, 2, 2, 52, 329, 3, 2, 2, 2, 54, 373, 3, 2, 2, 2, 56, 375, 3, 2, 2, 2, 58, 378, 3, 2, 2, 2, 60, 387, 3, 2, 2, 2, 62, 395, 3, 2, 2, 2, 64, 404, 3, 2, 2, 2, 66, 413, 3, 2, 2, 2, 68, 422, 3, 2, 2, 2, 70, 426, 3, 2, 2, 2, 72, 432, 3, 2, 2, 2, 74, 436, 3, 2, 2, 2, 76, 439, 3, 2, 2, 2, 78, 447, 3, 2, 2, 2, 80, 451, 3, 2, 2, 2, 82, 455, 3, 2, 2, 2, 84, 458, 3, 2, 2, 2, 86, 463, 3, 2, 2, 2, 88, 467, 3, 2, 2, 2, 90, 469, 3, 2, 2, 2, 92, 471, 3, 2, 2, 2, 94, 474, 3, 2, 2, 2, 96, 482, 3, 2, 2, 2, 98, 484, 3, 2, 2, 2, 100, 504, 3, 2, 2, 2, 102, 103, 5, 4, 3, 2, 103, 104, 7, 2, 2, 3, 104, 3, 3, 2, 2, 2, 105, 106, 8, 3, 1, 2, 106, 107, 5, 6, 4, 2, 107, 113, 3, 2, 2, 2, 108, 109, 12, 3, 2, 2, 109, 110, 7, 27, 2, 2, 110, 112, 5, 8, 5, 2, 111, 108, 3, 2, 2, 2, 112, 115, 3, 2, 2, 2, 113, 111, 3, 2, 2, 2, 113, 114, 3, 2, 2, 2, 114, 5, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 116, 121, 5, 92, 47, 2, 117, 121, 5, 30, 16, 2, 118, 121, 5, 24, 13, 2, 119, 121, 5, 96, 49, 2, 120, 116, 3, 2, 2, 2, 120, 117, 3, 2, 2, 2, 120, 118, 3, 2, 2, 2, 120, 119, 3, 2, 2, 2, 121, 7, 3, 2, 2, 2, 122, 136, 5, 38, 20, 2, 123, 136, 5, 42, 22, 2, 124, 136, 5, 56, 29, 2, 125, 136, 5, 62, 32, 2, 126, 136, 5, 58, 30, 2, 127, 136, 5, 40, 21, 2, 128, 136, 5, 10, 6, 2, 129, 136, 5, 64, 33, 2, 130, 136, 5, 66, 34, 2, 131, 136, 5, 70, 36, 2, 132, 136, 5, 72, 37, 2, 133, 136, 5, 98, 50, 2, 134, 136, 5, 74, 38, 2, 135, 122, 3, 2, 2, 2, 135, 123, 3, 2, 2, 2, 135, 124, 3, 2, 2, 2, 135, 125, 3, 2, 2, 2, 135, 126, 3, 2, 2, 2, 135, 127, 3, 2, 2, 2, 135, 128, 3, 2, 2, 2, 135, 129, 3, 2, 2, 2, 135, 130, 3, 2, 2, 2, 135, 131, 3, 2, 2, 2, 135, 132, 3, 2, 2, 2, 135, 133, 3, 2, 2, 2, 135, 134, 3, 2, 2, 2, 136, 9, 3, 2, 2, 2, 137, 138, 7, 19, 2, 2, 138, 139, 5, 12, 7, 2, 139, 11, 3, 2, 2, 2, 140, 141, 8, 7, 1, 2, 141, 142, 7, 45, 2, 2, 142, 169, 5, 12, 7, 9, 143, 169, 5, 16, 9, 2, 144, 169, 5, 14, 8, 2, 145, 147, 5, 16, 9, 2, 146, 148, 7, 45, 2, 2, 147, 146, 3, 2, 2, 2, 147, 148, 3, 2, 2, 2, 148, 149, 3, 2, 2, 2, 149, 150, 7, 42, 2, 2, 150, 151, 7, 41, 2, 2, 151, 156, 5, 16, 9, 2, 152, 153, 7, 35, 2, 2, 153, 155, 5, 16, 9, 2, 154, 152, 3, 2, 2, 2, 155, 158, 3, 2, 2, 2, 156, 154, 3, 2, 2, 2, 156, 157, 3, 2, 2, 2, 157, 159, 3, 2, 2, 2, 158, 156, 3, 2, 2, 2, 159, 160, 7, 51, 2, 2, 160, 169, 3, 2, 2, 2, 161, 162, 5, 16, 9, 2, 162, 164, 7, 43, 2, 2, 163, 165, 7, 45, 2, 2, 164, 163, 3, 2, 2, 2, 164, 165, 3, 2, 2, 2, 165, 166, 3, 2, 2, 2, 166, 167, 7, 46, 2, 2, 167, 169, 3, 2, 2, 2, 168, 140, 3, 2, 2, 2, 168, 143, 3, 2, 2, 2, 168, 144, 3, 2, 2, 2, 168, 145, 3, 2, 2, 2, 168, 161, 3, 2, 2, 2, 169, 178, 3, 2, 2, 2, 170, 171, 12, 6, 2, 2, 171, 172, 7, 32, 2, 2, 172, 177, 5, 12, 7, 7, 173, 174, 12, 5, 2, 2, 174, 175, 7, 48, 2, 2, 175, 177, 5, 12, 7, 6, 176, 170, 3, 2, 2, 2, 176, 173, 3, 2, 2, 2, 177, 180, 3, 2, 2, 2, 178, 176, 3, 2, 2, 2, 178, 179, 3, 2, 2, 2, 179, 13, 3, 2, 2, 2, 180, 178, 3, 2, 2, 2, 181, 183, 5, 16, 9, 2, 182, 184, 7, 45, 2, 2, 183, 182, 3, 2, 2, 2, 183, 184, 3, 2, 2, 2, 184, 185, 3, 2, 2, 2, 185, 186, 7, 44, 2, 2, 186, 187, 5, 88, 45, 2, 187, 196, 3, 2, 2, 2, 188, 190, 5, 16, 9, 2, 189, 191, 7, 45, 2, 2, 190, 189, 3, 2, 2, 2, 190, 191, 3, 2, 2, 2, 191, 192, 3, 2, 2, 2, 192, 193, 7, 50, 2, 2, 193, 194, 5, 88, 45, 2, 194, 196, 3, 2, 2, 2, 195, 181, 3, 2, 2, 2, 195, 188, 3, 2, 2, 2, 196, 15, 3, 2, 2, 2, 197, 203, 5, 18, 10, 2, 198, 199, 5, 18, 10, 2, 199, 200, 5, 90, 46, 2, 200, 201, 5, 18, 10, 2, 201, 203, 3, 2, 2, 2, 202, 197, 3, 2, 2, 2, 202, 198, 3, 2, 2, 2, 203, 17, 3, 2, 2, 2, 204, 205, 8, 10, 1, 2, 205, 209, 5, 20, 11, 2, 206, 207, 9, 2, 2, 2, 207, 209, 5, 18, 10, 5, 208, 204, 3, 2, 2, 2, 208, 206, 3, 2, 2, 2, 209, 218, 3, 2, 2, 2, 210, 211, 12, 4, 2, 2, 211, 212, 9, 3, 2, 2, 212, 217, 5, 18, 10, 5, 213, 214, 12, 3, 2, 2, 214, 215, 9, 2, 2, 2, 215, 217, 5, 18, 10, 4, 216, 210, 3, 2, 2, 2, 216, 213, 3, 2, 2, 2, 217, 220, 3, 2, 2, 2, 218, 216, 3, 2, 2, 2, 218, 219, 3, 2, 2, 2, 219, 19, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 221, 229, 5, 54, 28, 2, 222, 229, 5, 46, 24, 2, 223, 229, 5, 22, 12, 2, 224, 225, 7, 41, 2, 2, 225, 226, 5, 12, 7, 2, 226, 227, 7, 51, 2, 2, 227, 229, 3, 2, 2, 2, 228, 221, 3, 2, 2, 2, 228, 222, 3, 2, 2, 2, 228, 223, 3, 2, 2, 2, 228, 224, 3, 2, 2, 2, 229, 21, 3, 2, 2, 2, 230, 231, 5, 50, 26, 2, 231, 241, 7, 41, 2, 2, 232, 242, 7, 62, 2, 2, 233, 238, 5, 12, 7, 2, 234, 235, 7, 35, 2, 2, 235, 237, 5, 12, 7, 2, 236, 234, 3, 2, 2, 2, 237, 240, 3, 2, 2, 2, 238, 236, 3, 2, 2, 2, 238, 239, 3, 2, 2, 2, 239, 242, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 241, 232, 3, 2, 2, 2, 241, 233, 3, 2, 2, 2, 241, 242, 3, 2, 2, 2, 242, 243, 3, 2, 2, 2, 243, 244, 7, 51, 2, 2, 244, 23, 3, 2, 2, 2, 245, 246, 7, 15, 2, 2, 246, 247, 5, 26, 14, 2, 247, 25, 3, 2, 2, 2, 248, 253, 5, 28, 15, 2, 249, 250, 7, 35, 2, 2, 250, 252, 5, 28, 15, 2, 251, 249, 3, 2, 2, 2, 252, 255, 3, 2, 2, 2, 253, 251, 3, 2, 2, 2, 253, 254, 3, 2, 2, 2, 254, 27, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 256, 262, 5, 12, 7, 2, 257, 258, 5, 46, 24, 2, 258, 259, 7, 34, 2, 2, 259, 260, 5, 12, 7, 2, 260, 262, 3, 2, 2, 2, 261, 256, 3, 2, 2, 2, 261, 257, 3, 2, 2, 2, 262, 29, 3, 2, 2, 2, 263, 264, 7, 8, 2, 2, 264, 269, 5, 44, 23, 2, 265, 266, 7, 35, 2, 2, 266, 268, 5, 44, 23, 2, 267, 265, 3, 2, 2, 2, 268, 271, 3, 2, 2, 2, 269, 267, 3, 2, 2, 2, 269, 270, 3, 2, 2, 2, 270, 273, 3, 2, 2, 2, 271, 269, 3, 2, 2, 2, 272, 274, 5, 32, 17, 2, 273, 272, 3, 2, 2, 2, 273, 274, 3, 2, 2, 2, 274, 31, 3, 2, 2, 2, 275, 278, 5, 34, 18, 2, 276, 278, 5, 36, 19, 2, 277, 275, 3, 2, 2, 2, 277, 276, 3, 2, 2, 2, 278, 33, 3, 2, 2, 2, 279, 280, 7, 72, 2, 2, 280, 285, 5, 44, 23, 2, 281, 282, 7, 35, 2, 2, 282, 284, 5, 44, 23, 2, 283, 281, 3, 2, 2, 2, 284, 287, 3, 2, 2, 2, 285, 283, 3, 2, 2, 2, 285, 286, 3, 2, 2, 2, 286, 35, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 288, 289, 7, 65, 2, 2, 289, 290, 5, 34, 18, 2, 290, 291, 7, 66, 2, 2, 291, 37, 3, 2, 2, 2, 292, 293, 7, 6, 2, 2, 293, 294, 5, 26, 14, 2, 294, 39, 3, 2, 2, 2, 295, 297, 7, 18, 2, 2, 296, 298, 5, 26, 14, 2, 297, 296, 3, 2, 2, 2, 297, 298, 3, 2, 2, 2, 298, 301, 3, 2, 2, 2, 299, 300, 7, 31, 2, 2, 300, 302, 5, 26, 14, 2, 301, 299, 3, 2, 2, 2, 301, 302, 3, 2, 2, 2, 302, 41, 3, 2, 2, 2, 303, 304, 7, 10, 2, 2, 304, 307, 5, 26, 14, 2, 305, 306, 7, 31, 2, 2, 306, 308, 5, 26, 14, 2, 307, 305, 3, 2, 2, 2, 307, 308, 3, 2, 2, 2, 308, 43, 3, 2, 2, 2, 309, 310, 9, 4, 2, 2, 310, 45, 3, 2, 2, 2, 311, 316, 5, 50, 26, 2, 312, 313, 7, 37, 2, 2, 313, 315, 5, 50, 26, 2, 314, 312, 3, 2, 2, 2, 315, 318, 3, 2, 2, 2, 316, 314, 3, 2, 2, 2, 316, 317, 3, 2, 2, 2, 317, 47, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 319, 324, 5, 52, 27, 2, 320, 321, 7, 37, 2, 2, 321, 323, 5, 52, 27, 2, 322, 320, 3, 2, 2, 2, 323, 326, 3, 2, 2, 2, 324, 322, 3, 2, 2, 2, 324, 325, 3, 2, 2, 2, 325, 49, 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 327, 328, 9, 5, 2, 2, 328, 51, 3, 2, 2, 2, 329, 330, 9, 6, 2, 2, 330, 53, 3, 2, 2, 2, 331, 374, 7, 46, 2, 2, 332, 333, 5, 86, 44, 2, 333, 334, 7, 67, 2, 2, 334, 374, 3, 2, 2, 2, 335, 374, 5, 84, 43, 2, 336, 374, 5, 86, 44, 2, 337, 374, 5, 80, 41, 2, 338, 374, 7, 49, 2, 2, 339, 374, 5, 88, 45, 2, 340, 341, 7, 65, 2, 2, 341, 346, 5, 82, 42, 2, 342, 343, 7, 35, 2, 2, 343, 345, 5, 82, 42, 2, 344, 342, 3, 2, 2, 2, 345, 348, 3, 2, 2, 2, 346, 344, 3, 2, 2, 2, 346, 347, 3, 2, 2, 2, 347, 349, 3, 2, 2, 2, 348, 346, 3, 2, 2, 2, 349, 350, 7, 66, 2, 2, 350, 374, 3, 2, 2, 2, 351, 352, 7, 65, 2, 2, 352, 357, 5, 80, 41, 2, 353, 354, 7, 35, 2, 2, 354, 356, 5, 80, 41, 2, 355, 353, 3, 2, 2, 2, 356, 359, 3, 2, 2, 2, 357, 355, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 360, 3, 2, 2, 2, 359, 357, 3, 2, 2, 2, 360, 361, 7, 66, 2, 2, 361, 374, 3, 2, 2, 2, 362, 363, 7, 65, 2, 2, 363, 368, 5, 88, 45, 2, 364, 365, 7, 35, 2, 2, 365, 367, 5, 88, 45, 2, 366, 364, 3, 2, 2, 2, 367, 370, 3, 2, 2, 2, 368, 366, 3, 2, 2, 2, 368, 369, 3, 2, 2, 2, 369, 371, 3, 2, 2, 2, 370, 368, 3, 2, 2, 2, 371, 372, 7, 66, 2, 2, 372, 374, 3, 2, 2, 2, 373, 331, 3, 2, 2, 2, 373, 332, 3, 2, 2, 2, 373, 335, 3, 2, 2, 2, 373, 336, 3, 2, 2, 2, 373, 337, 3, 2, 2, 2, 373, 338, 3, 2, 2, 2, 373, 339, 3, 2, 2, 2, 373, 340, 3, 2, 2, 2, 373, 351, 3, 2, 2, 2, 373, 362, 3, 2, 2, 2, 374, 55, 3, 2, 2, 2, 375, 376, 7, 12, 2, 2, 376, 377, 7, 29, 2, 2, 377, 57, 3, 2, 2, 2, 378, 379, 7, 17, 2, 2, 379, 384, 5, 60, 31, 2, 380, 381, 7, 35, 2, 2, 381, 383, 5, 60, 31, 2, 382, 380, 3, 2, 2, 2, 383, 386, 3, 2, 2, 2, 384, 382, 3, 2, 2, 2, 384, 385, 3, 2, 2, 2, 385, 59, 3, 2, 2, 2, 386, 384, 3, 2, 2, 2, 387, 389, 5, 12, 7, 2, 388, 390, 9, 7, 2, 2, 389, 388, 3, 2, 2, 2, 389, 390, 3, 2, 2, 2, 390, 393, 3, 2, 2, 2, 391, 392, 7, 47, 2, 2, 392, 394, 9, 8, 2, 2, 393, 391, 3, 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 61, 3, 2, 2, 2, 395, 396, 7, 11, 2, 2, 396, 401, 5, 48, 25, 2, 397, 398, 7, 35, 2, 2, 398, 400, 5, 48, 25, 2, 399, 397, 3, 2, 2, 2, 400, 403, 3, 2, 2, 2, 401, 399, 3, 2, 2, 2, 401, 402, 3, 2, 2, 2, 402, 63, 3, 2, 2, 2, 403, 401, 3, 2, 2, 2, 404, 405, 7, 4, 2, 2, 405, 410, 5, 48, 25, 2, 406, 407, 7, 35, 2, 2, 407, 409, 5, 48, 25, 2, 408, 406, 3, 2, 2, 2, 409, 412, 3, 2, 2, 2, 410, 408, 3, 2, 2, 2, 410, 411, 3, 2, 2, 2, 411, 65, 3, 2, 2, 2, 412, 410, 3, 2, 2, 2, 413, 414, 7, 14, 2, 2, 414, 419, 5, 68, 35, 2, 415, 416, 7, 35, 2, 2, 416, 418, 5, 68, 35, 2, 417, 415, 3, 2, 2, 2, 418, 421, 3, 2, 2, 2, 419, 417, 3, 2, 2, 2, 419, 420, 3, 2, 2, 2, 420, 67, 3, 2, 2, 2, 421, 419, 3, 2, 2, 2, 422, 423, 5, 48, 25, 2, 423, 424, 7, 81, 2, 2, 424, 425, 5, 48, 25, 2, 425, 69, 3, 2, 2, 2, 426, 427, 7, 3, 2, 2, 427, 428, 5, 20, 11, 2, 428, 430, 5, 88, 45, 2, 429, 431, 5, 76, 39, 2, 430, 429, 3, 2, 2, 2, 430, 431, 3, 2, 2, 2, 431, 71, 3, 2, 2, 2, 432, 433, 7, 9, 2, 2, 433, 434, 5, 20, 11, 2, 434, 435, 5, 88, 45, 2, 435, 73, 3, 2, 2, 2, 436, 437, 7, 13, 2, 2, 437, 438, 5, 46, 24, 2, 438, 75, 3, 2, 2, 2, 439, 444, 5, 78, 40, 2, 440, 441, 7, 35, 2, 2, 441, 443, 5, 78, 40, 2, 442, 440, 3, 2, 2, 2, 443, 446, 3, 2, 2, 2, 444, 442, 3, 2, 2, 2, 444, 445, 3, 2, 2, 2, 445, 77, 3, 2, 2, 2, 446, 444, 3, 2, 2, 2, 447, 448, 5, 50, 26, 2, 448, 449, 7, 34, 2, 2, 449, 450, 5, 54, 28, 2, 450, 79, 3, 2, 2, 2, 451, 452, 9, 9, 2, 2, 452, 81, 3, 2, 2, 2, 453, 456, 5, 84, 43, 2, 454, 456, 5, 86, 44, 2, 455, 453, 3, 2, 2, 2, 455, 454, 3, 2, 2, 2, 456, 83, 3, 2, 2, 2, 457, 459, 9, 2, 2, 2, 458, 457, 3, 2, 2, 2, 458, 459, 3, 2, 2, 2, 459, 460, 3, 2, 2, 2, 460, 461, 7, 30, 2, 2, 461, 85, 3, 2, 2, 2, 462, 464, 9, 2, 2, 2, 463, 462, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 465, 3, 2, 2, 2, 465, 466, 7, 29, 2, 2, 466, 87, 3, 2, 2, 2, 467, 468, 7, 28, 2, 2, 468, 89, 3, 2, 2, 2, 469, 470, 9, 10, 2, 2, 470, 91, 3, 2, 2, 2, 471, 472, 7, 7, 2, 2, 472, 473, 5, 94, 48, 2, 473, 93, 3, 2, 2, 2, 474, 475, 7, 65, 2, 2, 475, 476, 5, 4, 3, 2, 476, 477, 7, 66, 2, 2, 477, 95, 3, 2, 2, 2, 478, 479, 7, 16, 2, 2, 479, 483, 7, 97, 2, 2, 480, 481, 7, 16, 2, 2, 481, 483, 7, 98, 2, 2, 482, 478, 3, 2, 2, 2, 482, 480, 3, 2, 2, 2, 483, 97, 3, 2, 2, 2, 484, 485, 7, 5, 2, 2, 485, 488, 7, 87, 2, 2, 486, 487, 7, 85, 2, 2, 487, 489, 5, 48, 25, 2, 488, 486, 3, 2, 2, 2, 488, 489, 3, 2, 2, 2, 489, 499, 3, 2, 2, 2, 490, 491, 7, 86, 2, 2, 491, 496, 5, 100, 51, 2, 492, 493, 7, 35, 2, 2, 493, 495, 5, 100, 51, 2, 494, 492, 3, 2, 2, 2, 495, 498, 3, 2, 2, 2, 496, 494, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 500, 3, 2, 2, 2, 498, 496, 3, 2, 2, 2, 499, 490, 3, 2, 2, 2, 499, 500, 3, 2, 2, 2, 500, 99, 3, 2, 2, 2, 501, 502, 5, 48, 25, 2, 502, 503, 7, 34, 2, 2, 503, 505, 3, 2, 2, 2, 504, 501, 3, 2, 2, 2, 504, 505, 3, 2, 2, 2, 505, 506, 3, 2, 2, 2, 506, 507, 5, 48, 25, 2, 507, 101, 3, 2, 2, 2, 52, 113, 120, 135, 147, 156, 164, 168, 176, 178, 183, 190, 195, 202, 208, 216, 218, 228, 238, 241, 253, 261, 269, 273, 277, 285, 297, 301, 307, 316, 324, 346, 357, 368, 373, 384, 389, 393, 401, 410, 419, 430, 444, 455, 458, 463, 482, 488, 496, 499, 504] \ No newline at end of file +[3, 51485, 51898, 1421, 44986, 20307, 1543, 60043, 49729, 3, 107, 513, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 3, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 3, 114, 10, 3, 12, 3, 14, 3, 117, 11, 3, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 123, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 138, 10, 5, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 150, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 157, 10, 7, 12, 7, 14, 7, 160, 11, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 167, 10, 7, 3, 7, 3, 7, 5, 7, 171, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 179, 10, 7, 12, 7, 14, 7, 182, 11, 7, 3, 8, 3, 8, 5, 8, 186, 10, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 5, 8, 193, 10, 8, 3, 8, 3, 8, 3, 8, 5, 8, 198, 10, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 5, 9, 205, 10, 9, 3, 10, 3, 10, 3, 10, 3, 10, 5, 10, 211, 10, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 219, 10, 10, 12, 10, 14, 10, 222, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 5, 11, 231, 10, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 239, 10, 12, 12, 12, 14, 12, 242, 11, 12, 5, 12, 244, 10, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 7, 14, 254, 10, 14, 12, 14, 14, 14, 257, 11, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 264, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 270, 10, 16, 12, 16, 14, 16, 273, 11, 16, 3, 16, 5, 16, 276, 10, 16, 3, 17, 3, 17, 5, 17, 280, 10, 17, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 286, 10, 18, 12, 18, 14, 18, 289, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 5, 21, 300, 10, 21, 3, 21, 3, 21, 5, 21, 304, 10, 21, 3, 22, 3, 22, 3, 22, 3, 22, 5, 22, 310, 10, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 7, 24, 317, 10, 24, 12, 24, 14, 24, 320, 11, 24, 3, 25, 3, 25, 3, 25, 7, 25, 325, 10, 25, 12, 25, 14, 25, 328, 11, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 349, 10, 29, 12, 29, 14, 29, 352, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 360, 10, 29, 12, 29, 14, 29, 363, 11, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 7, 29, 371, 10, 29, 12, 29, 14, 29, 374, 11, 29, 3, 29, 3, 29, 5, 29, 378, 10, 29, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 7, 31, 387, 10, 31, 12, 31, 14, 31, 390, 11, 31, 3, 32, 3, 32, 5, 32, 394, 10, 32, 3, 32, 3, 32, 5, 32, 398, 10, 32, 3, 33, 3, 33, 3, 33, 3, 33, 7, 33, 404, 10, 33, 12, 33, 14, 33, 407, 11, 33, 3, 34, 3, 34, 3, 34, 3, 34, 7, 34, 413, 10, 34, 12, 34, 14, 34, 416, 11, 34, 3, 35, 3, 35, 3, 35, 3, 35, 7, 35, 422, 10, 35, 12, 35, 14, 35, 425, 11, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 5, 37, 435, 10, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 7, 40, 447, 10, 40, 12, 40, 14, 40, 450, 11, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 5, 43, 460, 10, 43, 3, 44, 5, 44, 463, 10, 44, 3, 44, 3, 44, 3, 45, 5, 45, 468, 10, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 5, 50, 487, 10, 50, 3, 51, 3, 51, 3, 51, 3, 51, 5, 51, 493, 10, 51, 3, 51, 3, 51, 3, 51, 3, 51, 7, 51, 499, 10, 51, 12, 51, 14, 51, 502, 11, 51, 5, 51, 504, 10, 51, 3, 52, 3, 52, 3, 52, 5, 52, 509, 10, 52, 3, 52, 3, 52, 3, 52, 2, 2, 5, 4, 12, 18, 53, 2, 2, 4, 2, 6, 2, 8, 2, 10, 2, 12, 2, 14, 2, 16, 2, 18, 2, 20, 2, 22, 2, 24, 2, 26, 2, 28, 2, 30, 2, 32, 2, 34, 2, 36, 2, 38, 2, 40, 2, 42, 2, 44, 2, 46, 2, 48, 2, 50, 2, 52, 2, 54, 2, 56, 2, 58, 2, 60, 2, 62, 2, 64, 2, 66, 2, 68, 2, 70, 2, 72, 2, 74, 2, 76, 2, 78, 2, 80, 2, 82, 2, 84, 2, 86, 2, 88, 2, 90, 2, 92, 2, 94, 2, 96, 2, 98, 2, 100, 2, 102, 2, 2, 11, 3, 2, 60, 61, 3, 2, 62, 64, 4, 2, 68, 68, 73, 73, 3, 2, 67, 68, 4, 2, 68, 68, 107, 107, 4, 2, 33, 33, 36, 36, 3, 2, 39, 40, 4, 2, 38, 38, 52, 52, 3, 2, 53, 59, 2, 538, 2, 104, 3, 2, 2, 2, 4, 107, 3, 2, 2, 2, 6, 122, 3, 2, 2, 2, 8, 137, 3, 2, 2, 2, 10, 139, 3, 2, 2, 2, 12, 170, 3, 2, 2, 2, 14, 197, 3, 2, 2, 2, 16, 204, 3, 2, 2, 2, 18, 210, 3, 2, 2, 2, 20, 230, 3, 2, 2, 2, 22, 232, 3, 2, 2, 2, 24, 247, 3, 2, 2, 2, 26, 250, 3, 2, 2, 2, 28, 263, 3, 2, 2, 2, 30, 265, 3, 2, 2, 2, 32, 279, 3, 2, 2, 2, 34, 281, 3, 2, 2, 2, 36, 290, 3, 2, 2, 2, 38, 294, 3, 2, 2, 2, 40, 297, 3, 2, 2, 2, 42, 305, 3, 2, 2, 2, 44, 311, 3, 2, 2, 2, 46, 313, 3, 2, 2, 2, 48, 321, 3, 2, 2, 2, 50, 329, 3, 2, 2, 2, 52, 331, 3, 2, 2, 2, 54, 333, 3, 2, 2, 2, 56, 377, 3, 2, 2, 2, 58, 379, 3, 2, 2, 2, 60, 382, 3, 2, 2, 2, 62, 391, 3, 2, 2, 2, 64, 399, 3, 2, 2, 2, 66, 408, 3, 2, 2, 2, 68, 417, 3, 2, 2, 2, 70, 426, 3, 2, 2, 2, 72, 430, 3, 2, 2, 2, 74, 436, 3, 2, 2, 2, 76, 440, 3, 2, 2, 2, 78, 443, 3, 2, 2, 2, 80, 451, 3, 2, 2, 2, 82, 455, 3, 2, 2, 2, 84, 459, 3, 2, 2, 2, 86, 462, 3, 2, 2, 2, 88, 467, 3, 2, 2, 2, 90, 471, 3, 2, 2, 2, 92, 473, 3, 2, 2, 2, 94, 475, 3, 2, 2, 2, 96, 478, 3, 2, 2, 2, 98, 486, 3, 2, 2, 2, 100, 488, 3, 2, 2, 2, 102, 508, 3, 2, 2, 2, 104, 105, 5, 4, 3, 2, 105, 106, 7, 2, 2, 3, 106, 3, 3, 2, 2, 2, 107, 108, 8, 3, 1, 2, 108, 109, 5, 6, 4, 2, 109, 115, 3, 2, 2, 2, 110, 111, 12, 3, 2, 2, 111, 112, 7, 27, 2, 2, 112, 114, 5, 8, 5, 2, 113, 110, 3, 2, 2, 2, 114, 117, 3, 2, 2, 2, 115, 113, 3, 2, 2, 2, 115, 116, 3, 2, 2, 2, 116, 5, 3, 2, 2, 2, 117, 115, 3, 2, 2, 2, 118, 123, 5, 94, 48, 2, 119, 123, 5, 30, 16, 2, 120, 123, 5, 24, 13, 2, 121, 123, 5, 98, 50, 2, 122, 118, 3, 2, 2, 2, 122, 119, 3, 2, 2, 2, 122, 120, 3, 2, 2, 2, 122, 121, 3, 2, 2, 2, 123, 7, 3, 2, 2, 2, 124, 138, 5, 38, 20, 2, 125, 138, 5, 42, 22, 2, 126, 138, 5, 58, 30, 2, 127, 138, 5, 64, 33, 2, 128, 138, 5, 60, 31, 2, 129, 138, 5, 40, 21, 2, 130, 138, 5, 10, 6, 2, 131, 138, 5, 66, 34, 2, 132, 138, 5, 68, 35, 2, 133, 138, 5, 72, 37, 2, 134, 138, 5, 74, 38, 2, 135, 138, 5, 100, 51, 2, 136, 138, 5, 76, 39, 2, 137, 124, 3, 2, 2, 2, 137, 125, 3, 2, 2, 2, 137, 126, 3, 2, 2, 2, 137, 127, 3, 2, 2, 2, 137, 128, 3, 2, 2, 2, 137, 129, 3, 2, 2, 2, 137, 130, 3, 2, 2, 2, 137, 131, 3, 2, 2, 2, 137, 132, 3, 2, 2, 2, 137, 133, 3, 2, 2, 2, 137, 134, 3, 2, 2, 2, 137, 135, 3, 2, 2, 2, 137, 136, 3, 2, 2, 2, 138, 9, 3, 2, 2, 2, 139, 140, 7, 19, 2, 2, 140, 141, 5, 12, 7, 2, 141, 11, 3, 2, 2, 2, 142, 143, 8, 7, 1, 2, 143, 144, 7, 45, 2, 2, 144, 171, 5, 12, 7, 9, 145, 171, 5, 16, 9, 2, 146, 171, 5, 14, 8, 2, 147, 149, 5, 16, 9, 2, 148, 150, 7, 45, 2, 2, 149, 148, 3, 2, 2, 2, 149, 150, 3, 2, 2, 2, 150, 151, 3, 2, 2, 2, 151, 152, 7, 42, 2, 2, 152, 153, 7, 41, 2, 2, 153, 158, 5, 16, 9, 2, 154, 155, 7, 35, 2, 2, 155, 157, 5, 16, 9, 2, 156, 154, 3, 2, 2, 2, 157, 160, 3, 2, 2, 2, 158, 156, 3, 2, 2, 2, 158, 159, 3, 2, 2, 2, 159, 161, 3, 2, 2, 2, 160, 158, 3, 2, 2, 2, 161, 162, 7, 51, 2, 2, 162, 171, 3, 2, 2, 2, 163, 164, 5, 16, 9, 2, 164, 166, 7, 43, 2, 2, 165, 167, 7, 45, 2, 2, 166, 165, 3, 2, 2, 2, 166, 167, 3, 2, 2, 2, 167, 168, 3, 2, 2, 2, 168, 169, 7, 46, 2, 2, 169, 171, 3, 2, 2, 2, 170, 142, 3, 2, 2, 2, 170, 145, 3, 2, 2, 2, 170, 146, 3, 2, 2, 2, 170, 147, 3, 2, 2, 2, 170, 163, 3, 2, 2, 2, 171, 180, 3, 2, 2, 2, 172, 173, 12, 6, 2, 2, 173, 174, 7, 32, 2, 2, 174, 179, 5, 12, 7, 7, 175, 176, 12, 5, 2, 2, 176, 177, 7, 48, 2, 2, 177, 179, 5, 12, 7, 6, 178, 172, 3, 2, 2, 2, 178, 175, 3, 2, 2, 2, 179, 182, 3, 2, 2, 2, 180, 178, 3, 2, 2, 2, 180, 181, 3, 2, 2, 2, 181, 13, 3, 2, 2, 2, 182, 180, 3, 2, 2, 2, 183, 185, 5, 16, 9, 2, 184, 186, 7, 45, 2, 2, 185, 184, 3, 2, 2, 2, 185, 186, 3, 2, 2, 2, 186, 187, 3, 2, 2, 2, 187, 188, 7, 44, 2, 2, 188, 189, 5, 90, 46, 2, 189, 198, 3, 2, 2, 2, 190, 192, 5, 16, 9, 2, 191, 193, 7, 45, 2, 2, 192, 191, 3, 2, 2, 2, 192, 193, 3, 2, 2, 2, 193, 194, 3, 2, 2, 2, 194, 195, 7, 50, 2, 2, 195, 196, 5, 90, 46, 2, 196, 198, 3, 2, 2, 2, 197, 183, 3, 2, 2, 2, 197, 190, 3, 2, 2, 2, 198, 15, 3, 2, 2, 2, 199, 205, 5, 18, 10, 2, 200, 201, 5, 18, 10, 2, 201, 202, 5, 92, 47, 2, 202, 203, 5, 18, 10, 2, 203, 205, 3, 2, 2, 2, 204, 199, 3, 2, 2, 2, 204, 200, 3, 2, 2, 2, 205, 17, 3, 2, 2, 2, 206, 207, 8, 10, 1, 2, 207, 211, 5, 20, 11, 2, 208, 209, 9, 2, 2, 2, 209, 211, 5, 18, 10, 5, 210, 206, 3, 2, 2, 2, 210, 208, 3, 2, 2, 2, 211, 220, 3, 2, 2, 2, 212, 213, 12, 4, 2, 2, 213, 214, 9, 3, 2, 2, 214, 219, 5, 18, 10, 5, 215, 216, 12, 3, 2, 2, 216, 217, 9, 2, 2, 2, 217, 219, 5, 18, 10, 4, 218, 212, 3, 2, 2, 2, 218, 215, 3, 2, 2, 2, 219, 222, 3, 2, 2, 2, 220, 218, 3, 2, 2, 2, 220, 221, 3, 2, 2, 2, 221, 19, 3, 2, 2, 2, 222, 220, 3, 2, 2, 2, 223, 231, 5, 56, 29, 2, 224, 231, 5, 46, 24, 2, 225, 231, 5, 22, 12, 2, 226, 227, 7, 41, 2, 2, 227, 228, 5, 12, 7, 2, 228, 229, 7, 51, 2, 2, 229, 231, 3, 2, 2, 2, 230, 223, 3, 2, 2, 2, 230, 224, 3, 2, 2, 2, 230, 225, 3, 2, 2, 2, 230, 226, 3, 2, 2, 2, 231, 21, 3, 2, 2, 2, 232, 233, 5, 50, 26, 2, 233, 243, 7, 41, 2, 2, 234, 244, 7, 62, 2, 2, 235, 240, 5, 12, 7, 2, 236, 237, 7, 35, 2, 2, 237, 239, 5, 12, 7, 2, 238, 236, 3, 2, 2, 2, 239, 242, 3, 2, 2, 2, 240, 238, 3, 2, 2, 2, 240, 241, 3, 2, 2, 2, 241, 244, 3, 2, 2, 2, 242, 240, 3, 2, 2, 2, 243, 234, 3, 2, 2, 2, 243, 235, 3, 2, 2, 2, 243, 244, 3, 2, 2, 2, 244, 245, 3, 2, 2, 2, 245, 246, 7, 51, 2, 2, 246, 23, 3, 2, 2, 2, 247, 248, 7, 15, 2, 2, 248, 249, 5, 26, 14, 2, 249, 25, 3, 2, 2, 2, 250, 255, 5, 28, 15, 2, 251, 252, 7, 35, 2, 2, 252, 254, 5, 28, 15, 2, 253, 251, 3, 2, 2, 2, 254, 257, 3, 2, 2, 2, 255, 253, 3, 2, 2, 2, 255, 256, 3, 2, 2, 2, 256, 27, 3, 2, 2, 2, 257, 255, 3, 2, 2, 2, 258, 264, 5, 12, 7, 2, 259, 260, 5, 46, 24, 2, 260, 261, 7, 34, 2, 2, 261, 262, 5, 12, 7, 2, 262, 264, 3, 2, 2, 2, 263, 258, 3, 2, 2, 2, 263, 259, 3, 2, 2, 2, 264, 29, 3, 2, 2, 2, 265, 266, 7, 8, 2, 2, 266, 271, 5, 44, 23, 2, 267, 268, 7, 35, 2, 2, 268, 270, 5, 44, 23, 2, 269, 267, 3, 2, 2, 2, 270, 273, 3, 2, 2, 2, 271, 269, 3, 2, 2, 2, 271, 272, 3, 2, 2, 2, 272, 275, 3, 2, 2, 2, 273, 271, 3, 2, 2, 2, 274, 276, 5, 32, 17, 2, 275, 274, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 31, 3, 2, 2, 2, 277, 280, 5, 34, 18, 2, 278, 280, 5, 36, 19, 2, 279, 277, 3, 2, 2, 2, 279, 278, 3, 2, 2, 2, 280, 33, 3, 2, 2, 2, 281, 282, 7, 72, 2, 2, 282, 287, 5, 44, 23, 2, 283, 284, 7, 35, 2, 2, 284, 286, 5, 44, 23, 2, 285, 283, 3, 2, 2, 2, 286, 289, 3, 2, 2, 2, 287, 285, 3, 2, 2, 2, 287, 288, 3, 2, 2, 2, 288, 35, 3, 2, 2, 2, 289, 287, 3, 2, 2, 2, 290, 291, 7, 65, 2, 2, 291, 292, 5, 34, 18, 2, 292, 293, 7, 66, 2, 2, 293, 37, 3, 2, 2, 2, 294, 295, 7, 6, 2, 2, 295, 296, 5, 26, 14, 2, 296, 39, 3, 2, 2, 2, 297, 299, 7, 18, 2, 2, 298, 300, 5, 26, 14, 2, 299, 298, 3, 2, 2, 2, 299, 300, 3, 2, 2, 2, 300, 303, 3, 2, 2, 2, 301, 302, 7, 31, 2, 2, 302, 304, 5, 26, 14, 2, 303, 301, 3, 2, 2, 2, 303, 304, 3, 2, 2, 2, 304, 41, 3, 2, 2, 2, 305, 306, 7, 10, 2, 2, 306, 309, 5, 26, 14, 2, 307, 308, 7, 31, 2, 2, 308, 310, 5, 26, 14, 2, 309, 307, 3, 2, 2, 2, 309, 310, 3, 2, 2, 2, 310, 43, 3, 2, 2, 2, 311, 312, 9, 4, 2, 2, 312, 45, 3, 2, 2, 2, 313, 318, 5, 50, 26, 2, 314, 315, 7, 37, 2, 2, 315, 317, 5, 50, 26, 2, 316, 314, 3, 2, 2, 2, 317, 320, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 318, 319, 3, 2, 2, 2, 319, 47, 3, 2, 2, 2, 320, 318, 3, 2, 2, 2, 321, 326, 5, 52, 27, 2, 322, 323, 7, 37, 2, 2, 323, 325, 5, 52, 27, 2, 324, 322, 3, 2, 2, 2, 325, 328, 3, 2, 2, 2, 326, 324, 3, 2, 2, 2, 326, 327, 3, 2, 2, 2, 327, 49, 3, 2, 2, 2, 328, 326, 3, 2, 2, 2, 329, 330, 9, 5, 2, 2, 330, 51, 3, 2, 2, 2, 331, 332, 7, 77, 2, 2, 332, 53, 3, 2, 2, 2, 333, 334, 9, 6, 2, 2, 334, 55, 3, 2, 2, 2, 335, 378, 7, 46, 2, 2, 336, 337, 5, 88, 45, 2, 337, 338, 7, 67, 2, 2, 338, 378, 3, 2, 2, 2, 339, 378, 5, 86, 44, 2, 340, 378, 5, 88, 45, 2, 341, 378, 5, 82, 42, 2, 342, 378, 7, 49, 2, 2, 343, 378, 5, 90, 46, 2, 344, 345, 7, 65, 2, 2, 345, 350, 5, 84, 43, 2, 346, 347, 7, 35, 2, 2, 347, 349, 5, 84, 43, 2, 348, 346, 3, 2, 2, 2, 349, 352, 3, 2, 2, 2, 350, 348, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 353, 3, 2, 2, 2, 352, 350, 3, 2, 2, 2, 353, 354, 7, 66, 2, 2, 354, 378, 3, 2, 2, 2, 355, 356, 7, 65, 2, 2, 356, 361, 5, 82, 42, 2, 357, 358, 7, 35, 2, 2, 358, 360, 5, 82, 42, 2, 359, 357, 3, 2, 2, 2, 360, 363, 3, 2, 2, 2, 361, 359, 3, 2, 2, 2, 361, 362, 3, 2, 2, 2, 362, 364, 3, 2, 2, 2, 363, 361, 3, 2, 2, 2, 364, 365, 7, 66, 2, 2, 365, 378, 3, 2, 2, 2, 366, 367, 7, 65, 2, 2, 367, 372, 5, 90, 46, 2, 368, 369, 7, 35, 2, 2, 369, 371, 5, 90, 46, 2, 370, 368, 3, 2, 2, 2, 371, 374, 3, 2, 2, 2, 372, 370, 3, 2, 2, 2, 372, 373, 3, 2, 2, 2, 373, 375, 3, 2, 2, 2, 374, 372, 3, 2, 2, 2, 375, 376, 7, 66, 2, 2, 376, 378, 3, 2, 2, 2, 377, 335, 3, 2, 2, 2, 377, 336, 3, 2, 2, 2, 377, 339, 3, 2, 2, 2, 377, 340, 3, 2, 2, 2, 377, 341, 3, 2, 2, 2, 377, 342, 3, 2, 2, 2, 377, 343, 3, 2, 2, 2, 377, 344, 3, 2, 2, 2, 377, 355, 3, 2, 2, 2, 377, 366, 3, 2, 2, 2, 378, 57, 3, 2, 2, 2, 379, 380, 7, 12, 2, 2, 380, 381, 7, 29, 2, 2, 381, 59, 3, 2, 2, 2, 382, 383, 7, 17, 2, 2, 383, 388, 5, 62, 32, 2, 384, 385, 7, 35, 2, 2, 385, 387, 5, 62, 32, 2, 386, 384, 3, 2, 2, 2, 387, 390, 3, 2, 2, 2, 388, 386, 3, 2, 2, 2, 388, 389, 3, 2, 2, 2, 389, 61, 3, 2, 2, 2, 390, 388, 3, 2, 2, 2, 391, 393, 5, 12, 7, 2, 392, 394, 9, 7, 2, 2, 393, 392, 3, 2, 2, 2, 393, 394, 3, 2, 2, 2, 394, 397, 3, 2, 2, 2, 395, 396, 7, 47, 2, 2, 396, 398, 9, 8, 2, 2, 397, 395, 3, 2, 2, 2, 397, 398, 3, 2, 2, 2, 398, 63, 3, 2, 2, 2, 399, 400, 7, 11, 2, 2, 400, 405, 5, 48, 25, 2, 401, 402, 7, 35, 2, 2, 402, 404, 5, 48, 25, 2, 403, 401, 3, 2, 2, 2, 404, 407, 3, 2, 2, 2, 405, 403, 3, 2, 2, 2, 405, 406, 3, 2, 2, 2, 406, 65, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 408, 409, 7, 4, 2, 2, 409, 414, 5, 48, 25, 2, 410, 411, 7, 35, 2, 2, 411, 413, 5, 48, 25, 2, 412, 410, 3, 2, 2, 2, 413, 416, 3, 2, 2, 2, 414, 412, 3, 2, 2, 2, 414, 415, 3, 2, 2, 2, 415, 67, 3, 2, 2, 2, 416, 414, 3, 2, 2, 2, 417, 418, 7, 14, 2, 2, 418, 423, 5, 70, 36, 2, 419, 420, 7, 35, 2, 2, 420, 422, 5, 70, 36, 2, 421, 419, 3, 2, 2, 2, 422, 425, 3, 2, 2, 2, 423, 421, 3, 2, 2, 2, 423, 424, 3, 2, 2, 2, 424, 69, 3, 2, 2, 2, 425, 423, 3, 2, 2, 2, 426, 427, 5, 48, 25, 2, 427, 428, 7, 81, 2, 2, 428, 429, 5, 48, 25, 2, 429, 71, 3, 2, 2, 2, 430, 431, 7, 3, 2, 2, 431, 432, 5, 20, 11, 2, 432, 434, 5, 90, 46, 2, 433, 435, 5, 78, 40, 2, 434, 433, 3, 2, 2, 2, 434, 435, 3, 2, 2, 2, 435, 73, 3, 2, 2, 2, 436, 437, 7, 9, 2, 2, 437, 438, 5, 20, 11, 2, 438, 439, 5, 90, 46, 2, 439, 75, 3, 2, 2, 2, 440, 441, 7, 13, 2, 2, 441, 442, 5, 46, 24, 2, 442, 77, 3, 2, 2, 2, 443, 448, 5, 80, 41, 2, 444, 445, 7, 35, 2, 2, 445, 447, 5, 80, 41, 2, 446, 444, 3, 2, 2, 2, 447, 450, 3, 2, 2, 2, 448, 446, 3, 2, 2, 2, 448, 449, 3, 2, 2, 2, 449, 79, 3, 2, 2, 2, 450, 448, 3, 2, 2, 2, 451, 452, 5, 50, 26, 2, 452, 453, 7, 34, 2, 2, 453, 454, 5, 56, 29, 2, 454, 81, 3, 2, 2, 2, 455, 456, 9, 9, 2, 2, 456, 83, 3, 2, 2, 2, 457, 460, 5, 86, 44, 2, 458, 460, 5, 88, 45, 2, 459, 457, 3, 2, 2, 2, 459, 458, 3, 2, 2, 2, 460, 85, 3, 2, 2, 2, 461, 463, 9, 2, 2, 2, 462, 461, 3, 2, 2, 2, 462, 463, 3, 2, 2, 2, 463, 464, 3, 2, 2, 2, 464, 465, 7, 30, 2, 2, 465, 87, 3, 2, 2, 2, 466, 468, 9, 2, 2, 2, 467, 466, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 469, 3, 2, 2, 2, 469, 470, 7, 29, 2, 2, 470, 89, 3, 2, 2, 2, 471, 472, 7, 28, 2, 2, 472, 91, 3, 2, 2, 2, 473, 474, 9, 10, 2, 2, 474, 93, 3, 2, 2, 2, 475, 476, 7, 7, 2, 2, 476, 477, 5, 96, 49, 2, 477, 95, 3, 2, 2, 2, 478, 479, 7, 65, 2, 2, 479, 480, 5, 4, 3, 2, 480, 481, 7, 66, 2, 2, 481, 97, 3, 2, 2, 2, 482, 483, 7, 16, 2, 2, 483, 487, 7, 97, 2, 2, 484, 485, 7, 16, 2, 2, 485, 487, 7, 98, 2, 2, 486, 482, 3, 2, 2, 2, 486, 484, 3, 2, 2, 2, 487, 99, 3, 2, 2, 2, 488, 489, 7, 5, 2, 2, 489, 492, 7, 87, 2, 2, 490, 491, 7, 85, 2, 2, 491, 493, 5, 48, 25, 2, 492, 490, 3, 2, 2, 2, 492, 493, 3, 2, 2, 2, 493, 503, 3, 2, 2, 2, 494, 495, 7, 86, 2, 2, 495, 500, 5, 102, 52, 2, 496, 497, 7, 35, 2, 2, 497, 499, 5, 102, 52, 2, 498, 496, 3, 2, 2, 2, 499, 502, 3, 2, 2, 2, 500, 498, 3, 2, 2, 2, 500, 501, 3, 2, 2, 2, 501, 504, 3, 2, 2, 2, 502, 500, 3, 2, 2, 2, 503, 494, 3, 2, 2, 2, 503, 504, 3, 2, 2, 2, 504, 101, 3, 2, 2, 2, 505, 506, 5, 48, 25, 2, 506, 507, 7, 34, 2, 2, 507, 509, 3, 2, 2, 2, 508, 505, 3, 2, 2, 2, 508, 509, 3, 2, 2, 2, 509, 510, 3, 2, 2, 2, 510, 511, 5, 48, 25, 2, 511, 103, 3, 2, 2, 2, 52, 115, 122, 137, 149, 158, 166, 170, 178, 180, 185, 192, 197, 204, 210, 218, 220, 230, 240, 243, 255, 263, 271, 275, 279, 287, 299, 303, 309, 318, 326, 350, 361, 372, 377, 388, 393, 397, 405, 414, 423, 434, 448, 459, 462, 467, 486, 492, 500, 503, 508] \ No newline at end of file diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.tokens b/packages/kbn-monaco/src/esql/antlr/esql_parser.tokens index 1f49f7e26406b..ce879aba138b0 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.tokens +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.tokens @@ -72,7 +72,7 @@ FROM_UNQUOTED_IDENTIFIER=71 FROM_LINE_COMMENT=72 FROM_MULTILINE_COMMENT=73 FROM_WS=74 -UNQUOTED_ID_PATTERN=75 +ID_PATTERN=75 PROJECT_LINE_COMMENT=76 PROJECT_MULTILINE_COMMENT=77 PROJECT_WS=78 @@ -102,6 +102,7 @@ SETTING=101 SETTING_LINE_COMMENT=102 SETTTING_MULTILINE_COMMENT=103 SETTING_WS=104 +UNQUOTED_ID_PATTERN=105 '|'=25 '='=32 ','=33 diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts index 28d31ef92064a..18a7dd5d31337 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser.ts @@ -101,7 +101,7 @@ export class esql_parser extends Parser { public static readonly FROM_LINE_COMMENT = 72; public static readonly FROM_MULTILINE_COMMENT = 73; public static readonly FROM_WS = 74; - public static readonly UNQUOTED_ID_PATTERN = 75; + public static readonly ID_PATTERN = 75; public static readonly PROJECT_LINE_COMMENT = 76; public static readonly PROJECT_MULTILINE_COMMENT = 77; public static readonly PROJECT_WS = 78; @@ -131,6 +131,7 @@ export class esql_parser extends Parser { public static readonly SETTING_LINE_COMMENT = 102; public static readonly SETTTING_MULTILINE_COMMENT = 103; public static readonly SETTING_WS = 104; + public static readonly UNQUOTED_ID_PATTERN = 105; public static readonly RULE_singleStatement = 0; public static readonly RULE_query = 1; public static readonly RULE_sourceCommand = 2; @@ -157,30 +158,31 @@ export class esql_parser extends Parser { public static readonly RULE_qualifiedNamePattern = 23; public static readonly RULE_identifier = 24; public static readonly RULE_identifierPattern = 25; - public static readonly RULE_constant = 26; - public static readonly RULE_limitCommand = 27; - public static readonly RULE_sortCommand = 28; - public static readonly RULE_orderExpression = 29; - public static readonly RULE_keepCommand = 30; - public static readonly RULE_dropCommand = 31; - public static readonly RULE_renameCommand = 32; - public static readonly RULE_renameClause = 33; - public static readonly RULE_dissectCommand = 34; - public static readonly RULE_grokCommand = 35; - public static readonly RULE_mvExpandCommand = 36; - public static readonly RULE_commandOptions = 37; - public static readonly RULE_commandOption = 38; - public static readonly RULE_booleanValue = 39; - public static readonly RULE_numericValue = 40; - public static readonly RULE_decimalValue = 41; - public static readonly RULE_integerValue = 42; - public static readonly RULE_string = 43; - public static readonly RULE_comparisonOperator = 44; - public static readonly RULE_explainCommand = 45; - public static readonly RULE_subqueryExpression = 46; - public static readonly RULE_showCommand = 47; - public static readonly RULE_enrichCommand = 48; - public static readonly RULE_enrichWithClause = 49; + public static readonly RULE_idPattern = 26; + public static readonly RULE_constant = 27; + public static readonly RULE_limitCommand = 28; + public static readonly RULE_sortCommand = 29; + public static readonly RULE_orderExpression = 30; + public static readonly RULE_keepCommand = 31; + public static readonly RULE_dropCommand = 32; + public static readonly RULE_renameCommand = 33; + public static readonly RULE_renameClause = 34; + public static readonly RULE_dissectCommand = 35; + public static readonly RULE_grokCommand = 36; + public static readonly RULE_mvExpandCommand = 37; + public static readonly RULE_commandOptions = 38; + public static readonly RULE_commandOption = 39; + public static readonly RULE_booleanValue = 40; + public static readonly RULE_numericValue = 41; + public static readonly RULE_decimalValue = 42; + public static readonly RULE_integerValue = 43; + public static readonly RULE_string = 44; + public static readonly RULE_comparisonOperator = 45; + public static readonly RULE_explainCommand = 46; + public static readonly RULE_subqueryExpression = 47; + public static readonly RULE_showCommand = 48; + public static readonly RULE_enrichCommand = 49; + public static readonly RULE_enrichWithClause = 50; // tslint:disable:no-trailing-whitespace public static readonly ruleNames: string[] = [ "singleStatement", "query", "sourceCommand", "processingCommand", "whereCommand", @@ -188,12 +190,13 @@ export class esql_parser extends Parser { "primaryExpression", "functionExpression", "rowCommand", "fields", "field", "fromCommand", "metadata", "metadataOption", "deprecated_metadata", "evalCommand", "statsCommand", "inlinestatsCommand", "fromIdentifier", "qualifiedName", - "qualifiedNamePattern", "identifier", "identifierPattern", "constant", - "limitCommand", "sortCommand", "orderExpression", "keepCommand", "dropCommand", - "renameCommand", "renameClause", "dissectCommand", "grokCommand", "mvExpandCommand", - "commandOptions", "commandOption", "booleanValue", "numericValue", "decimalValue", - "integerValue", "string", "comparisonOperator", "explainCommand", "subqueryExpression", - "showCommand", "enrichCommand", "enrichWithClause", + "qualifiedNamePattern", "identifier", "identifierPattern", "idPattern", + "constant", "limitCommand", "sortCommand", "orderExpression", "keepCommand", + "dropCommand", "renameCommand", "renameClause", "dissectCommand", "grokCommand", + "mvExpandCommand", "commandOptions", "commandOption", "booleanValue", + "numericValue", "decimalValue", "integerValue", "string", "comparisonOperator", + "explainCommand", "subqueryExpression", "showCommand", "enrichCommand", + "enrichWithClause", ]; private static readonly _LITERAL_NAMES: Array = [ @@ -224,14 +227,14 @@ export class esql_parser extends Parser { "SLASH", "PERCENT", "OPENING_BRACKET", "CLOSING_BRACKET", "UNQUOTED_IDENTIFIER", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", "EXPR_WS", "METADATA", "FROM_UNQUOTED_IDENTIFIER", "FROM_LINE_COMMENT", "FROM_MULTILINE_COMMENT", - "FROM_WS", "UNQUOTED_ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", + "FROM_WS", "ID_PATTERN", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", "PROJECT_WS", "AS", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", "RENAME_WS", "ON", "WITH", "ENRICH_POLICY_NAME", "ENRICH_LINE_COMMENT", "ENRICH_MULTILINE_COMMENT", "ENRICH_WS", "ENRICH_FIELD_LINE_COMMENT", "ENRICH_FIELD_MULTILINE_COMMENT", "ENRICH_FIELD_WS", "MVEXPAND_LINE_COMMENT", "MVEXPAND_MULTILINE_COMMENT", "MVEXPAND_WS", "INFO", "FUNCTIONS", "SHOW_LINE_COMMENT", "SHOW_MULTILINE_COMMENT", "SHOW_WS", "COLON", "SETTING", "SETTING_LINE_COMMENT", - "SETTTING_MULTILINE_COMMENT", "SETTING_WS", + "SETTTING_MULTILINE_COMMENT", "SETTING_WS", "UNQUOTED_ID_PATTERN", ]; public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(esql_parser._LITERAL_NAMES, esql_parser._SYMBOLIC_NAMES, []); @@ -262,9 +265,9 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 100; + this.state = 102; this.query(0); - this.state = 101; + this.state = 103; this.match(esql_parser.EOF); } } @@ -306,11 +309,11 @@ export class esql_parser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 104; + this.state = 106; this.sourceCommand(); } this._ctx._stop = this._input.tryLT(-1); - this.state = 111; + this.state = 113; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 0, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -323,18 +326,18 @@ export class esql_parser extends Parser { { _localctx = new CompositeQueryContext(new QueryContext(_parentctx, _parentState)); this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_query); - this.state = 106; + this.state = 108; if (!(this.precpred(this._ctx, 1))) { throw new FailedPredicateException(this, "this.precpred(this._ctx, 1)"); } - this.state = 107; + this.state = 109; this.match(esql_parser.PIPE); - this.state = 108; + this.state = 110; this.processingCommand(); } } } - this.state = 113; + this.state = 115; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 0, this._ctx); } @@ -359,34 +362,34 @@ export class esql_parser extends Parser { let _localctx: SourceCommandContext = new SourceCommandContext(this._ctx, this.state); this.enterRule(_localctx, 4, esql_parser.RULE_sourceCommand); try { - this.state = 118; + this.state = 120; this._errHandler.sync(this); switch (this._input.LA(1)) { case esql_parser.EXPLAIN: this.enterOuterAlt(_localctx, 1); { - this.state = 114; + this.state = 116; this.explainCommand(); } break; case esql_parser.FROM: this.enterOuterAlt(_localctx, 2); { - this.state = 115; + this.state = 117; this.fromCommand(); } break; case esql_parser.ROW: this.enterOuterAlt(_localctx, 3); { - this.state = 116; + this.state = 118; this.rowCommand(); } break; case esql_parser.SHOW: this.enterOuterAlt(_localctx, 4); { - this.state = 117; + this.state = 119; this.showCommand(); } break; @@ -413,97 +416,97 @@ export class esql_parser extends Parser { let _localctx: ProcessingCommandContext = new ProcessingCommandContext(this._ctx, this.state); this.enterRule(_localctx, 6, esql_parser.RULE_processingCommand); try { - this.state = 133; + this.state = 135; this._errHandler.sync(this); switch (this._input.LA(1)) { case esql_parser.EVAL: this.enterOuterAlt(_localctx, 1); { - this.state = 120; + this.state = 122; this.evalCommand(); } break; case esql_parser.INLINESTATS: this.enterOuterAlt(_localctx, 2); { - this.state = 121; + this.state = 123; this.inlinestatsCommand(); } break; case esql_parser.LIMIT: this.enterOuterAlt(_localctx, 3); { - this.state = 122; + this.state = 124; this.limitCommand(); } break; case esql_parser.KEEP: this.enterOuterAlt(_localctx, 4); { - this.state = 123; + this.state = 125; this.keepCommand(); } break; case esql_parser.SORT: this.enterOuterAlt(_localctx, 5); { - this.state = 124; + this.state = 126; this.sortCommand(); } break; case esql_parser.STATS: this.enterOuterAlt(_localctx, 6); { - this.state = 125; + this.state = 127; this.statsCommand(); } break; case esql_parser.WHERE: this.enterOuterAlt(_localctx, 7); { - this.state = 126; + this.state = 128; this.whereCommand(); } break; case esql_parser.DROP: this.enterOuterAlt(_localctx, 8); { - this.state = 127; + this.state = 129; this.dropCommand(); } break; case esql_parser.RENAME: this.enterOuterAlt(_localctx, 9); { - this.state = 128; + this.state = 130; this.renameCommand(); } break; case esql_parser.DISSECT: this.enterOuterAlt(_localctx, 10); { - this.state = 129; + this.state = 131; this.dissectCommand(); } break; case esql_parser.GROK: this.enterOuterAlt(_localctx, 11); { - this.state = 130; + this.state = 132; this.grokCommand(); } break; case esql_parser.ENRICH: this.enterOuterAlt(_localctx, 12); { - this.state = 131; + this.state = 133; this.enrichCommand(); } break; case esql_parser.MV_EXPAND: this.enterOuterAlt(_localctx, 13); { - this.state = 132; + this.state = 134; this.mvExpandCommand(); } break; @@ -532,9 +535,9 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 135; + this.state = 137; this.match(esql_parser.WHERE); - this.state = 136; + this.state = 138; this.booleanExpression(0); } } @@ -572,7 +575,7 @@ export class esql_parser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 166; + this.state = 168; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 6, this._ctx) ) { case 1: @@ -581,9 +584,9 @@ export class esql_parser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 139; + this.state = 141; this.match(esql_parser.NOT); - this.state = 140; + this.state = 142; this.booleanExpression(7); } break; @@ -593,7 +596,7 @@ export class esql_parser extends Parser { _localctx = new BooleanDefaultContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 141; + this.state = 143; this.valueExpression(); } break; @@ -603,7 +606,7 @@ export class esql_parser extends Parser { _localctx = new RegexExpressionContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 142; + this.state = 144; this.regexBooleanExpression(); } break; @@ -613,41 +616,41 @@ export class esql_parser extends Parser { _localctx = new LogicalInContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 143; - this.valueExpression(); this.state = 145; + this.valueExpression(); + this.state = 147; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.NOT) { { - this.state = 144; + this.state = 146; this.match(esql_parser.NOT); } } - this.state = 147; + this.state = 149; this.match(esql_parser.IN); - this.state = 148; + this.state = 150; this.match(esql_parser.LP); - this.state = 149; + this.state = 151; this.valueExpression(); - this.state = 154; + this.state = 156; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === esql_parser.COMMA) { { { - this.state = 150; + this.state = 152; this.match(esql_parser.COMMA); - this.state = 151; + this.state = 153; this.valueExpression(); } } - this.state = 156; + this.state = 158; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 157; + this.state = 159; this.match(esql_parser.RP); } break; @@ -657,27 +660,27 @@ export class esql_parser extends Parser { _localctx = new IsNullContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 159; + this.state = 161; this.valueExpression(); - this.state = 160; - this.match(esql_parser.IS); this.state = 162; + this.match(esql_parser.IS); + this.state = 164; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.NOT) { { - this.state = 161; + this.state = 163; this.match(esql_parser.NOT); } } - this.state = 164; + this.state = 166; this.match(esql_parser.NULL); } break; } this._ctx._stop = this._input.tryLT(-1); - this.state = 176; + this.state = 178; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 8, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -687,7 +690,7 @@ export class esql_parser extends Parser { } _prevctx = _localctx; { - this.state = 174; + this.state = 176; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 7, this._ctx) ) { case 1: @@ -695,13 +698,13 @@ export class esql_parser extends Parser { _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); (_localctx as LogicalBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_booleanExpression); - this.state = 168; + this.state = 170; if (!(this.precpred(this._ctx, 4))) { throw new FailedPredicateException(this, "this.precpred(this._ctx, 4)"); } - this.state = 169; + this.state = 171; (_localctx as LogicalBinaryContext)._operator = this.match(esql_parser.AND); - this.state = 170; + this.state = 172; (_localctx as LogicalBinaryContext)._right = this.booleanExpression(5); } break; @@ -711,20 +714,20 @@ export class esql_parser extends Parser { _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); (_localctx as LogicalBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_booleanExpression); - this.state = 171; + this.state = 173; if (!(this.precpred(this._ctx, 3))) { throw new FailedPredicateException(this, "this.precpred(this._ctx, 3)"); } - this.state = 172; + this.state = 174; (_localctx as LogicalBinaryContext)._operator = this.match(esql_parser.OR); - this.state = 173; + this.state = 175; (_localctx as LogicalBinaryContext)._right = this.booleanExpression(4); } break; } } } - this.state = 178; + this.state = 180; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 8, this._ctx); } @@ -750,27 +753,27 @@ export class esql_parser extends Parser { this.enterRule(_localctx, 12, esql_parser.RULE_regexBooleanExpression); let _la: number; try { - this.state = 193; + this.state = 195; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 11, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 179; - this.valueExpression(); this.state = 181; + this.valueExpression(); + this.state = 183; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.NOT) { { - this.state = 180; + this.state = 182; this.match(esql_parser.NOT); } } - this.state = 183; + this.state = 185; _localctx._kind = this.match(esql_parser.LIKE); - this.state = 184; + this.state = 186; _localctx._pattern = this.string(); } break; @@ -778,21 +781,21 @@ export class esql_parser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 186; - this.valueExpression(); this.state = 188; + this.valueExpression(); + this.state = 190; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.NOT) { { - this.state = 187; + this.state = 189; this.match(esql_parser.NOT); } } - this.state = 190; + this.state = 192; _localctx._kind = this.match(esql_parser.RLIKE); - this.state = 191; + this.state = 193; _localctx._pattern = this.string(); } break; @@ -817,14 +820,14 @@ export class esql_parser extends Parser { let _localctx: ValueExpressionContext = new ValueExpressionContext(this._ctx, this.state); this.enterRule(_localctx, 14, esql_parser.RULE_valueExpression); try { - this.state = 200; + this.state = 202; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 12, this._ctx) ) { case 1: _localctx = new ValueExpressionDefaultContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 195; + this.state = 197; this.operatorExpression(0); } break; @@ -833,11 +836,11 @@ export class esql_parser extends Parser { _localctx = new ComparisonContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 196; + this.state = 198; (_localctx as ComparisonContext)._left = this.operatorExpression(0); - this.state = 197; + this.state = 199; this.comparisonOperator(); - this.state = 198; + this.state = 200; (_localctx as ComparisonContext)._right = this.operatorExpression(0); } break; @@ -877,7 +880,7 @@ export class esql_parser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 206; + this.state = 208; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 13, this._ctx) ) { case 1: @@ -886,7 +889,7 @@ export class esql_parser extends Parser { this._ctx = _localctx; _prevctx = _localctx; - this.state = 203; + this.state = 205; this.primaryExpression(); } break; @@ -896,7 +899,7 @@ export class esql_parser extends Parser { _localctx = new ArithmeticUnaryContext(_localctx); this._ctx = _localctx; _prevctx = _localctx; - this.state = 204; + this.state = 206; (_localctx as ArithmeticUnaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { @@ -909,13 +912,13 @@ export class esql_parser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 205; + this.state = 207; this.operatorExpression(3); } break; } this._ctx._stop = this._input.tryLT(-1); - this.state = 216; + this.state = 218; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 15, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { @@ -925,7 +928,7 @@ export class esql_parser extends Parser { } _prevctx = _localctx; { - this.state = 214; + this.state = 216; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 14, this._ctx) ) { case 1: @@ -933,11 +936,11 @@ export class esql_parser extends Parser { _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState)); (_localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_operatorExpression); - this.state = 208; + this.state = 210; if (!(this.precpred(this._ctx, 2))) { throw new FailedPredicateException(this, "this.precpred(this._ctx, 2)"); } - this.state = 209; + this.state = 211; (_localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if (!(((((_la - 60)) & ~0x1F) === 0 && ((1 << (_la - 60)) & ((1 << (esql_parser.ASTERISK - 60)) | (1 << (esql_parser.SLASH - 60)) | (1 << (esql_parser.PERCENT - 60)))) !== 0))) { @@ -950,7 +953,7 @@ export class esql_parser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 210; + this.state = 212; (_localctx as ArithmeticBinaryContext)._right = this.operatorExpression(3); } break; @@ -960,11 +963,11 @@ export class esql_parser extends Parser { _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState)); (_localctx as ArithmeticBinaryContext)._left = _prevctx; this.pushNewRecursionContext(_localctx, _startState, esql_parser.RULE_operatorExpression); - this.state = 211; + this.state = 213; if (!(this.precpred(this._ctx, 1))) { throw new FailedPredicateException(this, "this.precpred(this._ctx, 1)"); } - this.state = 212; + this.state = 214; (_localctx as ArithmeticBinaryContext)._operator = this._input.LT(1); _la = this._input.LA(1); if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { @@ -977,14 +980,14 @@ export class esql_parser extends Parser { this._errHandler.reportMatch(this); this.consume(); } - this.state = 213; + this.state = 215; (_localctx as ArithmeticBinaryContext)._right = this.operatorExpression(2); } break; } } } - this.state = 218; + this.state = 220; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 15, this._ctx); } @@ -1009,14 +1012,14 @@ export class esql_parser extends Parser { let _localctx: PrimaryExpressionContext = new PrimaryExpressionContext(this._ctx, this.state); this.enterRule(_localctx, 18, esql_parser.RULE_primaryExpression); try { - this.state = 226; + this.state = 228; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 16, this._ctx) ) { case 1: _localctx = new ConstantDefaultContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 219; + this.state = 221; this.constant(); } break; @@ -1025,7 +1028,7 @@ export class esql_parser extends Parser { _localctx = new DereferenceContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 220; + this.state = 222; this.qualifiedName(); } break; @@ -1034,7 +1037,7 @@ export class esql_parser extends Parser { _localctx = new FunctionContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 221; + this.state = 223; this.functionExpression(); } break; @@ -1043,11 +1046,11 @@ export class esql_parser extends Parser { _localctx = new ParenthesizedExpressionContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 222; + this.state = 224; this.match(esql_parser.LP); - this.state = 223; + this.state = 225; this.booleanExpression(0); - this.state = 224; + this.state = 226; this.match(esql_parser.RP); } break; @@ -1075,16 +1078,16 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 228; + this.state = 230; this.identifier(); - this.state = 229; + this.state = 231; this.match(esql_parser.LP); - this.state = 239; + this.state = 241; this._errHandler.sync(this); switch (this._input.LA(1)) { case esql_parser.ASTERISK: { - this.state = 230; + this.state = 232; this.match(esql_parser.ASTERISK); } break; @@ -1104,21 +1107,21 @@ export class esql_parser extends Parser { case esql_parser.QUOTED_IDENTIFIER: { { - this.state = 231; + this.state = 233; this.booleanExpression(0); - this.state = 236; + this.state = 238; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === esql_parser.COMMA) { { { - this.state = 232; + this.state = 234; this.match(esql_parser.COMMA); - this.state = 233; + this.state = 235; this.booleanExpression(0); } } - this.state = 238; + this.state = 240; this._errHandler.sync(this); _la = this._input.LA(1); } @@ -1130,7 +1133,7 @@ export class esql_parser extends Parser { default: break; } - this.state = 241; + this.state = 243; this.match(esql_parser.RP); } } @@ -1155,9 +1158,9 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 243; + this.state = 245; this.match(esql_parser.ROW); - this.state = 244; + this.state = 246; this.fields(); } } @@ -1183,23 +1186,23 @@ export class esql_parser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 246; + this.state = 248; this.field(); - this.state = 251; + this.state = 253; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 19, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 247; + this.state = 249; this.match(esql_parser.COMMA); - this.state = 248; + this.state = 250; this.field(); } } } - this.state = 253; + this.state = 255; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 19, this._ctx); } @@ -1224,13 +1227,13 @@ export class esql_parser extends Parser { let _localctx: FieldContext = new FieldContext(this._ctx, this.state); this.enterRule(_localctx, 26, esql_parser.RULE_field); try { - this.state = 259; + this.state = 261; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 20, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 254; + this.state = 256; this.booleanExpression(0); } break; @@ -1238,11 +1241,11 @@ export class esql_parser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 255; + this.state = 257; this.qualifiedName(); - this.state = 256; + this.state = 258; this.match(esql_parser.ASSIGN); - this.state = 257; + this.state = 259; this.booleanExpression(0); } break; @@ -1270,34 +1273,34 @@ export class esql_parser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 261; + this.state = 263; this.match(esql_parser.FROM); - this.state = 262; + this.state = 264; this.fromIdentifier(); - this.state = 267; + this.state = 269; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 21, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 263; + this.state = 265; this.match(esql_parser.COMMA); - this.state = 264; + this.state = 266; this.fromIdentifier(); } } } - this.state = 269; + this.state = 271; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 21, this._ctx); } - this.state = 271; + this.state = 273; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 22, this._ctx) ) { case 1: { - this.state = 270; + this.state = 272; this.metadata(); } break; @@ -1323,20 +1326,20 @@ export class esql_parser extends Parser { let _localctx: MetadataContext = new MetadataContext(this._ctx, this.state); this.enterRule(_localctx, 30, esql_parser.RULE_metadata); try { - this.state = 275; + this.state = 277; this._errHandler.sync(this); switch (this._input.LA(1)) { case esql_parser.METADATA: this.enterOuterAlt(_localctx, 1); { - this.state = 273; + this.state = 275; this.metadataOption(); } break; case esql_parser.OPENING_BRACKET: this.enterOuterAlt(_localctx, 2); { - this.state = 274; + this.state = 276; this.deprecated_metadata(); } break; @@ -1366,25 +1369,25 @@ export class esql_parser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 277; + this.state = 279; this.match(esql_parser.METADATA); - this.state = 278; + this.state = 280; this.fromIdentifier(); - this.state = 283; + this.state = 285; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 24, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 279; + this.state = 281; this.match(esql_parser.COMMA); - this.state = 280; + this.state = 282; this.fromIdentifier(); } } } - this.state = 285; + this.state = 287; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 24, this._ctx); } @@ -1411,11 +1414,11 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 286; + this.state = 288; this.match(esql_parser.OPENING_BRACKET); - this.state = 287; + this.state = 289; this.metadataOption(); - this.state = 288; + this.state = 290; this.match(esql_parser.CLOSING_BRACKET); } } @@ -1440,9 +1443,9 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 290; + this.state = 292; this.match(esql_parser.EVAL); - this.state = 291; + this.state = 293; this.fields(); } } @@ -1467,26 +1470,26 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 293; - this.match(esql_parser.STATS); this.state = 295; + this.match(esql_parser.STATS); + this.state = 297; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 25, this._ctx) ) { case 1: { - this.state = 294; + this.state = 296; _localctx._stats = this.fields(); } break; } - this.state = 299; + this.state = 301; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 26, this._ctx) ) { case 1: { - this.state = 297; + this.state = 299; this.match(esql_parser.BY); - this.state = 298; + this.state = 300; _localctx._grouping = this.fields(); } break; @@ -1514,18 +1517,18 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 301; + this.state = 303; this.match(esql_parser.INLINESTATS); - this.state = 302; + this.state = 304; _localctx._stats = this.fields(); - this.state = 305; + this.state = 307; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 27, this._ctx) ) { case 1: { - this.state = 303; + this.state = 305; this.match(esql_parser.BY); - this.state = 304; + this.state = 306; _localctx._grouping = this.fields(); } break; @@ -1554,7 +1557,7 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 307; + this.state = 309; _la = this._input.LA(1); if (!(_la === esql_parser.QUOTED_IDENTIFIER || _la === esql_parser.FROM_UNQUOTED_IDENTIFIER)) { this._errHandler.recoverInline(this); @@ -1590,23 +1593,23 @@ export class esql_parser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 309; + this.state = 311; this.identifier(); - this.state = 314; + this.state = 316; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 28, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 310; + this.state = 312; this.match(esql_parser.DOT); - this.state = 311; + this.state = 313; this.identifier(); } } } - this.state = 316; + this.state = 318; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 28, this._ctx); } @@ -1634,23 +1637,23 @@ export class esql_parser extends Parser { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 317; + this.state = 319; this.identifierPattern(); - this.state = 322; + this.state = 324; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 29, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 318; + this.state = 320; this.match(esql_parser.DOT); - this.state = 319; + this.state = 321; this.identifierPattern(); } } } - this.state = 324; + this.state = 326; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 29, this._ctx); } @@ -1678,7 +1681,7 @@ export class esql_parser extends Parser { try { this.enterOuterAlt(_localctx, 1); { - this.state = 325; + this.state = 327; _la = this._input.LA(1); if (!(_la === esql_parser.UNQUOTED_IDENTIFIER || _la === esql_parser.QUOTED_IDENTIFIER)) { this._errHandler.recoverInline(this); @@ -1710,11 +1713,36 @@ export class esql_parser extends Parser { public identifierPattern(): IdentifierPatternContext { let _localctx: IdentifierPatternContext = new IdentifierPatternContext(this._ctx, this.state); this.enterRule(_localctx, 50, esql_parser.RULE_identifierPattern); + try { + this.enterOuterAlt(_localctx, 1); + { + this.state = 329; + this.match(esql_parser.ID_PATTERN); + } + } + catch (re) { + if (re instanceof RecognitionException) { + _localctx.exception = re; + this._errHandler.reportError(this, re); + this._errHandler.recover(this, re); + } else { + throw re; + } + } + finally { + this.exitRule(); + } + return _localctx; + } + // @RuleVersion(0) + public idPattern(): IdPatternContext { + let _localctx: IdPatternContext = new IdPatternContext(this._ctx, this.state); + this.enterRule(_localctx, 52, esql_parser.RULE_idPattern); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 327; + this.state = 331; _la = this._input.LA(1); if (!(_la === esql_parser.QUOTED_IDENTIFIER || _la === esql_parser.UNQUOTED_ID_PATTERN)) { this._errHandler.recoverInline(this); @@ -1745,17 +1773,17 @@ export class esql_parser extends Parser { // @RuleVersion(0) public constant(): ConstantContext { let _localctx: ConstantContext = new ConstantContext(this._ctx, this.state); - this.enterRule(_localctx, 52, esql_parser.RULE_constant); + this.enterRule(_localctx, 54, esql_parser.RULE_constant); let _la: number; try { - this.state = 371; + this.state = 375; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 33, this._ctx) ) { case 1: _localctx = new NullLiteralContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 329; + this.state = 333; this.match(esql_parser.NULL); } break; @@ -1764,9 +1792,9 @@ export class esql_parser extends Parser { _localctx = new QualifiedIntegerLiteralContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 330; + this.state = 334; this.integerValue(); - this.state = 331; + this.state = 335; this.match(esql_parser.UNQUOTED_IDENTIFIER); } break; @@ -1775,7 +1803,7 @@ export class esql_parser extends Parser { _localctx = new DecimalLiteralContext(_localctx); this.enterOuterAlt(_localctx, 3); { - this.state = 333; + this.state = 337; this.decimalValue(); } break; @@ -1784,7 +1812,7 @@ export class esql_parser extends Parser { _localctx = new IntegerLiteralContext(_localctx); this.enterOuterAlt(_localctx, 4); { - this.state = 334; + this.state = 338; this.integerValue(); } break; @@ -1793,7 +1821,7 @@ export class esql_parser extends Parser { _localctx = new BooleanLiteralContext(_localctx); this.enterOuterAlt(_localctx, 5); { - this.state = 335; + this.state = 339; this.booleanValue(); } break; @@ -1802,7 +1830,7 @@ export class esql_parser extends Parser { _localctx = new InputParamContext(_localctx); this.enterOuterAlt(_localctx, 6); { - this.state = 336; + this.state = 340; this.match(esql_parser.PARAM); } break; @@ -1811,7 +1839,7 @@ export class esql_parser extends Parser { _localctx = new StringLiteralContext(_localctx); this.enterOuterAlt(_localctx, 7); { - this.state = 337; + this.state = 341; this.string(); } break; @@ -1820,27 +1848,27 @@ export class esql_parser extends Parser { _localctx = new NumericArrayLiteralContext(_localctx); this.enterOuterAlt(_localctx, 8); { - this.state = 338; + this.state = 342; this.match(esql_parser.OPENING_BRACKET); - this.state = 339; + this.state = 343; this.numericValue(); - this.state = 344; + this.state = 348; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === esql_parser.COMMA) { { { - this.state = 340; + this.state = 344; this.match(esql_parser.COMMA); - this.state = 341; + this.state = 345; this.numericValue(); } } - this.state = 346; + this.state = 350; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 347; + this.state = 351; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -1849,27 +1877,27 @@ export class esql_parser extends Parser { _localctx = new BooleanArrayLiteralContext(_localctx); this.enterOuterAlt(_localctx, 9); { - this.state = 349; + this.state = 353; this.match(esql_parser.OPENING_BRACKET); - this.state = 350; + this.state = 354; this.booleanValue(); - this.state = 355; + this.state = 359; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === esql_parser.COMMA) { { { - this.state = 351; + this.state = 355; this.match(esql_parser.COMMA); - this.state = 352; + this.state = 356; this.booleanValue(); } } - this.state = 357; + this.state = 361; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 358; + this.state = 362; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -1878,27 +1906,27 @@ export class esql_parser extends Parser { _localctx = new StringArrayLiteralContext(_localctx); this.enterOuterAlt(_localctx, 10); { - this.state = 360; + this.state = 364; this.match(esql_parser.OPENING_BRACKET); - this.state = 361; + this.state = 365; this.string(); - this.state = 366; + this.state = 370; this._errHandler.sync(this); _la = this._input.LA(1); while (_la === esql_parser.COMMA) { { { - this.state = 362; + this.state = 366; this.match(esql_parser.COMMA); - this.state = 363; + this.state = 367; this.string(); } } - this.state = 368; + this.state = 372; this._errHandler.sync(this); _la = this._input.LA(1); } - this.state = 369; + this.state = 373; this.match(esql_parser.CLOSING_BRACKET); } break; @@ -1921,13 +1949,13 @@ export class esql_parser extends Parser { // @RuleVersion(0) public limitCommand(): LimitCommandContext { let _localctx: LimitCommandContext = new LimitCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 54, esql_parser.RULE_limitCommand); + this.enterRule(_localctx, 56, esql_parser.RULE_limitCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 373; + this.state = 377; this.match(esql_parser.LIMIT); - this.state = 374; + this.state = 378; this.match(esql_parser.INTEGER_LITERAL); } } @@ -1948,30 +1976,30 @@ export class esql_parser extends Parser { // @RuleVersion(0) public sortCommand(): SortCommandContext { let _localctx: SortCommandContext = new SortCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 56, esql_parser.RULE_sortCommand); + this.enterRule(_localctx, 58, esql_parser.RULE_sortCommand); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 376; + this.state = 380; this.match(esql_parser.SORT); - this.state = 377; + this.state = 381; this.orderExpression(); - this.state = 382; + this.state = 386; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 34, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 378; + this.state = 382; this.match(esql_parser.COMMA); - this.state = 379; + this.state = 383; this.orderExpression(); } } } - this.state = 384; + this.state = 388; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 34, this._ctx); } @@ -1994,19 +2022,19 @@ export class esql_parser extends Parser { // @RuleVersion(0) public orderExpression(): OrderExpressionContext { let _localctx: OrderExpressionContext = new OrderExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 58, esql_parser.RULE_orderExpression); + this.enterRule(_localctx, 60, esql_parser.RULE_orderExpression); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 385; + this.state = 389; this.booleanExpression(0); - this.state = 387; + this.state = 391; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 35, this._ctx) ) { case 1: { - this.state = 386; + this.state = 390; _localctx._ordering = this._input.LT(1); _la = this._input.LA(1); if (!(_la === esql_parser.ASC || _la === esql_parser.DESC)) { @@ -2022,14 +2050,14 @@ export class esql_parser extends Parser { } break; } - this.state = 391; + this.state = 395; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 36, this._ctx) ) { case 1: { - this.state = 389; + this.state = 393; this.match(esql_parser.NULLS); - this.state = 390; + this.state = 394; _localctx._nullOrdering = this._input.LT(1); _la = this._input.LA(1); if (!(_la === esql_parser.FIRST || _la === esql_parser.LAST)) { @@ -2064,30 +2092,30 @@ export class esql_parser extends Parser { // @RuleVersion(0) public keepCommand(): KeepCommandContext { let _localctx: KeepCommandContext = new KeepCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 60, esql_parser.RULE_keepCommand); + this.enterRule(_localctx, 62, esql_parser.RULE_keepCommand); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 393; + this.state = 397; this.match(esql_parser.KEEP); - this.state = 394; + this.state = 398; this.qualifiedNamePattern(); - this.state = 399; + this.state = 403; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 37, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 395; + this.state = 399; this.match(esql_parser.COMMA); - this.state = 396; + this.state = 400; this.qualifiedNamePattern(); } } } - this.state = 401; + this.state = 405; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 37, this._ctx); } @@ -2110,30 +2138,30 @@ export class esql_parser extends Parser { // @RuleVersion(0) public dropCommand(): DropCommandContext { let _localctx: DropCommandContext = new DropCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 62, esql_parser.RULE_dropCommand); + this.enterRule(_localctx, 64, esql_parser.RULE_dropCommand); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 402; + this.state = 406; this.match(esql_parser.DROP); - this.state = 403; + this.state = 407; this.qualifiedNamePattern(); - this.state = 408; + this.state = 412; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 38, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 404; + this.state = 408; this.match(esql_parser.COMMA); - this.state = 405; + this.state = 409; this.qualifiedNamePattern(); } } } - this.state = 410; + this.state = 414; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 38, this._ctx); } @@ -2156,30 +2184,30 @@ export class esql_parser extends Parser { // @RuleVersion(0) public renameCommand(): RenameCommandContext { let _localctx: RenameCommandContext = new RenameCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 64, esql_parser.RULE_renameCommand); + this.enterRule(_localctx, 66, esql_parser.RULE_renameCommand); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 411; + this.state = 415; this.match(esql_parser.RENAME); - this.state = 412; + this.state = 416; this.renameClause(); - this.state = 417; + this.state = 421; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 39, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 413; + this.state = 417; this.match(esql_parser.COMMA); - this.state = 414; + this.state = 418; this.renameClause(); } } } - this.state = 419; + this.state = 423; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 39, this._ctx); } @@ -2202,15 +2230,15 @@ export class esql_parser extends Parser { // @RuleVersion(0) public renameClause(): RenameClauseContext { let _localctx: RenameClauseContext = new RenameClauseContext(this._ctx, this.state); - this.enterRule(_localctx, 66, esql_parser.RULE_renameClause); + this.enterRule(_localctx, 68, esql_parser.RULE_renameClause); try { this.enterOuterAlt(_localctx, 1); { - this.state = 420; + this.state = 424; _localctx._oldName = this.qualifiedNamePattern(); - this.state = 421; + this.state = 425; this.match(esql_parser.AS); - this.state = 422; + this.state = 426; _localctx._newName = this.qualifiedNamePattern(); } } @@ -2231,22 +2259,22 @@ export class esql_parser extends Parser { // @RuleVersion(0) public dissectCommand(): DissectCommandContext { let _localctx: DissectCommandContext = new DissectCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 68, esql_parser.RULE_dissectCommand); + this.enterRule(_localctx, 70, esql_parser.RULE_dissectCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 424; + this.state = 428; this.match(esql_parser.DISSECT); - this.state = 425; + this.state = 429; this.primaryExpression(); - this.state = 426; + this.state = 430; this.string(); - this.state = 428; + this.state = 432; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 40, this._ctx) ) { case 1: { - this.state = 427; + this.state = 431; this.commandOptions(); } break; @@ -2270,15 +2298,15 @@ export class esql_parser extends Parser { // @RuleVersion(0) public grokCommand(): GrokCommandContext { let _localctx: GrokCommandContext = new GrokCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 70, esql_parser.RULE_grokCommand); + this.enterRule(_localctx, 72, esql_parser.RULE_grokCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 430; + this.state = 434; this.match(esql_parser.GROK); - this.state = 431; + this.state = 435; this.primaryExpression(); - this.state = 432; + this.state = 436; this.string(); } } @@ -2299,13 +2327,13 @@ export class esql_parser extends Parser { // @RuleVersion(0) public mvExpandCommand(): MvExpandCommandContext { let _localctx: MvExpandCommandContext = new MvExpandCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 72, esql_parser.RULE_mvExpandCommand); + this.enterRule(_localctx, 74, esql_parser.RULE_mvExpandCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 434; + this.state = 438; this.match(esql_parser.MV_EXPAND); - this.state = 435; + this.state = 439; this.qualifiedName(); } } @@ -2326,28 +2354,28 @@ export class esql_parser extends Parser { // @RuleVersion(0) public commandOptions(): CommandOptionsContext { let _localctx: CommandOptionsContext = new CommandOptionsContext(this._ctx, this.state); - this.enterRule(_localctx, 74, esql_parser.RULE_commandOptions); + this.enterRule(_localctx, 76, esql_parser.RULE_commandOptions); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 437; + this.state = 441; this.commandOption(); - this.state = 442; + this.state = 446; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 41, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 438; + this.state = 442; this.match(esql_parser.COMMA); - this.state = 439; + this.state = 443; this.commandOption(); } } } - this.state = 444; + this.state = 448; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 41, this._ctx); } @@ -2370,15 +2398,15 @@ export class esql_parser extends Parser { // @RuleVersion(0) public commandOption(): CommandOptionContext { let _localctx: CommandOptionContext = new CommandOptionContext(this._ctx, this.state); - this.enterRule(_localctx, 76, esql_parser.RULE_commandOption); + this.enterRule(_localctx, 78, esql_parser.RULE_commandOption); try { this.enterOuterAlt(_localctx, 1); { - this.state = 445; + this.state = 449; this.identifier(); - this.state = 446; + this.state = 450; this.match(esql_parser.ASSIGN); - this.state = 447; + this.state = 451; this.constant(); } } @@ -2399,12 +2427,12 @@ export class esql_parser extends Parser { // @RuleVersion(0) public booleanValue(): BooleanValueContext { let _localctx: BooleanValueContext = new BooleanValueContext(this._ctx, this.state); - this.enterRule(_localctx, 78, esql_parser.RULE_booleanValue); + this.enterRule(_localctx, 80, esql_parser.RULE_booleanValue); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 449; + this.state = 453; _la = this._input.LA(1); if (!(_la === esql_parser.FALSE || _la === esql_parser.TRUE)) { this._errHandler.recoverInline(this); @@ -2435,15 +2463,15 @@ export class esql_parser extends Parser { // @RuleVersion(0) public numericValue(): NumericValueContext { let _localctx: NumericValueContext = new NumericValueContext(this._ctx, this.state); - this.enterRule(_localctx, 80, esql_parser.RULE_numericValue); + this.enterRule(_localctx, 82, esql_parser.RULE_numericValue); try { - this.state = 453; + this.state = 457; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 42, this._ctx) ) { case 1: this.enterOuterAlt(_localctx, 1); { - this.state = 451; + this.state = 455; this.decimalValue(); } break; @@ -2451,7 +2479,7 @@ export class esql_parser extends Parser { case 2: this.enterOuterAlt(_localctx, 2); { - this.state = 452; + this.state = 456; this.integerValue(); } break; @@ -2474,17 +2502,17 @@ export class esql_parser extends Parser { // @RuleVersion(0) public decimalValue(): DecimalValueContext { let _localctx: DecimalValueContext = new DecimalValueContext(this._ctx, this.state); - this.enterRule(_localctx, 82, esql_parser.RULE_decimalValue); + this.enterRule(_localctx, 84, esql_parser.RULE_decimalValue); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 456; + this.state = 460; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.PLUS || _la === esql_parser.MINUS) { { - this.state = 455; + this.state = 459; _la = this._input.LA(1); if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { this._errHandler.recoverInline(this); @@ -2499,7 +2527,7 @@ export class esql_parser extends Parser { } } - this.state = 458; + this.state = 462; this.match(esql_parser.DECIMAL_LITERAL); } } @@ -2520,17 +2548,17 @@ export class esql_parser extends Parser { // @RuleVersion(0) public integerValue(): IntegerValueContext { let _localctx: IntegerValueContext = new IntegerValueContext(this._ctx, this.state); - this.enterRule(_localctx, 84, esql_parser.RULE_integerValue); + this.enterRule(_localctx, 86, esql_parser.RULE_integerValue); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 461; + this.state = 465; this._errHandler.sync(this); _la = this._input.LA(1); if (_la === esql_parser.PLUS || _la === esql_parser.MINUS) { { - this.state = 460; + this.state = 464; _la = this._input.LA(1); if (!(_la === esql_parser.PLUS || _la === esql_parser.MINUS)) { this._errHandler.recoverInline(this); @@ -2545,7 +2573,7 @@ export class esql_parser extends Parser { } } - this.state = 463; + this.state = 467; this.match(esql_parser.INTEGER_LITERAL); } } @@ -2566,11 +2594,11 @@ export class esql_parser extends Parser { // @RuleVersion(0) public string(): StringContext { let _localctx: StringContext = new StringContext(this._ctx, this.state); - this.enterRule(_localctx, 86, esql_parser.RULE_string); + this.enterRule(_localctx, 88, esql_parser.RULE_string); try { this.enterOuterAlt(_localctx, 1); { - this.state = 465; + this.state = 469; this.match(esql_parser.STRING); } } @@ -2591,12 +2619,12 @@ export class esql_parser extends Parser { // @RuleVersion(0) public comparisonOperator(): ComparisonOperatorContext { let _localctx: ComparisonOperatorContext = new ComparisonOperatorContext(this._ctx, this.state); - this.enterRule(_localctx, 88, esql_parser.RULE_comparisonOperator); + this.enterRule(_localctx, 90, esql_parser.RULE_comparisonOperator); let _la: number; try { this.enterOuterAlt(_localctx, 1); { - this.state = 467; + this.state = 471; _la = this._input.LA(1); if (!(((((_la - 51)) & ~0x1F) === 0 && ((1 << (_la - 51)) & ((1 << (esql_parser.EQ - 51)) | (1 << (esql_parser.CIEQ - 51)) | (1 << (esql_parser.NEQ - 51)) | (1 << (esql_parser.LT - 51)) | (1 << (esql_parser.LTE - 51)) | (1 << (esql_parser.GT - 51)) | (1 << (esql_parser.GTE - 51)))) !== 0))) { this._errHandler.recoverInline(this); @@ -2627,13 +2655,13 @@ export class esql_parser extends Parser { // @RuleVersion(0) public explainCommand(): ExplainCommandContext { let _localctx: ExplainCommandContext = new ExplainCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 90, esql_parser.RULE_explainCommand); + this.enterRule(_localctx, 92, esql_parser.RULE_explainCommand); try { this.enterOuterAlt(_localctx, 1); { - this.state = 469; + this.state = 473; this.match(esql_parser.EXPLAIN); - this.state = 470; + this.state = 474; this.subqueryExpression(); } } @@ -2654,15 +2682,15 @@ export class esql_parser extends Parser { // @RuleVersion(0) public subqueryExpression(): SubqueryExpressionContext { let _localctx: SubqueryExpressionContext = new SubqueryExpressionContext(this._ctx, this.state); - this.enterRule(_localctx, 92, esql_parser.RULE_subqueryExpression); + this.enterRule(_localctx, 94, esql_parser.RULE_subqueryExpression); try { this.enterOuterAlt(_localctx, 1); { - this.state = 472; + this.state = 476; this.match(esql_parser.OPENING_BRACKET); - this.state = 473; + this.state = 477; this.query(0); - this.state = 474; + this.state = 478; this.match(esql_parser.CLOSING_BRACKET); } } @@ -2683,18 +2711,18 @@ export class esql_parser extends Parser { // @RuleVersion(0) public showCommand(): ShowCommandContext { let _localctx: ShowCommandContext = new ShowCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 94, esql_parser.RULE_showCommand); + this.enterRule(_localctx, 96, esql_parser.RULE_showCommand); try { - this.state = 480; + this.state = 484; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 45, this._ctx) ) { case 1: _localctx = new ShowInfoContext(_localctx); this.enterOuterAlt(_localctx, 1); { - this.state = 476; + this.state = 480; this.match(esql_parser.SHOW); - this.state = 477; + this.state = 481; this.match(esql_parser.INFO); } break; @@ -2703,9 +2731,9 @@ export class esql_parser extends Parser { _localctx = new ShowFunctionsContext(_localctx); this.enterOuterAlt(_localctx, 2); { - this.state = 478; + this.state = 482; this.match(esql_parser.SHOW); - this.state = 479; + this.state = 483; this.match(esql_parser.FUNCTIONS); } break; @@ -2728,51 +2756,51 @@ export class esql_parser extends Parser { // @RuleVersion(0) public enrichCommand(): EnrichCommandContext { let _localctx: EnrichCommandContext = new EnrichCommandContext(this._ctx, this.state); - this.enterRule(_localctx, 96, esql_parser.RULE_enrichCommand); + this.enterRule(_localctx, 98, esql_parser.RULE_enrichCommand); try { let _alt: number; this.enterOuterAlt(_localctx, 1); { - this.state = 482; + this.state = 486; this.match(esql_parser.ENRICH); - this.state = 483; + this.state = 487; _localctx._policyName = this.match(esql_parser.ENRICH_POLICY_NAME); - this.state = 486; + this.state = 490; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 46, this._ctx) ) { case 1: { - this.state = 484; + this.state = 488; this.match(esql_parser.ON); - this.state = 485; + this.state = 489; _localctx._matchField = this.qualifiedNamePattern(); } break; } - this.state = 497; + this.state = 501; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 48, this._ctx) ) { case 1: { - this.state = 488; + this.state = 492; this.match(esql_parser.WITH); - this.state = 489; + this.state = 493; this.enrichWithClause(); - this.state = 494; + this.state = 498; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 47, this._ctx); while (_alt !== 2 && _alt !== ATN.INVALID_ALT_NUMBER) { if (_alt === 1) { { { - this.state = 490; + this.state = 494; this.match(esql_parser.COMMA); - this.state = 491; + this.state = 495; this.enrichWithClause(); } } } - this.state = 496; + this.state = 500; this._errHandler.sync(this); _alt = this.interpreter.adaptivePredict(this._input, 47, this._ctx); } @@ -2798,23 +2826,23 @@ export class esql_parser extends Parser { // @RuleVersion(0) public enrichWithClause(): EnrichWithClauseContext { let _localctx: EnrichWithClauseContext = new EnrichWithClauseContext(this._ctx, this.state); - this.enterRule(_localctx, 98, esql_parser.RULE_enrichWithClause); + this.enterRule(_localctx, 100, esql_parser.RULE_enrichWithClause); try { this.enterOuterAlt(_localctx, 1); { - this.state = 502; + this.state = 506; this._errHandler.sync(this); switch ( this.interpreter.adaptivePredict(this._input, 49, this._ctx) ) { case 1: { - this.state = 499; + this.state = 503; _localctx._newName = this.qualifiedNamePattern(); - this.state = 500; + this.state = 504; this.match(esql_parser.ASSIGN); } break; } - this.state = 504; + this.state = 508; _localctx._enrichField = this.qualifiedNamePattern(); } } @@ -2875,7 +2903,7 @@ export class esql_parser extends Parser { } public static readonly _serializedATN: string = - "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03j\u01FD\x04\x02" + + "\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x03k\u0201\x04\x02" + "\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06\x04\x07" + "\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r\t\r\x04" + "\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t\x12\x04" + @@ -2883,242 +2911,243 @@ export class esql_parser extends Parser { "\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x04\x1C\t\x1C\x04" + "\x1D\t\x1D\x04\x1E\t\x1E\x04\x1F\t\x1F\x04 \t \x04!\t!\x04\"\t\"\x04#" + "\t#\x04$\t$\x04%\t%\x04&\t&\x04\'\t\'\x04(\t(\x04)\t)\x04*\t*\x04+\t+" + - "\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x03\x02" + - "\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x07\x03" + - "p\n\x03\f\x03\x0E\x03s\v\x03\x03\x04\x03\x04\x03\x04\x03\x04\x05\x04y" + - "\n\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05" + - "\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x05\x05\x88\n\x05\x03\x06\x03" + - "\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x05" + - "\x07\x94\n\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x07\x07\x9B\n\x07" + - "\f\x07\x0E\x07\x9E\v\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x05\x07" + - "\xA5\n\x07\x03\x07\x03\x07\x05\x07\xA9\n\x07\x03\x07\x03\x07\x03\x07\x03" + - "\x07\x03\x07\x03\x07\x07\x07\xB1\n\x07\f\x07\x0E\x07\xB4\v\x07\x03\b\x03" + - "\b\x05\b\xB8\n\b\x03\b\x03\b\x03\b\x03\b\x03\b\x05\b\xBF\n\b\x03\b\x03" + - "\b\x03\b\x05\b\xC4\n\b\x03\t\x03\t\x03\t\x03\t\x03\t\x05\t\xCB\n\t\x03" + - "\n\x03\n\x03\n\x03\n\x05\n\xD1\n\n\x03\n\x03\n\x03\n\x03\n\x03\n\x03\n" + - "\x07\n\xD9\n\n\f\n\x0E\n\xDC\v\n\x03\v\x03\v\x03\v\x03\v\x03\v\x03\v\x03" + - "\v\x05\v\xE5\n\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x07\f\xED\n\f\f\f" + - "\x0E\f\xF0\v\f\x05\f\xF2\n\f\x03\f\x03\f\x03\r\x03\r\x03\r\x03\x0E\x03" + - "\x0E\x03\x0E\x07\x0E\xFC\n\x0E\f\x0E\x0E\x0E\xFF\v\x0E\x03\x0F\x03\x0F" + - "\x03\x0F\x03\x0F\x03\x0F\x05\x0F\u0106\n\x0F\x03\x10\x03\x10\x03\x10\x03" + - "\x10\x07\x10\u010C\n\x10\f\x10\x0E\x10\u010F\v\x10\x03\x10\x05\x10\u0112" + - "\n\x10\x03\x11\x03\x11\x05\x11\u0116\n\x11\x03\x12\x03\x12\x03\x12\x03" + - "\x12\x07\x12\u011C\n\x12\f\x12\x0E\x12\u011F\v\x12\x03\x13\x03\x13\x03" + - "\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x05\x15\u012A\n\x15" + - "\x03\x15\x03\x15\x05\x15\u012E\n\x15\x03\x16\x03\x16\x03\x16\x03\x16\x05" + - "\x16\u0134\n\x16\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18\x07\x18\u013B" + - "\n\x18\f\x18\x0E\x18\u013E\v\x18\x03\x19\x03\x19\x03\x19\x07\x19\u0143" + - "\n\x19\f\x19\x0E\x19\u0146\v\x19\x03\x1A\x03\x1A\x03\x1B\x03\x1B\x03\x1C" + - "\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C" + - "\x03\x1C\x03\x1C\x03\x1C\x07\x1C\u0159\n\x1C\f\x1C\x0E\x1C\u015C\v\x1C" + - "\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x07\x1C\u0164\n\x1C\f" + - "\x1C\x0E\x1C\u0167\v\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C\x03\x1C" + - "\x07\x1C\u016F\n\x1C\f\x1C\x0E\x1C\u0172\v\x1C\x03\x1C\x03\x1C\x05\x1C" + - "\u0176\n\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1E\x03\x1E\x03\x1E\x03\x1E\x07" + - "\x1E\u017F\n\x1E\f\x1E\x0E\x1E\u0182\v\x1E\x03\x1F\x03\x1F\x05\x1F\u0186" + - "\n\x1F\x03\x1F\x03\x1F\x05\x1F\u018A\n\x1F\x03 \x03 \x03 \x03 \x07 \u0190" + - "\n \f \x0E \u0193\v \x03!\x03!\x03!\x03!\x07!\u0199\n!\f!\x0E!\u019C\v" + - "!\x03\"\x03\"\x03\"\x03\"\x07\"\u01A2\n\"\f\"\x0E\"\u01A5\v\"\x03#\x03" + - "#\x03#\x03#\x03$\x03$\x03$\x03$\x05$\u01AF\n$\x03%\x03%\x03%\x03%\x03" + - "&\x03&\x03&\x03\'\x03\'\x03\'\x07\'\u01BB\n\'\f\'\x0E\'\u01BE\v\'\x03" + - "(\x03(\x03(\x03(\x03)\x03)\x03*\x03*\x05*\u01C8\n*\x03+\x05+\u01CB\n+" + - "\x03+\x03+\x03,\x05,\u01D0\n,\x03,\x03,\x03-\x03-\x03.\x03.\x03/\x03/" + - "\x03/\x030\x030\x030\x030\x031\x031\x031\x031\x051\u01E3\n1\x032\x032" + - "\x032\x032\x052\u01E9\n2\x032\x032\x032\x032\x072\u01EF\n2\f2\x0E2\u01F2" + - "\v2\x052\u01F4\n2\x033\x033\x033\x053\u01F9\n3\x033\x033\x033\x02\x02" + - "\x05\x04\f\x124\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10" + + "\x04,\t,\x04-\t-\x04.\t.\x04/\t/\x040\t0\x041\t1\x042\t2\x043\t3\x044" + + "\t4\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03" + + "\x03\x07\x03r\n\x03\f\x03\x0E\x03u\v\x03\x03\x04\x03\x04\x03\x04\x03\x04" + + "\x05\x04{\n\x04\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05" + + "\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x03\x05\x05\x05\x8A\n\x05\x03" + + "\x06\x03\x06\x03\x06\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03" + + "\x07\x05\x07\x96\n\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03\x07\x07\x07" + + "\x9D\n\x07\f\x07\x0E\x07\xA0\v\x07\x03\x07\x03\x07\x03\x07\x03\x07\x03" + + "\x07\x05\x07\xA7\n\x07\x03\x07\x03\x07\x05\x07\xAB\n\x07\x03\x07\x03\x07" + + "\x03\x07\x03\x07\x03\x07\x03\x07\x07\x07\xB3\n\x07\f\x07\x0E\x07\xB6\v" + + "\x07\x03\b\x03\b\x05\b\xBA\n\b\x03\b\x03\b\x03\b\x03\b\x03\b\x05\b\xC1" + + "\n\b\x03\b\x03\b\x03\b\x05\b\xC6\n\b\x03\t\x03\t\x03\t\x03\t\x03\t\x05" + + "\t\xCD\n\t\x03\n\x03\n\x03\n\x03\n\x05\n\xD3\n\n\x03\n\x03\n\x03\n\x03" + + "\n\x03\n\x03\n\x07\n\xDB\n\n\f\n\x0E\n\xDE\v\n\x03\v\x03\v\x03\v\x03\v" + + "\x03\v\x03\v\x03\v\x05\v\xE7\n\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x07" + + "\f\xEF\n\f\f\f\x0E\f\xF2\v\f\x05\f\xF4\n\f\x03\f\x03\f\x03\r\x03\r\x03" + + "\r\x03\x0E\x03\x0E\x03\x0E\x07\x0E\xFE\n\x0E\f\x0E\x0E\x0E\u0101\v\x0E" + + "\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x03\x0F\x05\x0F\u0108\n\x0F\x03\x10\x03" + + "\x10\x03\x10\x03\x10\x07\x10\u010E\n\x10\f\x10\x0E\x10\u0111\v\x10\x03" + + "\x10\x05\x10\u0114\n\x10\x03\x11\x03\x11\x05\x11\u0118\n\x11\x03\x12\x03" + + "\x12\x03\x12\x03\x12\x07\x12\u011E\n\x12\f\x12\x0E\x12\u0121\v\x12\x03" + + "\x13\x03\x13\x03\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x05" + + "\x15\u012C\n\x15\x03\x15\x03\x15\x05\x15\u0130\n\x15\x03\x16\x03\x16\x03" + + "\x16\x03\x16\x05\x16\u0136\n\x16\x03\x17\x03\x17\x03\x18\x03\x18\x03\x18" + + "\x07\x18\u013D\n\x18\f\x18\x0E\x18\u0140\v\x18\x03\x19\x03\x19\x03\x19" + + "\x07\x19\u0145\n\x19\f\x19\x0E\x19\u0148\v\x19\x03\x1A\x03\x1A\x03\x1B" + + "\x03\x1B\x03\x1C\x03\x1C\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D" + + "\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x07\x1D\u015D" + + "\n\x1D\f\x1D\x0E\x1D\u0160\v\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x03\x1D" + + "\x03\x1D\x07\x1D\u0168\n\x1D\f\x1D\x0E\x1D\u016B\v\x1D\x03\x1D\x03\x1D" + + "\x03\x1D\x03\x1D\x03\x1D\x03\x1D\x07\x1D\u0173\n\x1D\f\x1D\x0E\x1D\u0176" + + "\v\x1D\x03\x1D\x03\x1D\x05\x1D\u017A\n\x1D\x03\x1E\x03\x1E\x03\x1E\x03" + + "\x1F\x03\x1F\x03\x1F\x03\x1F\x07\x1F\u0183\n\x1F\f\x1F\x0E\x1F\u0186\v" + + "\x1F\x03 \x03 \x05 \u018A\n \x03 \x03 \x05 \u018E\n \x03!\x03!\x03!\x03" + + "!\x07!\u0194\n!\f!\x0E!\u0197\v!\x03\"\x03\"\x03\"\x03\"\x07\"\u019D\n" + + "\"\f\"\x0E\"\u01A0\v\"\x03#\x03#\x03#\x03#\x07#\u01A6\n#\f#\x0E#\u01A9" + + "\v#\x03$\x03$\x03$\x03$\x03%\x03%\x03%\x03%\x05%\u01B3\n%\x03&\x03&\x03" + + "&\x03&\x03\'\x03\'\x03\'\x03(\x03(\x03(\x07(\u01BF\n(\f(\x0E(\u01C2\v" + + "(\x03)\x03)\x03)\x03)\x03*\x03*\x03+\x03+\x05+\u01CC\n+\x03,\x05,\u01CF" + + "\n,\x03,\x03,\x03-\x05-\u01D4\n-\x03-\x03-\x03.\x03.\x03/\x03/\x030\x03" + + "0\x030\x031\x031\x031\x031\x032\x032\x032\x032\x052\u01E7\n2\x033\x03" + + "3\x033\x033\x053\u01ED\n3\x033\x033\x033\x033\x073\u01F3\n3\f3\x0E3\u01F6" + + "\v3\x053\u01F8\n3\x034\x034\x034\x054\u01FD\n4\x034\x034\x034\x02\x02" + + "\x05\x04\f\x125\x02\x02\x04\x02\x06\x02\b\x02\n\x02\f\x02\x0E\x02\x10" + "\x02\x12\x02\x14\x02\x16\x02\x18\x02\x1A\x02\x1C\x02\x1E\x02 \x02\"\x02" + "$\x02&\x02(\x02*\x02,\x02.\x020\x022\x024\x026\x028\x02:\x02<\x02>\x02" + "@\x02B\x02D\x02F\x02H\x02J\x02L\x02N\x02P\x02R\x02T\x02V\x02X\x02Z\x02" + - "\\\x02^\x02`\x02b\x02d\x02\x02\v\x03\x02<=\x03\x02>@\x04\x02DDII\x03\x02" + - "CD\x04\x02DDMM\x04\x02!!$$\x03\x02\'(\x04\x02&&44\x03\x025;\x02\u0217" + - "\x02f\x03\x02\x02\x02\x04i\x03\x02\x02\x02\x06x\x03\x02\x02\x02\b\x87" + - "\x03\x02\x02\x02\n\x89\x03\x02\x02\x02\f\xA8\x03\x02\x02\x02\x0E\xC3\x03" + - "\x02\x02\x02\x10\xCA\x03\x02\x02\x02\x12\xD0\x03\x02\x02\x02\x14\xE4\x03" + - "\x02\x02\x02\x16\xE6\x03\x02\x02\x02\x18\xF5\x03\x02\x02\x02\x1A\xF8\x03" + - "\x02\x02\x02\x1C\u0105\x03\x02\x02\x02\x1E\u0107\x03\x02\x02\x02 \u0115" + - "\x03\x02\x02\x02\"\u0117\x03\x02\x02\x02$\u0120\x03\x02\x02\x02&\u0124" + - "\x03\x02\x02\x02(\u0127\x03\x02\x02\x02*\u012F\x03\x02\x02\x02,\u0135" + - "\x03\x02\x02\x02.\u0137\x03\x02\x02\x020\u013F\x03\x02\x02\x022\u0147" + - "\x03\x02\x02\x024\u0149\x03\x02\x02\x026\u0175\x03\x02\x02\x028\u0177" + - "\x03\x02\x02\x02:\u017A\x03\x02\x02\x02<\u0183\x03\x02\x02\x02>\u018B" + - "\x03\x02\x02\x02@\u0194\x03\x02\x02\x02B\u019D\x03\x02\x02\x02D\u01A6" + - "\x03\x02\x02\x02F\u01AA\x03\x02\x02\x02H\u01B0\x03\x02\x02\x02J\u01B4" + - "\x03\x02\x02\x02L\u01B7\x03\x02\x02\x02N\u01BF\x03\x02\x02\x02P\u01C3" + - "\x03\x02\x02\x02R\u01C7\x03\x02\x02\x02T\u01CA\x03\x02\x02\x02V\u01CF" + - "\x03\x02\x02\x02X\u01D3\x03\x02\x02\x02Z\u01D5\x03\x02\x02\x02\\\u01D7" + - "\x03\x02\x02\x02^\u01DA\x03\x02\x02\x02`\u01E2\x03\x02\x02\x02b\u01E4" + - "\x03\x02\x02\x02d\u01F8\x03\x02\x02\x02fg\x05\x04\x03\x02gh\x07\x02\x02" + - "\x03h\x03\x03\x02\x02\x02ij\b\x03\x01\x02jk\x05\x06\x04\x02kq\x03\x02" + - "\x02\x02lm\f\x03\x02\x02mn\x07\x1B\x02\x02np\x05\b\x05\x02ol\x03\x02\x02" + - "\x02ps\x03\x02\x02\x02qo\x03\x02\x02\x02qr\x03\x02\x02\x02r\x05\x03\x02" + - "\x02\x02sq\x03\x02\x02\x02ty\x05\\/\x02uy\x05\x1E\x10\x02vy\x05\x18\r" + - "\x02wy\x05`1\x02xt\x03\x02\x02\x02xu\x03\x02\x02\x02xv\x03\x02\x02\x02" + - "xw\x03\x02\x02\x02y\x07\x03\x02\x02\x02z\x88\x05&\x14\x02{\x88\x05*\x16" + - "\x02|\x88\x058\x1D\x02}\x88\x05> \x02~\x88\x05:\x1E\x02\x7F\x88\x05(\x15" + - "\x02\x80\x88\x05\n\x06\x02\x81\x88\x05@!\x02\x82\x88\x05B\"\x02\x83\x88" + - "\x05F$\x02\x84\x88\x05H%\x02\x85\x88\x05b2\x02\x86\x88\x05J&\x02\x87z" + - "\x03\x02\x02\x02\x87{\x03\x02\x02\x02\x87|\x03\x02\x02\x02\x87}\x03\x02" + - "\x02\x02\x87~\x03\x02\x02\x02\x87\x7F\x03\x02\x02\x02\x87\x80\x03\x02" + - "\x02\x02\x87\x81\x03\x02\x02\x02\x87\x82\x03\x02\x02\x02\x87\x83\x03\x02" + - "\x02\x02\x87\x84\x03\x02\x02\x02\x87\x85\x03\x02\x02\x02\x87\x86\x03\x02" + - "\x02\x02\x88\t\x03\x02\x02\x02\x89\x8A\x07\x13\x02\x02\x8A\x8B\x05\f\x07" + - "\x02\x8B\v\x03\x02\x02\x02\x8C\x8D\b\x07\x01\x02\x8D\x8E\x07-\x02\x02" + - "\x8E\xA9\x05\f\x07\t\x8F\xA9\x05\x10\t\x02\x90\xA9\x05\x0E\b\x02\x91\x93" + - "\x05\x10\t\x02\x92\x94\x07-\x02\x02\x93\x92\x03\x02\x02\x02\x93\x94\x03" + - "\x02\x02\x02\x94\x95\x03\x02\x02\x02\x95\x96\x07*\x02\x02\x96\x97\x07" + - ")\x02\x02\x97\x9C\x05\x10\t\x02\x98\x99\x07#\x02\x02\x99\x9B\x05\x10\t" + - "\x02\x9A\x98\x03\x02\x02\x02\x9B\x9E\x03\x02\x02\x02\x9C\x9A\x03\x02\x02" + - "\x02\x9C\x9D\x03\x02\x02\x02\x9D\x9F\x03\x02\x02\x02\x9E\x9C\x03\x02\x02" + - "\x02\x9F\xA0\x073\x02\x02\xA0\xA9\x03\x02\x02\x02\xA1\xA2\x05\x10\t\x02" + - "\xA2\xA4\x07+\x02\x02\xA3\xA5\x07-\x02\x02\xA4\xA3\x03\x02\x02\x02\xA4" + - "\xA5\x03\x02\x02\x02\xA5\xA6\x03\x02\x02\x02\xA6\xA7\x07.\x02\x02\xA7" + - "\xA9\x03\x02\x02\x02\xA8\x8C\x03\x02\x02\x02\xA8\x8F\x03\x02\x02\x02\xA8" + - "\x90\x03\x02\x02\x02\xA8\x91\x03\x02\x02\x02\xA8\xA1\x03\x02\x02\x02\xA9" + - "\xB2\x03\x02\x02\x02\xAA\xAB\f\x06\x02\x02\xAB\xAC\x07 \x02\x02\xAC\xB1" + - "\x05\f\x07\x07\xAD\xAE\f\x05\x02\x02\xAE\xAF\x070\x02\x02\xAF\xB1\x05" + - "\f\x07\x06\xB0\xAA\x03\x02\x02\x02\xB0\xAD\x03\x02\x02\x02\xB1\xB4\x03" + - "\x02\x02\x02\xB2\xB0\x03\x02\x02\x02\xB2\xB3\x03\x02\x02\x02\xB3\r\x03" + - "\x02\x02\x02\xB4\xB2\x03\x02\x02\x02\xB5\xB7\x05\x10\t\x02\xB6\xB8\x07" + - "-\x02\x02\xB7\xB6\x03\x02\x02\x02\xB7\xB8\x03\x02\x02\x02\xB8\xB9\x03" + - "\x02\x02\x02\xB9\xBA\x07,\x02\x02\xBA\xBB\x05X-\x02\xBB\xC4\x03\x02\x02" + - "\x02\xBC\xBE\x05\x10\t\x02\xBD\xBF\x07-\x02\x02\xBE\xBD\x03\x02\x02\x02" + - "\xBE\xBF\x03\x02\x02\x02\xBF\xC0\x03\x02\x02\x02\xC0\xC1\x072\x02\x02" + - "\xC1\xC2\x05X-\x02\xC2\xC4\x03\x02\x02\x02\xC3\xB5\x03\x02\x02\x02\xC3" + - "\xBC\x03\x02\x02\x02\xC4\x0F\x03\x02\x02\x02\xC5\xCB\x05\x12\n\x02\xC6" + - "\xC7\x05\x12\n\x02\xC7\xC8\x05Z.\x02\xC8\xC9\x05\x12\n\x02\xC9\xCB\x03" + - "\x02\x02\x02\xCA\xC5\x03\x02\x02\x02\xCA\xC6\x03\x02\x02\x02\xCB\x11\x03" + - "\x02\x02\x02\xCC\xCD\b\n\x01\x02\xCD\xD1\x05\x14\v\x02\xCE\xCF\t\x02\x02" + - "\x02\xCF\xD1\x05\x12\n\x05\xD0\xCC\x03\x02\x02\x02\xD0\xCE\x03\x02\x02" + - "\x02\xD1\xDA\x03\x02\x02\x02\xD2\xD3\f\x04\x02\x02\xD3\xD4\t\x03\x02\x02" + - "\xD4\xD9\x05\x12\n\x05\xD5\xD6\f\x03\x02\x02\xD6\xD7\t\x02\x02\x02\xD7" + - "\xD9\x05\x12\n\x04\xD8\xD2\x03\x02\x02\x02\xD8\xD5\x03\x02\x02\x02\xD9" + - "\xDC\x03\x02\x02\x02\xDA\xD8\x03\x02\x02\x02\xDA\xDB\x03\x02\x02\x02\xDB" + - "\x13\x03\x02\x02\x02\xDC\xDA\x03\x02\x02\x02\xDD\xE5\x056\x1C\x02\xDE" + - "\xE5\x05.\x18\x02\xDF\xE5\x05\x16\f\x02\xE0\xE1\x07)\x02\x02\xE1\xE2\x05" + - "\f\x07\x02\xE2\xE3\x073\x02\x02\xE3\xE5\x03\x02\x02\x02\xE4\xDD\x03\x02" + - "\x02\x02\xE4\xDE\x03\x02\x02\x02\xE4\xDF\x03\x02\x02\x02\xE4\xE0\x03\x02" + - "\x02\x02\xE5\x15\x03\x02\x02\x02\xE6\xE7\x052\x1A\x02\xE7\xF1\x07)\x02" + - "\x02\xE8\xF2\x07>\x02\x02\xE9\xEE\x05\f\x07\x02\xEA\xEB\x07#\x02\x02\xEB" + - "\xED\x05\f\x07\x02\xEC\xEA\x03\x02\x02\x02\xED\xF0\x03\x02\x02\x02\xEE" + - "\xEC\x03\x02\x02\x02\xEE\xEF\x03\x02\x02\x02\xEF\xF2\x03\x02\x02\x02\xF0" + - "\xEE\x03\x02\x02\x02\xF1\xE8\x03\x02\x02\x02\xF1\xE9\x03\x02\x02\x02\xF1" + - "\xF2\x03\x02\x02\x02\xF2\xF3\x03\x02\x02\x02\xF3\xF4\x073\x02\x02\xF4" + - "\x17\x03\x02\x02\x02\xF5\xF6\x07\x0F\x02\x02\xF6\xF7\x05\x1A\x0E\x02\xF7" + - "\x19\x03\x02\x02\x02\xF8\xFD\x05\x1C\x0F\x02\xF9\xFA\x07#\x02\x02\xFA" + - "\xFC\x05\x1C\x0F\x02\xFB\xF9\x03\x02\x02\x02\xFC\xFF\x03\x02\x02\x02\xFD" + - "\xFB\x03\x02\x02\x02\xFD\xFE\x03\x02\x02\x02\xFE\x1B\x03\x02\x02\x02\xFF" + - "\xFD\x03\x02\x02\x02\u0100\u0106\x05\f\x07\x02\u0101\u0102\x05.\x18\x02" + - "\u0102\u0103\x07\"\x02\x02\u0103\u0104\x05\f\x07\x02\u0104\u0106\x03\x02" + - "\x02\x02\u0105\u0100\x03\x02\x02\x02\u0105\u0101\x03\x02\x02\x02\u0106" + - "\x1D\x03\x02\x02\x02\u0107\u0108\x07\b\x02\x02\u0108\u010D\x05,\x17\x02" + - "\u0109\u010A\x07#\x02\x02\u010A\u010C\x05,\x17\x02\u010B\u0109\x03\x02" + - "\x02\x02\u010C\u010F\x03\x02\x02\x02\u010D\u010B\x03\x02\x02\x02\u010D" + - "\u010E\x03\x02\x02\x02\u010E\u0111\x03\x02\x02\x02\u010F\u010D\x03\x02" + - "\x02\x02\u0110\u0112\x05 \x11\x02\u0111\u0110\x03\x02\x02\x02\u0111\u0112" + - "\x03\x02\x02\x02\u0112\x1F\x03\x02\x02\x02\u0113\u0116\x05\"\x12\x02\u0114" + - "\u0116\x05$\x13\x02\u0115\u0113\x03\x02\x02\x02\u0115\u0114\x03\x02\x02" + - "\x02\u0116!\x03\x02\x02\x02\u0117\u0118\x07H\x02\x02\u0118\u011D\x05," + - "\x17\x02\u0119\u011A\x07#\x02\x02\u011A\u011C\x05,\x17\x02\u011B\u0119" + - "\x03\x02\x02\x02\u011C\u011F\x03\x02\x02\x02\u011D\u011B\x03\x02\x02\x02" + - "\u011D\u011E\x03\x02\x02\x02\u011E#\x03\x02\x02\x02\u011F\u011D\x03\x02" + - "\x02\x02\u0120\u0121\x07A\x02\x02\u0121\u0122\x05\"\x12\x02\u0122\u0123" + - "\x07B\x02\x02\u0123%\x03\x02\x02\x02\u0124\u0125\x07\x06\x02\x02\u0125" + - "\u0126\x05\x1A\x0E\x02\u0126\'\x03\x02\x02\x02\u0127\u0129\x07\x12\x02" + - "\x02\u0128\u012A\x05\x1A\x0E\x02\u0129\u0128\x03\x02\x02\x02\u0129\u012A" + - "\x03\x02\x02\x02\u012A\u012D\x03\x02\x02\x02\u012B\u012C\x07\x1F\x02\x02" + - "\u012C\u012E\x05\x1A\x0E\x02\u012D\u012B\x03\x02\x02\x02\u012D\u012E\x03" + - "\x02\x02\x02\u012E)\x03\x02\x02\x02\u012F\u0130\x07\n\x02\x02\u0130\u0133" + - "\x05\x1A\x0E\x02\u0131\u0132\x07\x1F\x02\x02\u0132\u0134\x05\x1A\x0E\x02" + - "\u0133\u0131\x03\x02\x02\x02\u0133\u0134\x03\x02\x02\x02\u0134+\x03\x02" + - "\x02\x02\u0135\u0136\t\x04\x02\x02\u0136-\x03\x02\x02\x02\u0137\u013C" + - "\x052\x1A\x02\u0138\u0139\x07%\x02\x02\u0139\u013B\x052\x1A\x02\u013A" + - "\u0138\x03\x02\x02\x02\u013B\u013E\x03\x02\x02\x02\u013C\u013A\x03\x02" + - "\x02\x02\u013C\u013D\x03\x02\x02\x02\u013D/\x03\x02\x02\x02\u013E\u013C" + - "\x03\x02\x02\x02\u013F\u0144\x054\x1B\x02\u0140\u0141\x07%\x02\x02\u0141" + - "\u0143\x054\x1B\x02\u0142\u0140\x03\x02\x02\x02\u0143\u0146\x03\x02\x02" + - "\x02\u0144\u0142\x03\x02\x02\x02\u0144\u0145\x03\x02\x02\x02\u01451\x03" + - "\x02\x02\x02\u0146\u0144\x03\x02\x02\x02\u0147\u0148\t\x05\x02\x02\u0148" + - "3\x03\x02\x02\x02\u0149\u014A\t\x06\x02\x02\u014A5\x03\x02\x02\x02\u014B" + - "\u0176\x07.\x02\x02\u014C\u014D\x05V,\x02\u014D\u014E\x07C\x02\x02\u014E" + - "\u0176\x03\x02\x02\x02\u014F\u0176\x05T+\x02\u0150\u0176\x05V,\x02\u0151" + - "\u0176\x05P)\x02\u0152\u0176\x071\x02\x02\u0153\u0176\x05X-\x02\u0154" + - "\u0155\x07A\x02\x02\u0155\u015A\x05R*\x02\u0156\u0157\x07#\x02\x02\u0157" + - "\u0159\x05R*\x02\u0158\u0156\x03\x02\x02\x02\u0159\u015C\x03\x02\x02\x02" + - "\u015A\u0158\x03\x02\x02\x02\u015A\u015B\x03\x02\x02\x02\u015B\u015D\x03" + - "\x02\x02\x02\u015C\u015A\x03\x02\x02\x02\u015D\u015E\x07B\x02\x02\u015E" + - "\u0176\x03\x02\x02\x02\u015F\u0160\x07A\x02\x02\u0160\u0165\x05P)\x02" + - "\u0161\u0162\x07#\x02\x02\u0162\u0164\x05P)\x02\u0163\u0161\x03\x02\x02" + - "\x02\u0164\u0167\x03\x02\x02\x02\u0165\u0163\x03\x02\x02\x02\u0165\u0166" + - "\x03\x02\x02\x02\u0166\u0168\x03\x02\x02\x02\u0167\u0165\x03\x02\x02\x02" + - "\u0168\u0169\x07B\x02\x02\u0169\u0176\x03\x02\x02\x02\u016A\u016B\x07" + - "A\x02\x02\u016B\u0170\x05X-\x02\u016C\u016D\x07#\x02\x02\u016D\u016F\x05" + - "X-\x02\u016E\u016C\x03\x02\x02\x02\u016F\u0172\x03\x02\x02\x02\u0170\u016E" + - "\x03\x02\x02\x02\u0170\u0171\x03\x02\x02\x02\u0171\u0173\x03\x02\x02\x02" + - "\u0172\u0170\x03\x02\x02\x02\u0173\u0174\x07B\x02\x02\u0174\u0176\x03" + - "\x02\x02\x02\u0175\u014B\x03\x02\x02\x02\u0175\u014C\x03\x02\x02\x02\u0175" + - "\u014F\x03\x02\x02\x02\u0175\u0150\x03\x02\x02\x02\u0175\u0151\x03\x02" + - "\x02\x02\u0175\u0152\x03\x02\x02\x02\u0175\u0153\x03\x02\x02\x02\u0175" + - "\u0154\x03\x02\x02\x02\u0175\u015F\x03\x02\x02\x02\u0175\u016A\x03\x02" + - "\x02\x02\u01767\x03\x02\x02\x02\u0177\u0178\x07\f\x02\x02\u0178\u0179" + - "\x07\x1D\x02\x02\u01799\x03\x02\x02\x02\u017A\u017B\x07\x11\x02\x02\u017B" + - "\u0180\x05<\x1F\x02\u017C\u017D\x07#\x02\x02\u017D\u017F\x05<\x1F\x02" + - "\u017E\u017C\x03\x02\x02\x02\u017F\u0182\x03\x02\x02\x02\u0180\u017E\x03" + - "\x02\x02\x02\u0180\u0181\x03\x02\x02\x02\u0181;\x03\x02\x02\x02\u0182" + - "\u0180\x03\x02\x02\x02\u0183\u0185\x05\f\x07\x02\u0184\u0186\t\x07\x02" + - "\x02\u0185\u0184\x03\x02\x02\x02\u0185\u0186\x03\x02\x02\x02\u0186\u0189" + - "\x03\x02\x02\x02\u0187\u0188\x07/\x02\x02\u0188\u018A\t\b\x02\x02\u0189" + - "\u0187\x03\x02\x02\x02\u0189\u018A\x03\x02\x02\x02\u018A=\x03\x02\x02" + - "\x02\u018B\u018C\x07\v\x02\x02\u018C\u0191\x050\x19\x02\u018D\u018E\x07" + - "#\x02\x02\u018E\u0190\x050\x19\x02\u018F\u018D\x03\x02\x02\x02\u0190\u0193" + - "\x03\x02\x02\x02\u0191\u018F\x03\x02\x02\x02\u0191\u0192\x03\x02\x02\x02" + - "\u0192?\x03\x02\x02\x02\u0193\u0191\x03\x02\x02\x02\u0194\u0195\x07\x04" + - "\x02\x02\u0195\u019A\x050\x19\x02\u0196\u0197\x07#\x02\x02\u0197\u0199" + - "\x050\x19\x02\u0198\u0196\x03\x02\x02\x02\u0199\u019C\x03\x02\x02\x02" + - "\u019A\u0198\x03\x02\x02\x02\u019A\u019B\x03\x02\x02\x02\u019BA\x03\x02" + - "\x02\x02\u019C\u019A\x03\x02\x02\x02\u019D\u019E\x07\x0E\x02\x02\u019E" + - "\u01A3\x05D#\x02\u019F\u01A0\x07#\x02\x02\u01A0\u01A2\x05D#\x02\u01A1" + - "\u019F\x03\x02\x02\x02\u01A2\u01A5\x03\x02\x02\x02\u01A3\u01A1\x03\x02" + - "\x02\x02\u01A3\u01A4\x03\x02\x02\x02\u01A4C\x03\x02\x02\x02\u01A5\u01A3" + - "\x03\x02\x02\x02\u01A6\u01A7\x050\x19\x02\u01A7\u01A8\x07Q\x02\x02\u01A8" + - "\u01A9\x050\x19\x02\u01A9E\x03\x02\x02\x02\u01AA\u01AB\x07\x03\x02\x02" + - "\u01AB\u01AC\x05\x14\v\x02\u01AC\u01AE\x05X-\x02\u01AD\u01AF\x05L\'\x02" + - "\u01AE\u01AD\x03\x02\x02\x02\u01AE\u01AF\x03\x02\x02\x02\u01AFG\x03\x02" + - "\x02\x02\u01B0\u01B1\x07\t\x02\x02\u01B1\u01B2\x05\x14\v\x02\u01B2\u01B3" + - "\x05X-\x02\u01B3I\x03\x02\x02\x02\u01B4\u01B5\x07\r\x02\x02\u01B5\u01B6" + - "\x05.\x18\x02\u01B6K\x03\x02\x02\x02\u01B7\u01BC\x05N(\x02\u01B8\u01B9" + - "\x07#\x02\x02\u01B9\u01BB\x05N(\x02\u01BA\u01B8\x03\x02\x02\x02\u01BB" + - "\u01BE\x03\x02\x02\x02\u01BC\u01BA\x03\x02\x02\x02\u01BC\u01BD\x03\x02" + - "\x02\x02\u01BDM\x03\x02\x02\x02\u01BE\u01BC\x03\x02\x02\x02\u01BF\u01C0" + - "\x052\x1A\x02\u01C0\u01C1\x07\"\x02\x02\u01C1\u01C2\x056\x1C\x02\u01C2" + - "O\x03\x02\x02\x02\u01C3\u01C4\t\t\x02\x02\u01C4Q\x03\x02\x02\x02\u01C5" + - "\u01C8\x05T+\x02\u01C6\u01C8\x05V,\x02\u01C7\u01C5\x03\x02\x02\x02\u01C7" + - "\u01C6\x03\x02\x02\x02\u01C8S\x03\x02\x02\x02\u01C9\u01CB\t\x02\x02\x02" + - "\u01CA\u01C9\x03\x02\x02\x02\u01CA\u01CB\x03\x02\x02\x02\u01CB\u01CC\x03" + - "\x02\x02\x02\u01CC\u01CD\x07\x1E\x02\x02\u01CDU\x03\x02\x02\x02\u01CE" + - "\u01D0\t\x02\x02\x02\u01CF\u01CE\x03\x02\x02\x02\u01CF\u01D0\x03\x02\x02" + - "\x02\u01D0\u01D1\x03\x02\x02\x02\u01D1\u01D2\x07\x1D\x02\x02\u01D2W\x03" + - "\x02\x02\x02\u01D3\u01D4\x07\x1C\x02\x02\u01D4Y\x03\x02\x02\x02\u01D5" + - "\u01D6\t\n\x02\x02\u01D6[\x03\x02\x02\x02\u01D7\u01D8\x07\x07\x02\x02" + - "\u01D8\u01D9\x05^0\x02\u01D9]\x03\x02\x02\x02\u01DA\u01DB\x07A\x02\x02" + - "\u01DB\u01DC\x05\x04\x03\x02\u01DC\u01DD\x07B\x02\x02\u01DD_\x03\x02\x02" + - "\x02\u01DE\u01DF\x07\x10\x02\x02\u01DF\u01E3\x07a\x02\x02\u01E0\u01E1" + - "\x07\x10\x02\x02\u01E1\u01E3\x07b\x02\x02\u01E2\u01DE\x03\x02\x02\x02" + - "\u01E2\u01E0\x03\x02\x02\x02\u01E3a\x03\x02\x02\x02\u01E4\u01E5\x07\x05" + - "\x02\x02\u01E5\u01E8\x07W\x02\x02\u01E6\u01E7\x07U\x02\x02\u01E7\u01E9" + - "\x050\x19\x02\u01E8\u01E6\x03\x02\x02\x02\u01E8\u01E9\x03\x02\x02\x02" + - "\u01E9\u01F3\x03\x02\x02\x02\u01EA\u01EB\x07V\x02\x02\u01EB\u01F0\x05" + - "d3\x02\u01EC\u01ED\x07#\x02\x02\u01ED\u01EF\x05d3\x02\u01EE\u01EC\x03" + - "\x02\x02\x02\u01EF\u01F2\x03\x02\x02\x02\u01F0\u01EE\x03\x02\x02\x02\u01F0" + - "\u01F1\x03\x02\x02\x02\u01F1\u01F4\x03\x02\x02\x02\u01F2\u01F0\x03\x02" + - "\x02\x02\u01F3\u01EA\x03\x02\x02\x02\u01F3\u01F4\x03\x02\x02\x02\u01F4" + - "c\x03\x02\x02\x02\u01F5\u01F6\x050\x19\x02\u01F6\u01F7\x07\"\x02\x02\u01F7" + - "\u01F9\x03\x02\x02\x02\u01F8\u01F5\x03\x02\x02\x02\u01F8\u01F9\x03\x02" + - "\x02\x02\u01F9\u01FA\x03\x02\x02\x02\u01FA\u01FB\x050\x19\x02\u01FBe\x03" + - "\x02\x02\x024qx\x87\x93\x9C\xA4\xA8\xB0\xB2\xB7\xBE\xC3\xCA\xD0\xD8\xDA" + - "\xE4\xEE\xF1\xFD\u0105\u010D\u0111\u0115\u011D\u0129\u012D\u0133\u013C" + - "\u0144\u015A\u0165\u0170\u0175\u0180\u0185\u0189\u0191\u019A\u01A3\u01AE" + - "\u01BC\u01C7\u01CA\u01CF\u01E2\u01E8\u01F0\u01F3\u01F8"; + "\\\x02^\x02`\x02b\x02d\x02f\x02\x02\v\x03\x02<=\x03\x02>@\x04\x02DDII" + + "\x03\x02CD\x04\x02DDkk\x04\x02!!$$\x03\x02\'(\x04\x02&&44\x03\x025;\x02" + + "\u021A\x02h\x03\x02\x02\x02\x04k\x03\x02\x02\x02\x06z\x03\x02\x02\x02" + + "\b\x89\x03\x02\x02\x02\n\x8B\x03\x02\x02\x02\f\xAA\x03\x02\x02\x02\x0E" + + "\xC5\x03\x02\x02\x02\x10\xCC\x03\x02\x02\x02\x12\xD2\x03\x02\x02\x02\x14" + + "\xE6\x03\x02\x02\x02\x16\xE8\x03\x02\x02\x02\x18\xF7\x03\x02\x02\x02\x1A" + + "\xFA\x03\x02\x02\x02\x1C\u0107\x03\x02\x02\x02\x1E\u0109\x03\x02\x02\x02" + + " \u0117\x03\x02\x02\x02\"\u0119\x03\x02\x02\x02$\u0122\x03\x02\x02\x02" + + "&\u0126\x03\x02\x02\x02(\u0129\x03\x02\x02\x02*\u0131\x03\x02\x02\x02" + + ",\u0137\x03\x02\x02\x02.\u0139\x03\x02\x02\x020\u0141\x03\x02\x02\x02" + + "2\u0149\x03\x02\x02\x024\u014B\x03\x02\x02\x026\u014D\x03\x02\x02\x02" + + "8\u0179\x03\x02\x02\x02:\u017B\x03\x02\x02\x02<\u017E\x03\x02\x02\x02" + + ">\u0187\x03\x02\x02\x02@\u018F\x03\x02\x02\x02B\u0198\x03\x02\x02\x02" + + "D\u01A1\x03\x02\x02\x02F\u01AA\x03\x02\x02\x02H\u01AE\x03\x02\x02\x02" + + "J\u01B4\x03\x02\x02\x02L\u01B8\x03\x02\x02\x02N\u01BB\x03\x02\x02\x02" + + "P\u01C3\x03\x02\x02\x02R\u01C7\x03\x02\x02\x02T\u01CB\x03\x02\x02\x02" + + "V\u01CE\x03\x02\x02\x02X\u01D3\x03\x02\x02\x02Z\u01D7\x03\x02\x02\x02" + + "\\\u01D9\x03\x02\x02\x02^\u01DB\x03\x02\x02\x02`\u01DE\x03\x02\x02\x02" + + "b\u01E6\x03\x02\x02\x02d\u01E8\x03\x02\x02\x02f\u01FC\x03\x02\x02\x02" + + "hi\x05\x04\x03\x02ij\x07\x02\x02\x03j\x03\x03\x02\x02\x02kl\b\x03\x01" + + "\x02lm\x05\x06\x04\x02ms\x03\x02\x02\x02no\f\x03\x02\x02op\x07\x1B\x02" + + "\x02pr\x05\b\x05\x02qn\x03\x02\x02\x02ru\x03\x02\x02\x02sq\x03\x02\x02" + + "\x02st\x03\x02\x02\x02t\x05\x03\x02\x02\x02us\x03\x02\x02\x02v{\x05^0" + + "\x02w{\x05\x1E\x10\x02x{\x05\x18\r\x02y{\x05b2\x02zv\x03\x02\x02\x02z" + + "w\x03\x02\x02\x02zx\x03\x02\x02\x02zy\x03\x02\x02\x02{\x07\x03\x02\x02" + + "\x02|\x8A\x05&\x14\x02}\x8A\x05*\x16\x02~\x8A\x05:\x1E\x02\x7F\x8A\x05" + + "@!\x02\x80\x8A\x05<\x1F\x02\x81\x8A\x05(\x15\x02\x82\x8A\x05\n\x06\x02" + + "\x83\x8A\x05B\"\x02\x84\x8A\x05D#\x02\x85\x8A\x05H%\x02\x86\x8A\x05J&" + + "\x02\x87\x8A\x05d3\x02\x88\x8A\x05L\'\x02\x89|\x03\x02\x02\x02\x89}\x03" + + "\x02\x02\x02\x89~\x03\x02\x02\x02\x89\x7F\x03\x02\x02\x02\x89\x80\x03" + + "\x02\x02\x02\x89\x81\x03\x02\x02\x02\x89\x82\x03\x02\x02\x02\x89\x83\x03" + + "\x02\x02\x02\x89\x84\x03\x02\x02\x02\x89\x85\x03\x02\x02\x02\x89\x86\x03" + + "\x02\x02\x02\x89\x87\x03\x02\x02\x02\x89\x88\x03\x02\x02\x02\x8A\t\x03" + + "\x02\x02\x02\x8B\x8C\x07\x13\x02\x02\x8C\x8D\x05\f\x07\x02\x8D\v\x03\x02" + + "\x02\x02\x8E\x8F\b\x07\x01\x02\x8F\x90\x07-\x02\x02\x90\xAB\x05\f\x07" + + "\t\x91\xAB\x05\x10\t\x02\x92\xAB\x05\x0E\b\x02\x93\x95\x05\x10\t\x02\x94" + + "\x96\x07-\x02\x02\x95\x94\x03\x02\x02\x02\x95\x96\x03\x02\x02\x02\x96" + + "\x97\x03\x02\x02\x02\x97\x98\x07*\x02\x02\x98\x99\x07)\x02\x02\x99\x9E" + + "\x05\x10\t\x02\x9A\x9B\x07#\x02\x02\x9B\x9D\x05\x10\t\x02\x9C\x9A\x03" + + "\x02\x02\x02\x9D\xA0\x03\x02\x02\x02\x9E\x9C\x03\x02\x02\x02\x9E\x9F\x03" + + "\x02\x02\x02\x9F\xA1\x03\x02\x02\x02\xA0\x9E\x03\x02\x02\x02\xA1\xA2\x07" + + "3\x02\x02\xA2\xAB\x03\x02\x02\x02\xA3\xA4\x05\x10\t\x02\xA4\xA6\x07+\x02" + + "\x02\xA5\xA7\x07-\x02\x02\xA6\xA5\x03\x02\x02\x02\xA6\xA7\x03\x02\x02" + + "\x02\xA7\xA8\x03\x02\x02\x02\xA8\xA9\x07.\x02\x02\xA9\xAB\x03\x02\x02" + + "\x02\xAA\x8E\x03\x02\x02\x02\xAA\x91\x03\x02\x02\x02\xAA\x92\x03\x02\x02" + + "\x02\xAA\x93\x03\x02\x02\x02\xAA\xA3\x03\x02\x02\x02\xAB\xB4\x03\x02\x02" + + "\x02\xAC\xAD\f\x06\x02\x02\xAD\xAE\x07 \x02\x02\xAE\xB3\x05\f\x07\x07" + + "\xAF\xB0\f\x05\x02\x02\xB0\xB1\x070\x02\x02\xB1\xB3\x05\f\x07\x06\xB2" + + "\xAC\x03\x02\x02\x02\xB2\xAF\x03\x02\x02\x02\xB3\xB6\x03\x02\x02\x02\xB4" + + "\xB2\x03\x02\x02\x02\xB4\xB5\x03\x02\x02\x02\xB5\r\x03\x02\x02\x02\xB6" + + "\xB4\x03\x02\x02\x02\xB7\xB9\x05\x10\t\x02\xB8\xBA\x07-\x02\x02\xB9\xB8" + + "\x03\x02\x02\x02\xB9\xBA\x03\x02\x02\x02\xBA\xBB\x03\x02\x02\x02\xBB\xBC" + + "\x07,\x02\x02\xBC\xBD\x05Z.\x02\xBD\xC6\x03\x02\x02\x02\xBE\xC0\x05\x10" + + "\t\x02\xBF\xC1\x07-\x02\x02\xC0\xBF\x03\x02\x02\x02\xC0\xC1\x03\x02\x02" + + "\x02\xC1\xC2\x03\x02\x02\x02\xC2\xC3\x072\x02\x02\xC3\xC4\x05Z.\x02\xC4" + + "\xC6\x03\x02\x02\x02\xC5\xB7\x03\x02\x02\x02\xC5\xBE\x03\x02\x02\x02\xC6" + + "\x0F\x03\x02\x02\x02\xC7\xCD\x05\x12\n\x02\xC8\xC9\x05\x12\n\x02\xC9\xCA" + + "\x05\\/\x02\xCA\xCB\x05\x12\n\x02\xCB\xCD\x03\x02\x02\x02\xCC\xC7\x03" + + "\x02\x02\x02\xCC\xC8\x03\x02\x02\x02\xCD\x11\x03\x02\x02\x02\xCE\xCF\b" + + "\n\x01\x02\xCF\xD3\x05\x14\v\x02\xD0\xD1\t\x02\x02\x02\xD1\xD3\x05\x12" + + "\n\x05\xD2\xCE\x03\x02\x02\x02\xD2\xD0\x03\x02\x02\x02\xD3\xDC\x03\x02" + + "\x02\x02\xD4\xD5\f\x04\x02\x02\xD5\xD6\t\x03\x02\x02\xD6\xDB\x05\x12\n" + + "\x05\xD7\xD8\f\x03\x02\x02\xD8\xD9\t\x02\x02\x02\xD9\xDB\x05\x12\n\x04" + + "\xDA\xD4\x03\x02\x02\x02\xDA\xD7\x03\x02\x02\x02\xDB\xDE\x03\x02\x02\x02" + + "\xDC\xDA\x03\x02\x02\x02\xDC\xDD\x03\x02\x02\x02\xDD\x13\x03\x02\x02\x02" + + "\xDE\xDC\x03\x02\x02\x02\xDF\xE7\x058\x1D\x02\xE0\xE7\x05.\x18\x02\xE1" + + "\xE7\x05\x16\f\x02\xE2\xE3\x07)\x02\x02\xE3\xE4\x05\f\x07\x02\xE4\xE5" + + "\x073\x02\x02\xE5\xE7\x03\x02\x02\x02\xE6\xDF\x03\x02\x02\x02\xE6\xE0" + + "\x03\x02\x02\x02\xE6\xE1\x03\x02\x02\x02\xE6\xE2\x03\x02\x02\x02\xE7\x15" + + "\x03\x02\x02\x02\xE8\xE9\x052\x1A\x02\xE9\xF3\x07)\x02\x02\xEA\xF4\x07" + + ">\x02\x02\xEB\xF0\x05\f\x07\x02\xEC\xED\x07#\x02\x02\xED\xEF\x05\f\x07" + + "\x02\xEE\xEC\x03\x02\x02\x02\xEF\xF2\x03\x02\x02\x02\xF0\xEE\x03\x02\x02" + + "\x02\xF0\xF1\x03\x02\x02\x02\xF1\xF4\x03\x02\x02\x02\xF2\xF0\x03\x02\x02" + + "\x02\xF3\xEA\x03\x02\x02\x02\xF3\xEB\x03\x02\x02\x02\xF3\xF4\x03\x02\x02" + + "\x02\xF4\xF5\x03\x02\x02\x02\xF5\xF6\x073\x02\x02\xF6\x17\x03\x02\x02" + + "\x02\xF7\xF8\x07\x0F\x02\x02\xF8\xF9\x05\x1A\x0E\x02\xF9\x19\x03\x02\x02" + + "\x02\xFA\xFF\x05\x1C\x0F\x02\xFB\xFC\x07#\x02\x02\xFC\xFE\x05\x1C\x0F" + + "\x02\xFD\xFB\x03\x02\x02\x02\xFE\u0101\x03\x02\x02\x02\xFF\xFD\x03\x02" + + "\x02\x02\xFF\u0100\x03\x02\x02\x02\u0100\x1B\x03\x02\x02\x02\u0101\xFF" + + "\x03\x02\x02\x02\u0102\u0108\x05\f\x07\x02\u0103\u0104\x05.\x18\x02\u0104" + + "\u0105\x07\"\x02\x02\u0105\u0106\x05\f\x07\x02\u0106\u0108\x03\x02\x02" + + "\x02\u0107\u0102\x03\x02\x02\x02\u0107\u0103\x03\x02\x02\x02\u0108\x1D" + + "\x03\x02\x02\x02\u0109\u010A\x07\b\x02\x02\u010A\u010F\x05,\x17\x02\u010B" + + "\u010C\x07#\x02\x02\u010C\u010E\x05,\x17\x02\u010D\u010B\x03\x02\x02\x02" + + "\u010E\u0111\x03\x02\x02\x02\u010F\u010D\x03\x02\x02\x02\u010F\u0110\x03" + + "\x02\x02\x02\u0110\u0113\x03\x02\x02\x02\u0111\u010F\x03\x02\x02\x02\u0112" + + "\u0114\x05 \x11\x02\u0113\u0112\x03\x02\x02\x02\u0113\u0114\x03\x02\x02" + + "\x02\u0114\x1F\x03\x02\x02\x02\u0115\u0118\x05\"\x12\x02\u0116\u0118\x05" + + "$\x13\x02\u0117\u0115\x03\x02\x02\x02\u0117\u0116\x03\x02\x02\x02\u0118" + + "!\x03\x02\x02\x02\u0119\u011A\x07H\x02\x02\u011A\u011F\x05,\x17\x02\u011B" + + "\u011C\x07#\x02\x02\u011C\u011E\x05,\x17\x02\u011D\u011B\x03\x02\x02\x02" + + "\u011E\u0121\x03\x02\x02\x02\u011F\u011D\x03\x02\x02\x02\u011F\u0120\x03" + + "\x02\x02\x02\u0120#\x03\x02\x02\x02\u0121\u011F\x03\x02\x02\x02\u0122" + + "\u0123\x07A\x02\x02\u0123\u0124\x05\"\x12\x02\u0124\u0125\x07B\x02\x02" + + "\u0125%\x03\x02\x02\x02\u0126\u0127\x07\x06\x02\x02\u0127\u0128\x05\x1A" + + "\x0E\x02\u0128\'\x03\x02\x02\x02\u0129\u012B\x07\x12\x02\x02\u012A\u012C" + + "\x05\x1A\x0E\x02\u012B\u012A\x03\x02\x02\x02\u012B\u012C\x03\x02\x02\x02" + + "\u012C\u012F\x03\x02\x02\x02\u012D\u012E\x07\x1F\x02\x02\u012E\u0130\x05" + + "\x1A\x0E\x02\u012F\u012D\x03\x02\x02\x02\u012F\u0130\x03\x02\x02\x02\u0130" + + ")\x03\x02\x02\x02\u0131\u0132\x07\n\x02\x02\u0132\u0135\x05\x1A\x0E\x02" + + "\u0133\u0134\x07\x1F\x02\x02\u0134\u0136\x05\x1A\x0E\x02\u0135\u0133\x03" + + "\x02\x02\x02\u0135\u0136\x03\x02\x02\x02\u0136+\x03\x02\x02\x02\u0137" + + "\u0138\t\x04\x02\x02\u0138-\x03\x02\x02\x02\u0139\u013E\x052\x1A\x02\u013A" + + "\u013B\x07%\x02\x02\u013B\u013D\x052\x1A\x02\u013C\u013A\x03\x02\x02\x02" + + "\u013D\u0140\x03\x02\x02\x02\u013E\u013C\x03\x02\x02\x02\u013E\u013F\x03" + + "\x02\x02\x02\u013F/\x03\x02\x02\x02\u0140\u013E\x03\x02\x02\x02\u0141" + + "\u0146\x054\x1B\x02\u0142\u0143\x07%\x02\x02\u0143\u0145\x054\x1B\x02" + + "\u0144\u0142\x03\x02\x02\x02\u0145\u0148\x03\x02\x02\x02\u0146\u0144\x03" + + "\x02\x02\x02\u0146\u0147\x03\x02\x02\x02\u01471\x03\x02\x02\x02\u0148" + + "\u0146\x03\x02\x02\x02\u0149\u014A\t\x05\x02\x02\u014A3\x03\x02\x02\x02" + + "\u014B\u014C\x07M\x02\x02\u014C5\x03\x02\x02\x02\u014D\u014E\t\x06\x02" + + "\x02\u014E7\x03\x02\x02\x02\u014F\u017A\x07.\x02\x02\u0150\u0151\x05X" + + "-\x02\u0151\u0152\x07C\x02\x02\u0152\u017A\x03\x02\x02\x02\u0153\u017A" + + "\x05V,\x02\u0154\u017A\x05X-\x02\u0155\u017A\x05R*\x02\u0156\u017A\x07" + + "1\x02\x02\u0157\u017A\x05Z.\x02\u0158\u0159\x07A\x02\x02\u0159\u015E\x05" + + "T+\x02\u015A\u015B\x07#\x02\x02\u015B\u015D\x05T+\x02\u015C\u015A\x03" + + "\x02\x02\x02\u015D\u0160\x03\x02\x02\x02\u015E\u015C\x03\x02\x02\x02\u015E" + + "\u015F\x03\x02\x02\x02\u015F\u0161\x03\x02\x02\x02\u0160\u015E\x03\x02" + + "\x02\x02\u0161\u0162\x07B\x02\x02\u0162\u017A\x03\x02\x02\x02\u0163\u0164" + + "\x07A\x02\x02\u0164\u0169\x05R*\x02\u0165\u0166\x07#\x02\x02\u0166\u0168" + + "\x05R*\x02\u0167\u0165\x03\x02\x02\x02\u0168\u016B\x03\x02\x02\x02\u0169" + + "\u0167\x03\x02\x02\x02\u0169\u016A\x03\x02\x02\x02\u016A\u016C\x03\x02" + + "\x02\x02\u016B\u0169\x03\x02\x02\x02\u016C\u016D\x07B\x02\x02\u016D\u017A" + + "\x03\x02\x02\x02\u016E\u016F\x07A\x02\x02\u016F\u0174\x05Z.\x02\u0170" + + "\u0171\x07#\x02\x02\u0171\u0173\x05Z.\x02\u0172\u0170\x03\x02\x02\x02" + + "\u0173\u0176\x03\x02\x02\x02\u0174\u0172\x03\x02\x02\x02\u0174\u0175\x03" + + "\x02\x02\x02\u0175\u0177\x03\x02\x02\x02\u0176\u0174\x03\x02\x02\x02\u0177" + + "\u0178\x07B\x02\x02\u0178\u017A\x03\x02\x02\x02\u0179\u014F\x03\x02\x02" + + "\x02\u0179\u0150\x03\x02\x02\x02\u0179\u0153\x03\x02\x02\x02\u0179\u0154" + + "\x03\x02\x02\x02\u0179\u0155\x03\x02\x02\x02\u0179\u0156\x03\x02\x02\x02" + + "\u0179\u0157\x03\x02\x02\x02\u0179\u0158\x03\x02\x02\x02\u0179\u0163\x03" + + "\x02\x02\x02\u0179\u016E\x03\x02\x02\x02\u017A9\x03\x02\x02\x02\u017B" + + "\u017C\x07\f\x02\x02\u017C\u017D\x07\x1D\x02\x02\u017D;\x03\x02\x02\x02" + + "\u017E\u017F\x07\x11\x02\x02\u017F\u0184\x05> \x02\u0180\u0181\x07#\x02" + + "\x02\u0181\u0183\x05> \x02\u0182\u0180\x03\x02\x02\x02\u0183\u0186\x03" + + "\x02\x02\x02\u0184\u0182\x03\x02\x02\x02\u0184\u0185\x03\x02\x02\x02\u0185" + + "=\x03\x02\x02\x02\u0186\u0184\x03\x02\x02\x02\u0187\u0189\x05\f\x07\x02" + + "\u0188\u018A\t\x07\x02\x02\u0189\u0188\x03\x02\x02\x02\u0189\u018A\x03" + + "\x02\x02\x02\u018A\u018D\x03\x02\x02\x02\u018B\u018C\x07/\x02\x02\u018C" + + "\u018E\t\b\x02\x02\u018D\u018B\x03\x02\x02\x02\u018D\u018E\x03\x02\x02" + + "\x02\u018E?\x03\x02\x02\x02\u018F\u0190\x07\v\x02\x02\u0190\u0195\x05" + + "0\x19\x02\u0191\u0192\x07#\x02\x02\u0192\u0194\x050\x19\x02\u0193\u0191" + + "\x03\x02\x02\x02\u0194\u0197\x03\x02\x02\x02\u0195\u0193\x03\x02\x02\x02" + + "\u0195\u0196\x03\x02\x02\x02\u0196A\x03\x02\x02\x02\u0197\u0195\x03\x02" + + "\x02\x02\u0198\u0199\x07\x04\x02\x02\u0199\u019E\x050\x19\x02\u019A\u019B" + + "\x07#\x02\x02\u019B\u019D\x050\x19\x02\u019C\u019A\x03\x02\x02\x02\u019D" + + "\u01A0\x03\x02\x02\x02\u019E\u019C\x03\x02\x02\x02\u019E\u019F\x03\x02" + + "\x02\x02\u019FC\x03\x02\x02\x02\u01A0\u019E\x03\x02\x02\x02\u01A1\u01A2" + + "\x07\x0E\x02\x02\u01A2\u01A7\x05F$\x02\u01A3\u01A4\x07#\x02\x02\u01A4" + + "\u01A6\x05F$\x02\u01A5\u01A3\x03\x02\x02\x02\u01A6\u01A9\x03\x02\x02\x02" + + "\u01A7\u01A5\x03\x02\x02\x02\u01A7\u01A8\x03\x02\x02\x02\u01A8E\x03\x02" + + "\x02\x02\u01A9\u01A7\x03\x02\x02\x02\u01AA\u01AB\x050\x19\x02\u01AB\u01AC" + + "\x07Q\x02\x02\u01AC\u01AD\x050\x19\x02\u01ADG\x03\x02\x02\x02\u01AE\u01AF" + + "\x07\x03\x02\x02\u01AF\u01B0\x05\x14\v\x02\u01B0\u01B2\x05Z.\x02\u01B1" + + "\u01B3\x05N(\x02\u01B2\u01B1\x03\x02\x02\x02\u01B2\u01B3\x03\x02\x02\x02" + + "\u01B3I\x03\x02\x02\x02\u01B4\u01B5\x07\t\x02\x02\u01B5\u01B6\x05\x14" + + "\v\x02\u01B6\u01B7\x05Z.\x02\u01B7K\x03\x02\x02\x02\u01B8\u01B9\x07\r" + + "\x02\x02\u01B9\u01BA\x05.\x18\x02\u01BAM\x03\x02\x02\x02\u01BB\u01C0\x05" + + "P)\x02\u01BC\u01BD\x07#\x02\x02\u01BD\u01BF\x05P)\x02\u01BE\u01BC\x03" + + "\x02\x02\x02\u01BF\u01C2\x03\x02\x02\x02\u01C0\u01BE\x03\x02\x02\x02\u01C0" + + "\u01C1\x03\x02\x02\x02\u01C1O\x03\x02\x02\x02\u01C2\u01C0\x03\x02\x02" + + "\x02\u01C3\u01C4\x052\x1A\x02\u01C4\u01C5\x07\"\x02\x02\u01C5\u01C6\x05" + + "8\x1D\x02\u01C6Q\x03\x02\x02\x02\u01C7\u01C8\t\t\x02\x02\u01C8S\x03\x02" + + "\x02\x02\u01C9\u01CC\x05V,\x02\u01CA\u01CC\x05X-\x02\u01CB\u01C9\x03\x02" + + "\x02\x02\u01CB\u01CA\x03\x02\x02\x02\u01CCU\x03\x02\x02\x02\u01CD\u01CF" + + "\t\x02\x02\x02\u01CE\u01CD\x03\x02\x02\x02\u01CE\u01CF\x03\x02\x02\x02" + + "\u01CF\u01D0\x03\x02\x02\x02\u01D0\u01D1\x07\x1E\x02\x02\u01D1W\x03\x02" + + "\x02\x02\u01D2\u01D4\t\x02\x02\x02\u01D3\u01D2\x03\x02\x02\x02\u01D3\u01D4" + + "\x03\x02\x02\x02\u01D4\u01D5\x03\x02\x02\x02\u01D5\u01D6\x07\x1D\x02\x02" + + "\u01D6Y\x03\x02\x02\x02\u01D7\u01D8\x07\x1C\x02\x02\u01D8[\x03\x02\x02" + + "\x02\u01D9\u01DA\t\n\x02\x02\u01DA]\x03\x02\x02\x02\u01DB\u01DC\x07\x07" + + "\x02\x02\u01DC\u01DD\x05`1\x02\u01DD_\x03\x02\x02\x02\u01DE\u01DF\x07" + + "A\x02\x02\u01DF\u01E0\x05\x04\x03\x02\u01E0\u01E1\x07B\x02\x02\u01E1a" + + "\x03\x02\x02\x02\u01E2\u01E3\x07\x10\x02\x02\u01E3\u01E7\x07a\x02\x02" + + "\u01E4\u01E5\x07\x10\x02\x02\u01E5\u01E7\x07b\x02\x02\u01E6\u01E2\x03" + + "\x02\x02\x02\u01E6\u01E4\x03\x02\x02\x02\u01E7c\x03\x02\x02\x02\u01E8" + + "\u01E9\x07\x05\x02\x02\u01E9\u01EC\x07W\x02\x02\u01EA\u01EB\x07U\x02\x02" + + "\u01EB\u01ED\x050\x19\x02\u01EC\u01EA\x03\x02\x02\x02\u01EC\u01ED\x03" + + "\x02\x02\x02\u01ED\u01F7\x03\x02\x02\x02\u01EE\u01EF\x07V\x02\x02\u01EF" + + "\u01F4\x05f4\x02\u01F0\u01F1\x07#\x02\x02\u01F1\u01F3\x05f4\x02\u01F2" + + "\u01F0\x03\x02\x02\x02\u01F3\u01F6\x03\x02\x02\x02\u01F4\u01F2\x03\x02" + + "\x02\x02\u01F4\u01F5\x03\x02\x02\x02\u01F5\u01F8\x03\x02\x02\x02\u01F6" + + "\u01F4\x03\x02\x02\x02\u01F7\u01EE\x03\x02\x02\x02\u01F7\u01F8\x03\x02" + + "\x02\x02\u01F8e\x03\x02\x02\x02\u01F9\u01FA\x050\x19\x02\u01FA\u01FB\x07" + + "\"\x02\x02\u01FB\u01FD\x03\x02\x02\x02\u01FC\u01F9\x03\x02\x02\x02\u01FC" + + "\u01FD\x03\x02\x02\x02\u01FD\u01FE\x03\x02\x02\x02\u01FE\u01FF\x050\x19" + + "\x02\u01FFg\x03\x02\x02\x024sz\x89\x95\x9E\xA6\xAA\xB2\xB4\xB9\xC0\xC5" + + "\xCC\xD2\xDA\xDC\xE6\xF0\xF3\xFF\u0107\u010F\u0113\u0117\u011F\u012B\u012F" + + "\u0135\u013E\u0146\u015E\u0169\u0174\u0179\u0184\u0189\u018D\u0195\u019E" + + "\u01A7\u01B2\u01C0\u01CB\u01CE\u01D3\u01E6\u01EC\u01F4\u01F7\u01FC"; public static __ATN: ATN; public static get _ATN(): ATN { if (!esql_parser.__ATN) { @@ -4281,8 +4310,7 @@ export class IdentifierContext extends ParserRuleContext { export class IdentifierPatternContext extends ParserRuleContext { - public UNQUOTED_ID_PATTERN(): TerminalNode | undefined { return this.tryGetToken(esql_parser.UNQUOTED_ID_PATTERN, 0); } - public QUOTED_IDENTIFIER(): TerminalNode | undefined { return this.tryGetToken(esql_parser.QUOTED_IDENTIFIER, 0); } + public ID_PATTERN(): TerminalNode { return this.getToken(esql_parser.ID_PATTERN, 0); } constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); } @@ -4303,6 +4331,29 @@ export class IdentifierPatternContext extends ParserRuleContext { } +export class IdPatternContext extends ParserRuleContext { + public UNQUOTED_ID_PATTERN(): TerminalNode | undefined { return this.tryGetToken(esql_parser.UNQUOTED_ID_PATTERN, 0); } + public QUOTED_IDENTIFIER(): TerminalNode | undefined { return this.tryGetToken(esql_parser.QUOTED_IDENTIFIER, 0); } + constructor(parent: ParserRuleContext | undefined, invokingState: number) { + super(parent, invokingState); + } + // @Override + public get ruleIndex(): number { return esql_parser.RULE_idPattern; } + // @Override + public enterRule(listener: esql_parserListener): void { + if (listener.enterIdPattern) { + listener.enterIdPattern(this); + } + } + // @Override + public exitRule(listener: esql_parserListener): void { + if (listener.exitIdPattern) { + listener.exitIdPattern(this); + } + } +} + + export class ConstantContext extends ParserRuleContext { constructor(parent: ParserRuleContext | undefined, invokingState: number) { super(parent, invokingState); diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts b/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts index 233518b74555e..60e6b32cce3ac 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts +++ b/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts @@ -59,6 +59,7 @@ import { QualifiedNameContext } from "./esql_parser"; import { QualifiedNamePatternContext } from "./esql_parser"; import { IdentifierContext } from "./esql_parser"; import { IdentifierPatternContext } from "./esql_parser"; +import { IdPatternContext } from "./esql_parser"; import { ConstantContext } from "./esql_parser"; import { LimitCommandContext } from "./esql_parser"; import { SortCommandContext } from "./esql_parser"; @@ -753,6 +754,17 @@ export interface esql_parserListener extends ParseTreeListener { */ exitIdentifierPattern?: (ctx: IdentifierPatternContext) => void; + /** + * Enter a parse tree produced by `esql_parser.idPattern`. + * @param ctx the parse tree + */ + enterIdPattern?: (ctx: IdPatternContext) => void; + /** + * Exit a parse tree produced by `esql_parser.idPattern`. + * @param ctx the parse tree + */ + exitIdPattern?: (ctx: IdPatternContext) => void; + /** * Enter a parse tree produced by `esql_parser.constant`. * @param ctx the parse tree diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts index 508fa7c371100..7b6256db8c96b 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts @@ -21,6 +21,7 @@ import type { QualifiedIntegerLiteralContext, } from '../../antlr/esql_parser'; import { getPosition } from './ast_position_utils'; +import { DOUBLE_TICKS_REGEX, SINGLE_BACKTICK, TICKS_REGEX } from './shared/constants'; import type { ESQLCommand, ESQLLiteral, @@ -99,10 +100,14 @@ export function createLiteralString(token: Token): ESQLLiteral { }; } -export function isMissingText(text: string) { +function isMissingText(text: string) { return / ctx.tryGetToken(keyCode, 0)) .filter(nonNullable)[0]; } /* SCRIPT_MARKER_END */ -const TICKS_REGEX = /(`)/g; - function isQuoted(text: string | undefined) { return text && /^(`)/.test(text); } +/** + * Follow a similar logic to the ES one: + * * remove backticks at the beginning and at the end + * * remove double backticks + */ +function safeBackticksRemoval(text: string | undefined) { + return text?.replace(TICKS_REGEX, '').replace(DOUBLE_TICKS_REGEX, SINGLE_BACKTICK) || ''; +} + export function sanifyIdentifierString(ctx: ParserRuleContext) { return ( getUnquotedText(ctx)?.text || - getQuotedText(ctx)?.text.replace(TICKS_REGEX, '') || - ctx.text.replace(TICKS_REGEX, '') // for some reason some quoted text is not detected correctly by the parser + safeBackticksRemoval(getQuotedText(ctx)?.text) || + safeBackticksRemoval(ctx.text) // for some reason some quoted text is not detected correctly by the parser ); } diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts index fd33f33af976d..e834fd320c66b 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts @@ -74,8 +74,8 @@ import { createColumnStar, wrapIdentifierAsArray, createPolicy, - isMissingText, createSetting, + textExistsAndIsValid, } from './ast_helpers'; import { getPosition } from './ast_position_utils'; import type { @@ -105,7 +105,7 @@ function extractIdentifiers( function makeColumnsOutOfIdentifiers(identifiers: ParserRuleContext[]) { const args: ESQLColumn[] = identifiers - .filter((child) => child.text) + .filter((child) => textExistsAndIsValid(child.text)) .map((sourceContext) => { return createColumn(sourceContext); }) ?? []; @@ -120,7 +120,7 @@ export function collectAllColumnIdentifiers( } export function getPolicyName(ctx: EnrichCommandContext) { - if (!ctx._policyName || !ctx._policyName.text || / (Array.isArray(arg) ? arg.filter(nonNullable) : arg)); // distinguish between missing brackets (missing text error) and an empty list - if (!isMissingText(ctx.text)) { + if (textExistsAndIsValid(ctx.text)) { fn.args.push(listArgs); } } @@ -239,7 +246,7 @@ function getComparisonName(ctx: ComparisonOperatorContext) { } function visitValueExpression(ctx: ValueExpressionContext) { - if (isMissingText(ctx.text)) { + if (!textExistsAndIsValid(ctx.text)) { return []; } if (ctx instanceof ValueExpressionDefaultContext) { @@ -348,12 +355,12 @@ export function visitRenameClauses(clausesCtx: RenameClauseContext[]): ESQLAstIt if (asToken) { const fn = createOption(asToken.text.toLowerCase(), clause); for (const arg of [clause._oldName, clause._newName]) { - if (arg?.text) { + if (textExistsAndIsValid(arg.text)) { fn.args.push(createColumn(arg)); } } return fn; - } else if (clause._oldName?.text) { + } else if (textExistsAndIsValid(clause._oldName?.text)) { return createColumn(clause._oldName); } }) @@ -454,12 +461,14 @@ export function collectBooleanExpression(ctx: BooleanExpressionContext | undefin if (!ctx) { return ast; } - return ast.concat( - collectLogicalExpression(ctx), - collectRegexExpression(ctx), - collectIsNullExpression(ctx), - collectDefaultExpression(ctx) - ); + return ast + .concat( + collectLogicalExpression(ctx), + collectRegexExpression(ctx), + collectIsNullExpression(ctx), + collectDefaultExpression(ctx) + ) + .flat(); } export function visitField(ctx: FieldContext) { @@ -536,7 +545,7 @@ export function visitDissect(ctx: DissectCommandContext) { const pattern = ctx.string().tryGetToken(esql_parser.STRING, 0); return [ visitPrimaryExpression(ctx.primaryExpression()), - ...(pattern && !isMissingText(pattern.text) + ...(pattern && textExistsAndIsValid(pattern.text) ? [createLiteral('string', pattern), ...visitDissectOptions(ctx.commandOptions())] : []), ].filter(nonNullable); @@ -546,7 +555,7 @@ export function visitGrok(ctx: GrokCommandContext) { const pattern = ctx.string().tryGetToken(esql_parser.STRING, 0); return [ visitPrimaryExpression(ctx.primaryExpression()), - ...(pattern && !isMissingText(pattern.text) ? [createLiteral('string', pattern)] : []), + ...(pattern && textExistsAndIsValid(pattern.text) ? [createLiteral('string', pattern)] : []), ].filter(nonNullable); } diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts index 4190552d048e2..533cc6eb5ccac 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts @@ -262,7 +262,12 @@ describe('autocomplete', () => { async (text) => (text ? await getAstAndErrors(text) : { ast: [], errors: [] }), callbackMocks ); - expect(suggestions.map((i) => i.insertText)).toEqual(expected); + expect( + suggestions + // simulate the editor behaviour for sorting suggestions + .sort((a, b) => (a.sortText || '').localeCompare(b.sortText || '')) + .map((i) => i.insertText) + ).toEqual(expected); } ); }; @@ -333,7 +338,7 @@ describe('autocomplete', () => { ); testSuggestions('from ', suggestedIndexes); testSuggestions('from a,', suggestedIndexes); - testSuggestions('from a, b ', ['metadata $0', '|', ',']); + testSuggestions('from a, b ', ['metadata $0', ',', '|']); testSuggestions('from *,', suggestedIndexes); testSuggestions('from index', suggestedIndexes, 6 /* index index in from */); testSuggestions('from a, b [metadata ]', ['_index', '_score'], 20); @@ -356,8 +361,8 @@ describe('autocomplete', () => { testSuggestions('from a | where ', [...getFieldNamesByType('any'), ...allEvalFns]); testSuggestions('from a | eval var0 = 1 | where ', [ ...getFieldNamesByType('any'), - ...allEvalFns, 'var0', + ...allEvalFns, ]); testSuggestions('from a | where stringField ', [ // all functions compatible with a stringField type @@ -379,6 +384,7 @@ describe('autocomplete', () => { ...getFunctionSignaturesByReturnType('where', 'string', { evalMath: true }), ]); testSuggestions('from a | where stringField >= stringField ', [ + '|', ...getFunctionSignaturesByReturnType( 'where', 'boolean', @@ -387,9 +393,9 @@ describe('autocomplete', () => { }, ['boolean'] ), - '|', ]); testSuggestions('from a | where stringField =~ stringField ', [ + '|', ...getFunctionSignaturesByReturnType( 'where', 'boolean', @@ -398,7 +404,6 @@ describe('autocomplete', () => { }, ['boolean'] ), - '|', ]); for (const op of ['and', 'or']) { testSuggestions(`from a | where stringField >= stringField ${op} `, [ @@ -527,8 +532,8 @@ describe('autocomplete', () => { describe('sort', () => { testSuggestions('from a | sort ', getFieldNamesByType('any')); - testSuggestions('from a | sort stringField ', ['asc', 'desc', '|', ',']); - testSuggestions('from a | sort stringField desc ', ['nulls first', 'nulls last', '|', ',']); + testSuggestions('from a | sort stringField ', ['asc', 'desc', ',', '|']); + testSuggestions('from a | sort stringField desc ', ['nulls first', 'nulls last', ',', '|']); // @TODO: improve here // testSuggestions('from a | sort stringField desc ', ['first', 'last']); }); @@ -570,32 +575,41 @@ describe('autocomplete', () => { testSuggestions('from a | stats a ', ['= $0']); testSuggestions('from a | stats a=', [...allAggFunctions, ...allEvaFunctions]); testSuggestions('from a | stats a=max(b) by ', [ + 'var0 =', ...getFieldNamesByType('any'), ...allEvaFunctions, - 'var0 =', ]); testSuggestions('from a | stats a=max(b) BY ', [ + 'var0 =', ...getFieldNamesByType('any'), ...allEvaFunctions, - 'var0 =', ]); - testSuggestions('from a | stats a=c by d ', ['|', ',']); + testSuggestions('from a | stats a=c by d ', [',', '|']); testSuggestions('from a | stats a=c by d, ', [ + 'var0 =', ...getFieldNamesByType('any'), ...allEvaFunctions, - 'var0 =', ]); testSuggestions('from a | stats a=max(b), ', [ 'var0 =', ...allAggFunctions, ...allEvaFunctions, ]); - testSuggestions('from a | stats a=min()', getFieldNamesByType('number'), '('); - testSuggestions('from a | stats a=min(b) ', ['by $0', '|', ',']); + testSuggestions( + 'from a | stats a=min()', + [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('stats', 'number', { + evalMath: true, + }), + ], + '(' + ); + testSuggestions('from a | stats a=min(b) ', ['by $0', ',', '|']); testSuggestions('from a | stats a=min(b) by ', [ + 'var0 =', ...getFieldNamesByType('any'), ...allEvaFunctions, - 'var0 =', ]); testSuggestions('from a | stats a=min(b),', ['var0 =', ...allAggFunctions, ...allEvaFunctions]); testSuggestions('from a | stats var0=min(b),var1=c,', [ @@ -603,48 +617,111 @@ describe('autocomplete', () => { ...allAggFunctions, ...allEvaFunctions, ]); - testSuggestions('from a | stats a=min(b), b=max()', getFieldNamesByType('number')); - // @TODO: remove last 2 suggestions if possible + testSuggestions( + 'from a | stats a=min(b), b=max()', + [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('stats', 'number', { + evalMath: true, + }), + ], + 32 + ); + testSuggestions('from a | eval var0=round(b), var1=round(c) | stats ', [ 'var2 =', ...allAggFunctions, - ...allEvaFunctions, 'var0', 'var1', + ...allEvaFunctions, ]); // smoke testing with suggestions not at the end of the string testSuggestions( 'from a | stats a = min(b) | sort b', - ['by $0', '|', ','], + ['by $0', ',', '|'], 27 /* " " after min(b) */ ); testSuggestions( 'from a | stats avg(b) by stringField', - getFieldNamesByType('number'), + [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), + ], 21 /* b column in avg */ ); // while nested functions are not suggested, complete them should be possible via suggestions testSuggestions('from a | stats avg(b) by numberField % ', [ ...getFieldNamesByType('number'), - ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), '`avg(b)`', + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), ]); testSuggestions('from a | stats avg(b) by var0 = ', [ ...getFieldNamesByType('any'), - ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), + ...allEvaFunctions, ]); testSuggestions('from a | stats avg(b) by c, ', [ + 'var0 =', ...getFieldNamesByType('any'), ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), - 'var0 =', ]); testSuggestions('from a | stats avg(b) by c, var0 = ', [ ...getFieldNamesByType('any'), - ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), + ...allEvaFunctions, ]); - testSuggestions('from a | stats avg(b) by numberField % 2 ', ['|', ',']); + testSuggestions('from a | stats avg(b) by numberField % 2 ', [',', '|']); + + testSuggestions( + 'from a | stats round(', + [ + ...getFunctionSignaturesByReturnType('stats', 'number', { agg: true }), + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }, undefined, [ + 'round', + ]), + ], + '(' + ); + testSuggestions( + 'from a | stats round(round(', + [ + ...getFunctionSignaturesByReturnType('stats', 'number', { agg: true }), + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }, undefined, [ + 'round', + ]), + ], + 27 + ); + testSuggestions( + 'from a | stats avg(round(', + [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }, undefined, [ + 'round', + ]), + ], + 26 + ); + testSuggestions( + 'from a | stats avg(', + [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), + ], + '(' + ); + testSuggestions( + 'from a | stats round(avg(', + [ + ...getFieldNamesByType('number'), + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }, undefined, [ + 'round', + ]), + ], + 26 + ); }); describe('enrich', () => { @@ -677,18 +754,18 @@ describe('autocomplete', () => { 'any#Char$Field', 'kubernetes.something.something', ]); - testSuggestions(`from a ${prevCommand}| enrich policy on b `, ['with $0', '|', ',']); + testSuggestions(`from a ${prevCommand}| enrich policy on b `, ['with $0', ',', '|']); testSuggestions(`from a ${prevCommand}| enrich policy on b with `, [ 'var0 =', ...getPolicyFields('policy'), ]); - testSuggestions(`from a ${prevCommand}| enrich policy on b with var0 `, ['= $0', '|', ',']); + testSuggestions(`from a ${prevCommand}| enrich policy on b with var0 `, ['= $0', ',', '|']); testSuggestions(`from a ${prevCommand}| enrich policy on b with var0 = `, [ ...getPolicyFields('policy'), ]); testSuggestions(`from a ${prevCommand}| enrich policy on b with var0 = stringField `, [ - '|', ',', + '|', ]); testSuggestions(`from a ${prevCommand}| enrich policy on b with var0 = stringField, `, [ 'var1 =', @@ -696,8 +773,8 @@ describe('autocomplete', () => { ]); testSuggestions(`from a ${prevCommand}| enrich policy on b with var0 = stringField, var1 `, [ '= $0', - '|', ',', + '|', ]); testSuggestions( `from a ${prevCommand}| enrich policy on b with var0 = stringField, var1 = `, @@ -707,7 +784,7 @@ describe('autocomplete', () => { 'var0 =', ...getPolicyFields('policy'), ]); - testSuggestions(`from a ${prevCommand}| enrich policy with stringField `, ['= $0', '|', ',']); + testSuggestions(`from a ${prevCommand}| enrich policy with stringField `, ['= $0', ',', '|']); } }); @@ -721,8 +798,8 @@ describe('autocomplete', () => { ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ 'number', ]), - '|', ',', + '|', ]); testSuggestions('from index | EVAL stringField not ', ['like $0', 'rlike $0', 'in $0']); testSuggestions('from index | EVAL stringField NOT ', ['like $0', 'rlike $0', 'in $0']); @@ -749,8 +826,8 @@ describe('autocomplete', () => { testSuggestions('from a | eval a=numberField, ', [ 'var0 =', ...getFieldNamesByType('any'), - ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), 'a', + ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), ]); testSuggestions('from a | eval a=stringField =~ ', [ ...getFieldNamesByType('string'), @@ -788,11 +865,11 @@ describe('autocomplete', () => { [] ); testSuggestions('from a | eval a=round(numberField) ', [ + ',', + '|', ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ 'number', ]), - '|', - ',', ]); testSuggestions('from a | eval a=round(numberField, ', [ ...getFieldNamesByType('number'), @@ -809,35 +886,35 @@ describe('autocomplete', () => { testSuggestions('from a | eval a=round(numberField),', [ 'var0 =', ...getFieldNamesByType('any'), - ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), 'a', + ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), ]); testSuggestions('from a | eval a=round(numberField) + ', [ ...getFieldNamesByType('number'), - ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), 'a', // @TODO remove this + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), ]); testSuggestions('from a | eval a=round(numberField)+ ', [ ...getFieldNamesByType('number'), - ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), 'a', // @TODO remove this + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), ]); testSuggestions('from a | eval a=numberField+ ', [ ...getFieldNamesByType('number'), - ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), 'a', // @TODO remove this + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), ]); testSuggestions('from a | eval a=`any#Char$Field`+ ', [ ...getFieldNamesByType('number'), - ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), 'a', // @TODO remove this + ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), ]); testSuggestions( 'from a | stats avg(numberField) by stringField | eval ', [ 'var0 =', - ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), '`avg(numberField)`', + ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), ], ' ', // make aware EVAL of the previous STATS command @@ -848,11 +925,11 @@ describe('autocomplete', () => { [ 'var0 =', ...getFieldNamesByType('any'), - ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), // @TODO: leverage the location data to get the original text // For now return back the trimmed version: // the ANTLR parser trims all text so that's what it's stored in the AST '`abs(numberField)+1`', + ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), ], ' ' ); @@ -860,8 +937,8 @@ describe('autocomplete', () => { 'from a | stats avg(numberField) by stringField | eval ', [ 'var0 =', - ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), '`avg(numberField)`', + ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), ], ' ', // make aware EVAL of the previous STATS command with the buggy field name from expression @@ -871,9 +948,9 @@ describe('autocomplete', () => { 'from a | stats avg(numberField), avg(kubernetes.something.something) by stringField | eval ', [ 'var0 =', - ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), '`avg(numberField)`', '`avg(kubernetes.something.something)`', + ...getFunctionSignaturesByReturnType('eval', 'any', { evalMath: true }), ], ' ', // make aware EVAL of the previous STATS command with the buggy field name from expression @@ -917,11 +994,11 @@ describe('autocomplete', () => { testSuggestions( 'from a | eval var0 = abs(numberField) | eval abs(var0)', [ + ',', + '|', ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ 'number', ]), - '|', - ',', ], 38 /* " " after abs(b) */ ); @@ -985,33 +1062,33 @@ describe('autocomplete', () => { const dateSuggestions = timeLiterals.map(({ name }) => name); // If a literal number is detected then suggest also date period keywords testSuggestions('from a | eval a = 1 ', [ + ...dateSuggestions, + ',', + '|', ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ 'number', ]), - ...dateSuggestions, - '|', - ',', ]); testSuggestions('from a | eval a = 1 year ', [ + ',', + '|', ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ 'time_interval', ]), - '|', - ',', ]); testSuggestions('from a | eval a = 1 day + 2 ', [ + ...dateSuggestions, + ',', + '|', ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ 'number', ]), - ...dateSuggestions, - '|', - ',', ]); testSuggestions('from a | eval 1 day + 2 ', [ + ...dateSuggestions, ...getFunctionSignaturesByReturnType('eval', 'any', { builtin: true, skipAssign: true }, [ 'number', ]), - ...dateSuggestions, ]); testSuggestions( 'from a | eval var0=date_trunc()', diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts index a947ab4d6d7c6..50686e8ecde45 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts @@ -33,6 +33,8 @@ import { isSourceItem, isTimeIntervalItem, monacoPositionToOffset, + getAllFunctions, + isSingleItem, } from '../shared/helpers'; import { collectVariables, excludeVariablesFromCurrentCommand } from '../shared/variables'; import type { @@ -78,6 +80,7 @@ import { getSourcesHelper, } from '../shared/resources_helpers'; import { ESQLCallbacks } from '../shared/types'; +import { getFunctionsToIgnoreForStats, isAggFunctionUsedAlready } from './helper'; type GetSourceFn = () => Promise; type GetFieldsByTypeFn = ( @@ -865,14 +868,17 @@ async function getExpressionSuggestionsByType( } if (!optionsAvailable.length || optionsAvailable.every(({ optional }) => optional)) { + const shouldPushItDown = command.name === 'eval' && !command.args.some(isFunctionItem); // now suggest pipe or comma - suggestions.push( - ...getFinalSuggestions({ - comma: - commandDef.signature.multipleParams && - optionsAvailable.length === commandDef.options.length, - }) - ); + const finalSuggestions = getFinalSuggestions({ + comma: + commandDef.signature.multipleParams && + optionsAvailable.length === commandDef.options.length, + }).map(({ sortText, ...rest }) => ({ + ...rest, + sortText: shouldPushItDown ? `Z${sortText}` : sortText, + })); + suggestions.push(...finalSuggestions); } } // Due to some logic overlapping functions can be repeated @@ -964,6 +970,16 @@ async function getBuiltinFunctionNextArgument( return suggestions; } +function pushItUpInTheList(suggestions: AutocompleteCommandDefinition[], shouldPromote: boolean) { + if (!shouldPromote) { + return suggestions; + } + return suggestions.map(({ sortText, ...rest }) => ({ + ...rest, + sortText: `1${sortText}`, + })); +} + async function getFieldsOrFunctionsSuggestions( types: string[], commandName: string, @@ -986,9 +1002,10 @@ async function getFieldsOrFunctionsSuggestions( ignoreFields?: string[]; } = {} ): Promise { - const filteredFieldsByType = (await (fields - ? getFieldsByType(types, ignoreFields) - : [])) as AutocompleteCommandDefinition[]; + const filteredFieldsByType = pushItUpInTheList( + (await (fields ? getFieldsByType(types, ignoreFields) : [])) as AutocompleteCommandDefinition[], + functions + ); const filteredVariablesByType: string[] = []; if (variables) { @@ -1015,16 +1032,13 @@ async function getFieldsOrFunctionsSuggestions( const suggestions = filteredFieldsByType.concat( functions ? getCompatibleFunctionDefinition(commandName, optionName, types, ignoreFn) : [], - variables ? buildVariablesDefinitions(filteredVariablesByType) : [], - getCompatibleLiterals(commandName, types) // literals are handled internally + variables + ? pushItUpInTheList(buildVariablesDefinitions(filteredVariablesByType), functions) + : [], + getCompatibleLiterals(commandName, types) ); - // rewrite the sortText here to have literals first, then fields, last functions - return suggestions.map(({ sortText, kind, ...rest }) => ({ - ...rest, - kind, - sortText: String.fromCharCode(97 - kind), - })); + return suggestions; } async function getFunctionArgsSuggestions( @@ -1083,6 +1097,29 @@ async function getFunctionArgsSuggestions( isColumnItem(arg) && !columnExists(arg, { fields: fieldsMap, variables: variablesExcludingCurrentCommandOnes }).hit; if (noArgDefined || isUnknownColumn) { + const commandArgIndex = command.args.findIndex( + (cmdArg) => isSingleItem(cmdArg) && cmdArg.location.max >= node.location.max + ); + const finalCommandArgIndex = + command.name !== 'stats' + ? -1 + : commandArgIndex < 0 + ? Math.max(command.args.length - 1, 0) + : commandArgIndex; + + const fnToIgnore = []; + // just ignore the current function + if (command.name !== 'stats') { + fnToIgnore.push(node.name); + } else { + fnToIgnore.push( + ...getFunctionsToIgnoreForStats(command, finalCommandArgIndex), + ...(isAggFunctionUsedAlready(command, finalCommandArgIndex) + ? getAllFunctions({ type: 'agg' }).map(({ name }) => name) + : []) + ); + } + // ... | EVAL fn( ) // ... | EVAL fn( field, ) suggestions.push( @@ -1092,13 +1129,15 @@ async function getFunctionArgsSuggestions( option?.name, getFieldsByType, { - functions: command.name !== 'stats', + functions: true, fields: true, variables: variablesExcludingCurrentCommandOnes, }, // do not repropose the same function as arg // i.e. avoid cases like abs(abs(abs(...))) with suggestions - { ignoreFn: [node.name] } + { + ignoreFn: fnToIgnore, + } )) ); } @@ -1320,7 +1359,10 @@ async function getOptionArgsSuggestions( // ... | ENRICH ... WITH a // effectively only assign will apper suggestions.push( - ...getBuiltinCompatibleFunctionDefinition(command.name, undefined, 'any') + ...pushItUpInTheList( + getBuiltinCompatibleFunctionDefinition(command.name, undefined, 'any'), + true + ) ); } diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts index 8d9f209015e75..5b2d66c309b0f 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts @@ -113,7 +113,7 @@ export const pipeCompleteItem = buildCharCompleteItem( i18n.translate('monaco.esql.autocomplete.pipeDoc', { defaultMessage: 'Pipe (|)', }), - { sortText: 'B', quoted: false } + { sortText: 'C', quoted: false } ); export const commaCompleteItem = buildCharCompleteItem( @@ -121,7 +121,7 @@ export const commaCompleteItem = buildCharCompleteItem( i18n.translate('monaco.esql.autocomplete.commaDoc', { defaultMessage: 'Comma (,)', }), - { sortText: 'C', quoted: false } + { sortText: 'B', quoted: false } ); export const colonCompleteItem = buildCharCompleteItem( diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts index 85f097a566443..312bd981298eb 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts @@ -20,6 +20,7 @@ import { } from '../definitions/types'; import { getCommandDefinition, shouldBeQuotedText } from '../shared/helpers'; import { buildDocumentation, buildFunctionDocumentation } from './documentation_util'; +import { DOUBLE_BACKTICK, SINGLE_TICK_REGEX } from '../shared/constants'; const allFunctions = statsAggregationFunctionDefinitions.concat(evalFunctionsDefinitions); @@ -29,7 +30,9 @@ export const TRIGGER_SUGGESTION_COMMAND = { }; function getSafeInsertText(text: string, options: { dashSupported?: boolean } = {}) { - return shouldBeQuotedText(text, options) ? `\`${text}\`` : text; + return shouldBeQuotedText(text, options) + ? `\`${text.replace(SINGLE_TICK_REGEX, DOUBLE_BACKTICK)}\`` + : text; } export function getAutocompleteFunctionDefinition(fn: FunctionDefinition) { @@ -43,7 +46,8 @@ export function getAutocompleteFunctionDefinition(fn: FunctionDefinition) { documentation: { value: buildFunctionDocumentation(fullSignatures), }, - sortText: 'C', + // agg functgions have priority over everything else + sortText: fn.type === 'agg' ? '1A' : 'C', // trigger a suggestion follow up on selection command: TRIGGER_SUGGESTION_COMMAND, }; @@ -139,7 +143,7 @@ export const buildSourcesDefinitions = (sources: string[]): AutocompleteCommandD insertText: getSafeInsertText(label, { dashSupported: true }), kind: 21, detail: i18n.translate('monaco.esql.autocomplete.sourceDefinition', { - defaultMessage: `Input table`, + defaultMessage: `Index`, }), sortText: 'A', })); @@ -155,7 +159,7 @@ export const buildConstantsDefinitions = ( detail: detail ?? i18n.translate('monaco.esql.autocomplete.constantDefinition', { - defaultMessage: `User defined variable`, + defaultMessage: `Constant`, }), sortText: 'A', })); @@ -215,7 +219,7 @@ export const buildOptionDefinition = ( insertText: option.name, kind: 21, detail: option.description, - sortText: 'D', + sortText: '1', }; if (isAssignType || option.signature.params.length) { completeItem.insertText = isAssignType ? `${option.name} = $0` : `${option.name} $0`; diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/helper.ts b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/helper.ts new file mode 100644 index 0000000000000..b362a3f01e67f --- /dev/null +++ b/packages/kbn-monaco/src/esql/lib/ast/autocomplete/helper.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 { getFunctionDefinition, isAssignment, isFunctionItem } from '../shared/helpers'; +import type { ESQLAstItem, ESQLCommand, ESQLFunction } from '../types'; + +function extractFunctionArgs(args: ESQLAstItem[]): ESQLFunction[] { + return args.flatMap((arg) => (isAssignment(arg) ? arg.args[1] : arg)).filter(isFunctionItem); +} + +function checkContent(fn: ESQLFunction): boolean { + const fnDef = getFunctionDefinition(fn.name); + return (!!fnDef && fnDef.type === 'agg') || extractFunctionArgs(fn.args).some(checkContent); +} + +export function isAggFunctionUsedAlready(command: ESQLCommand, argIndex: number) { + if (argIndex < 0) { + return false; + } + const arg = command.args[argIndex]; + return isFunctionItem(arg) ? checkContent(arg) : false; +} + +function getFnContent(fn: ESQLFunction): string[] { + return [fn.name].concat(extractFunctionArgs(fn.args).flatMap(getFnContent)); +} + +export function getFunctionsToIgnoreForStats(command: ESQLCommand, argIndex: number) { + if (argIndex < 0) { + return []; + } + const arg = command.args[argIndex]; + return isFunctionItem(arg) ? getFnContent(arg) : []; +} diff --git a/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts b/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts index 6d27682511d57..77b376b197b8a 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts @@ -22,6 +22,7 @@ import { import { ESQLCallbacks } from '../shared/types'; import { AstProviderFn, ESQLAst, ESQLCommand } from '../types'; import { buildQueryForFieldsFromSource } from '../validation/helpers'; +import { DOUBLE_BACKTICK, SINGLE_TICK_REGEX } from '../shared/constants'; type GetSourceFn = () => Promise; type GetFieldsByTypeFn = (type: string | string[], ignored?: string[]) => Promise; @@ -191,7 +192,7 @@ async function getQuotableActionForColumns( const actions = []; if (shouldBeQuotedText(errorText)) { const availableFields = new Set(await getFieldsByType('any')); - const solution = `\`${errorText}\``; + const solution = `\`${errorText.replace(SINGLE_TICK_REGEX, DOUBLE_BACKTICK)}\``; if (availableFields.has(errorText) || availableFields.has(solution)) { actions.push( createAction( diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts index 13e12f4504965..c0b3dcd97c787 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts @@ -16,7 +16,7 @@ function createNumericAggDefinition({ }: { name: string; description: string; - args?: Array<{ name: string; type: string; value: string }>; + args?: Array<{ name: string; type: string; value: string; literalOnly?: boolean }>; }): FunctionDefinition { const extraParamsExample = args.length ? `, ${args.map(({ value }) => value).join(',')}` : ''; return { @@ -28,10 +28,11 @@ function createNumericAggDefinition({ { params: [ { name: 'column', type: 'number', noNestingFunctions: true }, - ...args.map(({ name: paramName, type }) => ({ + ...args.map(({ name: paramName, type, literalOnly }) => ({ name: paramName, type, noNestingFunctions: true, + literalOnly, })), ], returnType: 'number', @@ -87,7 +88,7 @@ export const statsAggregationFunctionDefinitions: FunctionDefinition[] = [ description: i18n.translate('monaco.esql.definitions.percentiletDoc', { defaultMessage: 'Returns the n percentile of a field.', }), - args: [{ name: 'percentile', type: 'number', value: '90' }], + args: [{ name: 'percentile', type: 'number', value: '90', literalOnly: true }], }, ] .map(createNumericAggDefinition) @@ -143,7 +144,7 @@ export const statsAggregationFunctionDefinitions: FunctionDefinition[] = [ signatures: [ { params: [{ name: 'column', type: 'cartesian_point', noNestingFunctions: true }], - returnType: 'number', + returnType: 'cartesian_point', examples: [ `from index | stats result = st_centroid(cartesian_field)`, `from index | stats st_centroid(cartesian_field)`, @@ -151,7 +152,7 @@ export const statsAggregationFunctionDefinitions: FunctionDefinition[] = [ }, { params: [{ name: 'column', type: 'geo_point', noNestingFunctions: true }], - returnType: 'number', + returnType: 'geo_point', examples: [ `from index | stats result = st_centroid(geo_field)`, `from index | stats st_centroid(geo_field)`, diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts index c8357574e7fcc..ead7b89a693f2 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts @@ -154,7 +154,7 @@ export const builtinFunctions: FunctionDefinition[] = [ type: 'warning' as const, code: 'moduleByZero', text: i18n.translate('monaco.esql.divide.warning.zeroModule', { - defaultMessage: 'Module by zero can return null value: {left}/{right}', + defaultMessage: 'Module by zero can return null value: {left}%{right}', values: { left: left.text, right: right.value, diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts index 35e9649f7f189..d30a03cbc6ff2 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts @@ -10,11 +10,11 @@ import { i18n } from '@kbn/i18n'; import { getFunctionDefinition, isAssignment, - isAssignmentComplete, isColumnItem, isFunctionItem, + isLiteralItem, } from '../shared/helpers'; -import type { ESQLColumn, ESQLCommand, ESQLAstItem, ESQLMessage } from '../types'; +import type { ESQLColumn, ESQLCommand, ESQLAstItem, ESQLMessage, ESQLFunction } from '../types'; import { enrichModes } from './settings'; import { appendSeparatorOption, @@ -99,57 +99,85 @@ export const commandDefinitions: CommandDefinition[] = [ // unfortunately the logic here is a bit complex as it needs to dig deeper into the args // until an agg function is detected // in the long run this might be integrated into the validation function - const fnArg = command.args.filter(isFunctionItem); - if (fnArg.length) { - function isAggFunction(arg: ESQLAstItem) { + const statsArg = command.args + .flatMap((arg) => (isAssignment(arg) ? arg.args[1] : arg)) + .filter(isFunctionItem); + + if (statsArg.length) { + function isAggFunction(arg: ESQLAstItem): arg is ESQLFunction { return isFunctionItem(arg) && getFunctionDefinition(arg.name)?.type === 'agg'; } - function isOtherFunction(arg: ESQLAstItem) { + function isOtherFunction(arg: ESQLAstItem): arg is ESQLFunction { return isFunctionItem(arg) && getFunctionDefinition(arg.name)?.type !== 'agg'; } - function isOtherFunctionWithAggInside(arg: ESQLAstItem) { - return ( - isFunctionItem(arg) && - isOtherFunction(arg) && - arg.args.filter(isFunctionItem).some( - // this is recursive as builtin fns can be wrapped one withins another - (subArg): boolean => - isAggFunction(subArg) || - (isOtherFunction(subArg) ? isOtherFunctionWithAggInside(subArg) : false) - ) - ); + + function checkAggExistence(arg: ESQLFunction): boolean { + if (isAggFunction(arg)) { + return true; + } + if (isOtherFunction(arg)) { + return (arg as ESQLFunction).args.filter(isFunctionItem).some(checkAggExistence); + } + return false; } - // which is the presence of at least one agg type function at root level - const hasAggFunction = fnArg.some(isAggFunction); - // or as builtin function arg with an agg function as sub arg - const hasAggFunctionWithinBuiltin = fnArg - .filter((arg) => !isAssignment(arg)) - .some(isOtherFunctionWithAggInside); + // first check: is there an agg function somewhere? + const noAggsExpressions = statsArg.filter((arg) => !checkAggExistence(arg)); - // assignment requires a special handling - const hasAggFunctionWithinAssignment = fnArg - .filter((arg) => isAssignment(arg) && isAssignmentComplete(arg)) - // extract the right hand side of the assignments - .flatMap((arg) => arg.args[1]) - .filter(isFunctionItem) - // now check that they are either agg functions - // or builtin functions with an agg function as sub arg - .some((arg) => isAggFunction(arg) || isOtherFunctionWithAggInside(arg)); + if (noAggsExpressions.length) { + messages.push( + ...noAggsExpressions.map((fn) => ({ + location: fn.location, + text: i18n.translate('monaco.esql.validation.statsNoAggFunction', { + defaultMessage: + 'At least one aggregation function required in [STATS], found [{expression}]', + values: { + expression: fn.text, + }, + }), + type: 'error' as const, + code: 'statsNoAggFunction', + })) + ); + } else { + function isConstantOrAggFn(arg: ESQLAstItem): boolean { + return isLiteralItem(arg) || isAggFunction(arg); + } + // now check that: + // * the agg function is at root level + // * or if it's a builtin function, then all operands are agg functions or literals + // * or if it's a eval function then all arguments are agg functions or literals + function checkFunctionContent(arg: ESQLFunction) { + if (isAggFunction(arg)) { + return true; + } + return (arg as ESQLFunction).args.every( + (subArg): boolean => + isConstantOrAggFn(subArg) || + (isOtherFunction(subArg) ? checkFunctionContent(subArg) : false) + ); + } + // @TODO: improve here the check to get the last instance of the invalidExpression + // to provide a better location for the error message + // i.e. STATS round(round(round( a + sum(b) ))) + // should return the location of the + node, just before the agg one + const invalidExpressions = statsArg.filter((arg) => !checkFunctionContent(arg)); - if (!hasAggFunction && !hasAggFunctionWithinBuiltin && !hasAggFunctionWithinAssignment) { - messages.push({ - location: command.location, - text: i18n.translate('monaco.esql.validation.noNestedArgumentSupport', { - defaultMessage: - "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [{name}] of type [{argType}]", - values: { - name: fnArg[0].name, - argType: getFunctionDefinition(fnArg[0].name)?.signatures[0].returnType, - }, - }), - type: 'error', - code: 'noNestedArgumentSupport', - }); + if (invalidExpressions.length) { + messages.push( + ...invalidExpressions.map((fn) => ({ + location: fn.location, + text: i18n.translate('monaco.esql.validation.noCombinationOfAggAndNonAggValues', { + defaultMessage: + 'Cannot combine aggregation and non-aggregation values in [STATS], found [{expression}]', + values: { + expression: fn.text, + }, + }), + type: 'error' as const, + code: 'statsNoCombinationOfAggAndNonAggValues', + })) + ); + } } } return messages; diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts index 64382fa831a64..325fb7cfeae3c 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts @@ -141,8 +141,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ signatures: [ { params: [{ name: 'field', type: 'string' }], - infiniteParams: true, - minParams: 1, + minParams: 2, returnType: 'string', examples: ['from index | eval concatenated = concat(field1, "-", field2)'], }, @@ -561,8 +560,8 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ params: [ { name: 'field', type: 'date' }, { name: 'buckets', type: 'number' }, - { name: 'startDate', type: 'string' }, - { name: 'endDate', type: 'string' }, + { name: 'startDate', type: 'string', literalOnly: true }, + { name: 'endDate', type: 'string', literalOnly: true }, ], returnType: 'date', examples: [ @@ -573,8 +572,8 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ params: [ { name: 'field', type: 'date' }, { name: 'buckets', type: 'number' }, - { name: 'startValue', type: 'number' }, - { name: 'endValue', type: 'number' }, + { name: 'startValue', type: 'number', literalOnly: true }, + { name: 'endValue', type: 'number', literalOnly: true }, ], returnType: 'number', examples: ['from index | eval bs = auto_bucket(salary, 20, 25324, 74999)'], @@ -730,9 +729,9 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'field', type: 'number' }], + params: [{ name: 'field', type: 'any' }], infiniteParams: true, - returnType: 'number', + returnType: 'any', examples: [`ROW a = 10, b = 20 | EVAL g = GREATEST(a, b)`], }, ], @@ -744,11 +743,9 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [ - { name: 'first', type: 'number' }, - { name: 'rest', type: 'number' }, - ], - returnType: 'number', + params: [{ name: 'first', type: 'any' }], + infiniteParams: true, + returnType: 'any', examples: ['from index | eval l = least(a, b)'], }, ], @@ -1006,8 +1003,8 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'multivalue', type: 'number' }], - returnType: 'number', + params: [{ name: 'multivalue', type: 'any' }], + returnType: 'any', examples: ['row a = [1, 2, 3] | eval mv_max(a)'], }, ], @@ -1020,8 +1017,8 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }), signatures: [ { - params: [{ name: 'multivalue', type: 'number' }], - returnType: 'number', + params: [{ name: 'multivalue', type: 'any' }], + returnType: 'any', examples: ['row a = [1, 2, 3] | eval mv_min(a)'], }, ], diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts index 0c086cfe5e679..aaca3873b6f97 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts @@ -23,6 +23,7 @@ export interface FunctionDefinition { optional?: boolean; noNestingFunctions?: boolean; supportsWildcard?: boolean; + literalOnly?: boolean; }>; infiniteParams?: boolean; minParams?: number; diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/constants.ts b/packages/kbn-monaco/src/esql/lib/ast/shared/constants.ts index 618928f36bcfb..fffd8af2f68ec 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/constants.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/shared/constants.ts @@ -7,3 +7,9 @@ */ export const EDITOR_MARKER = 'marker_esql_editor'; + +export const TICKS_REGEX = /^(`)|(`)$/g; +export const DOUBLE_TICKS_REGEX = /``/g; +export const SINGLE_TICK_REGEX = /`/g; +export const SINGLE_BACKTICK = '`'; +export const DOUBLE_BACKTICK = '``'; diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts b/packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts index ec51d4ec66c90..2cedc73062542 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts @@ -42,7 +42,7 @@ import { import { ESQLRealField, ESQLVariable, ReferenceMaps } from '../validation/types'; import { removeMarkerArgFromArgsList } from './context'; -function isSingleItem(arg: ESQLAstItem): arg is ESQLSingleAstItem { +export function isSingleItem(arg: ESQLAstItem): arg is ESQLSingleAstItem { return arg && !Array.isArray(arg); } @@ -375,11 +375,14 @@ export function isEqualType( // anything goes, so avoid any effort here return true; } + // perform a double check, but give priority to the non trimmed version const hit = getColumnHit(item.name, references); - if (!hit) { + const hitTrimmed = getColumnHit(item.name.replace(/\s/g, ''), references); + const validHit = hit || hitTrimmed; + if (!validHit) { return false; } - const wrappedTypes = Array.isArray(hit.type) ? hit.type : [hit.type]; + const wrappedTypes = Array.isArray(validHit.type) ? validHit.type : [validHit.type]; return wrappedTypes.some((ct) => argType === ct); } } @@ -425,6 +428,11 @@ function getWildcardPosition(name: string) { export function hasWildcard(name: string) { return name.includes('*'); } +export function isVariable( + column: ESQLRealField | ESQLVariable | undefined +): column is ESQLVariable { + return Boolean(column && 'location' in column); +} export function hasCCSSource(name: string) { return name.includes(':'); } @@ -437,7 +445,7 @@ export function columnExists( return { hit: true, nameHit: column.name }; } if (column.quoted) { - const trimmedName = column.name.replace(/\s/g, ''); + const trimmedName = column.name.replace(/`/g, '``').replace(/\s/g, ''); if (variables.has(trimmedName)) { return { hit: true, nameHit: trimmedName }; } diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/variables.ts b/packages/kbn-monaco/src/esql/lib/ast/shared/variables.ts index 05b31c9449423..6dd05b788d4d2 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/variables.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/shared/variables.ts @@ -8,7 +8,7 @@ import type { ESQLColumn, ESQLAstItem, ESQLCommand, ESQLCommandOption } from '../types'; import type { ESQLVariable, ESQLRealField } from '../validation/types'; -import { EDITOR_MARKER } from './constants'; +import { DOUBLE_TICKS_REGEX, EDITOR_MARKER, SINGLE_BACKTICK, TICKS_REGEX } from './constants'; import { isColumnItem, isAssignment, @@ -136,7 +136,9 @@ export function collectVariables( // just save the entire expression as variable string const expressionType = 'number'; addToVariableOccurrencies(variables, { - name: expressionOperation.text.replace(/`/g, ''), + name: expressionOperation.text + .replace(TICKS_REGEX, '') + .replace(DOUBLE_TICKS_REGEX, SINGLE_BACKTICK), type: expressionType, location: expressionOperation.location, }); diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts index 0749c16496c94..997b2671d3972 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts @@ -89,7 +89,7 @@ function getMessageAndTypeFromId({ return { message: i18n.translate('monaco.esql.validation.unsupportedColumnTypeForCommand', { defaultMessage: - '{command} only supports {type} {typeCount, plural, one {type} other {types}} values, found [{column}] of type {givenType}', + '{command} only supports {type} {typeCount, plural, one {type} other {types}} values, found [{column}] of type [{givenType}]', values: { command: out.command, type: out.type, @@ -162,9 +162,10 @@ function getMessageAndTypeFromId({ case 'unknownAggregateFunction': return { message: i18n.translate('monaco.esql.validation.unknowAggregateFunction', { - defaultMessage: '{command} expects an aggregate function, found [{value}]', + defaultMessage: + 'Expected an aggregate function or group but got [{value}] of type [{type}]', values: { - command: out.command, + type: out.type, value: out.value, }, }), @@ -223,6 +224,17 @@ function getMessageAndTypeFromId({ }), type: 'error', }; + case 'expectedConstant': + return { + message: i18n.translate('monaco.esql.validation.expectedConstantValue', { + defaultMessage: 'Argument of [{fn}] must be a constant, received [{given}]', + values: { + given: out.given, + fn: out.fn, + }, + }), + type: 'error', + }; } return { message: '' }; } @@ -252,3 +264,9 @@ export function createMessage( code: messageId, }; } + +export function getUnknownTypeLabel() { + return i18n.translate('monaco.esql.validation.unknownColumnType', { + defaultMessage: 'Unknown type', + }); +} diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts index d632d3a31d085..596eaf474bfac 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts @@ -103,7 +103,7 @@ export interface ValidationErrors { }; unknownAggregateFunction: { message: string; - type: { command: string; value: string }; + type: { type: string; value: string }; }; wildcardNotSupportedForCommand: { message: string; @@ -125,6 +125,10 @@ export interface ValidationErrors { message: string; type: { command: string; value: string; expected: string }; }; + expectedConstant: { + message: string; + type: { fn: string; given: string }; + }; } export type ErrorTypes = keyof ValidationErrors; diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts index 7c339a8ab9fb8..1219637a563dd 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts @@ -22,56 +22,70 @@ import { statsAggregationFunctionDefinitions } from '../definitions/aggs'; import capitalize from 'lodash/capitalize'; import { EditorError } from '../../../../types'; import { camelCase } from 'lodash'; +import { nonNullable } from '../ast_helpers'; const fieldTypes = ['number', 'date', 'boolean', 'ip', 'string', 'cartesian_point', 'geo_point']; +const fields = [ + ...fieldTypes.map((type) => ({ name: `${camelCase(type)}Field`, type })), + { name: 'any#Char$Field', type: 'number' }, + { name: 'kubernetes.something.something', type: 'number' }, + { name: '@timestamp', type: 'date' }, +]; +const enrichFields = [ + { name: 'otherField', type: 'string' }, + { name: 'yetAnotherField', type: 'number' }, +]; +// eslint-disable-next-line @typescript-eslint/naming-convention +const unsupported_field = [{ name: 'unsupported_field', type: 'unsupported' }]; +const indexes = [ + 'a_index', + 'index', + 'other_index', + '.secret_index', + 'my-index', + 'unsupported_index', +]; +const policies = [ + { + name: 'policy', + sourceIndices: ['enrich_index'], + matchField: 'otherStringField', + enrichFields: ['otherField', 'yetAnotherField'], + }, + { + name: 'policy$', + sourceIndices: ['enrich_index'], + matchField: 'otherStringField', + enrichFields: ['otherField', 'yetAnotherField'], + }, +]; function getCallbackMocks() { return { getFieldsFor: jest.fn(async ({ query }) => { if (/enrich/.test(query)) { - return [ - { name: 'otherField', type: 'string' }, - { name: 'yetAnotherField', type: 'number' }, - ]; + return enrichFields; } if (/unsupported_index/.test(query)) { - return [{ name: 'unsupported_field', type: 'unsupported' }]; + return unsupported_field; } if (/dissect|grok/.test(query)) { return [{ name: 'firstWord', type: 'string' }]; } - return [ - ...fieldTypes.map((type) => ({ name: `${camelCase(type)}Field`, type })), - { name: 'any#Char$Field', type: 'number' }, - { name: 'kubernetes.something.something', type: 'number' }, - { name: '@timestamp', type: 'date' }, - ]; + return fields; }), getSources: jest.fn(async () => - ['a', 'index', 'otherIndex', '.secretIndex', 'my-index', 'unsupported_index'].map((name) => ({ + indexes.map((name) => ({ name, hidden: name.startsWith('.'), })) ), - getPolicies: jest.fn(async () => [ - { - name: 'policy', - sourceIndices: ['enrichIndex1'], - matchField: 'otherStringField', - enrichFields: ['otherField', 'yetAnotherField'], - }, - { - name: 'policy[]', - sourceIndices: ['enrichIndex1'], - matchField: 'otherStringField', - enrichFields: ['otherField', 'yetAnotherField'], - }, - ]), + getPolicies: jest.fn(async () => policies), getMetaFields: jest.fn(async () => ['_id', '_source']), }; } -const toDoubleSignature = evalFunctionsDefinitions.find(({ name }) => name === 'to_double')!; +const toInteger = evalFunctionsDefinitions.find(({ name }) => name === 'to_integer')!; const toStringSignature = evalFunctionsDefinitions.find(({ name }) => name === 'to_string')!; const toDateSignature = evalFunctionsDefinitions.find(({ name }) => name === 'to_datetime')!; const toBooleanSignature = evalFunctionsDefinitions.find(({ name }) => name === 'to_boolean')!; @@ -84,7 +98,7 @@ const toCartesianPointSignature = evalFunctionsDefinitions.find( const toAvgSignature = statsAggregationFunctionDefinitions.find(({ name }) => name === 'avg')!; const nestedFunctions = { - number: prepareNestedFunction(toDoubleSignature), + number: prepareNestedFunction(toInteger), string: prepareNestedFunction(toStringSignature), date: prepareNestedFunction(toDateSignature), boolean: prepareNestedFunction(toBooleanSignature), @@ -146,14 +160,22 @@ function getFieldMapping( useLiterals: true, } ) { - return params.map(({ name: _name, type, ...rest }) => { + const literalValues = { + string: `"a"`, + number: '5', + }; + return params.map(({ name: _name, type, literalOnly, ...rest }) => { const typeString: string = type; if (fieldTypes.includes(typeString)) { + const fieldName = + literalOnly && typeString in literalValues + ? literalValues[typeString as keyof typeof literalValues]! + : getFieldName(typeString, { + useNestedFunction, + isStats: !useLiterals, + }); return { - name: getFieldName(typeString, { - useNestedFunction, - isStats: !useLiterals, - }), + name: fieldName, type, ...rest, }; @@ -176,6 +198,61 @@ function getFieldMapping( }); } +function generateWrongMappingForArgs( + name: string, + signatures: FunctionDefinition['signatures'], + currentParams: FunctionDefinition['signatures'][number]['params'], + values: { stringField: string; numberField: string; booleanField: string } +) { + const literalValues = { + string: `"a"`, + number: '5', + }; + const wrongFieldMapping = currentParams.map(({ name: _name, literalOnly, type, ...rest }, i) => { + // this thing is complex enough, let's not make it harder for constants + if (literalOnly) { + return { name: literalValues[type as keyof typeof literalValues], type, ...rest }; + } + const typeString = type; + const canBeFieldButNotString = + fieldTypes.filter((t) => t !== 'string').includes(typeString) && + signatures.every(({ params: fnParams }) => fnParams[i].type !== 'string'); + const canBeFieldButNotNumber = + fieldTypes.filter((t) => t !== 'number').includes(typeString) && + signatures.every(({ params: fnParams }) => fnParams[i].type !== 'number'); + const isLiteralType = /literal$/.test(typeString); + // pick a field name purposely wrong + const nameValue = + canBeFieldButNotString || isLiteralType + ? values.stringField + : canBeFieldButNotNumber + ? values.numberField + : values.booleanField; + return { name: nameValue, type, ...rest }; + }); + + const generatedFieldTypes = { + [values.stringField]: 'string', + [values.numberField]: 'number', + [values.booleanField]: 'boolean', + }; + + const expectedErrors = signatures[0].params + .filter(({ literalOnly }) => !literalOnly) + .map(({ type }, i) => { + const fieldName = wrongFieldMapping[i].name; + if ( + fieldName === 'numberField' && + signatures.every(({ params: fnParams }) => fnParams[i].type !== 'string') + ) { + return; + } + return `Argument of [${name}] must be [${type}], found value [${fieldName}] type [${generatedFieldTypes[fieldName]}]`; + }) + .filter(nonNullable); + return { wrongFieldMapping, expectedErrors }; +} + describe('validation logic', () => { const getAstAndErrors = async ( text: string | undefined @@ -263,7 +340,7 @@ describe('validation logic', () => { testErrorsAndWarnings(`FrOm index`, []); testErrorsAndWarnings('from `index`', []); - testErrorsAndWarnings(`from index, otherIndex`, []); + testErrorsAndWarnings(`from index, other_index`, []); testErrorsAndWarnings(`from index, missingIndex`, ['Unknown index [missingIndex]']); testErrorsAndWarnings(`from fn()`, ['Unknown index [fn()]']); testErrorsAndWarnings(`from average()`, ['Unknown index [average()]']); @@ -325,8 +402,8 @@ describe('validation logic', () => { testErrorsAndWarnings(`from remote-*:indexes*`, []); testErrorsAndWarnings(`from remote-*:indexes`, []); testErrorsAndWarnings(`from remote-ccs:indexes`, []); - testErrorsAndWarnings(`from a, remote-ccs:indexes`, []); - testErrorsAndWarnings('from .secretIndex', []); + testErrorsAndWarnings(`from a_index, remote-ccs:indexes`, []); + testErrorsAndWarnings('from .secret_index', []); testErrorsAndWarnings('from my-index', []); testErrorsAndWarnings('from numberField', ['Unknown index [numberField]']); testErrorsAndWarnings('from policy', ['Unknown index [policy]']); @@ -449,26 +526,11 @@ describe('validation logic', () => { testErrorsAndWarnings(`row var = ${signatureString}`, []); - const wrongFieldMapping = params.map(({ name: _name, type, ...rest }) => { - const typeString = type; - const canBeFieldButNotString = [ - 'number', - 'date', - 'boolean', - 'ip', - 'cartesian_point', - 'geo_point', - ].includes(typeString); - const isLiteralType = /literal$/.test(typeString); - // pick a field name purposely wrong - const nameValue = canBeFieldButNotString || isLiteralType ? '"a"' : '5'; - return { name: nameValue, type, ...rest }; - }); - const expectedErrors = params.map( - ({ type }, i) => - `Argument of [${name}] must be [${type}], found value [${ - wrongFieldMapping[i].name - }] type [${wrongFieldMapping[i].name === '5' ? 'number' : 'string'}]` + const { wrongFieldMapping, expectedErrors } = generateWrongMappingForArgs( + name, + signatures, + params, + { stringField: '"a"', numberField: '5', booleanField: 'true' } ); const wrongSignatureString = tweakSignatureForRowCommand( getFunctionSignatures( @@ -483,7 +545,7 @@ describe('validation logic', () => { for (const op of ['>', '>=', '<', '<=', '==']) { testErrorsAndWarnings(`row var = 5 ${op} 0`, []); testErrorsAndWarnings(`row var = NOT 5 ${op} 0`, []); - testErrorsAndWarnings(`row var = (numberField ${op} 0)`, []); + testErrorsAndWarnings(`row var = (numberField ${op} 0)`, ['Unknown column [numberField]']); testErrorsAndWarnings(`row var = (NOT (5 ${op} 0))`, []); testErrorsAndWarnings(`row var = "a" ${op} 0`, [ `Argument of [${op}] must be [number], found value ["a"] type [string]`, @@ -598,17 +660,14 @@ describe('validation logic', () => { }); describe('keep', () => { - testErrorsAndWarnings('from index | keep ', [ - `SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''`, - ]); + testErrorsAndWarnings('from index | keep ', ["SyntaxError: missing ID_PATTERN at ''"]); testErrorsAndWarnings('from index | keep stringField, numberField, dateField', []); testErrorsAndWarnings('from index | keep `stringField`, `numberField`, `dateField`', []); testErrorsAndWarnings('from index | keep 4.5', [ "SyntaxError: token recognition error at: '4'", "SyntaxError: token recognition error at: '5'", - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at '.'", - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''", - 'Unknown column [.]', + "SyntaxError: missing ID_PATTERN at '.'", + "SyntaxError: missing ID_PATTERN at ''", ]); testErrorsAndWarnings('from index | keep `4.5`', ['Unknown column [4.5]']); testErrorsAndWarnings('from index | keep missingField, numberField, dateField', [ @@ -642,19 +701,25 @@ describe('validation logic', () => { 'Field [unsupported_field] cannot be retrieved, it is unsupported or not indexed; returning null', ] ); + + testErrorsAndWarnings( + `FROM index | STATS ROUND(AVG(numberField * 1.5)), COUNT(*), MIN(numberField * 10) | KEEP \`MIN(numberField * 10)\``, + [] + ); + testErrorsAndWarnings( + `FROM index | STATS COUNT(*), MIN(numberField * 10), MAX(numberField)| KEEP \`COUNT(*)\``, + [] + ); }); describe('drop', () => { - testErrorsAndWarnings('from index | drop ', [ - `SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''`, - ]); + testErrorsAndWarnings('from index | drop ', ["SyntaxError: missing ID_PATTERN at ''"]); testErrorsAndWarnings('from index | drop stringField, numberField, dateField', []); testErrorsAndWarnings('from index | drop 4.5', [ "SyntaxError: token recognition error at: '4'", "SyntaxError: token recognition error at: '5'", - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at '.'", - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''", - 'Unknown column [.]', + "SyntaxError: missing ID_PATTERN at '.'", + "SyntaxError: missing ID_PATTERN at ''", ]); testErrorsAndWarnings('from index | drop missingField, numberField, dateField', [ 'Unknown column [missingField]', @@ -682,17 +747,25 @@ describe('validation logic', () => { [], ['Drop [@timestamp] will remove all time filters to the search results'] ); + testErrorsAndWarnings( + `FROM index | STATS ROUND(AVG(numberField * 1.5)), COUNT(*), MIN(numberField * 10) | DROP \`MIN(numberField * 10)\``, + [] + ); + testErrorsAndWarnings( + `FROM index | STATS COUNT(*), MIN(numberField * 10), MAX(numberField)| DROP \`COUNT(*)\``, + [] + ); }); describe('mv_expand', () => { - testErrorsAndWarnings('from a | mv_expand ', [ + testErrorsAndWarnings('from a_index | mv_expand ', [ "SyntaxError: missing {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} at ''", ]); for (const type of ['string', 'number', 'date', 'boolean', 'ip']) { - testErrorsAndWarnings(`from a | mv_expand ${type}Field`, []); + testErrorsAndWarnings(`from a_index | mv_expand ${type}Field`, []); } - testErrorsAndWarnings('from a | mv_expand numberField, b', [ + testErrorsAndWarnings('from a_index | mv_expand numberField, b', [ "SyntaxError: token recognition error at: ','", "SyntaxError: extraneous input 'b' expecting ", ]); @@ -704,133 +777,147 @@ describe('validation logic', () => { }); describe('rename', () => { - testErrorsAndWarnings('from a | rename', [ - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''", - ]); - testErrorsAndWarnings('from a | rename stringField', [ + testErrorsAndWarnings('from a_index | rename', ["SyntaxError: missing ID_PATTERN at ''"]); + testErrorsAndWarnings('from a_index | rename stringField', [ 'SyntaxError: expected {DOT, AS} but found ""', ]); - testErrorsAndWarnings('from a | rename a', [ + testErrorsAndWarnings('from a_index | rename a', [ 'SyntaxError: expected {DOT, AS} but found ""', 'Unknown column [a]', ]); - testErrorsAndWarnings('from a | rename stringField as', [ - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''", + testErrorsAndWarnings('from a_index | rename stringField as', [ + "SyntaxError: missing ID_PATTERN at ''", ]); - testErrorsAndWarnings('from a | rename missingField as', [ - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''", + testErrorsAndWarnings('from a_index | rename missingField as', [ + "SyntaxError: missing ID_PATTERN at ''", 'Unknown column [missingField]', ]); - testErrorsAndWarnings('from a | rename stringField as b', []); - testErrorsAndWarnings('from a | rename stringField AS b', []); - testErrorsAndWarnings('from a | rename stringField As b', []); - testErrorsAndWarnings('from a | rename stringField As b, b AS c', []); - testErrorsAndWarnings('from a | rename fn() as a', [ + testErrorsAndWarnings('from a_index | rename stringField as b', []); + testErrorsAndWarnings('from a_index | rename stringField AS b', []); + testErrorsAndWarnings('from a_index | rename stringField As b', []); + testErrorsAndWarnings('from a_index | rename stringField As b, b AS c', []); + testErrorsAndWarnings('from a_index | rename fn() as a', [ "SyntaxError: token recognition error at: '('", "SyntaxError: token recognition error at: ')'", 'Unknown column [fn]', 'Unknown column [a]', ]); - testErrorsAndWarnings('from a | eval numberField + 1 | rename `numberField + 1` as a', []); testErrorsAndWarnings( - 'from a | stats avg(numberField) | rename `avg(numberField)` as avg0', + 'from a_index | eval numberField + 1 | rename `numberField + 1` as a', [] ); - testErrorsAndWarnings('from a | eval numberField + 1 | rename `numberField + 1` as ', [ - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''", + testErrorsAndWarnings( + 'from a_index | stats avg(numberField) | rename `avg(numberField)` as avg0', + [] + ); + testErrorsAndWarnings('from a_index |eval numberField + 1 | rename `numberField + 1` as ', [ + "SyntaxError: missing ID_PATTERN at ''", ]); - testErrorsAndWarnings('from a | rename s* as strings', [ + testErrorsAndWarnings('from a_index | rename s* as strings', [ 'Using wildcards (*) in RENAME is not allowed [s*]', 'Unknown column [strings]', ]); + testErrorsAndWarnings('row a = 10 | rename a as `this``is fine`', []); + testErrorsAndWarnings('row a = 10 | rename a as this is fine', [ + 'SyntaxError: expected {DOT, AS} but found "is"', + ]); }); describe('dissect', () => { - testErrorsAndWarnings('from a | dissect', [ + testErrorsAndWarnings('from a_index | dissect', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', ]); - testErrorsAndWarnings('from a | dissect stringField', [ + testErrorsAndWarnings('from a_index | dissect stringField', [ "SyntaxError: missing STRING at ''", ]); - testErrorsAndWarnings('from a | dissect stringField 2', [ + testErrorsAndWarnings('from a_index | dissect stringField 2', [ 'SyntaxError: expected {STRING, DOT} but found "2"', ]); - testErrorsAndWarnings('from a | dissect stringField .', [ + testErrorsAndWarnings('from a_index | dissect stringField .', [ "SyntaxError: missing {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} at ''", 'Unknown column [stringField.]', ]); - testErrorsAndWarnings('from a | dissect stringField %a', [ + testErrorsAndWarnings('from a_index | dissect stringField %a', [ "SyntaxError: missing STRING at '%'", ]); // Do not try to validate the dissect pattern string - testErrorsAndWarnings('from a | dissect stringField "%{firstWord}"', []); - testErrorsAndWarnings('from a | dissect numberField "%{firstWord}"', [ - 'DISSECT only supports string type values, found [numberField] of type number', + testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}"', []); + testErrorsAndWarnings('from a_index | dissect numberField "%{firstWord}"', [ + 'DISSECT only supports string type values, found [numberField] of type [number]', ]); - testErrorsAndWarnings('from a | dissect stringField "%{firstWord}" option ', [ + testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option ', [ 'SyntaxError: expected {ASSIGN} but found ""', ]); - testErrorsAndWarnings('from a | dissect stringField "%{firstWord}" option = ', [ + testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option = ', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET} but found ""', 'Invalid option for DISSECT: [option]', ]); - testErrorsAndWarnings('from a | dissect stringField "%{firstWord}" option = 1', [ + testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option = 1', [ 'Invalid option for DISSECT: [option]', ]); - testErrorsAndWarnings('from a | dissect stringField "%{firstWord}" append_separator = "-"', []); - testErrorsAndWarnings('from a | dissect stringField "%{firstWord}" ignore_missing = true', [ - 'Invalid option for DISSECT: [ignore_missing]', - ]); - testErrorsAndWarnings('from a | dissect stringField "%{firstWord}" append_separator = true', [ - 'Invalid value for DISSECT append_separator: expected a string, but was [true]', - ]); - testErrorsAndWarnings('from a | dissect stringField "%{firstWord}" | keep firstWord', []); - // testErrorsAndWarnings('from a | dissect s* "%{a}"', [ + testErrorsAndWarnings( + 'from a_index | dissect stringField "%{firstWord}" append_separator = "-"', + [] + ); + testErrorsAndWarnings( + 'from a_index | dissect stringField "%{firstWord}" ignore_missing = true', + ['Invalid option for DISSECT: [ignore_missing]'] + ); + testErrorsAndWarnings( + 'from a_index | dissect stringField "%{firstWord}" append_separator = true', + ['Invalid value for DISSECT append_separator: expected a string, but was [true]'] + ); + testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" | keep firstWord', []); + // testErrorsAndWarnings('from a_index | dissect s* "%{a}"', [ // 'Using wildcards (*) in dissect is not allowed [s*]', // ]); }); describe('grok', () => { - testErrorsAndWarnings('from a | grok', [ + testErrorsAndWarnings('from a_index | grok', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', ]); - testErrorsAndWarnings('from a | grok stringField', ["SyntaxError: missing STRING at ''"]); - testErrorsAndWarnings('from a | grok stringField 2', [ + testErrorsAndWarnings('from a_index | grok stringField', [ + "SyntaxError: missing STRING at ''", + ]); + testErrorsAndWarnings('from a_index | grok stringField 2', [ 'SyntaxError: expected {STRING, DOT} but found "2"', ]); - testErrorsAndWarnings('from a | grok stringField .', [ + testErrorsAndWarnings('from a_index | grok stringField .', [ "SyntaxError: missing {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} at ''", 'Unknown column [stringField.]', ]); - testErrorsAndWarnings('from a | grok stringField %a', ["SyntaxError: missing STRING at '%'"]); + testErrorsAndWarnings('from a_index | grok stringField %a', [ + "SyntaxError: missing STRING at '%'", + ]); // Do not try to validate the grok pattern string - testErrorsAndWarnings('from a | grok stringField "%{firstWord}"', []); - testErrorsAndWarnings('from a | grok numberField "%{firstWord}"', [ - 'GROK only supports string type values, found [numberField] of type number', + testErrorsAndWarnings('from a_index | grok stringField "%{firstWord}"', []); + testErrorsAndWarnings('from a_index | grok numberField "%{firstWord}"', [ + 'GROK only supports string type values, found [numberField] of type [number]', ]); - testErrorsAndWarnings('from a | grok stringField "%{firstWord}" | keep firstWord', []); - // testErrorsAndWarnings('from a | grok s* "%{a}"', [ + testErrorsAndWarnings('from a_index | grok stringField "%{firstWord}" | keep firstWord', []); + // testErrorsAndWarnings('from a_index | grok s* "%{a}"', [ // 'Using wildcards (*) in grok is not allowed [s*]', // ]); }); describe('where', () => { - testErrorsAndWarnings('from a | where b', ['Unknown column [b]']); + testErrorsAndWarnings('from a_index | where b', ['Unknown column [b]']); for (const cond of ['true', 'false']) { - testErrorsAndWarnings(`from a | where ${cond}`, []); - testErrorsAndWarnings(`from a | where NOT ${cond}`, []); + testErrorsAndWarnings(`from a_index | where ${cond}`, []); + testErrorsAndWarnings(`from a_index | where NOT ${cond}`, []); } for (const nValue of ['1', '+1', '1 * 1', '-1', '1 / 1', '1.0', '1.5']) { - testErrorsAndWarnings(`from a | where ${nValue} > 0`, []); - testErrorsAndWarnings(`from a | where NOT ${nValue} > 0`, []); + testErrorsAndWarnings(`from a_index | where ${nValue} > 0`, []); + testErrorsAndWarnings(`from a_index | where NOT ${nValue} > 0`, []); } for (const op of ['>', '>=', '<', '<=', '==']) { - testErrorsAndWarnings(`from a | where numberField ${op} 0`, []); - testErrorsAndWarnings(`from a | where NOT numberField ${op} 0`, []); - testErrorsAndWarnings(`from a | where (numberField ${op} 0)`, []); - testErrorsAndWarnings(`from a | where (NOT (numberField ${op} 0))`, []); - testErrorsAndWarnings(`from a | where 1 ${op} 0`, []); - testErrorsAndWarnings(`from a | eval stringField ${op} 0`, [ + testErrorsAndWarnings(`from a_index | where numberField ${op} 0`, []); + testErrorsAndWarnings(`from a_index | where NOT numberField ${op} 0`, []); + testErrorsAndWarnings(`from a_index | where (numberField ${op} 0)`, []); + testErrorsAndWarnings(`from a_index | where (NOT (numberField ${op} 0))`, []); + testErrorsAndWarnings(`from a_index | where 1 ${op} 0`, []); + testErrorsAndWarnings(`from a_index | eval stringField ${op} 0`, [ `Argument of [${op}] must be [number], found value [stringField] type [string]`, ]); } @@ -844,84 +931,87 @@ describe('validation logic', () => { .fill('- ') .map((_, i) => (i % 2 ? oddOp : evenOp)) .join(''); - testErrorsAndWarnings(`from a | where ${unaryCombination} numberField`, []); - testErrorsAndWarnings(`from a | where ${unaryCombination} round(numberField)`, []); - testErrorsAndWarnings(`from a | where 1 + ${unaryCombination} numberField`, []); + testErrorsAndWarnings(`from a_index | where ${unaryCombination} numberField > 0`, []); + testErrorsAndWarnings( + `from a_index | where ${unaryCombination} round(numberField) > 0`, + [] + ); + testErrorsAndWarnings(`from a_index | where 1 + ${unaryCombination} numberField > 0`, []); // still valid - testErrorsAndWarnings(`from a | where 1 ${unaryCombination} numberField`, []); + testErrorsAndWarnings(`from a_index | where 1 ${unaryCombination} numberField > 0`, []); } } testErrorsAndWarnings( - `from a | where ${Array(nesting).fill('not ').join('')} booleanField`, + `from a_index | where ${Array(nesting).fill('not ').join('')} booleanField`, [] ); } for (const wrongOp of ['*', '/', '%']) { - testErrorsAndWarnings(`from a | where ${wrongOp}+ numberField`, [ + testErrorsAndWarnings(`from a_index | where ${wrongOp}+ numberField`, [ `SyntaxError: extraneous input '${wrongOp}' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}`, ]); } - testErrorsAndWarnings(`from a | where numberField =~ 0`, [ + testErrorsAndWarnings(`from a_index | where numberField =~ 0`, [ 'Argument of [=~] must be [string], found value [numberField] type [number]', 'Argument of [=~] must be [string], found value [0] type [number]', ]); - testErrorsAndWarnings(`from a | where NOT numberField =~ 0`, [ + testErrorsAndWarnings(`from a_index | where NOT numberField =~ 0`, [ 'Argument of [=~] must be [string], found value [numberField] type [number]', 'Argument of [=~] must be [string], found value [0] type [number]', ]); - testErrorsAndWarnings(`from a | where (numberField =~ 0)`, [ + testErrorsAndWarnings(`from a_index | where (numberField =~ 0)`, [ 'Argument of [=~] must be [string], found value [numberField] type [number]', 'Argument of [=~] must be [string], found value [0] type [number]', ]); - testErrorsAndWarnings(`from a | where (NOT (numberField =~ 0))`, [ + testErrorsAndWarnings(`from a_index | where (NOT (numberField =~ 0))`, [ 'Argument of [=~] must be [string], found value [numberField] type [number]', 'Argument of [=~] must be [string], found value [0] type [number]', ]); - testErrorsAndWarnings(`from a | where 1 =~ 0`, [ + testErrorsAndWarnings(`from a_index | where 1 =~ 0`, [ 'Argument of [=~] must be [string], found value [1] type [number]', 'Argument of [=~] must be [string], found value [0] type [number]', ]); - testErrorsAndWarnings(`from a | eval stringField =~ 0`, [ + testErrorsAndWarnings(`from a_index | eval stringField =~ 0`, [ `Argument of [=~] must be [string], found value [0] type [number]`, ]); for (const op of ['like', 'rlike']) { - testErrorsAndWarnings(`from a | where stringField ${op} "?a"`, []); - testErrorsAndWarnings(`from a | where stringField NOT ${op} "?a"`, []); - testErrorsAndWarnings(`from a | where NOT stringField ${op} "?a"`, []); - testErrorsAndWarnings(`from a | where NOT stringField NOT ${op} "?a"`, []); - testErrorsAndWarnings(`from a | where numberField ${op} "?a"`, [ + testErrorsAndWarnings(`from a_index | where stringField ${op} "?a"`, []); + testErrorsAndWarnings(`from a_index | where stringField NOT ${op} "?a"`, []); + testErrorsAndWarnings(`from a_index | where NOT stringField ${op} "?a"`, []); + testErrorsAndWarnings(`from a_index | where NOT stringField NOT ${op} "?a"`, []); + testErrorsAndWarnings(`from a_index | where numberField ${op} "?a"`, [ `Argument of [${op}] must be [string], found value [numberField] type [number]`, ]); - testErrorsAndWarnings(`from a | where numberField NOT ${op} "?a"`, [ + testErrorsAndWarnings(`from a_index | where numberField NOT ${op} "?a"`, [ `Argument of [not_${op}] must be [string], found value [numberField] type [number]`, ]); - testErrorsAndWarnings(`from a | where NOT numberField ${op} "?a"`, [ + testErrorsAndWarnings(`from a_index | where NOT numberField ${op} "?a"`, [ `Argument of [${op}] must be [string], found value [numberField] type [number]`, ]); - testErrorsAndWarnings(`from a | where NOT numberField NOT ${op} "?a"`, [ + testErrorsAndWarnings(`from a_index | where NOT numberField NOT ${op} "?a"`, [ `Argument of [not_${op}] must be [string], found value [numberField] type [number]`, ]); } - testErrorsAndWarnings(`from a | where cidr_match(ipField)`, [ + testErrorsAndWarnings(`from a_index | where cidr_match(ipField)`, [ `Error building [cidr_match]: expects exactly 2 arguments, passed 1 instead.`, ]); testErrorsAndWarnings( - `from a | eval cidr = "172.0.0.1/30" | where cidr_match(ipField, "172.0.0.1/30", cidr)`, + `from a_index | eval cidr = "172.0.0.1/30" | where cidr_match(ipField, "172.0.0.1/30", cidr)`, [] ); for (const field of fieldTypes) { - testErrorsAndWarnings(`from a | where ${camelCase(field)}Field IS NULL`, []); - testErrorsAndWarnings(`from a | where ${camelCase(field)}Field IS null`, []); - testErrorsAndWarnings(`from a | where ${camelCase(field)}Field is null`, []); - testErrorsAndWarnings(`from a | where ${camelCase(field)}Field is NULL`, []); - testErrorsAndWarnings(`from a | where ${camelCase(field)}Field IS NOT NULL`, []); - testErrorsAndWarnings(`from a | where ${camelCase(field)}Field IS NOT null`, []); - testErrorsAndWarnings(`from a | where ${camelCase(field)}Field IS not NULL`, []); - testErrorsAndWarnings(`from a | where ${camelCase(field)}Field Is nOt NuLL`, []); + testErrorsAndWarnings(`from a_index | where ${camelCase(field)}Field IS NULL`, []); + testErrorsAndWarnings(`from a_index | where ${camelCase(field)}Field IS null`, []); + testErrorsAndWarnings(`from a_index | where ${camelCase(field)}Field is null`, []); + testErrorsAndWarnings(`from a_index | where ${camelCase(field)}Field is NULL`, []); + testErrorsAndWarnings(`from a_index | where ${camelCase(field)}Field IS NOT NULL`, []); + testErrorsAndWarnings(`from a_index | where ${camelCase(field)}Field IS NOT null`, []); + testErrorsAndWarnings(`from a_index | where ${camelCase(field)}Field IS not NULL`, []); + testErrorsAndWarnings(`from a_index | where ${camelCase(field)}Field Is nOt NuLL`, []); } // Test that all functions work in where @@ -945,7 +1035,7 @@ describe('validation logic', () => { : { name: `numberField`, type } ); testErrorsAndWarnings( - `from a | where ${returnType !== 'number' ? 'length(' : ''}${ + `from a_index | where ${returnType !== 'number' ? 'length(' : ''}${ // hijacking a bit this function to produce a function call getFunctionSignatures( { name, ...rest, signatures: [{ params: correctMapping, returnType }] }, @@ -955,29 +1045,17 @@ describe('validation logic', () => { [] ); - // now test that validation is working also inside each function - // put a number field where a string is expected and viceversa - // then test an error is returned - const incorrectMapping = params - .filter(({ optional }) => !optional) - .map(({ type }) => - type === 'string' ? { name: `numberField`, type } : { name: 'stringField', type } - ); - - const expectedErrors = params - .filter(({ optional }) => !optional) - .map(({ name: argName, type }) => { - const actualValue = - type === 'string' - ? { name: `numberField`, type: 'number' } - : { name: 'stringField', type: 'string' }; - return `Argument of [${name}] must be [${type}], found value [${actualValue.name}] type [${actualValue.type}]`; - }); + const { wrongFieldMapping, expectedErrors } = generateWrongMappingForArgs( + name, + signatures, + params, + { stringField: 'stringField', numberField: 'numberField', booleanField: 'booleanField' } + ); testErrorsAndWarnings( - `from a | where ${returnType !== 'number' ? 'length(' : ''}${ + `from a_index | where ${returnType !== 'number' ? 'length(' : ''}${ // hijacking a bit this function to produce a function call getFunctionSignatures( - { name, ...rest, signatures: [{ params: incorrectMapping, returnType }] }, + { name, ...rest, signatures: [{ params: wrongFieldMapping, returnType }] }, { withTypes: false } )[0].declaration }${returnType !== 'number' ? ')' : ''} > 0`, @@ -988,61 +1066,61 @@ describe('validation logic', () => { }); describe('eval', () => { - testErrorsAndWarnings('from a | eval ', [ + testErrorsAndWarnings('from a_index | eval ', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', ]); - testErrorsAndWarnings('from a | eval stringField ', []); - testErrorsAndWarnings('from a | eval b = stringField', []); - testErrorsAndWarnings('from a | eval numberField + 1', []); - testErrorsAndWarnings('from a | eval numberField + ', [ + testErrorsAndWarnings('from a_index | eval stringField ', []); + testErrorsAndWarnings('from a_index | eval b = stringField', []); + testErrorsAndWarnings('from a_index | eval numberField + 1', []); + testErrorsAndWarnings('from a_index | eval numberField + ', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', ]); - testErrorsAndWarnings('from a | eval stringField + 1', [ + testErrorsAndWarnings('from a_index | eval stringField + 1', [ 'Argument of [+] must be [number], found value [stringField] type [string]', ]); - testErrorsAndWarnings('from a | eval a=b', ['Unknown column [b]']); - testErrorsAndWarnings('from a | eval a=b, ', [ + testErrorsAndWarnings('from a_index | eval a=b', ['Unknown column [b]']); + testErrorsAndWarnings('from a_index | eval a=b, ', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', 'Unknown column [b]', ]); - testErrorsAndWarnings('from a | eval a=round', ['Unknown column [round]']); - testErrorsAndWarnings('from a | eval a=round(', [ + testErrorsAndWarnings('from a_index | eval a=round', ['Unknown column [round]']); + testErrorsAndWarnings('from a_index | eval a=round(', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', ]); - testErrorsAndWarnings('from a | eval a=round(numberField) ', []); - testErrorsAndWarnings('from a | eval a=round(numberField), ', [ + testErrorsAndWarnings('from a_index | eval a=round(numberField) ', []); + testErrorsAndWarnings('from a_index | eval a=round(numberField), ', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', ]); - testErrorsAndWarnings('from a | eval a=round(numberField) + round(numberField) ', []); - testErrorsAndWarnings('from a | eval a=round(numberField) + round(stringField) ', [ + testErrorsAndWarnings('from a_index | eval a=round(numberField) + round(numberField) ', []); + testErrorsAndWarnings('from a_index | eval a=round(numberField) + round(stringField) ', [ 'Argument of [round] must be [number], found value [stringField] type [string]', ]); testErrorsAndWarnings( - 'from a | eval a=round(numberField) + round(stringField), numberField ', + 'from a_index | eval a=round(numberField) + round(stringField), numberField ', ['Argument of [round] must be [number], found value [stringField] type [string]'] ); testErrorsAndWarnings( - 'from a | eval a=round(numberField) + round(numberField), numberField ', + 'from a_index | eval a=round(numberField) + round(numberField), numberField ', [] ); testErrorsAndWarnings( - 'from a | eval a=round(numberField) + round(numberField), b = numberField ', + 'from a_index | eval a=round(numberField) + round(numberField), b = numberField ', [] ); - testErrorsAndWarnings('from a | eval a=[1, 2, 3]', []); - testErrorsAndWarnings('from a | eval a=[true, false]', []); - testErrorsAndWarnings('from a | eval a=["a", "b"]', []); - testErrorsAndWarnings('from a | eval a=null', []); + testErrorsAndWarnings('from a_index | eval a=[1, 2, 3]', []); + testErrorsAndWarnings('from a_index | eval a=[true, false]', []); + testErrorsAndWarnings('from a_index | eval a=["a", "b"]', []); + testErrorsAndWarnings('from a_index | eval a=null', []); for (const field of fieldTypes) { - testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field IS NULL`, []); - testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field IS null`, []); - testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field is null`, []); - testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field is NULL`, []); - testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field IS NOT NULL`, []); - testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field IS NOT null`, []); - testErrorsAndWarnings(`from a | eval ${camelCase(field)}Field IS not NULL`, []); + testErrorsAndWarnings(`from a_index | eval ${camelCase(field)}Field IS NULL`, []); + testErrorsAndWarnings(`from a_index | eval ${camelCase(field)}Field IS null`, []); + testErrorsAndWarnings(`from a_index | eval ${camelCase(field)}Field is null`, []); + testErrorsAndWarnings(`from a_index | eval ${camelCase(field)}Field is NULL`, []); + testErrorsAndWarnings(`from a_index | eval ${camelCase(field)}Field IS NOT NULL`, []); + testErrorsAndWarnings(`from a_index | eval ${camelCase(field)}Field IS NOT null`, []); + testErrorsAndWarnings(`from a_index | eval ${camelCase(field)}Field IS not NULL`, []); } for (const nesting of [1, 2, 3, 4]) { @@ -1054,23 +1132,23 @@ describe('validation logic', () => { .fill('- ') .map((_, i) => (i % 2 ? oddOp : evenOp)) .join(''); - testErrorsAndWarnings(`from a | eval ${unaryCombination} numberField`, []); - testErrorsAndWarnings(`from a | eval a=${unaryCombination} numberField`, []); - testErrorsAndWarnings(`from a | eval a=${unaryCombination} round(numberField)`, []); - testErrorsAndWarnings(`from a | eval 1 + ${unaryCombination} numberField`, []); + testErrorsAndWarnings(`from a_index | eval ${unaryCombination} numberField`, []); + testErrorsAndWarnings(`from a_index | eval a=${unaryCombination} numberField`, []); + testErrorsAndWarnings(`from a_index | eval a=${unaryCombination} round(numberField)`, []); + testErrorsAndWarnings(`from a_index | eval 1 + ${unaryCombination} numberField`, []); // still valid - testErrorsAndWarnings(`from a | eval 1 ${unaryCombination} numberField`, []); + testErrorsAndWarnings(`from a_index | eval 1 ${unaryCombination} numberField`, []); } } testErrorsAndWarnings( - `from a | eval ${Array(nesting).fill('not ').join('')} booleanField`, + `from a_index | eval ${Array(nesting).fill('not ').join('')} booleanField`, [] ); } for (const wrongOp of ['*', '/', '%']) { - testErrorsAndWarnings(`from a | eval ${wrongOp}+ numberField`, [ + testErrorsAndWarnings(`from a_index | eval ${wrongOp}+ numberField`, [ `SyntaxError: extraneous input '${wrongOp}' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, '(', NOT, NULL, '?', TRUE, '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}`, ]); } @@ -1079,21 +1157,49 @@ describe('validation logic', () => { for (const { params, returnType, infiniteParams, minParams } of signatures) { const fieldMapping = getFieldMapping(params); testErrorsAndWarnings( - `from a | eval var = ${ + `from a_index | eval var = ${ getFunctionSignatures( { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, { withTypes: false } )[0].declaration - }` + }`, + [] ); testErrorsAndWarnings( - `from a | eval ${ + `from a_index | eval ${ getFunctionSignatures( { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, { withTypes: false } )[0].declaration - }` + }`, + [] ); + if (params.some(({ literalOnly }) => literalOnly)) { + const fieldReplacedType = params + .filter(({ literalOnly }) => literalOnly) + .map(({ type }) => type); + // create the mapping without the literal flag + // this will make the signature wrong on purpose where in place on constants + // the arg will be a column of the same type + const fieldMappingWithoutLiterals = getFieldMapping( + params.map(({ literalOnly, ...rest }) => rest) + ); + testErrorsAndWarnings( + `from a_index | eval ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithoutLiterals, returnType }], + }, + { withTypes: false } + )[0].declaration + }`, + fieldReplacedType.map( + (type) => `Argument of [${name}] must be a constant, received [${type}Field]` + ) + ); + } if (alias) { for (const otherName of alias) { @@ -1102,7 +1208,7 @@ describe('validation logic', () => { { withTypes: false } )[0].declaration; - testErrorsAndWarnings(`from a | eval var = ${signatureStringWithAlias}`, []); + testErrorsAndWarnings(`from a_index | eval var = ${signatureStringWithAlias}`, []); } } @@ -1119,7 +1225,7 @@ describe('validation logic', () => { useLiterals: true, }); testErrorsAndWarnings( - `from a | eval var = ${ + `from a_index | eval var = ${ getFunctionSignatures( { name, @@ -1131,25 +1237,14 @@ describe('validation logic', () => { }` ); - const wrongFieldMapping = params.map(({ name: _name, type, ...rest }) => { - const typeString = type; - const canBeFieldButNotString = fieldTypes - .filter((t) => t !== 'string') - .includes(typeString); - const isLiteralType = /literal$/.test(typeString); - // pick a field name purposely wrong - const nameValue = - canBeFieldButNotString || isLiteralType ? 'stringField' : 'numberField'; - return { name: nameValue, type, ...rest }; - }); - const expectedErrors = params.map( - ({ type }, i) => - `Argument of [${name}] must be [${type}], found value [${ - wrongFieldMapping[i].name - }] type [${wrongFieldMapping[i].name.replace('Field', '')}]` + const { wrongFieldMapping, expectedErrors } = generateWrongMappingForArgs( + name, + signatures, + params, + { stringField: 'stringField', numberField: 'numberField', booleanField: 'booleanField' } ); testErrorsAndWarnings( - `from a | eval ${ + `from a_index | eval ${ getFunctionSignatures( { name, ...defRest, signatures: [{ params: wrongFieldMapping, returnType }] }, { withTypes: false } @@ -1168,7 +1263,7 @@ describe('validation logic', () => { const expectedArgs = signatures[0].params.filter(({ optional }) => !optional).length; const shouldBeExactly = signatures[0].params.length; testErrorsAndWarnings( - `from a | eval ${ + `from a_index | eval ${ getFunctionSignatures( { name, @@ -1199,7 +1294,7 @@ describe('validation logic', () => { fieldMappingWithWildcard[0].name = '*'; testErrorsAndWarnings( - `from a | eval var = ${ + `from a_index | eval var = ${ getFunctionSignatures( { name, @@ -1215,22 +1310,22 @@ describe('validation logic', () => { } } testErrorsAndWarnings( - 'from a | eval log10(-1)', + 'from a_index | eval log10(-1)', [], ['Log of a negative number results in null: -1'] ); testErrorsAndWarnings( - 'from a | eval log(-1)', + 'from a_index | eval log(-1)', [], ['Log of a negative number results in null: -1'] ); testErrorsAndWarnings( - 'from a | eval log(-1, 20)', + 'from a_index | eval log(-1, 20)', [], ['Log of a negative number results in null: -1'] ); testErrorsAndWarnings( - 'from a | eval log(-1, -20)', + 'from a_index | eval log(-1, -20)', [], [ 'Log of a negative number results in null: -1', @@ -1238,7 +1333,7 @@ describe('validation logic', () => { ] ); testErrorsAndWarnings( - 'from a | eval var0 = log(-1, -20)', + 'from a_index | eval var0 = log(-1, -20)', [], [ 'Log of a negative number results in null: -1', @@ -1246,137 +1341,145 @@ describe('validation logic', () => { ] ); for (const op of ['>', '>=', '<', '<=', '==']) { - testErrorsAndWarnings(`from a | eval numberField ${op} 0`, []); - testErrorsAndWarnings(`from a | eval NOT numberField ${op} 0`, []); - testErrorsAndWarnings(`from a | eval (numberField ${op} 0)`, []); - testErrorsAndWarnings(`from a | eval (NOT (numberField ${op} 0))`, []); - testErrorsAndWarnings(`from a | eval 1 ${op} 0`, []); - testErrorsAndWarnings(`from a | eval stringField ${op} 0`, [ + testErrorsAndWarnings(`from a_index | eval numberField ${op} 0`, []); + testErrorsAndWarnings(`from a_index | eval NOT numberField ${op} 0`, []); + testErrorsAndWarnings(`from a_index | eval (numberField ${op} 0)`, []); + testErrorsAndWarnings(`from a_index | eval (NOT (numberField ${op} 0))`, []); + testErrorsAndWarnings(`from a_index | eval 1 ${op} 0`, []); + testErrorsAndWarnings(`from a_index | eval stringField ${op} 0`, [ `Argument of [${op}] must be [number], found value [stringField] type [string]`, ]); } for (const op of ['+', '-', '*', '/', '%']) { - testErrorsAndWarnings(`from a | eval numberField ${op} 1`, []); - testErrorsAndWarnings(`from a | eval (numberField ${op} 1)`, []); - testErrorsAndWarnings(`from a | eval 1 ${op} 1`, []); + testErrorsAndWarnings(`from a_index | eval numberField ${op} 1`, []); + testErrorsAndWarnings(`from a_index | eval (numberField ${op} 1)`, []); + testErrorsAndWarnings(`from a_index | eval 1 ${op} 1`, []); } for (const divideByZeroExpr of ['1/0', 'var = 1/0', '1 + 1/0']) { testErrorsAndWarnings( - `from a | eval ${divideByZeroExpr}`, + `from a_index | eval ${divideByZeroExpr}`, [], ['Cannot divide by zero: 1/0'] ); } for (const divideByZeroExpr of ['1%0', 'var = 1%0', '1 + 1%0']) { testErrorsAndWarnings( - `from a | eval ${divideByZeroExpr}`, + `from a_index | eval ${divideByZeroExpr}`, [], - ['Module by zero can return null value: 1/0'] + ['Module by zero can return null value: 1%0'] ); } for (const op of ['like', 'rlike']) { - testErrorsAndWarnings(`from a | eval stringField ${op} "?a"`, []); - testErrorsAndWarnings(`from a | eval stringField NOT ${op} "?a"`, []); - testErrorsAndWarnings(`from a | eval NOT stringField ${op} "?a"`, []); - testErrorsAndWarnings(`from a | eval NOT stringField NOT ${op} "?a"`, []); - testErrorsAndWarnings(`from a | eval numberField ${op} "?a"`, [ + testErrorsAndWarnings(`from a_index | eval stringField ${op} "?a"`, []); + testErrorsAndWarnings(`from a_index | eval stringField NOT ${op} "?a"`, []); + testErrorsAndWarnings(`from a_index | eval NOT stringField ${op} "?a"`, []); + testErrorsAndWarnings(`from a_index | eval NOT stringField NOT ${op} "?a"`, []); + testErrorsAndWarnings(`from a_index | eval numberField ${op} "?a"`, [ `Argument of [${op}] must be [string], found value [numberField] type [number]`, ]); - testErrorsAndWarnings(`from a | eval numberField NOT ${op} "?a"`, [ + testErrorsAndWarnings(`from a_index | eval numberField NOT ${op} "?a"`, [ `Argument of [not_${op}] must be [string], found value [numberField] type [number]`, ]); - testErrorsAndWarnings(`from a | eval NOT numberField ${op} "?a"`, [ + testErrorsAndWarnings(`from a_index | eval NOT numberField ${op} "?a"`, [ `Argument of [${op}] must be [string], found value [numberField] type [number]`, ]); - testErrorsAndWarnings(`from a | eval NOT numberField NOT ${op} "?a"`, [ + testErrorsAndWarnings(`from a_index | eval NOT numberField NOT ${op} "?a"`, [ `Argument of [not_${op}] must be [string], found value [numberField] type [number]`, ]); } // test lists - testErrorsAndWarnings('from a | eval 1 in (1, 2, 3)', []); - testErrorsAndWarnings('from a | eval numberField in (1, 2, 3)', []); - testErrorsAndWarnings('from a | eval numberField not in (1, 2, 3)', []); - testErrorsAndWarnings('from a | eval numberField not in (1, 2, 3, numberField)', []); - testErrorsAndWarnings('from a | eval 1 in (1, 2, 3, round(numberField))', []); - testErrorsAndWarnings('from a | eval "a" in ("a", "b", "c")', []); - testErrorsAndWarnings('from a | eval stringField in ("a", "b", "c")', []); - testErrorsAndWarnings('from a | eval stringField not in ("a", "b", "c")', []); - testErrorsAndWarnings('from a | eval stringField not in ("a", "b", "c", stringField)', []); - testErrorsAndWarnings('from a | eval 1 in ("a", "b", "c")', [ + testErrorsAndWarnings('from a_index | eval 1 in (1, 2, 3)', []); + testErrorsAndWarnings('from a_index | eval numberField in (1, 2, 3)', []); + testErrorsAndWarnings('from a_index | eval numberField not in (1, 2, 3)', []); + testErrorsAndWarnings('from a_index | eval numberField not in (1, 2, 3, numberField)', []); + testErrorsAndWarnings('from a_index | eval 1 in (1, 2, 3, round(numberField))', []); + testErrorsAndWarnings('from a_index | eval "a" in ("a", "b", "c")', []); + testErrorsAndWarnings('from a_index | eval stringField in ("a", "b", "c")', []); + testErrorsAndWarnings('from a_index | eval stringField not in ("a", "b", "c")', []); + testErrorsAndWarnings( + 'from a_index | eval stringField not in ("a", "b", "c", stringField)', + [] + ); + testErrorsAndWarnings('from a_index | eval 1 in ("a", "b", "c")', [ 'Argument of [in] must be [number[]], found value [("a", "b", "c")] type [(string, string, string)]', ]); - testErrorsAndWarnings('from a | eval numberField in ("a", "b", "c")', [ + testErrorsAndWarnings('from a_index | eval numberField in ("a", "b", "c")', [ 'Argument of [in] must be [number[]], found value [("a", "b", "c")] type [(string, string, string)]', ]); - testErrorsAndWarnings('from a | eval numberField not in ("a", "b", "c")', [ + testErrorsAndWarnings('from a_index | eval numberField not in ("a", "b", "c")', [ 'Argument of [not_in] must be [number[]], found value [("a", "b", "c")] type [(string, string, string)]', ]); - testErrorsAndWarnings('from a | eval numberField not in (1, 2, 3, stringField)', [ + testErrorsAndWarnings('from a_index | eval numberField not in (1, 2, 3, stringField)', [ 'Argument of [not_in] must be [number[]], found value [(1, 2, 3, stringField)] type [(number, number, number, string)]', ]); - testErrorsAndWarnings('from a | eval avg(numberField)', ['EVAL does not support function avg']); - testErrorsAndWarnings('from a | stats avg(numberField) | eval `avg(numberField)` + 1', []); - testErrorsAndWarnings('from a | eval not', [ + testErrorsAndWarnings('from a_index | eval avg(numberField)', [ + 'EVAL does not support function avg', + ]); + testErrorsAndWarnings( + 'from a_index | stats avg(numberField) | eval `avg(numberField)` + 1', + [] + ); + testErrorsAndWarnings('from a_index | eval not', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', 'Error building [not]: expects exactly one argument, passed 0 instead.', ]); - testErrorsAndWarnings('from a | eval in', [ + testErrorsAndWarnings('from a_index | eval in', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found "in"', ]); - testErrorsAndWarnings('from a | eval stringField in stringField', [ + testErrorsAndWarnings('from a_index | eval stringField in stringField', [ "SyntaxError: missing '(' at 'stringField'", 'SyntaxError: expected {COMMA, RP} but found ""', ]); - testErrorsAndWarnings('from a | eval stringField in stringField)', [ + testErrorsAndWarnings('from a_index | eval stringField in stringField)', [ "SyntaxError: missing '(' at 'stringField'", 'Error building [in]: expects exactly 2 arguments, passed 1 instead.', ]); - testErrorsAndWarnings('from a | eval stringField not in stringField', [ + testErrorsAndWarnings('from a_index | eval stringField not in stringField', [ "SyntaxError: missing '(' at 'stringField'", 'SyntaxError: expected {COMMA, RP} but found ""', ]); describe('date math', () => { - testErrorsAndWarnings('from a | eval 1 anno', [ + testErrorsAndWarnings('from a_index | eval 1 anno', [ 'EVAL does not support [date_period] in expression [1 anno]', ]); - testErrorsAndWarnings('from a | eval var = 1 anno', [ + testErrorsAndWarnings('from a_index | eval var = 1 anno', [ "Unexpected time interval qualifier: 'anno'", ]); - testErrorsAndWarnings('from a | eval now() + 1 anno', [ + testErrorsAndWarnings('from a_index | eval now() + 1 anno', [ "Unexpected time interval qualifier: 'anno'", ]); for (const timeLiteral of timeLiterals) { - testErrorsAndWarnings(`from a | eval 1 ${timeLiteral.name}`, [ + testErrorsAndWarnings(`from a_index | eval 1 ${timeLiteral.name}`, [ `EVAL does not support [date_period] in expression [1 ${timeLiteral.name}]`, ]); - testErrorsAndWarnings(`from a | eval 1 ${timeLiteral.name}`, [ + testErrorsAndWarnings(`from a_index | eval 1 ${timeLiteral.name}`, [ `EVAL does not support [date_period] in expression [1 ${timeLiteral.name}]`, ]); // this is not possible for now - // testErrorsAndWarnings(`from a | eval var = 1 ${timeLiteral.name}`, [ + // testErrorsAndWarnings(`from a_index | eval var = 1 ${timeLiteral.name}`, [ // `Eval does not support [date_period] in expression [1 ${timeLiteral.name}]`, // ]); - testErrorsAndWarnings(`from a | eval var = now() - 1 ${timeLiteral.name}`, []); - testErrorsAndWarnings(`from a | eval var = dateField - 1 ${timeLiteral.name}`, []); + testErrorsAndWarnings(`from a_index | eval var = now() - 1 ${timeLiteral.name}`, []); + testErrorsAndWarnings(`from a_index | eval var = dateField - 1 ${timeLiteral.name}`, []); testErrorsAndWarnings( - `from a | eval var = dateField - 1 ${timeLiteral.name.toUpperCase()}`, + `from a_index | eval var = dateField - 1 ${timeLiteral.name.toUpperCase()}`, [] ); testErrorsAndWarnings( - `from a | eval var = dateField - 1 ${capitalize(timeLiteral.name)}`, + `from a_index | eval var = dateField - 1 ${capitalize(timeLiteral.name)}`, [] ); - testErrorsAndWarnings(`from a | eval var = dateField + 1 ${timeLiteral.name}`, []); - testErrorsAndWarnings(`from a | eval 1 ${timeLiteral.name} + 1 year`, [ + testErrorsAndWarnings(`from a_index | eval var = dateField + 1 ${timeLiteral.name}`, []); + testErrorsAndWarnings(`from a_index | eval 1 ${timeLiteral.name} + 1 year`, [ `Argument of [+] must be [date], found value [1 ${timeLiteral.name}] type [duration]`, ]); for (const op of ['*', '/', '%']) { - testErrorsAndWarnings(`from a | eval var = now() ${op} 1 ${timeLiteral.name}`, [ + testErrorsAndWarnings(`from a_index | eval var = now() ${op} 1 ${timeLiteral.name}`, [ `Argument of [${op}] must be [number], found value [now()] type [date]`, `Argument of [${op}] must be [number], found value [1 ${timeLiteral.name}] type [duration]`, ]); @@ -1386,48 +1489,46 @@ describe('validation logic', () => { }); describe('stats', () => { - testErrorsAndWarnings('from a | stats ', [ + testErrorsAndWarnings('from a_index | stats ', [ 'At least one aggregation or grouping expression required in [STATS]', ]); - testErrorsAndWarnings('from a | stats by stringField', []); - testErrorsAndWarnings('from a | stats by ', [ + testErrorsAndWarnings('from a_index | stats by stringField', []); + testErrorsAndWarnings('from a_index | stats by ', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', ]); - testErrorsAndWarnings('from a | stats numberField ', [ - 'STATS expects an aggregate function, found [numberField]', + testErrorsAndWarnings('from a_index | stats numberField ', [ + 'Expected an aggregate function or group but got [numberField] of type [FieldAttribute]', ]); - testErrorsAndWarnings('from a | stats numberField=', [ + testErrorsAndWarnings('from a_index | stats numberField=', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', - "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [=] of type [void]", ]); - testErrorsAndWarnings('from a | stats numberField=5 by ', [ + testErrorsAndWarnings('from a_index | stats numberField=5 by ', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', - "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [=] of type [void]", ]); - testErrorsAndWarnings('from a | stats avg(numberField) by wrongField', [ + testErrorsAndWarnings('from a_index | stats avg(numberField) by wrongField', [ 'Unknown column [wrongField]', ]); - testErrorsAndWarnings('from a | stats avg(numberField) by wrongField + 1', [ + testErrorsAndWarnings('from a_index | stats avg(numberField) by wrongField + 1', [ 'Unknown column [wrongField]', ]); - testErrorsAndWarnings('from a | stats avg(numberField) by var0 = wrongField + 1', [ + testErrorsAndWarnings('from a_index | stats avg(numberField) by var0 = wrongField + 1', [ 'Unknown column [wrongField]', ]); - testErrorsAndWarnings('from a | stats avg(numberField) by 1', []); - testErrorsAndWarnings('from a | stats avg(numberField) by percentile(numberField)', [ + testErrorsAndWarnings('from a_index | stats avg(numberField) by 1', []); + testErrorsAndWarnings('from a_index | stats avg(numberField) by percentile(numberField)', [ 'STATS BY does not support function percentile', ]); - testErrorsAndWarnings('from a | stats count(`numberField`)', []); + testErrorsAndWarnings('from a_index | stats count(`numberField`)', []); for (const subCommand of ['keep', 'drop', 'eval']) { testErrorsAndWarnings( - `from a | stats count(\`numberField\`) | ${subCommand} \`count(\`\`numberField\`\`)\` `, + `from a_index | stats count(\`numberField\`) | ${subCommand} \`count(\`\`numberField\`\`)\` `, [] ); } testErrorsAndWarnings( - 'from a | stats avg(numberField) by stringField, percentile(numberField) by ipField', + 'from a_index | stats avg(numberField) by stringField, percentile(numberField) by ipField', [ 'SyntaxError: expected {, PIPE, AND, COMMA, OR, PLUS, MINUS, ASTERISK, SLASH, PERCENT} but found "by"', 'STATS BY does not support function percentile', @@ -1435,137 +1536,183 @@ describe('validation logic', () => { ); testErrorsAndWarnings( - 'from a | stats avg(numberField), percentile(numberField, 50) by ipField', + 'from a_index | stats avg(numberField), percentile(numberField, 50) by ipField', [] ); testErrorsAndWarnings( - 'from a | stats avg(numberField), percentile(numberField, 50) BY ipField', + 'from a_index | stats avg(numberField), percentile(numberField, 50) BY ipField', [] ); for (const op of ['+', '-', '*', '/', '%']) { testErrorsAndWarnings( - `from a | stats avg(numberField) ${op} percentile(numberField, 50) BY ipField`, + `from a_index | stats avg(numberField) ${op} percentile(numberField, 50) BY ipField`, [] ); } - testErrorsAndWarnings('from a | stats count(* + 1) BY ipField', [ + testErrorsAndWarnings('from a_index | stats count(* + 1) BY ipField', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found "+"', ]); - testErrorsAndWarnings('from a | stats count(* + round(numberField)) BY ipField', [ + testErrorsAndWarnings('from a_index | stats count(* + round(numberField)) BY ipField', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found "+"', ]); - testErrorsAndWarnings('from a | stats count(round(*)) BY ipField', [ + testErrorsAndWarnings('from a_index | stats count(round(*)) BY ipField', [ 'Using wildcards (*) in round is not allowed', ]); - testErrorsAndWarnings('from a | stats count(count(*)) BY ipField', [ + testErrorsAndWarnings('from a_index | stats count(count(*)) BY ipField', [ `Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [count(*)] of type [number]`, ]); - testErrorsAndWarnings('from a | stats numberField + 1', [ - `Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [+] of type [number]`, + testErrorsAndWarnings('from a_index | stats numberField + 1', [ + 'At least one aggregation function required in [STATS], found [numberField+1]', ]); for (const nesting of [1, 2, 3, 4]) { - const moreBuiltinWrapping = Array(nesting).fill('+ 1').join(''); - testErrorsAndWarnings(`from a | stats 5 + avg(numberField) ${moreBuiltinWrapping}`, []); - testErrorsAndWarnings(`from a | stats 5 ${moreBuiltinWrapping} + avg(numberField)`, []); - testErrorsAndWarnings(`from a | stats 5 ${moreBuiltinWrapping} + numberField`, [ - "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [+] of type [number]", + const moreBuiltinWrapping = Array(nesting).fill('+1').join(''); + testErrorsAndWarnings(`from a_index | stats 5 + avg(numberField) ${moreBuiltinWrapping}`, []); + testErrorsAndWarnings(`from a_index | stats 5 ${moreBuiltinWrapping} + avg(numberField)`, []); + testErrorsAndWarnings(`from a_index | stats 5 ${moreBuiltinWrapping} + numberField`, [ + `At least one aggregation function required in [STATS], found [5${moreBuiltinWrapping}+numberField]`, ]); - testErrorsAndWarnings(`from a | stats 5 + numberField ${moreBuiltinWrapping}`, [ - "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [+] of type [number]", + testErrorsAndWarnings(`from a_index | stats 5 + numberField ${moreBuiltinWrapping}`, [ + `At least one aggregation function required in [STATS], found [5+numberField${moreBuiltinWrapping}]`, ]); + testErrorsAndWarnings( + `from a_index | stats 5 + numberField ${moreBuiltinWrapping}, var0 = sum(numberField)`, + [ + `At least one aggregation function required in [STATS], found [5+numberField${moreBuiltinWrapping}]`, + ] + ); + const evalFnWrapping = Array(nesting).fill('round(').join(''); + const closingWrapping = Array(nesting).fill(')').join(''); + // stress test the validation of the nesting check here + testErrorsAndWarnings( + `from a_index | stats ${evalFnWrapping} sum(numberField) ${closingWrapping}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats ${evalFnWrapping} sum(numberField) ${closingWrapping} + ${evalFnWrapping} sum(numberField) ${closingWrapping}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats ${evalFnWrapping} numberField + sum(numberField) ${closingWrapping}`, + [ + `Cannot combine aggregation and non-aggregation values in [STATS], found [${evalFnWrapping}numberField+sum(numberField)${closingWrapping}]`, + ] + ); + testErrorsAndWarnings( + `from a_index | stats ${evalFnWrapping} numberField + sum(numberField) ${closingWrapping}, var0 = sum(numberField)`, + [ + `Cannot combine aggregation and non-aggregation values in [STATS], found [${evalFnWrapping}numberField+sum(numberField)${closingWrapping}]`, + ] + ); + testErrorsAndWarnings( + `from a_index | stats var0 = ${evalFnWrapping} numberField + sum(numberField) ${closingWrapping}, var1 = sum(numberField)`, + [ + `Cannot combine aggregation and non-aggregation values in [STATS], found [${evalFnWrapping}numberField+sum(numberField)${closingWrapping}]`, + ] + ); + testErrorsAndWarnings( + `from a_index | stats ${evalFnWrapping} sum(numberField + numberField) ${closingWrapping}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats ${evalFnWrapping} sum(numberField + round(numberField)) ${closingWrapping}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats ${evalFnWrapping} sum(numberField + round(numberField)) ${closingWrapping} + ${evalFnWrapping} sum(numberField + round(numberField)) ${closingWrapping}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats sum(${evalFnWrapping} numberField ${closingWrapping} )`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats sum(${evalFnWrapping} numberField ${closingWrapping} ) + sum(${evalFnWrapping} numberField ${closingWrapping} )`, + [] + ); } - testErrorsAndWarnings('from a | stats 5 + numberField + 1', [ - "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [+] of type [number]", + testErrorsAndWarnings('from a_index | stats 5 + numberField + 1', [ + 'At least one aggregation function required in [STATS], found [5+numberField+1]', ]); - testErrorsAndWarnings('from a | stats numberField + 1 by ipField', [ - `Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [+] of type [number]`, + testErrorsAndWarnings('from a_index | stats numberField + 1 by ipField', [ + 'At least one aggregation function required in [STATS], found [numberField+1]', ]); testErrorsAndWarnings( - 'from a | stats avg(numberField), percentile(numberField, 50) + 1 by ipField', + 'from a_index | stats avg(numberField), percentile(numberField, 50) + 1 by ipField', [] ); - testErrorsAndWarnings('from a | stats count(*)', []); - testErrorsAndWarnings('from a | stats count()', []); - testErrorsAndWarnings('from a | stats var0 = count(*)', []); - testErrorsAndWarnings('from a | stats var0 = count()', []); - testErrorsAndWarnings('from a | stats var0 = avg(numberField), count(*)', []); - testErrorsAndWarnings('from a | stats var0 = avg(fn(number)), count(*)', [ + testErrorsAndWarnings('from a_index | stats count(*)', []); + testErrorsAndWarnings('from a_index | stats count()', []); + testErrorsAndWarnings('from a_index | stats var0 = count(*)', []); + testErrorsAndWarnings('from a_index | stats var0 = count()', []); + testErrorsAndWarnings('from a_index | stats var0 = avg(numberField), count(*)', []); + testErrorsAndWarnings('from a_index | stats var0 = avg(fn(number)), count(*)', [ 'Unknown function [fn]', ]); + // test all not allowed combinations + testErrorsAndWarnings('from a_index | STATS sum( numberField ) + abs( numberField ) ', [ + 'Cannot combine aggregation and non-aggregation values in [STATS], found [sum(numberField)+abs(numberField)]', + ]); + testErrorsAndWarnings('from a_index | STATS abs( numberField + sum( numberField )) ', [ + 'Cannot combine aggregation and non-aggregation values in [STATS], found [abs(numberField+sum(numberField))]', + ]); + for (const { name, alias, signatures, ...defRest } of statsAggregationFunctionDefinitions) { - for (const [signatureIndex, { params, returnType }] of Object.entries(signatures)) { + for (const { params, returnType } of signatures) { const fieldMapping = getFieldMapping(params); - testErrorsAndWarnings( - `from a | stats var = ${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, - { withTypes: false } - )[0].declaration - }`, - [] - ); - testErrorsAndWarnings( - `from a | stats ${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, - { withTypes: false } - )[0].declaration - }`, - [] - ); - testErrorsAndWarnings( - `from a | stats var = round(${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, - { withTypes: false } - )[0].declaration - })`, - [] - ); - testErrorsAndWarnings( - `from a | stats round(${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, - { withTypes: false } - )[0].declaration - })`, - [] - ); - testErrorsAndWarnings( - `from a | stats var = round(${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, - { withTypes: false } - )[0].declaration - }) + ${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, - { withTypes: false } - )[0].declaration - }`, - [] - ); - testErrorsAndWarnings( - `from a | stats round(${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, - { withTypes: false } - )[0].declaration - }) + ${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, - { withTypes: false } - )[0].declaration - }`, - [] - ); + + const correctSignature = getFunctionSignatures( + { name, ...defRest, signatures: [{ params: fieldMapping, returnType }] }, + { withTypes: false } + )[0].declaration; + testErrorsAndWarnings(`from a_index | stats var = ${correctSignature}`, []); + testErrorsAndWarnings(`from a_index | stats ${correctSignature}`, []); + + if (returnType === 'number') { + testErrorsAndWarnings(`from a_index | stats var = round(${correctSignature})`, []); + testErrorsAndWarnings(`from a_index | stats round(${correctSignature})`, []); + testErrorsAndWarnings( + `from a_index | stats var = round(${correctSignature}) + ${correctSignature}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats round(${correctSignature}) + ${correctSignature}`, + [] + ); + } + + if (params.some(({ literalOnly }) => literalOnly)) { + const fieldReplacedType = params + .filter(({ literalOnly }) => literalOnly) + .map(({ type }) => type); + // create the mapping without the literal flag + // this will make the signature wrong on purpose where in place on constants + // the arg will be a column of the same type + const fieldMappingWithoutLiterals = getFieldMapping( + params.map(({ literalOnly, ...rest }) => rest) + ); + testErrorsAndWarnings( + `from a_index | stats ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithoutLiterals, returnType }], + }, + { withTypes: false } + )[0].declaration + }`, + fieldReplacedType.map( + (type) => `Argument of [${name}] must be a constant, received [${type}Field]` + ) + ); + } if (alias) { for (const otherName of alias) { @@ -1574,7 +1721,7 @@ describe('validation logic', () => { { withTypes: false } )[0].declaration; - testErrorsAndWarnings(`from a | stats var = ${signatureStringWithAlias}`, []); + testErrorsAndWarnings(`from a_index | stats var = ${signatureStringWithAlias}`, []); } } @@ -1592,15 +1739,15 @@ describe('validation logic', () => { }, { withTypes: false } )[0].declaration; - // FROM a | STATS aggFn( numberField / 2 ) - testErrorsAndWarnings(`from a | stats ${fnSignatureWithBuiltinString}`, []); - testErrorsAndWarnings(`from a | stats var0 = ${fnSignatureWithBuiltinString}`, []); + // from a_index | STATS aggFn( numberField / 2 ) + testErrorsAndWarnings(`from a_index | stats ${fnSignatureWithBuiltinString}`, []); + testErrorsAndWarnings(`from a_index | stats var0 = ${fnSignatureWithBuiltinString}`, []); testErrorsAndWarnings( - `from a | stats avg(numberField), ${fnSignatureWithBuiltinString}`, + `from a_index | stats avg(numberField), ${fnSignatureWithBuiltinString}`, [] ); testErrorsAndWarnings( - `from a | stats avg(numberField), var0 = ${fnSignatureWithBuiltinString}`, + `from a_index | stats avg(numberField), var0 = ${fnSignatureWithBuiltinString}`, [] ); @@ -1616,40 +1763,43 @@ describe('validation logic', () => { }, { withTypes: false } )[0].declaration; - // FROM a | STATS aggFn( round(numberField / 2) ) - testErrorsAndWarnings(`from a | stats ${fnSignatureWithEvalAndBuiltinString}`, []); - testErrorsAndWarnings(`from a | stats var0 = ${fnSignatureWithEvalAndBuiltinString}`, []); + // from a_index | STATS aggFn( round(numberField / 2) ) + testErrorsAndWarnings(`from a_index | stats ${fnSignatureWithEvalAndBuiltinString}`, []); + testErrorsAndWarnings( + `from a_index | stats var0 = ${fnSignatureWithEvalAndBuiltinString}`, + [] + ); testErrorsAndWarnings( - `from a | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString}`, + `from a_index | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString}`, [] ); testErrorsAndWarnings( - `from a | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString}`, + `from a_index | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString}`, [] ); - // FROM a | STATS aggFn(round(numberField / 2) ) BY round(numberField / 2) + // from a_index | STATS aggFn(round(numberField / 2) ) BY round(numberField / 2) testErrorsAndWarnings( - `from a | stats ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}`, + `from a_index | stats ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}`, [] ); testErrorsAndWarnings( - `from a | stats var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}`, + `from a_index | stats var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}`, [] ); testErrorsAndWarnings( - `from a | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}, ipField`, + `from a_index | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}, ipField`, [] ); testErrorsAndWarnings( - `from a | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}, ipField`, + `from a_index | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}, ipField`, [] ); testErrorsAndWarnings( - `from a | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}, ${nestedBuiltin}`, + `from a_index | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}, ${nestedBuiltin}`, [] ); testErrorsAndWarnings( - `from a | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}, ${nestedBuiltin}`, + `from a_index | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}, ${nestedBuiltin}`, [] ); } @@ -1666,8 +1816,14 @@ describe('validation logic', () => { useNestedFunction: true, useLiterals: false, }); + const nestedAggsExpectedErrors = params + .filter(({ literalOnly }) => !literalOnly) + .map( + (_) => + `Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]` + ); testErrorsAndWarnings( - `from a | stats var = ${ + `from a_index | stats var = ${ getFunctionSignatures( { name, @@ -1677,13 +1833,10 @@ describe('validation logic', () => { { withTypes: false } )[0].declaration }`, - params.map( - (_) => - `Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]` - ) + nestedAggsExpectedErrors ); testErrorsAndWarnings( - `from a | stats ${ + `from a_index | stats ${ getFunctionSignatures( { name, @@ -1693,36 +1846,17 @@ describe('validation logic', () => { { withTypes: false } )[0].declaration }`, - params.map( - (_) => - `Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]` - ) + nestedAggsExpectedErrors ); - // and the message is case of wrong argument type is passed - const wrongFieldMapping = params.map(({ name: _name, type, ...rest }) => { - const typeString = type; - const canBeFieldButNotString = fieldTypes - .filter((t) => t !== 'string') - .includes(typeString); - const isLiteralType = /literal$/.test(typeString); - // pick a field name purposely wrong - const nameValue = - canBeFieldButNotString || isLiteralType ? 'stringField' : 'numberField'; - return { name: nameValue, type, ...rest }; - }); - - const expectedErrors = params.map( - ({ type }, i) => - `Argument of [${name}] must be [${ - // If the function has multiple signatures and all fail, then only - // one error will be reported for the first signature type - +signatureIndex > 0 ? signatures[0].params[i].type : type - }], found value [${wrongFieldMapping[i].name}] type [${wrongFieldMapping[ - i - ].name.replace('Field', '')}]` + const { wrongFieldMapping, expectedErrors } = generateWrongMappingForArgs( + name, + signatures, + params, + { stringField: 'stringField', numberField: 'numberField', booleanField: 'booleanField' } ); + // and the message is case of wrong argument type is passed testErrorsAndWarnings( - `from a | stats ${ + `from a_index | stats ${ getFunctionSignatures( { name, ...defRest, signatures: [{ params: wrongFieldMapping, returnType }] }, { withTypes: false } @@ -1738,7 +1872,7 @@ describe('validation logic', () => { fieldMappingWithWildcard[0].name = '*'; testErrorsAndWarnings( - `from a | stats var = ${ + `from a_index | stats var = ${ getFunctionSignatures( { name, @@ -1754,149 +1888,182 @@ describe('validation logic', () => { } } } + testErrorsAndWarnings( + `FROM index + | EVAL numberField * 3.281 + | STATS avg_numberField = AVG(\`numberField * 3.281\`)`, + [] + ); }); describe('sort', () => { - testErrorsAndWarnings('from a | sort ', [ + testErrorsAndWarnings('from a_index | sort ', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', ]); - testErrorsAndWarnings('from a | sort "field" ', []); - testErrorsAndWarnings('from a | sort wrongField ', ['Unknown column [wrongField]']); - testErrorsAndWarnings('from a | sort numberField, ', [ + testErrorsAndWarnings('from a_index | sort "field" ', []); + testErrorsAndWarnings('from a_index | sort wrongField ', ['Unknown column [wrongField]']); + testErrorsAndWarnings('from a_index | sort numberField, ', [ 'SyntaxError: expected {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, FALSE, LP, NOT, NULL, PARAM, TRUE, PLUS, MINUS, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} but found ""', ]); - testErrorsAndWarnings('from a | sort numberField, stringField', []); + testErrorsAndWarnings('from a_index | sort numberField, stringField', []); for (const dir of ['desc', 'asc']) { - testErrorsAndWarnings(`from a | sort "field" ${dir} `, []); - testErrorsAndWarnings(`from a | sort numberField ${dir} `, []); - testErrorsAndWarnings(`from a | sort numberField ${dir} nulls `, [ + testErrorsAndWarnings(`from a_index | sort "field" ${dir} `, []); + testErrorsAndWarnings(`from a_index | sort numberField ${dir} `, []); + testErrorsAndWarnings(`from a_index | sort numberField ${dir} nulls `, [ "SyntaxError: missing {FIRST, LAST} at ''", ]); for (const nullDir of ['first', 'last']) { - testErrorsAndWarnings(`from a | sort numberField ${dir} nulls ${nullDir}`, []); - testErrorsAndWarnings(`from a | sort numberField ${dir} ${nullDir}`, [ + testErrorsAndWarnings(`from a_index | sort numberField ${dir} nulls ${nullDir}`, []); + testErrorsAndWarnings(`from a_index | sort numberField ${dir} ${nullDir}`, [ `SyntaxError: extraneous input '${nullDir}' expecting `, ]); } } for (const nullDir of ['first', 'last']) { - testErrorsAndWarnings(`from a | sort numberField nulls ${nullDir}`, []); - testErrorsAndWarnings(`from a | sort numberField ${nullDir}`, [ + testErrorsAndWarnings(`from a_index | sort numberField nulls ${nullDir}`, []); + testErrorsAndWarnings(`from a_index | sort numberField ${nullDir}`, [ `SyntaxError: extraneous input '${nullDir}' expecting `, ]); } + testErrorsAndWarnings(`row a = 1 | stats COUNT(*) | sort \`COUNT(*)\``, []); + testErrorsAndWarnings(`ROW a = 1 | STATS couNt(*) | SORT \`couNt(*)\``, []); }); describe('enrich', () => { - testErrorsAndWarnings(`from a | enrich`, [ + testErrorsAndWarnings(`from a_index | enrich`, [ "SyntaxError: missing ENRICH_POLICY_NAME at ''", ]); - testErrorsAndWarnings(`from a | enrich _`, ['Unknown policy [_]']); - testErrorsAndWarnings(`from a | enrich _:`, [ + testErrorsAndWarnings(`from a_index | enrich _`, ['Unknown policy [_]']); + testErrorsAndWarnings(`from a_index | enrich _:`, [ "SyntaxError: token recognition error at: ':'", 'Unknown policy [_]', ]); - testErrorsAndWarnings(`from a | enrich _:policy`, [ + testErrorsAndWarnings(`from a_index | enrich _:policy`, [ 'Unrecognized value [_] for ENRICH, mode needs to be one of [_ANY, _COORDINATOR, _REMOTE]', ]); - testErrorsAndWarnings(`from a | enrich :policy`, [ + testErrorsAndWarnings(`from a_index | enrich :policy`, [ "SyntaxError: token recognition error at: ':'", ]); - testErrorsAndWarnings(`from a | enrich any:`, [ + testErrorsAndWarnings(`from a_index | enrich any:`, [ "SyntaxError: token recognition error at: ':'", 'Unknown policy [any]', ]); - testErrorsAndWarnings(`from a | enrich _any:`, [ + testErrorsAndWarnings(`from a_index | enrich _any:`, [ "SyntaxError: token recognition error at: ':'", 'Unknown policy [_any]', ]); - testErrorsAndWarnings(`from a | enrich any:policy`, [ + testErrorsAndWarnings(`from a_index | enrich any:policy`, [ 'Unrecognized value [any] for ENRICH, mode needs to be one of [_ANY, _COORDINATOR, _REMOTE]', ]); - testErrorsAndWarnings(`from a | enrich policy `, []); + testErrorsAndWarnings(`from a_index | enrich policy `, []); + testErrorsAndWarnings('from a_index | enrich `this``is fine`', [ + 'SyntaxError: expected {ENRICH_POLICY_NAME} but found "`this``is fine`"', + ]); + testErrorsAndWarnings('from a_index | enrich this is fine', [ + 'SyntaxError: expected {, PIPE, ON, WITH} but found "is"', + 'Unknown policy [this]', + ]); for (const value of ['any', 'coordinator', 'remote']) { - testErrorsAndWarnings(`from a | enrich _${value}:policy `, []); - testErrorsAndWarnings(`from a | enrich _${value} : policy `, [ + testErrorsAndWarnings(`from a_index | enrich _${value}:policy `, []); + testErrorsAndWarnings(`from a_index | enrich _${value} : policy `, [ "SyntaxError: token recognition error at: ':'", "SyntaxError: extraneous input 'policy' expecting ", `Unknown policy [_${value}]`, ]); - testErrorsAndWarnings(`from a | enrich _${value}: policy `, [ + testErrorsAndWarnings(`from a_index | enrich _${value}: policy `, [ "SyntaxError: token recognition error at: ':'", "SyntaxError: extraneous input 'policy' expecting ", `Unknown policy [_${value}]`, ]); - testErrorsAndWarnings(`from a | enrich _${camelCase(value)}:policy `, []); - testErrorsAndWarnings(`from a | enrich _${value.toUpperCase()}:policy `, []); + testErrorsAndWarnings(`from a_index | enrich _${camelCase(value)}:policy `, []); + testErrorsAndWarnings(`from a_index | enrich _${value.toUpperCase()}:policy `, []); } - testErrorsAndWarnings(`from a | enrich _unknown:policy`, [ + testErrorsAndWarnings(`from a_index | enrich _unknown:policy`, [ 'Unrecognized value [_unknown] for ENRICH, mode needs to be one of [_ANY, _COORDINATOR, _REMOTE]', ]); - testErrorsAndWarnings(`from a | enrich missing-policy `, ['Unknown policy [missing-policy]']); - testErrorsAndWarnings(`from a | enrich policy on `, [ - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''", + testErrorsAndWarnings(`from a_index |enrich missing-policy `, [ + 'Unknown policy [missing-policy]', + ]); + testErrorsAndWarnings(`from a_index |enrich policy on `, [ + "SyntaxError: missing ID_PATTERN at ''", + ]); + testErrorsAndWarnings(`from a_index | enrich policy on b `, ['Unknown column [b]']); + + testErrorsAndWarnings('from a_index | enrich policy on `this``is fine`', [ + 'Unknown column [this`is fine]', ]); - testErrorsAndWarnings(`from a | enrich policy on b `, ['Unknown column [b]']); - testErrorsAndWarnings(`from a | enrich policy on numberField with `, [ - 'SyntaxError: expected {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} but found ""', + testErrorsAndWarnings('from a_index | enrich policy on this is fine', [ + 'SyntaxError: expected {, PIPE, DOT, WITH} but found "is"', + 'Unknown column [this]', ]); - testErrorsAndWarnings(`from a | enrich policy on numberField with var0 `, [ + testErrorsAndWarnings(`from a_index | enrich policy on stringField with `, [ + 'SyntaxError: expected {ID_PATTERN} but found ""', + ]); + testErrorsAndWarnings(`from a_index | enrich policy on stringField with var0 `, [ 'Unknown column [var0]', ]); - testErrorsAndWarnings(`from a | enrich policy on numberField with var0 = `, [ - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''", + testErrorsAndWarnings(`from a_index |enrich policy on numberField with var0 = `, [ + "SyntaxError: missing ID_PATTERN at ''", 'Unknown column [var0]', ]); - testErrorsAndWarnings(`from a | enrich policy on numberField with var0 = c `, [ + testErrorsAndWarnings(`from a_index | enrich policy on stringField with var0 = c `, [ 'Unknown column [var0]', `Unknown column [c]`, ]); // need to re-enable once the fields/variables become location aware - // testErrorsAndWarnings(`from a | enrich policy on numberField with var0 = stringField `, [ + // testErrorsAndWarnings(`from a_index | enrich policy on stringField with var0 = stringField `, [ // `Unknown column [stringField]`, // ]); - testErrorsAndWarnings(`from a | enrich policy on numberField with var0 = , `, [ - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ','", - 'SyntaxError: expected {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} but found ""', + testErrorsAndWarnings(`from a_index |enrich policy on numberField with var0 = , `, [ + "SyntaxError: missing ID_PATTERN at ','", + 'SyntaxError: expected {ID_PATTERN} but found ""', 'Unknown column [var0]', ]); - testErrorsAndWarnings(`from a | enrich policy on numberField with var0 = otherField, var1 `, [ - 'Unknown column [var1]', - ]); - testErrorsAndWarnings(`from a | enrich policy on numberField with var0 = otherField `, []); testErrorsAndWarnings( - `from a | enrich policy on numberField with var0 = otherField, yetAnotherField `, + `from a_index | enrich policy on stringField with var0 = otherField, var1 `, + ['Unknown column [var1]'] + ); + testErrorsAndWarnings( + `from a_index | enrich policy on stringField with var0 = otherField `, [] ); - testErrorsAndWarnings(`from a | enrich policy on numberField with var0 = otherField, var1 = `, [ - "SyntaxError: missing {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} at ''", - 'Unknown column [var1]', - ]); + testErrorsAndWarnings( + `from a_index | enrich policy on stringField with var0 = otherField, yetAnotherField `, + [] + ); + testErrorsAndWarnings( + `from a_index |enrich policy on numberField with var0 = otherField, var1 = `, + ["SyntaxError: missing ID_PATTERN at ''", 'Unknown column [var1]'] + ); testErrorsAndWarnings( - `from a | enrich policy on numberField with var0 = otherField, var1 = yetAnotherField`, + `from a_index | enrich policy on stringField with var0 = otherField, var1 = yetAnotherField`, [] ); - testErrorsAndWarnings(`from a | enrich policy with `, [ - 'SyntaxError: expected {QUOTED_IDENTIFIER, UNQUOTED_ID_PATTERN} but found ""', + testErrorsAndWarnings( + 'from a_index | enrich policy on stringField with var0 = otherField, `this``is fine` = yetAnotherField', + [] + ); + testErrorsAndWarnings(`from a_index | enrich policy with `, [ + 'SyntaxError: expected {ID_PATTERN} but found ""', ]); - testErrorsAndWarnings(`from a | enrich policy with otherField`, []); - testErrorsAndWarnings(`from a | enrich policy | eval otherField`, []); - testErrorsAndWarnings(`from a | enrich policy with var0 = otherField | eval var0`, []); - testErrorsAndWarnings('from a | enrich my-pol*', [ + testErrorsAndWarnings(`from a_index | enrich policy with otherField`, []); + testErrorsAndWarnings(`from a_index | enrich policy | eval otherField`, []); + testErrorsAndWarnings(`from a_index | enrich policy with var0 = otherField | eval var0`, []); + testErrorsAndWarnings('from a_index | enrich my-pol*', [ 'Using wildcards (*) in ENRICH is not allowed [my-pol*]', ]); }); describe('shadowing', () => { testErrorsAndWarnings( - 'from a | eval stringField = 5', + 'from a_index | eval stringField = 5', [], ['Column [stringField] of type string has been overwritten as new type: number'] ); testErrorsAndWarnings( - 'from a | eval numberField = "5"', + 'from a_index | eval numberField = "5"', [], ['Column [numberField] of type number has been overwritten as new type: string'] ); @@ -1930,7 +2097,7 @@ describe('validation logic', () => { expect(callbackMocks.getPolicies).toHaveBeenCalled(); expect(callbackMocks.getFieldsFor).toHaveBeenCalledTimes(1); expect(callbackMocks.getFieldsFor).toHaveBeenLastCalledWith({ - query: `from enrichIndex1 | keep otherField, yetAnotherField`, + query: `from enrich_index | keep otherField, yetAnotherField`, }); }); @@ -1947,19 +2114,23 @@ describe('validation logic', () => { it(`should fetch additional fields if an enrich command is found`, async () => { const callbackMocks = getCallbackMocks(); - await validateAst(`from a | eval b = a | enrich policy`, getAstAndErrors, callbackMocks); + await validateAst( + `from a_index | eval b = a | enrich policy`, + getAstAndErrors, + callbackMocks + ); expect(callbackMocks.getSources).toHaveBeenCalled(); expect(callbackMocks.getPolicies).toHaveBeenCalled(); expect(callbackMocks.getFieldsFor).toHaveBeenCalledTimes(2); expect(callbackMocks.getFieldsFor).toHaveBeenLastCalledWith({ - query: `from enrichIndex1 | keep otherField, yetAnotherField`, + query: `from enrich_index | keep otherField, yetAnotherField`, }); }); it(`should not crash if no callbacks are available`, async () => { try { await validateAst( - `from a | eval b = a | enrich policy | dissect stringField "%{firstWord}"`, + `from a_index | eval b = a | enrich policy | dissect stringField "%{firstWord}"`, getAstAndErrors, { getFieldsFor: undefined, @@ -1976,7 +2147,7 @@ describe('validation logic', () => { it(`should not crash if no callbacks are passed`, async () => { try { await validateAst( - `from a | eval b = a | enrich policy | dissect stringField "%{firstWord}"`, + `from a_index | eval b = a | enrich policy | dissect stringField "%{firstWord}"`, getAstAndErrors ); } catch { diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts index 1deae7be97b4e..d66d2b3943921 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts +++ b/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts @@ -38,6 +38,7 @@ import { hasCCSSource, isSettingItem, isAssignment, + isVariable, } from '../shared/helpers'; import { collectVariables } from '../shared/variables'; import type { @@ -52,7 +53,7 @@ import type { ESQLSingleAstItem, ESQLSource, } from '../types'; -import { getMessageFromId } from './errors'; +import { getMessageFromId, getUnknownTypeLabel } from './errors'; import type { ESQLRealField, ESQLVariable, ReferenceMaps, ValidationResult } from './types'; import type { ESQLCallbacks } from '../shared/types'; import { @@ -176,16 +177,41 @@ function validateFunctionColumnArg( if (actualArg.name) { const { hit: columnCheck, nameHit } = columnExists(actualArg, references); if (!columnCheck) { - messages.push( - getMessageFromId({ - messageId: 'unknownColumn', - values: { - name: actualArg.name, - }, - locations: actualArg.location, - }) - ); + if (argDef.literalOnly) { + messages.push( + getMessageFromId({ + messageId: 'expectedConstant', + values: { + fn: astFunction.name, + given: getUnknownTypeLabel(), + }, + locations: actualArg.location, + }) + ); + } else { + messages.push( + getMessageFromId({ + messageId: 'unknownColumn', + values: { + name: actualArg.name, + }, + locations: actualArg.location, + }) + ); + } } else { + if (argDef.literalOnly) { + messages.push( + getMessageFromId({ + messageId: 'expectedConstant', + values: { + fn: astFunction.name, + given: actualArg.name, + }, + locations: actualArg.location, + }) + ); + } if (actualArg.name === '*') { // if function does not support wildcards return a specific error if (!('supportsWildcard' in argDef) || !argDef.supportsWildcard) { @@ -201,11 +227,9 @@ function validateFunctionColumnArg( } // do not validate any further for now, only count() accepts wildcard as args... } else { - // guaranteed by the check above - const columnHit = getColumnHit(nameHit!, references); - // check the type of the column hit - const typeHit = columnHit!.type; if (!isEqualType(actualArg, argDef, references, parentCommand)) { + // guaranteed by the check above + const columnHit = getColumnHit(nameHit!, references); messages.push( getMessageFromId({ messageId: 'wrongArgumentType', @@ -213,7 +237,7 @@ function validateFunctionColumnArg( name: astFunction.name, argType: argDef.type, value: actualArg.name, - givenType: typeHit, + givenType: columnHit!.type, }, locations: actualArg.location, }) @@ -584,10 +608,10 @@ function validateColumnForCommand( const columnParamsWithInnerTypes = commandDef.signature.params.filter( ({ type, innerType }) => type === 'column' && innerType ); + // this should be guaranteed by the columnCheck above + const columnRef = getColumnHit(nameHit, references)!; if (columnParamsWithInnerTypes.length) { - // this should be guaranteed by the columnCheck above - const columnRef = getColumnHit(nameHit, references)!; const hasSomeWrongInnerTypes = columnParamsWithInnerTypes.every(({ innerType }) => { return innerType !== 'any' && innerType !== columnRef.type; }); @@ -611,6 +635,7 @@ function validateColumnForCommand( } if ( hasWildcard(nameHit) && + !isVariable(columnRef) && !commandDef.signature.params.some(({ type, wildcards }) => type === 'column' && wildcards) ) { messages.push( @@ -681,8 +706,8 @@ function validateCommand(command: ESQLCommand, references: ReferenceMaps): ESQLM getMessageFromId({ messageId: 'unknownAggregateFunction', values: { - command: command.name.toUpperCase(), value: (arg as ESQLSingleAstItem).name, + type: 'FieldAttribute', }, locations: (arg as ESQLSingleAstItem).location, }) diff --git a/packages/kbn-search-connectors/connectors.ts b/packages/kbn-search-connectors/connectors.ts index 61f1a3848ba68..83e81ae0f4a5c 100644 --- a/packages/kbn-search-connectors/connectors.ts +++ b/packages/kbn-search-connectors/connectors.ts @@ -86,7 +86,7 @@ export const CONNECTOR_DEFINITIONS: ConnectorServerSideDefinition[] = [ }, { iconPath: 'google_drive.svg', - isBeta: true, + isBeta: false, isNative: true, keywords: ['google', 'drive', 'connector'], name: i18n.translate('searchConnectors.content.nativeConnectors.googleDrive.name', { @@ -146,9 +146,8 @@ export const CONNECTOR_DEFINITIONS: ConnectorServerSideDefinition[] = [ }, { iconPath: 'salesforce.svg', - isBeta: true, + isBeta: false, isNative: true, - isTechPreview: false, keywords: ['salesforce', 'cloud', 'connector'], name: i18n.translate('searchConnectors.content.nativeConnectors.salesforce.name', { defaultMessage: 'Salesforce', @@ -179,10 +178,9 @@ export const CONNECTOR_DEFINITIONS: ConnectorServerSideDefinition[] = [ }, { iconPath: 'gmail.svg', - isBeta: false, - isNative: false, - isTechPreview: true, - keywords: ['google', 'gmail', 'connector', 'mail'], + isBeta: true, + isNative: true, + keywords: ['gmail', 'connector'], name: i18n.translate('searchConnectors.content.nativeConnectors.gmail.name', { defaultMessage: 'Gmail', }), @@ -200,7 +198,7 @@ export const CONNECTOR_DEFINITIONS: ConnectorServerSideDefinition[] = [ }, { iconPath: 'onedrive.svg', - isBeta: true, + isBeta: false, isNative: true, keywords: ['network', 'drive', 'file', 'connector'], name: i18n.translate('searchConnectors.content.nativeConnectors.oneDrive.name', { @@ -253,9 +251,8 @@ export const CONNECTOR_DEFINITIONS: ConnectorServerSideDefinition[] = [ }, { iconPath: 'outlook.svg', - isBeta: false, - isNative: false, - isTechPreview: true, + isBeta: true, + isNative: true, keywords: ['outlook', 'connector'], name: i18n.translate('searchConnectors.content.nativeConnectors.outlook.name', { defaultMessage: 'Outlook', diff --git a/packages/kbn-search-connectors/types/native_connectors.ts b/packages/kbn-search-connectors/types/native_connectors.ts index 849e669c4a810..f2b61ecd7e523 100644 --- a/packages/kbn-search-connectors/types/native_connectors.ts +++ b/packages/kbn-search-connectors/types/native_connectors.ts @@ -937,6 +937,133 @@ export const NATIVE_CONNECTOR_DEFINITIONS: Record Account -> Settings -> Customer Id', + }), + type: FieldType.STRING, + ui_restrictions: [], + validations: [], + value: '', + }, + include_spam_and_trash: { + default_value: null, + depends_on: [], + display: DisplayType.TOGGLE, + label: i18n.translate( + 'searchConnectors.nativeConnectors.gmail.include_spam_and_trash.label', + { + defaultMessage: 'Include spam and trash emails', + } + ), + options: [], + order: 4, + required: true, + sensitive: false, + tooltip: i18n.translate( + 'searchConnectors.nativeConnectors.gmail.include_spam_and_trash.tooltip', + { + defaultMessage: 'Will include spam and trash emails, when set to true.', + } + ), + type: FieldType.BOOLEAN, + ui_restrictions: [], + validations: [], + value: false, + }, + use_document_level_security: { + default_value: null, + depends_on: [], + display: DisplayType.TOGGLE, + label: i18n.translate( + 'searchConnectors.nativeConnectors.gmail.use_document_level_security.label', + { + defaultMessage: 'Enable document level security', + } + ), + options: [], + order: 5, + required: true, + sensitive: false, + tooltip: i18n.translate( + 'searchConnectors.nativeConnectors.gmail.use_document_level_security.tooltip', + { + defaultMessage: + 'Document level security ensures identities and permissions set in GMail are maintained in Elasticsearch. This enables you to restrict and personalize read-access users have to documents in this index. Access control syncs ensure this metadata is kept up to date in your Elasticsearch documents.', + } + ), + type: FieldType.BOOLEAN, + ui_restrictions: [], + validations: [], + value: true, + }, + }, + features: { + [FeatureName.DOCUMENT_LEVEL_SECURITY]: { + enabled: true, + }, + }, + name: i18n.translate('searchConnectors.nativeConnectors.gmail.name', { + defaultMessage: 'Gmail', + }), + serviceType: 'gmail', + }, google_cloud_storage: { features: {}, configuration: { @@ -2646,6 +2773,337 @@ export const NATIVE_CONNECTOR_DEFINITIONS: Record {/* If there is no space and no @timestamp detected hide the information */} - {(detectTimestamp || !isSpaceReduced) && ( + {(detectTimestamp || !isSpaceReduced) && !hideTimeFilterInfo && ( diff --git a/packages/kbn-text-based-editor/src/text_based_languages_editor.test.tsx b/packages/kbn-text-based-editor/src/text_based_languages_editor.test.tsx index 114c8f6df510f..29bc09d321f26 100644 --- a/packages/kbn-text-based-editor/src/text_based_languages_editor.test.tsx +++ b/packages/kbn-text-based-editor/src/text_based_languages_editor.test.tsx @@ -102,6 +102,16 @@ describe('TextBasedLanguagesEditor', () => { ); }); + it('should not render the date info if hideTimeFilterInfo is set to true', async () => { + const newProps = { + ...props, + isCodeEditorExpanded: true, + hideTimeFilterInfo: true, + }; + const component = mount(renderTextBasedLanguagesEditorComponent({ ...newProps })); + expect(component.find('[data-test-subj="TextBasedLangEditor-date-info"]').length).toBe(0); + }); + it('should render the date info with @timestamp found if detectTimestamp is true', async () => { const newProps = { ...props, diff --git a/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx b/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx index 87ec4142e9b36..3e848661edeac 100644 --- a/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx +++ b/packages/kbn-text-based-editor/src/text_based_languages_editor.tsx @@ -112,6 +112,9 @@ export interface TextBasedLanguagesEditorProps { /** when set to true enables query cancellation **/ allowQueryCancellation?: boolean; + + /** hide @timestamp info **/ + hideTimeFilterInfo?: boolean; } interface TextBasedEditorDeps { @@ -166,6 +169,7 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ disableSubmitAction, dataTestSubj, allowQueryCancellation, + hideTimeFilterInfo, }: TextBasedLanguagesEditorProps) { const { euiTheme } = useEuiTheme(); const language = getAggregateQueryMode(query); @@ -882,6 +886,7 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ isSpaceReduced={isSpaceReduced} isLoading={isQueryLoading} allowQueryCancellation={allowQueryCancellation} + hideTimeFilterInfo={hideTimeFilterInfo} /> )} @@ -978,6 +983,7 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ isSpaceReduced={isSpaceReduced} isLoading={isQueryLoading} allowQueryCancellation={allowQueryCancellation} + hideTimeFilterInfo={hideTimeFilterInfo} {...editorMessages} /> )} diff --git a/src/dev/performance/run_performance_cli.ts b/src/dev/performance/run_performance_cli.ts index 687a6460d5a3d..810827a89f73f 100644 --- a/src/dev/performance/run_performance_cli.ts +++ b/src/dev/performance/run_performance_cli.ts @@ -8,7 +8,9 @@ import { createFlagError } from '@kbn/dev-cli-errors'; import { run } from '@kbn/dev-cli-runner'; +import { ProcRunner } from '@kbn/dev-proc-runner'; import { REPO_ROOT } from '@kbn/repo-info'; +import { ToolingLog } from '@kbn/tooling-log'; import fs from 'fs'; import path from 'path'; @@ -19,6 +21,92 @@ export interface Journey { path: string; } +interface EsRunProps { + procRunner: ProcRunner; + log: ToolingLog; + logsDir?: string; +} + +interface TestRunProps extends EsRunProps { + journey: Journey; + phase: 'TEST' | 'WARMUP'; + kibanaInstallDir: string | undefined; +} + +const readFilesRecursively = (dir: string, callback: Function) => { + const files = fs.readdirSync(dir); + files.forEach((file) => { + const filePath = path.join(dir, file); + const stat = fs.statSync(filePath); + if (stat.isDirectory()) { + readFilesRecursively(filePath, callback); + } else if (stat.isFile()) { + callback(filePath); + } + }); +}; + +async function startEs(props: EsRunProps) { + const { procRunner, log, logsDir } = props; + await procRunner.run('es', { + cmd: 'node', + args: [ + 'scripts/es', + 'snapshot', + '--license=trial', + // Temporarily disabling APM + // ...(JOURNEY_APM_CONFIG.active + // ? [ + // '-E', + // 'tracing.apm.enabled=true', + // '-E', + // 'tracing.apm.agent.transaction_sample_rate=1.0', + // '-E', + // `tracing.apm.agent.server_url=${JOURNEY_APM_CONFIG.serverUrl}`, + // '-E', + // `tracing.apm.agent.secret_token=${JOURNEY_APM_CONFIG.secretToken}`, + // '-E', + // `tracing.apm.agent.environment=${JOURNEY_APM_CONFIG.environment}`, + // ] + // : []), + `--writeLogsToPath=${logsDir}/es-cluster.log`, + ], + cwd: REPO_ROOT, + wait: /kbn\/es setup complete/, + }); + + log.info(`✅ ES is ready and will run in the background`); +} + +async function runFunctionalTest(props: TestRunProps) { + const { procRunner, journey, phase, kibanaInstallDir, logsDir } = props; + await procRunner.run('functional-tests', { + cmd: 'node', + args: [ + 'scripts/functional_tests', + ['--config', journey.path], + kibanaInstallDir ? ['--kibana-install-dir', kibanaInstallDir] : [], + // save Kibana logs in file instead of console output; only for "warmup" phase + logsDir ? ['--writeLogsToPath', logsDir] : [], + '--debug', + '--bail', + ].flat(), + cwd: REPO_ROOT, + wait: true, + env: { + // Reset all the ELASTIC APM env vars to undefined, FTR config might set it's own values. + ...Object.fromEntries( + Object.keys(process.env).flatMap((k) => + k.startsWith('ELASTIC_APM_') ? [[k, undefined]] : [] + ) + ), + TEST_PERFORMANCE_PHASE: phase, + TEST_ES_URL: 'http://elastic:changeme@localhost:9200', + TEST_ES_DISABLE_STARTUP: 'true', + }, + }); +} + run( async ({ log, flagsReader, procRunner }) => { const skipWarmup = flagsReader.boolean('skip-warmup'); @@ -33,19 +121,23 @@ run( throw createFlagError('--journey-path must be an existing path'); } - let journeys: Journey[] = []; + const journeys: Journey[] = []; - if (journeyPath) { - journeys = fs.statSync(journeyPath).isDirectory() - ? fs.readdirSync(journeyPath).map((fileName) => { - return { name: fileName, path: path.resolve(journeyPath, fileName) }; - }) - : [{ name: path.parse(journeyPath).name, path: journeyPath }]; + if (journeyPath && fs.statSync(journeyPath).isFile()) { + journeys.push({ name: path.parse(journeyPath).name, path: journeyPath }); } else { - const journeyBasePath = path.resolve(REPO_ROOT, JOURNEY_BASE_PATH); - journeys = fs.readdirSync(journeyBasePath).map((name) => { - return { name, path: path.join(journeyBasePath, name) }; - }); + // default dir is x-pack/performance/journeys + const dir = journeyPath ?? path.resolve(REPO_ROOT, JOURNEY_BASE_PATH); + readFilesRecursively(dir, (filePath: string) => + journeys.push({ + name: path.parse(filePath).name, + path: path.resolve(dir, filePath), + }) + ); + } + + if (journeys.length === 0) { + throw new Error('No journeys found'); } log.info( @@ -56,11 +148,24 @@ run( for (const journey of journeys) { try { - await startEs(); + // create folder to store ES/Kibana server logs + const logsDir = path.resolve(REPO_ROOT, `.ftr/journey_server_logs/${journey.name}`); + fs.mkdirSync(logsDir, { recursive: true }); + process.stdout.write(`--- Running journey: ${journey.name} [start ES, warmup run]\n`); + await startEs({ procRunner, log, logsDir }); if (!skipWarmup) { - await runWarmup(journey, kibanaInstallDir); + // Set the phase to WARMUP, this will prevent the FTR from starting Kibana with opt-in telemetry and save logs to file + await runFunctionalTest({ + procRunner, + log, + journey, + phase: 'WARMUP', + kibanaInstallDir, + logsDir, + }); } - await runTest(journey, kibanaInstallDir); + process.stdout.write(`--- Running journey: ${journey.name} [collect metrics]\n`); + await runFunctionalTest({ procRunner, log, journey, phase: 'TEST', kibanaInstallDir }); } catch (e) { log.error(e); failedJourneys.push(journey.name); @@ -69,88 +174,6 @@ run( } } - async function runFunctionalTest( - configPath: string, - phase: 'TEST' | 'WARMUP', - kibanaBuildDir: string | undefined - ) { - await procRunner.run('functional-tests', { - cmd: 'node', - args: [ - 'scripts/functional_tests', - ['--config', configPath], - kibanaBuildDir ? ['--kibana-install-dir', kibanaBuildDir] : [], - '--debug', - '--bail', - ].flat(), - cwd: REPO_ROOT, - wait: true, - env: { - // Reset all the ELASTIC APM env vars to undefined, FTR config might set it's own values. - ...Object.fromEntries( - Object.keys(process.env).flatMap((k) => - k.startsWith('ELASTIC_APM_') ? [[k, undefined]] : [] - ) - ), - TEST_PERFORMANCE_PHASE: phase, - TEST_ES_URL: 'http://elastic:changeme@localhost:9200', - TEST_ES_DISABLE_STARTUP: 'true', - }, - }); - } - - async function startEs() { - process.stdout.write(`--- Starting ES\n`); - await procRunner.run('es', { - cmd: 'node', - args: [ - 'scripts/es', - 'snapshot', - '--license=trial', - // Temporarily disabling APM - // ...(JOURNEY_APM_CONFIG.active - // ? [ - // '-E', - // 'tracing.apm.enabled=true', - // '-E', - // 'tracing.apm.agent.transaction_sample_rate=1.0', - // '-E', - // `tracing.apm.agent.server_url=${JOURNEY_APM_CONFIG.serverUrl}`, - // '-E', - // `tracing.apm.agent.secret_token=${JOURNEY_APM_CONFIG.secretToken}`, - // '-E', - // `tracing.apm.agent.environment=${JOURNEY_APM_CONFIG.environment}`, - // ] - // : []), - ], - cwd: REPO_ROOT, - wait: /kbn\/es setup complete/, - }); - - log.info(`✅ ES is ready and will run in the background`); - } - - async function runWarmup(journey: Journey, kibanaBuildDir: string | undefined) { - try { - process.stdout.write(`--- Running warmup: ${journey.name}\n`); - // Set the phase to WARMUP, this will prevent the functional test server from starting Elasticsearch, opt in to telemetry, etc. - await runFunctionalTest(journey.path, 'WARMUP', kibanaBuildDir); - } catch (e) { - log.warning(`Warmup for ${journey.name} failed`); - throw e; - } - } - - async function runTest(journey: Journey, kibanaBuildDir: string | undefined) { - try { - process.stdout.write(`--- Running ${journey.name}\n`); - await runFunctionalTest(journey.path, 'TEST', kibanaBuildDir); - } catch (e) { - log.warning(`Journey ${journey.name} failed. Retrying once...`); - await runFunctionalTest(journey.path, 'TEST', kibanaBuildDir); - } - } - if (failedJourneys.length > 0) { throw new Error(`${failedJourneys.length} journeys failed: ${failedJourneys.join(',')}`); } diff --git a/src/dev/tsconfig.json b/src/dev/tsconfig.json index a3ebcf6dda1ba..ca2253b2ee055 100644 --- a/src/dev/tsconfig.json +++ b/src/dev/tsconfig.json @@ -41,5 +41,6 @@ "@kbn/config-schema", "@kbn/core-test-helpers-so-type-serializer", "@kbn/core-test-helpers-kbn-server", + "@kbn/dev-proc-runner", ] } diff --git a/src/plugins/ai_assistant_management/observability/public/routes/components/settings_tab.tsx b/src/plugins/ai_assistant_management/observability/public/routes/components/settings_tab.tsx index ab68cb3abb306..f0a5650d41f70 100644 --- a/src/plugins/ai_assistant_management/observability/public/routes/components/settings_tab.tsx +++ b/src/plugins/ai_assistant_management/observability/public/routes/components/settings_tab.tsx @@ -162,6 +162,7 @@ export function SettingsTab() { )} > { this.dispatch.setFocusedPanelId(id); + this.setScrollToPanelId(id); }; // ------------------------------------------------------------------------------------------------------ diff --git a/src/plugins/discover/public/application/main/components/no_results/no_results_suggestions/use_fetch_occurances_range.ts b/src/plugins/discover/public/application/main/components/no_results/no_results_suggestions/use_fetch_occurances_range.ts index 90efad593d519..e5306344f1058 100644 --- a/src/plugins/discover/public/application/main/components/no_results/no_results_suggestions/use_fetch_occurances_range.ts +++ b/src/plugins/discover/public/application/main/components/no_results/no_results_suggestions/use_fetch_occurances_range.ts @@ -66,7 +66,10 @@ export const useFetchOccurrencesRange = (params: Params): Result => { abortSignal: abortControllerRef.current?.signal, }); } catch (error) { - // + if (error.name !== 'AbortError') { + // eslint-disable-next-line no-console + console.error(error); + } } } diff --git a/src/plugins/unified_search/public/filter_bar/filter_editor/filter_editor_builder.test.tsx b/src/plugins/unified_search/public/filter_bar/filter_editor/filter_editor_builder.test.tsx new file mode 100644 index 0000000000000..113e2bdd4c18e --- /dev/null +++ b/src/plugins/unified_search/public/filter_bar/filter_editor/filter_editor_builder.test.tsx @@ -0,0 +1,355 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React from 'react'; +import { fireEvent, render, screen, waitFor, within } from '@testing-library/react'; +import { Filter, FilterStateStore } from '@kbn/es-query'; +import { FilterEditor, FilterEditorProps } from './filter_editor'; +import { I18nProvider } from '@kbn/i18n-react'; +import { coreMock } from '@kbn/core/public/mocks'; +import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; +import type { DataView } from '@kbn/data-views-plugin/common'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; + +const getStorage = (v: string) => { + const storage = createMockStorage(); + storage.get.mockReturnValue(v); + return storage; +}; +const createMockWebStorage = () => ({ + clear: jest.fn(), + getItem: jest.fn(), + key: jest.fn(), + removeItem: jest.fn(), + setItem: jest.fn(), + length: 0, +}); + +const createMockStorage = () => ({ + storage: createMockWebStorage(), + get: jest.fn(), + set: jest.fn(), + remove: jest.fn(), + clear: jest.fn(), +}); +const startMock = coreMock.createStart(); +const dataMock = dataPluginMock.createStartContract(); + +const services = { + data: dataMock, + storage: getStorage('kuery'), + uiSettings: startMock.uiSettings, +}; + +const filterIs = (value: string | undefined = '23', negate = false): Filter => ({ + meta: { + disabled: false, + negate, + alias: null, + index: 'ff959d40-b880-11e8-a6d9-e546fe2bba5f', + key: 'price', + params: { + query: value, + }, + type: 'phrase', + }, + query: { + match_phrase: { + price: value, + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, +}); + +const filterIsOneOf = (values: string[] | undefined = undefined, negate = false): Filter => ({ + meta: { + alias: null, + disabled: false, + index: 'ff959d40-b880-11e8-a6d9-e546fe2bba5f', + key: 'price', + negate, + params: values, + type: 'phrases', + }, + query: { + bool: { + minimum_should_match: 1, + should: values + ? values.map((value) => ({ + match_phrase: { + price: value, + }, + })) + : { + match_phrase: { + price: 0, + }, + }, + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, +}); + +const filterIsBetween = ( + values: { gte?: string; lt?: string } = { gte: undefined, lt: undefined }, + negate = false +): Filter => ({ + meta: { + disabled: false, + negate, + alias: null, + index: 'ff959d40-b880-11e8-a6d9-e546fe2bba5f', + key: 'price', + params: values, + type: 'range', + }, + query: { + range: { + price: values, + }, + }, + $state: { + store: FilterStateStore.APP_STATE, + }, +}); + +const filterLessThan = filterIsBetween({ lt: '30' }); +const filterGreaterOrEqual = filterIsBetween({ gte: '20' }); + +const mockedDataView = { + id: 'ff959d40-b880-11e8-a6d9-e546fe2bba5f', + title: 'logstash-*', + fields: [ + { + name: 'price', + type: 'number', + esTypes: ['integer'], + aggregatable: true, + filterable: true, + searchable: true, + }, + ], + getName: () => 'logstash-*', +} as DataView; + +const defaultProps = { + filter: filterIs('23'), + filtersForSuggestions: [], + indexPatterns: [mockedDataView], + onCancel: jest.fn(), + onSubmit: jest.fn(), + docLinks: startMock.docLinks, +}; + +const renderFilterEditor = async (propsOverrides?: Partial) => { + render(, { + wrapper: ({ children }) => ( + + {children} + + ), + }); + + await waitFor(() => { + expect(screen.getByRole('combobox', { name: /select operator/i })).toBeInTheDocument(); + }); +}; + +const getFilterBadgeTextContent = () => screen.getByTestId('filter-preview').textContent; + +const getMultiValuesParamsValue = () => { + const mainNode = screen.queryByTestId('filterParams'); + if (!mainNode) { + throw new Error('Node has not been found'); + } + + const filterPills = within(mainNode).queryAllByTestId('euiComboBoxPill'); + if (filterPills.length === 0) { + return ''; + } else { + return filterPills.map((pill) => pill.textContent); + } +}; + +const getSingleParamValue = () => { + return (screen.getByRole('spinbutton', { name: /enter a value/i }) as HTMLInputElement).value; +}; + +const getBetweenParamsValue = () => { + const mainNode = screen.queryByTestId('filterParams'); + if (!mainNode) { + throw new Error('Node has not been found'); + } + return (within(mainNode).getAllByRole('spinbutton') as HTMLInputElement[]) + .map((el) => el.value) + .join(','); +}; + +const chooseOperator = (operator: string) => { + fireEvent.click(screen.getByRole('combobox', { name: /select operator/i })); + fireEvent.click(screen.getByRole('option', { name: operator })); +}; + +const waitForComboboxToBeClosed = () => { + waitFor(() => { + expect( + screen.queryByRole('listbox', { name: 'Choose from the following options' }) + ).not.toBeInTheDocument(); + }); +}; + +describe('Preserving or clearing value on operator change', () => { + describe('preserves value with no change', () => { + afterEach(() => { + // close combobox to prevent "memory leak" warning + waitForComboboxToBeClosed(); + }); + it('is <-> is not', async () => { + await renderFilterEditor(); + chooseOperator('is not'); + expect(getSingleParamValue()).toEqual('23'); + expect(getFilterBadgeTextContent()).toBe('NOT price: 23'); + chooseOperator('is'); + expect(getSingleParamValue()).toEqual('23'); + expect(getFilterBadgeTextContent()).toBe('price: 23'); + }); + it('is one of <-> is not one of', async () => { + const filterValues = ['23', '48', '89']; + + await renderFilterEditor({ + filter: filterIsOneOf(filterValues), + }); + chooseOperator('is not one of'); + expect(getMultiValuesParamsValue()).toEqual(filterValues); + expect(getFilterBadgeTextContent()).toBe('NOT price: is one of 23, 48, 89'); + chooseOperator('is one of'); + expect(getMultiValuesParamsValue()).toEqual(filterValues); + expect(getFilterBadgeTextContent()).toBe('price: is one of 23, 48, 89'); + }); + it('is between <-> is not between', async () => { + await renderFilterEditor({ + filter: filterIsBetween({ gte: '20', lt: '30' }), + }); + chooseOperator('is not between'); + expect(getBetweenParamsValue()).toEqual('20,30'); + expect(getFilterBadgeTextContent()).toBe('NOT price: 20 to 30'); + chooseOperator('is between'); + expect(getBetweenParamsValue()).toEqual('20,30'); + expect(getFilterBadgeTextContent()).toBe('price: 20 to 30'); + }); + + it('less than -> between', async () => { + await renderFilterEditor({ + filter: filterLessThan, + }); + chooseOperator('is between'); + expect(getBetweenParamsValue()).toEqual(',30'); + expect(getFilterBadgeTextContent()).toBe('price: < 30'); + }); + it('greater than -> is between', async () => { + await renderFilterEditor({ + filter: filterGreaterOrEqual, + }); + chooseOperator('is between'); + expect(getBetweenParamsValue()).toEqual('20,'); + expect(getFilterBadgeTextContent()).toBe('price: ≥ 20'); + }); + }); + + describe('clears value', () => { + it('is <-> exists', async () => { + await renderFilterEditor(); + chooseOperator('exists'); + expect(getFilterBadgeTextContent()).toBe('price: exists'); + chooseOperator('is'); + expect(getSingleParamValue()).toEqual(''); + expect(getFilterBadgeTextContent()).toBe('price: 0'); + }); + it('is one of -> is between', async () => { + await renderFilterEditor({ + filter: filterIsBetween({ gte: '20', lt: '30' }), + }); + chooseOperator('is one of'); + expect(getMultiValuesParamsValue()).toEqual(''); + expect(screen.queryByTestId('filter-preview')).not.toBeInTheDocument(); + }); + it('is between -> is', async () => { + await renderFilterEditor({ + filter: filterIsBetween({ gte: '20', lt: '30' }), + }); + chooseOperator('is'); + expect(getSingleParamValue()).toEqual(''); + expect(getFilterBadgeTextContent()).toBe('price: 0'); + }); + it('is -> is between', async () => { + await renderFilterEditor(); + chooseOperator('is between'); + expect(getBetweenParamsValue()).toEqual(','); + expect(getFilterBadgeTextContent()).toBe('price: -'); + }); + it('is between -> is one of', async () => { + await renderFilterEditor({ + filter: filterIsBetween({ gte: '20', lt: '30' }), + }); + chooseOperator('is one of'); + expect(getMultiValuesParamsValue()).toEqual(''); + expect(screen.queryByTestId('filter-preview')).not.toBeInTheDocument(); + }); + }); + + describe('converts and partially preserves value', () => { + it('is -> is one of', async () => { + await renderFilterEditor(); + chooseOperator('is one of'); + expect(getMultiValuesParamsValue()).toEqual(['23']); + expect(getFilterBadgeTextContent()).toBe('price: is one of 23'); + }); + it('is -> is not one of', async () => { + await renderFilterEditor(); + chooseOperator('is not one of'); + expect(getMultiValuesParamsValue()).toEqual(['23']); + expect(getFilterBadgeTextContent()).toBe('NOT price: is one of 23'); + }); + it('is one of -> is', async () => { + await renderFilterEditor({ + filter: filterIsOneOf(['23', '48', '89']), + }); + chooseOperator('is'); + expect(getSingleParamValue()).toEqual('23'); + expect(getFilterBadgeTextContent()).toBe('price: 23'); + }); + it('is one of -> is not', async () => { + await renderFilterEditor({ + filter: filterIsOneOf(['23', '48', '89']), + }); + chooseOperator('is not'); + expect(getSingleParamValue()).toEqual('23'); + expect(getFilterBadgeTextContent()).toBe('NOT price: 23'); + }); + it('is between -> less than', async () => { + await renderFilterEditor({ + filter: filterIsBetween({ gte: '20', lt: '30' }), + }); + chooseOperator('less than'); + expect(getSingleParamValue()).toEqual('30'); + expect(getFilterBadgeTextContent()).toBe('price: < 30'); + }); + it('is between -> greater than', async () => { + await renderFilterEditor({ + filter: filterIsBetween({ gte: '20', lt: '30' }), + }); + chooseOperator('greater or equal'); + expect(getSingleParamValue()).toEqual('20'); + expect(getFilterBadgeTextContent()).toBe('price: ≥ 20'); + }); + }); +}); diff --git a/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_operators.ts b/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_operators.ts index 1b54defae5b10..d76bd32097d66 100644 --- a/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_operators.ts +++ b/src/plugins/unified_search/public/filter_bar/filter_editor/lib/filter_operators.ts @@ -10,6 +10,8 @@ import { i18n } from '@kbn/i18n'; import { FILTERS } from '@kbn/es-query'; import { ES_FIELD_TYPES } from '@kbn/field-types'; import { DataViewField } from '@kbn/data-views-plugin/common'; +import { FilterMetaParams } from '@kbn/es-query/src/filters/build_filters'; +import { isRangeParams } from '../range_value_input'; export const strings = { getIsOperatorOptionLabel: () => @@ -83,35 +85,63 @@ export interface Operator { * takes precedence over {@link fieldTypes} */ field?: (field: DataViewField) => boolean; + /** + * If applicable, preserves or converts filter params when switching between operators + */ + getParamsFromPrevOperator?: ( + prevOperator: Operator | undefined, + params: FilterMetaParams + ) => FilterMetaParams | undefined; } -export const isOperator = { - message: strings.getIsOperatorOptionLabel(), +const isSharedProps = { type: FILTERS.PHRASE, + getParamsFromPrevOperator: (prevOperator: Operator | undefined, params: FilterMetaParams) => { + if (!prevOperator) return; + if ([OPERATORS.IS, OPERATORS.IS_NOT].includes(prevOperator.id)) return params; + if ([OPERATORS.IS_ONE_OF, OPERATORS.IS_NOT_ONE_OF].includes(prevOperator.id)) { + if (Array.isArray(params) && params.length > 0) return params[0]; + } + }, +}; + +export const isOperator: Operator = { + ...isSharedProps, + message: strings.getIsOperatorOptionLabel(), negate: false, id: OPERATORS.IS, }; -export const isNotOperator = { +export const isNotOperator: Operator = { + ...isSharedProps, message: strings.getIsNotOperatorOptionLabel(), - type: FILTERS.PHRASE, negate: true, id: OPERATORS.IS_NOT, }; -export const isOneOfOperator = { - message: strings.getIsOneOfOperatorOptionLabel(), +const isOneOfSharedProps = { type: FILTERS.PHRASES, - negate: false, fieldTypes: ['string', 'number', 'date', 'ip', 'geo_point', 'geo_shape'], + getParamsFromPrevOperator: (prevOperator: Operator | undefined, params: FilterMetaParams) => { + if (!prevOperator) return; + if ([OPERATORS.IS_ONE_OF, OPERATORS.IS_NOT_ONE_OF].includes(prevOperator.id)) return params; + if ([OPERATORS.IS, OPERATORS.IS_NOT].includes(prevOperator.id) && typeof params === 'string') { + if (!Array.isArray(params)) return [params]; + } + }, +}; + +export const isOneOfOperator: Operator = { + ...isOneOfSharedProps, + message: strings.getIsOneOfOperatorOptionLabel(), + negate: false, id: OPERATORS.IS_ONE_OF, }; -export const isNotOneOfOperator = { +export const isNotOneOfOperator: Operator = { + ...isOneOfSharedProps, message: strings.getIsNotOneOfOperatorOptionLabel(), - type: FILTERS.PHRASES, negate: true, - fieldTypes: ['string', 'number', 'date', 'ip', 'geo_point', 'geo_shape'], id: OPERATORS.IS_NOT_ONE_OF, }; @@ -127,42 +157,73 @@ const rangeOperatorsSharedProps = { }, }; -export const isBetweenOperator = { +const betweenGetParamsFromPrevOperator = ( + prevOperator: Operator | undefined, + params: FilterMetaParams +) => { + if (!prevOperator) return; + if ( + [OPERATORS.LESS, OPERATORS.GREATER_OR_EQUAL, OPERATORS.BETWEEN, OPERATORS.NOT_BETWEEN].includes( + prevOperator.id + ) + ) + return params; +}; + +export const isBetweenOperator: Operator = { ...rangeOperatorsSharedProps, message: strings.getIsBetweenOperatorOptionLabel(), id: OPERATORS.BETWEEN, negate: false, + getParamsFromPrevOperator: betweenGetParamsFromPrevOperator, +}; + +export const isNotBetweenOperator: Operator = { + ...rangeOperatorsSharedProps, + message: strings.getIsNotBetweenOperatorOptionLabel(), + negate: true, + id: OPERATORS.NOT_BETWEEN, + getParamsFromPrevOperator: betweenGetParamsFromPrevOperator, }; -export const isLessThanOperator = { +export const isLessThanOperator: Operator = { ...rangeOperatorsSharedProps, message: strings.getLessThanOperatorOptionLabel(), id: OPERATORS.LESS, negate: false, + getParamsFromPrevOperator: (prevOperator, params) => { + if (!prevOperator) return; + if ( + [OPERATORS.BETWEEN, OPERATORS.NOT_BETWEEN].includes(prevOperator.id) && + isRangeParams(params) + ) + return { from: undefined, to: params?.to }; + }, }; -export const isGreaterOrEqualOperator = { +export const isGreaterOrEqualOperator: Operator = { ...rangeOperatorsSharedProps, message: strings.getIsGreaterOrEqualOperatorOptionLabel(), id: OPERATORS.GREATER_OR_EQUAL, negate: false, + getParamsFromPrevOperator: (prevOperator, params) => { + if (!prevOperator) return; + if ( + [OPERATORS.BETWEEN, OPERATORS.NOT_BETWEEN].includes(prevOperator.id) && + isRangeParams(params) + ) + return { from: params?.from, to: undefined }; + }, }; -export const isNotBetweenOperator = { - ...rangeOperatorsSharedProps, - message: strings.getIsNotBetweenOperatorOptionLabel(), - negate: true, - id: OPERATORS.NOT_BETWEEN, -}; - -export const existsOperator = { +export const existsOperator: Operator = { message: strings.getExistsOperatorOptionLabel(), type: FILTERS.EXISTS, negate: false, id: OPERATORS.EXISTS, }; -export const doesNotExistOperator = { +export const doesNotExistOperator: Operator = { message: strings.getDoesNotExistOperatorOptionLabel(), type: FILTERS.EXISTS, negate: true, diff --git a/src/plugins/unified_search/public/filters_builder/filter_item/filter_item.tsx b/src/plugins/unified_search/public/filters_builder/filter_item/filter_item.tsx index b789930dcda8d..d43a1f7a38389 100644 --- a/src/plugins/unified_search/public/filters_builder/filter_item/filter_item.tsx +++ b/src/plugins/unified_search/public/filters_builder/filter_item/filter_item.tsx @@ -135,13 +135,21 @@ export function FilterItem({ const onHandleOperator = useCallback( (selectedOperator: Operator) => { + const preservedParams = + params && selectedOperator.getParamsFromPrevOperator?.(operator, params); + setMultiValueFilterParams(Array.isArray(preservedParams) ? preservedParams : []); setOperator(selectedOperator); dispatch({ type: 'updateFilter', - payload: { dest: { path, index }, field, operator: selectedOperator }, + payload: { + dest: { path, index }, + field, + operator: selectedOperator, + params: params && selectedOperator.getParamsFromPrevOperator?.(operator, params), + }, }); }, - [dispatch, path, index, field] + [dispatch, path, index, field, operator, params] ); const onHandleParamsChange = useCallback( diff --git a/test/accessibility/apps/discover.ts b/test/accessibility/apps/discover.ts index 8a4dc8de7a52b..4a20261d5bf64 100644 --- a/test/accessibility/apps/discover.ts +++ b/test/accessibility/apps/discover.ts @@ -154,7 +154,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); await retry.try(async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }); await a11y.testAppSnapshot(); diff --git a/test/examples/search/warnings.ts b/test/examples/search/warnings.ts index 80d4224d2ef83..2e595bc725ac0 100644 --- a/test/examples/search/warnings.ts +++ b/test/examples/search/warnings.ts @@ -9,14 +9,12 @@ import type { estypes } from '@elastic/elasticsearch'; import expect from '@kbn/expect'; import assert from 'assert'; -import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import type { FtrProviderContext } from '../../functional/ftr_provider_context'; // eslint-disable-next-line import/no-default-export export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'timePicker']); const testSubjects = getService('testSubjects'); - const find = getService('find'); const retry = getService('retry'); const es = getService('es'); const log = getService('log'); @@ -25,6 +23,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); const esArchiver = getService('esArchiver'); const monacoEditor = getService('monacoEditor'); + const toasts = getService('toasts'); describe('handling warnings with search source fetch', function () { const dataViewTitle = 'sample-01,sample-01-rollup'; @@ -34,7 +33,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testIndex = 'sample-01'; const testRollupIndex = 'sample-01-rollup'; const testRollupField = 'kubernetes.container.memory.usage.bytes'; - const toastsSelector = '[data-test-subj=globalToastList] [data-test-subj=euiToastHeader]'; const shardFailureType = 'unsupported_aggregation_on_downsampled_index'; const shardFailureReason = `Field [${testRollupField}] of type [aggregate_metric_double] is not supported for aggregation [percentiles]`; @@ -97,15 +95,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); afterEach(async () => { - await PageObjects.common.clearAllToasts(); + await toasts.dismissAll(); }); it('should show search warnings as toasts', async () => { await testSubjects.click('searchSourceWithOther'); await retry.try(async () => { - const toasts = await find.allByCssSelector(toastsSelector); - expect(toasts.length).to.be(2); + expect(await toasts.getCount()).to.be(2); await testSubjects.click('viewWarningBtn'); }); @@ -152,10 +149,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.click('searchSourceWithoutOther'); // wait for toasts - toasts appear after the response is rendered - let toasts: WebElementWrapper[] = []; await retry.try(async () => { - toasts = await find.allByCssSelector(toastsSelector); - expect(toasts.length).to.be(2); + expect(await toasts.getCount()).to.be(2); }); // warnings tab diff --git a/test/examples/unified_field_list_examples/existing_fields.ts b/test/examples/unified_field_list_examples/existing_fields.ts index 341c440b3c8a8..2967e877383f1 100644 --- a/test/examples/unified_field_list_examples/existing_fields.ts +++ b/test/examples/unified_field_list_examples/existing_fields.ts @@ -73,7 +73,7 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { await PageObjects.timePicker.setAbsoluteRange(TEST_START_TIME, TEST_END_TIME); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded(); - await PageObjects.unifiedFieldList.toggleSidebarSection('meta'); + await PageObjects.unifiedFieldList.openSidebarSection('meta'); }); after(async () => { diff --git a/test/functional/apps/console/_context_menu.ts b/test/functional/apps/console/_context_menu.ts index 0d89a762ad910..4051804d7407f 100644 --- a/test/functional/apps/console/_context_menu.ts +++ b/test/functional/apps/console/_context_menu.ts @@ -43,7 +43,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.console.clickContextMenu(); await PageObjects.console.clickCopyAsCurlButton(); - const resultToast = await toasts.getToastElement(1); + const resultToast = await toasts.getElementByIndex(1); const toastText = await resultToast.getVisibleText(); if (toastText.includes('Write permission denied')) { diff --git a/test/functional/apps/console/_text_input.ts b/test/functional/apps/console/_text_input.ts index 29290fac6728f..8826b24931c07 100644 --- a/test/functional/apps/console/_text_input.ts +++ b/test/functional/apps/console/_text_input.ts @@ -42,7 +42,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); await retry.try(async () => { - expect(await toasts.getToastCount()).to.equal(1); + expect(await toasts.getCount()).to.equal(1); }); }); }); diff --git a/test/functional/apps/dashboard/group3/bwc_shared_urls.ts b/test/functional/apps/dashboard/group3/bwc_shared_urls.ts index 0b06e28af0f11..8f89ed302c67c 100644 --- a/test/functional/apps/dashboard/group3/bwc_shared_urls.ts +++ b/test/functional/apps/dashboard/group3/bwc_shared_urls.ts @@ -78,7 +78,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const query = await queryBar.getQueryString(); expect(query).to.equal('memory:>220000'); - const warningToast = await toasts.getToastElement(1); + const warningToast = await toasts.getElementByIndex(1); expect(await warningToast.getVisibleText()).to.contain('Cannot load panels'); await PageObjects.dashboard.waitForRenderComplete(); @@ -96,7 +96,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const query = await queryBar.getQueryString(); expect(query).to.equal('memory:>220000'); - const warningToast = await toasts.getToastElement(1); + const warningToast = await toasts.getElementByIndex(1); expect(await warningToast.getVisibleText()).to.contain('Cannot load panels'); await PageObjects.dashboard.waitForRenderComplete(); }); diff --git a/test/functional/apps/dashboard/group6/dashboard_snapshots.ts b/test/functional/apps/dashboard/group6/dashboard_snapshots.ts index 3c743e9021a21..23b8b071e41d1 100644 --- a/test/functional/apps/dashboard/group6/dashboard_snapshots.ts +++ b/test/functional/apps/dashboard/group6/dashboard_snapshots.ts @@ -31,6 +31,7 @@ export default function ({ const dashboardAddPanel = getService('dashboardAddPanel'); const testSubjects = getService('testSubjects'); const retry = getService('retry'); + const toasts = getService('toasts'); describe('dashboard snapshots', function describeIndexTests() { before(async function () { @@ -58,7 +59,7 @@ export default function ({ await PageObjects.dashboard.clickNewDashboard(); await PageObjects.timePicker.setLogstashDataRange(); await dashboardAddPanel.addVisualization('Rendering Test: tsvb-ts'); - await PageObjects.common.closeToastIfExists(); + await toasts.dismissIfExists(); await PageObjects.dashboard.saveDashboard('tsvb'); await PageObjects.dashboard.clickFullScreenMode(); @@ -80,7 +81,7 @@ export default function ({ await PageObjects.dashboard.clickNewDashboard(); await PageObjects.timePicker.setLogstashDataRange(); await dashboardAddPanel.addVisualization('Rendering Test: area with not filter'); - await PageObjects.common.closeToastIfExists(); + await toasts.dismissIfExists(); await PageObjects.dashboard.saveDashboard('area'); await PageObjects.dashboard.clickFullScreenMode(); diff --git a/test/functional/apps/discover/group1/_discover.ts b/test/functional/apps/discover/group1/_discover.ts index 0210c7d8cc7f2..34679964e3c94 100644 --- a/test/functional/apps/discover/group1/_discover.ts +++ b/test/functional/apps/discover/group1/_discover.ts @@ -170,8 +170,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('should show matches when time range is expanded', async () => { - await PageObjects.discover.expandTimeRangeAsSuggestedInNoResultsMessage(); - await PageObjects.discover.waitUntilSearchingHasFinished(); + await retry.waitFor('view all matches to load', async () => { + await PageObjects.discover.expandTimeRangeAsSuggestedInNoResultsMessage(); + await PageObjects.discover.waitUntilSearchingHasFinished(); + return !(await testSubjects.exists('discoverNoResultsViewAllMatches')); + }); await retry.try(async function () { expect(await PageObjects.discover.hasNoResults()).to.be(false); expect(await PageObjects.discover.getHitCountInt()).to.be.above(0); diff --git a/test/functional/apps/discover/group1/_shared_links.ts b/test/functional/apps/discover/group1/_shared_links.ts index c6269cabfda98..a8d229b264f47 100644 --- a/test/functional/apps/discover/group1/_shared_links.ts +++ b/test/functional/apps/discover/group1/_shared_links.ts @@ -163,7 +163,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(resolvedTime.start).to.equal(actualTime.start); expect(resolvedTime.end).to.equal(actualTime.end); }); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }); it("sharing hashed url shouldn't crash the app", async () => { @@ -173,12 +173,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await browser.get(currentUrl, false); const resolvedUrl = await browser.getCurrentUrl(); expect(resolvedUrl).to.match(/discover/); - const { title } = await toasts.getErrorToast(1, true); + const { title } = await toasts.getErrorByIndex(1, true); expect(title).to.contain( 'Unable to completely restore the URL, be sure to use the share functionality.' ); }); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }); }); }); diff --git a/test/functional/apps/discover/group2/_data_grid_copy_to_clipboard.ts b/test/functional/apps/discover/group2/_data_grid_copy_to_clipboard.ts index 27d847f9c49ce..0a6f72d43ad72 100644 --- a/test/functional/apps/discover/group2/_data_grid_copy_to_clipboard.ts +++ b/test/functional/apps/discover/group2/_data_grid_copy_to_clipboard.ts @@ -57,8 +57,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { ).to.be(true); } - expect(await toasts.getToastCount()).to.be(1); - await toasts.dismissAllToasts(); + expect(await toasts.getCount()).to.be(1); + await toasts.dismissAll(); await dataGrid.clickCopyColumnValues('_source'); @@ -68,8 +68,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(copiedSourceData.endsWith('}')).to.be(true); } - expect(await toasts.getToastCount()).to.be(1); - await toasts.dismissAllToasts(); + expect(await toasts.getCount()).to.be(1); + await toasts.dismissAll(); }); it('should be able to copy a column name to clipboard', async () => { @@ -82,8 +82,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(copiedTimestampName).to.be('@timestamp'); } - expect(await toasts.getToastCount()).to.be(1); - await toasts.dismissAllToasts(); + expect(await toasts.getCount()).to.be(1); + await toasts.dismissAll(); await dataGrid.clickCopyColumnName('_source'); @@ -92,8 +92,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(copiedSourceName).to.be('Document'); } - expect(await toasts.getToastCount()).to.be(1); - await toasts.dismissAllToasts(); + expect(await toasts.getCount()).to.be(1); + await toasts.dismissAll(); }); }); } diff --git a/test/functional/apps/discover/group4/_adhoc_data_views.ts b/test/functional/apps/discover/group4/_adhoc_data_views.ts index 2fe0167763687..f84b69d2184a1 100644 --- a/test/functional/apps/discover/group4/_adhoc_data_views.ts +++ b/test/functional/apps/discover/group4/_adhoc_data_views.ts @@ -255,12 +255,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const second = await PageObjects.discover.getCurrentDataViewId(); expect(first).not.equal(second); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await browser.goBack(); await PageObjects.header.waitUntilLoadingHasFinished(); - const [firstToast, secondToast] = await toasts.getAllToastElements(); + const [firstToast, secondToast] = await toasts.getAll(); expect([await firstToast.getVisibleText(), await secondToast.getVisibleText()].sort()).to.eql( [ diff --git a/test/functional/apps/management/data_views/_field_formatter.ts b/test/functional/apps/management/data_views/_field_formatter.ts index cddbe8ccf5ce4..9754bacee599f 100644 --- a/test/functional/apps/management/data_views/_field_formatter.ts +++ b/test/functional/apps/management/data_views/_field_formatter.ts @@ -521,7 +521,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.settings.controlChangeCancel(); } - await toasts.dismissAllToasts(); // dismiss "saved" toast, otherwise it could overlap save button for a next test + await toasts.dismissAll(); // dismiss "saved" toast, otherwise it could overlap save button for a next test }); specs.forEach((spec, index) => { diff --git a/test/functional/apps/management/data_views/_handle_not_found.ts b/test/functional/apps/management/data_views/_handle_not_found.ts index 1cc13ad4f85d0..74c4e86d17d00 100644 --- a/test/functional/apps/management/data_views/_handle_not_found.ts +++ b/test/functional/apps/management/data_views/_handle_not_found.ts @@ -29,7 +29,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); await testSubjects.existOrFail('noDataViewsPrompt'); - const { message } = await toasts.getErrorToast(); + const { message } = await toasts.getErrorByIndex(); expect(message).to.contain( 'The data view with id:111111111111 could not be loaded. Try creating a new one.' ); diff --git a/test/functional/apps/management/data_views/_handle_version_conflict.ts b/test/functional/apps/management/data_views/_handle_version_conflict.ts index bcbd81c48209f..140d4741943ce 100644 --- a/test/functional/apps/management/data_views/_handle_version_conflict.ts +++ b/test/functional/apps/management/data_views/_handle_version_conflict.ts @@ -28,6 +28,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const scriptedFiledName = 'versionConflictScript'; const PageObjects = getPageObjects(['common', 'home', 'settings', 'discover', 'header']); const log = getService('log'); + const toasts = getService('toasts'); describe('FOO index version conflict', function describeIndexTests() { before(async function () { @@ -62,7 +63,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.settings.setFieldFormat('url'); await PageObjects.settings.clickSaveScriptedField(); await retry.try(async function () { - const message = await PageObjects.common.closeToast(); + const message = await toasts.getTitleAndDismiss(); expect(message).to.contain('Unable'); }); }); @@ -95,7 +96,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(response.body.result).to.be('updated'); await PageObjects.settings.controlChangeSave(); await retry.try(async function () { - const message = await PageObjects.common.closeToast(); + const message = await toasts.getTitleAndDismiss(); expect(message).to.contain('Unable'); }); }); diff --git a/test/functional/page_objects/common_page.ts b/test/functional/page_objects/common_page.ts index 98ac4d0abfe04..eaa538537deed 100644 --- a/test/functional/page_objects/common_page.ts +++ b/test/functional/page_objects/common_page.ts @@ -480,39 +480,6 @@ export class CommonPageObject extends FtrService { }); } - async closeToast() { - const toast = await this.find.byCssSelector('.euiToast', 6 * this.defaultFindTimeout); - await toast.moveMouseTo(); - const title = await (await this.testSubjects.find('euiToastHeader__title')).getVisibleText(); - - await this.testSubjects.click('toastCloseButton'); - return title; - } - - async closeToastIfExists() { - const toastShown = await this.find.existsByCssSelector('.euiToast'); - if (toastShown) { - try { - await this.testSubjects.click('toastCloseButton'); - } catch (err) { - // ignore errors, toast clear themselves after timeout - } - } - } - - async clearAllToasts() { - const toasts = await this.find.allByCssSelector('.euiToast'); - for (const toastElement of toasts) { - try { - await toastElement.moveMouseTo(); - const closeBtn = await toastElement.findByTestSubject('toastCloseButton'); - await closeBtn.click(); - } catch (err) { - // ignore errors, toast clear themselves after timeout - } - } - } - async getJsonBodyText() { if (await this.find.existsByCssSelector('a[id=rawdata-tab]', this.defaultFindTimeout)) { // Firefox has 3 tabs and requires navigation to see Raw output diff --git a/test/functional/page_objects/dashboard_page.ts b/test/functional/page_objects/dashboard_page.ts index d17c12d8269d5..f5acc43f88273 100644 --- a/test/functional/page_objects/dashboard_page.ts +++ b/test/functional/page_objects/dashboard_page.ts @@ -45,6 +45,7 @@ export class DashboardPageObject extends FtrService { private readonly visualize = this.ctx.getPageObject('visualize'); private readonly discover = this.ctx.getPageObject('discover'); private readonly appsMenu = this.ctx.getService('appsMenu'); + private readonly toasts = this.ctx.getService('toasts'); private readonly logstashIndex = this.config.get('esTestCluster.ccs') ? 'ftr-remote:logstash-*' @@ -489,7 +490,7 @@ export class DashboardPageObject extends FtrService { // Confirm that the Dashboard has actually been saved await this.testSubjects.existOrFail('saveDashboardSuccess'); }); - const message = await this.common.closeToast(); + const message = await this.toasts.getTitleAndDismiss(); await this.header.waitUntilLoadingHasFinished(); await this.common.waitForSaveModalToClose(); diff --git a/test/functional/page_objects/home_page.ts b/test/functional/page_objects/home_page.ts index 61eb1f40c49e7..1901f12073438 100644 --- a/test/functional/page_objects/home_page.ts +++ b/test/functional/page_objects/home_page.ts @@ -14,6 +14,7 @@ export class HomePageObject extends FtrService { private readonly find = this.ctx.getService('find'); private readonly common = this.ctx.getPageObject('common'); public readonly log = this.ctx.getService('log'); + private readonly toasts = this.ctx.getService('toasts'); async clickSynopsis(title: string) { await this.testSubjects.click(`homeSynopsisLink${title}`); @@ -165,7 +166,7 @@ export class HomePageObject extends FtrService { async launchSampleDataSet(id: string) { await this.addSampleDataSet(id); - await this.common.closeToastIfExists(); + await this.toasts.dismissIfExists(); await this.retry.try(async () => { await this.testSubjects.click(`launchSampleDataSet${id}`); await this.find.byCssSelector( diff --git a/test/functional/page_objects/unified_field_list.ts b/test/functional/page_objects/unified_field_list.ts index 5e2d1039d7697..378b20cc02e24 100644 --- a/test/functional/page_objects/unified_field_list.ts +++ b/test/functional/page_objects/unified_field_list.ts @@ -88,6 +88,22 @@ export class UnifiedFieldListPageObject extends FtrService { ); } + public async openSidebarSection(sectionName: SidebarSectionName) { + const openedSectionSelector = `${this.getSidebarSectionSelector( + sectionName, + true + )}.euiAccordion-isOpen`; + + if (await this.find.existsByCssSelector(openedSectionSelector)) { + return; + } + + await this.retry.waitFor(`${sectionName} fields section to open`, async () => { + await this.toggleSidebarSection(sectionName); + return await this.find.existsByCssSelector(openedSectionSelector); + }); + } + public async waitUntilFieldPopoverIsOpen() { await this.retry.waitFor('popover is open', async () => { return Boolean(await this.find.byCssSelector('[data-popover-open="true"]')); diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts index e39c9ac3a679d..ceae95f637493 100644 --- a/test/functional/page_objects/visualize_page.ts +++ b/test/functional/page_objects/visualize_page.ts @@ -42,6 +42,7 @@ export class VisualizePageObject extends FtrService { private readonly header = this.ctx.getPageObject('header'); private readonly visEditor = this.ctx.getPageObject('visEditor'); private readonly visChart = this.ctx.getPageObject('visChart'); + private readonly toasts = this.ctx.getService('toasts'); index = { LOGSTASH_TIME_BASED: 'logstash-*', @@ -398,7 +399,7 @@ export class VisualizePageObject extends FtrService { // Confirm that the Visualization has actually been saved await this.testSubjects.existOrFail('saveVisualizationSuccess'); - const message = await this.common.closeToast(); + const message = await this.toasts.getTitleAndDismiss(); await this.header.waitUntilLoadingHasFinished(); await this.common.waitForSaveModalToClose(); diff --git a/test/functional/services/dashboard/add_panel.ts b/test/functional/services/dashboard/add_panel.ts index 5b16c6af9ca20..b5d835101b7a4 100644 --- a/test/functional/services/dashboard/add_panel.ts +++ b/test/functional/services/dashboard/add_panel.ts @@ -16,6 +16,7 @@ export class DashboardAddPanelService extends FtrService { private readonly header = this.ctx.getPageObject('header'); private readonly savedObjectsFinder = this.ctx.getService('savedObjectsFinder'); private readonly browser = this.ctx.getService('browser'); + private readonly toasts = this.ctx.getService('toasts'); async clickOpenAddPanel() { this.log.debug('DashboardAddPanel.clickOpenAddPanel'); @@ -95,7 +96,7 @@ export class DashboardAddPanelService extends FtrService { continue; } await button.click(); - await this.common.closeToastIfExists(); + embeddableList.push(name); } }); @@ -105,7 +106,7 @@ export class DashboardAddPanelService extends FtrService { async clickPagerNextButton() { // Clear all toasts that could hide pagination controls - await this.common.clearAllToasts(); + await this.toasts.dismissAll(); const addPanel = await this.testSubjects.find('dashboardAddPanel'); @@ -252,7 +253,7 @@ export class DashboardAddPanelService extends FtrService { } // close "Added successfully" toast - await this.common.clearAllToasts(); + await this.toasts.dismissAll(); return embeddableName; } diff --git a/test/functional/services/dashboard/dashboard_settings.ts b/test/functional/services/dashboard/dashboard_settings.ts index 0796444ea7189..5e99e3af360e0 100644 --- a/test/functional/services/dashboard/dashboard_settings.ts +++ b/test/functional/services/dashboard/dashboard_settings.ts @@ -109,7 +109,7 @@ export function DashboardSettingsProvider({ getService }: FtrProviderContext) { public async clickApplyButton(shouldClose: boolean = true) { log.debug('clickApplyButton'); await retry.try(async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await testSubjects.click('applyCustomizeDashboardButton'); if (shouldClose) await this.expectDashboardSettingsFlyoutClosed(); }); @@ -118,7 +118,7 @@ export function DashboardSettingsProvider({ getService }: FtrProviderContext) { public async clickCancelButton() { log.debug('clickCancelButton'); await retry.try(async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await testSubjects.click('cancelCustomizeDashboardButton'); await this.expectDashboardSettingsFlyoutClosed(); }); @@ -127,7 +127,7 @@ export function DashboardSettingsProvider({ getService }: FtrProviderContext) { public async clickCloseFlyoutButton() { log.debug(); await retry.try(async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await (await this.findFlyoutTestSubject('euiFlyoutCloseButton')).click(); await this.expectDashboardSettingsFlyoutClosed(); }); diff --git a/test/functional/services/dashboard/panel_settings.ts b/test/functional/services/dashboard/panel_settings.ts index 11b817b176b6e..7927d513e6e71 100644 --- a/test/functional/services/dashboard/panel_settings.ts +++ b/test/functional/services/dashboard/panel_settings.ts @@ -151,7 +151,7 @@ export function DashboardCustomizePanelProvider({ getService, getPageObject }: F public async clickSaveButton() { log.debug('clickSaveButton'); await retry.try(async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await testSubjects.click('saveCustomizePanelButton'); await testSubjects.waitForDeleted('saveCustomizePanelButton'); }); diff --git a/test/functional/services/index.ts b/test/functional/services/index.ts index e8b8fafc8852d..1966755f157ed 100644 --- a/test/functional/services/index.ts +++ b/test/functional/services/index.ts @@ -38,7 +38,6 @@ import { FieldEditorService } from './field_editor'; import { ManagementMenuService } from './management'; import { QueryBarService } from './query_bar'; import { RenderableService } from './renderable'; -import { ToastsService } from './toasts'; import { DataGridService } from './data_grid'; import { PieChartService, @@ -86,7 +85,6 @@ export const services = { vegaDebugInspector: VegaDebugInspectorViewService, appsMenu: AppsMenuService, globalNav: GlobalNavService, - toasts: ToastsService, savedQueryManagementComponent: SavedQueryManagementComponentService, elasticChart: ElasticChartService, supertest: KibanaSupertestProvider, diff --git a/test/functional/services/toasts.ts b/test/functional/services/toasts.ts deleted file mode 100644 index a4d3b2dd3e457..0000000000000 --- a/test/functional/services/toasts.ts +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import expect from '@kbn/expect'; -import { FtrService } from '../ftr_provider_context'; - -export class ToastsService extends FtrService { - private readonly testSubjects = this.ctx.getService('testSubjects'); - private readonly retry = this.ctx.getService('retry'); - - /** - * Returns the title and message of a specific error toast. - * This method is specific to toasts created via `.addError` since they contain - * an additional button, that should not be part of the message. - * - * @param index The index of the toast (1-based, NOT 0-based!) of the toast. Use first by default. - * @param titleOnly If this is true, only the title of the error message is returned. There are error messages that only contain a title, no message. - * @returns The title and message of the specified error toast.https://github.com/elastic/kibana/issues/17087 - */ - public async getErrorToast(index: number = 1, titleOnly: boolean = false) { - const toast = await this.getToastElement(index); - const titleElement = await this.testSubjects.findDescendant('euiToastHeader', toast); - const title: string = await titleElement.getVisibleText(); - if (titleOnly) { - return { title }; - } - const messageElement = await this.testSubjects.findDescendant('errorToastMessage', toast); - const message: string = await messageElement.getVisibleText(); - return { title, message }; - } - - /** - * Dismiss a specific toast from the toast list. Since toasts usually should time out themselves, - * you only need to call this for permanent toasts (e.g. error toasts). - * - * @param index The 1-based index of the toast to dismiss. Use first by default. - */ - public async dismissToast(index: number = 1) { - const toast = await this.getToastElement(index); - await toast.moveMouseTo(); - const dismissButton = await this.testSubjects.findDescendant('toastCloseButton', toast); - await dismissButton.click(); - } - - public async dismissAllToasts() { - const list = await this.getGlobalToastList(); - const toasts = await list.findAllByCssSelector(`.euiToast`); - - if (toasts.length === 0) return; - - for (const toast of toasts) { - await toast.moveMouseTo(); - - if (await this.testSubjects.descendantExists('toastCloseButton', toast)) { - try { - const dismissButton = await this.testSubjects.findDescendant('toastCloseButton', toast); - await dismissButton.click(); - } catch (err) { - // ignore errors - // toasts are finnicky because they can dismiss themselves right before you close them - } - } - } - } - - public async dismissAllToastsWithChecks() { - await this.retry.tryForTime(30 * 1000, async () => { - await this.dismissAllToasts(); - await this.assertToastCount(0); - }); - } - - public async assertToastCount(expectedCount: number) { - await this.retry.tryForTime(5 * 1000, async () => { - const toastCount = await this.getToastCount({ timeout: 1000 }); - expect(toastCount).to.eql( - expectedCount, - `Toast count should be ${expectedCount} (got ${toastCount})` - ); - }); - } - - public async getToastElement(index: number) { - const list = await this.getGlobalToastList(); - return await list.findByCssSelector(`.euiToast:nth-child(${index})`); - } - - public async getToastContent(index: number) { - const elem = await this.getToastElement(index); - return await elem.getVisibleText(); - } - - public async getAllToastElements() { - const list = await this.getGlobalToastList(); - return await list.findAllByCssSelector(`.euiToast`); - } - - private async getGlobalToastList(options?: { timeout?: number }) { - return await this.testSubjects.find('globalToastList', options?.timeout); - } - - public async getToastCount(options?: { timeout?: number }) { - const list = await this.getGlobalToastList(options); - const toasts = await list.findAllByCssSelector(`.euiToast`, options?.timeout); - return toasts.length; - } -} diff --git a/test/plugin_functional/test_suites/data_plugin/session.ts b/test/plugin_functional/test_suites/data_plugin/session.ts index 793e9f1ca2faa..824d8b36806ed 100644 --- a/test/plugin_functional/test_suites/data_plugin/session.ts +++ b/test/plugin_functional/test_suites/data_plugin/session.ts @@ -27,7 +27,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide const getSessionIds = async () => { const sessionsBtn = await testSubjects.find('showSessionsButton'); await sessionsBtn.click(); - const toast = await toasts.getToastElement(1); + const toast = await toasts.getElementByIndex(1); const sessionIds = await toast.getVisibleText(); return sessionIds.split(','); }; @@ -42,7 +42,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide afterEach(async () => { await testSubjects.click('clearSessionsButton'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }); it('Starts on index pattern select', async () => { @@ -92,7 +92,7 @@ export default function ({ getService, getPageObjects }: PluginFunctionalProvide afterEach(async () => { await testSubjects.click('clearSessionsButton'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }); after(async () => { diff --git a/versions.json b/versions.json index 8a5f18231e404..22265a5c86607 100644 --- a/versions.json +++ b/versions.json @@ -2,11 +2,17 @@ "notice": "This file is not maintained outside of the main branch and should only be used for tooling.", "versions": [ { - "version": "8.13.0", + "version": "8.14.0", "branch": "main", "currentMajor": true, "currentMinor": true }, + { + "version": "8.13.0", + "branch": "8.13", + "currentMajor": true, + "previousMinor": true + }, { "version": "8.12.2", "branch": "8.12", diff --git a/x-pack/package.json b/x-pack/package.json index 47de19fb67a3c..1717e6f11d1dd 100644 --- a/x-pack/package.json +++ b/x-pack/package.json @@ -1,6 +1,6 @@ { "name": "x-pack", - "version": "8.13.0", + "version": "8.14.0", "author": "Elastic", "private": true, "license": "Elastic-License", diff --git a/x-pack/performance/journeys/apm_service_inventory.ts b/x-pack/performance/journeys/apm_service_inventory.ts index cbef53858eea6..f6f2f3731a65b 100644 --- a/x-pack/performance/journeys/apm_service_inventory.ts +++ b/x-pack/performance/journeys/apm_service_inventory.ts @@ -35,6 +35,8 @@ export const journey = new Journey({ ); }, ftrConfigPath: 'x-pack/performance/configs/apm_config.ts', + // FLAKY: https://github.com/elastic/kibana/issues/162813 + skipped: true, }) .step('Navigate to Service Inventory Page', async ({ page, kbnUrl }) => { await page.goto(kbnUrl.get(`app/apm/services`)); diff --git a/x-pack/plugins/actions/jest.integration.config.js b/x-pack/plugins/actions/jest.integration.config.js index 41bd46b12005e..daea840925756 100644 --- a/x-pack/plugins/actions/jest.integration.config.js +++ b/x-pack/plugins/actions/jest.integration.config.js @@ -6,7 +6,7 @@ */ module.exports = { - preset: '@kbn/test/jest_integration_node', + preset: '@kbn/test/jest_integration', rootDir: '../../..', roots: ['/x-pack/plugins/actions'], }; diff --git a/x-pack/plugins/actions/server/integration_tests/__snapshots__/connector_types.test.ts.snap b/x-pack/plugins/actions/server/integration_tests/__snapshots__/connector_types.test.ts.snap new file mode 100644 index 0000000000000..11624752650e4 --- /dev/null +++ b/x-pack/plugins/actions/server/integration_tests/__snapshots__/connector_types.test.ts.snap @@ -0,0 +1,11170 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Connector type config checks detect connector type changes for: .bedrock 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "defaultModel": Object { + "flags": Object { + "default": "anthropic.claude-v2:1", + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .bedrock 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "accessKey": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "secret": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .bedrock 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + "unknown": true, + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .cases-webhook 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "createCommentJson": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "createCommentMethod": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": "put", + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "post", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "put", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "patch", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "createCommentUrl": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "createIncidentJson": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "createIncidentMethod": Object { + "flags": Object { + "default": "post", + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "post", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "put", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "createIncidentResponseKey": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "createIncidentUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "getIncidentResponseExternalTitleKey": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "getIncidentUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "hasAuth": Object { + "flags": Object { + "default": true, + "error": [Function], + "presence": "optional", + }, + "type": "boolean", + }, + "headers": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "value": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "name": "entries", + }, + ], + "type": "record", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "updateIncidentJson": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "updateIncidentMethod": Object { + "flags": Object { + "default": "put", + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "post", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "patch", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "put", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "updateIncidentUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "viewIncidentUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .cases-webhook 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "password": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "user": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .cases-webhook 3`] = ` +Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "pushToService", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comments": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comment": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "commentId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "incident": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "description": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "externalId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "id": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "severity": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "status": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "tags": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "title": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + ], + "type": "alternatives", +} +`; + +exports[`Connector type config checks detect connector type changes for: .d3security 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "url": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .d3security 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "token": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .d3security 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + "unknown": true, + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .email 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "clientId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "from": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "hasAuth": Object { + "flags": Object { + "default": true, + "error": [Function], + "presence": "optional", + }, + "type": "boolean", + }, + "host": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "oauthTokenUrl": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "port": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "limit": 1, + }, + "name": "min", + }, + Object { + "args": Object { + "limit": 65535, + }, + "name": "max", + }, + ], + "type": "number", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "secure": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "type": "boolean", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "service": Object { + "flags": Object { + "default": "other", + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "tenantId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .email 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "clientSecret": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "password": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "user": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .email 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "bcc": Object { + "flags": Object { + "default": Array [], + "error": [Function], + "presence": "optional", + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + "cc": Object { + "flags": Object { + "default": Array [], + "error": [Function], + "presence": "optional", + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + "kibanaFooterLink": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "path": Object { + "flags": Object { + "default": "/", + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "text": Object { + "flags": Object { + "default": "Go to Elastic", + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + "message": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "messageHTML": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "subject": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "to": Object { + "flags": Object { + "default": Array [], + "error": [Function], + "presence": "optional", + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .gen-ai 1`] = ` +Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiProvider": Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "Azure OpenAI", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "apiUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiProvider": Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "OpenAI", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "apiUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "defaultModel": Object { + "flags": Object { + "default": "gpt-4", + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + ], + "type": "alternatives", +} +`; + +exports[`Connector type config checks detect connector type changes for: .gen-ai 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiKey": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .gen-ai 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + "unknown": true, + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .index 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "executionTimeField": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "index": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "refresh": Object { + "flags": Object { + "default": false, + "error": [Function], + "presence": "optional", + }, + "type": "boolean", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .index 2`] = ` +Object { + "flags": Object { + "default": Object {}, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .index 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "documents": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "value": Object { + "flags": Object { + "error": [Function], + }, + "type": "any", + }, + }, + "name": "entries", + }, + ], + "type": "record", + }, + ], + "type": "array", + }, + "indexOverride": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .jira 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "projectKey": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .jira 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiToken": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "email": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .jira 3`] = ` +Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getFields", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getIncident", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "externalId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "handshake", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "pushToService", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comments": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comment": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "commentId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "incident": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "description": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "externalId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "issueType": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "labels": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "parent": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "priority": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "summary": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "issueTypes", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "fieldsByIssueType", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "id": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "issues", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "title": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "issue", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "id": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + ], + "type": "alternatives", +} +`; + +exports[`Connector type config checks detect connector type changes for: .opsgenie 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .opsgenie 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiKey": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .opsgenie 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + "unknown": true, + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .pagerduty 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiUrl": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .pagerduty 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "routingKey": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .pagerduty 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "class": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "component": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "customDetails": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "value": Object { + "flags": Object { + "error": [Function], + }, + "type": "any", + }, + }, + "name": "entries", + }, + ], + "type": "record", + }, + "dedupKey": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "eventAction": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "trigger", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "resolve", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "acknowledge", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "group": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "links": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "items": Array [ + Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "href": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "text": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + "severity": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "critical", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "error", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "warning", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "info", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "source": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "summary": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "timestamp": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .resilient 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "orgId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .resilient 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiKeyId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "apiKeySecret": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .resilient 3`] = ` +Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getFields", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getIncident", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "externalId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "handshake", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "pushToService", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comments": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comment": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "commentId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "incident": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "description": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "externalId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "incidentTypes": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "type": "number", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "name": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "severityCode": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "type": "number", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "incidentTypes", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "severity", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + ], + "type": "alternatives", +} +`; + +exports[`Connector type config checks detect connector type changes for: .sentinelone 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "url": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .sentinelone 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "token": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .sentinelone 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + "unknown": true, + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .server-log 1`] = ` +Object { + "flags": Object { + "default": Object {}, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .server-log 2`] = ` +Object { + "flags": Object { + "default": Object {}, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .server-log 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "level": Object { + "flags": Object { + "default": "info", + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "trace", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "debug", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "info", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "warn", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "error", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "fatal", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "message": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .servicenow 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "clientId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "isOAuth": Object { + "flags": Object { + "default": false, + "error": [Function], + "presence": "optional", + }, + "type": "boolean", + }, + "jwtKeyId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "userIdentifierValue": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "usesTableApi": Object { + "flags": Object { + "default": true, + "error": [Function], + "presence": "optional", + }, + "type": "boolean", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .servicenow 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "clientSecret": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "password": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "privateKey": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "privateKeyPassword": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "username": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .servicenow 3`] = ` +Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getFields", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getIncident", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "externalId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "handshake", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "pushToService", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comments": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comment": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "commentId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "incident": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "category": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "correlation_display": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "correlation_id": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": "{{rule.id}}:{{alert.id}}", + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "description": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "externalId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "impact": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "severity": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "short_description": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "subcategory": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "urgency": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getChoices", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "fields": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "closeIncident", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "incident": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "correlation_id": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": "{{rule.id}}:{{alert.id}}", + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "externalId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + ], + "type": "alternatives", +} +`; + +exports[`Connector type config checks detect connector type changes for: .servicenow-itom 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "clientId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "isOAuth": Object { + "flags": Object { + "default": false, + "error": [Function], + "presence": "optional", + }, + "type": "boolean", + }, + "jwtKeyId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "userIdentifierValue": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .servicenow-itom 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "clientSecret": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "password": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "privateKey": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "privateKeyPassword": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "username": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .servicenow-itom 3`] = ` +Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "addEvent", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "additional_info": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "description": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "event_class": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "message_key": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": "{{rule.id}}:{{alert.id}}", + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "metric_name": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "node": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "resource": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "severity": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "source": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "time_of_event": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "type": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getChoices", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "fields": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + ], + "type": "alternatives", +} +`; + +exports[`Connector type config checks detect connector type changes for: .servicenow-sir 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "clientId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "isOAuth": Object { + "flags": Object { + "default": false, + "error": [Function], + "presence": "optional", + }, + "type": "boolean", + }, + "jwtKeyId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "userIdentifierValue": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "usesTableApi": Object { + "flags": Object { + "default": true, + "error": [Function], + "presence": "optional", + }, + "type": "boolean", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .servicenow-sir 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "clientSecret": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "password": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "privateKey": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "privateKeyPassword": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "username": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .servicenow-sir 3`] = ` +Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getFields", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getIncident", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "externalId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "handshake", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "pushToService", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comments": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comment": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "commentId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "incident": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "category": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "correlation_display": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "correlation_id": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": "{{rule.id}}:{{alert.id}}", + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "description": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "dest_ip": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + ], + "type": "alternatives", + }, + "externalId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "malware_hash": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + ], + "type": "alternatives", + }, + "malware_url": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + ], + "type": "alternatives", + }, + "priority": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "short_description": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "source_ip": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + ], + "type": "alternatives", + }, + "subcategory": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "getChoices", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "fields": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "type": "array", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + ], + "type": "alternatives", +} +`; + +exports[`Connector type config checks detect connector type changes for: .slack 1`] = ` +Object { + "flags": Object { + "default": Object {}, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .slack 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "webhookUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .slack 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "message": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .slack_api 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "allowedChannels": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "items": Array [ + Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "id": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "name": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + ], + "rules": Array [ + Object { + "args": Object { + "limit": 25, + }, + "name": "max", + }, + ], + "type": "array", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .slack_api 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "token": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .slack_api 3`] = ` +Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "validChannelId", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "channelId": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "postMessage", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "channelIds": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "rules": Array [ + Object { + "args": Object { + "limit": 1, + }, + "name": "max", + }, + ], + "type": "array", + }, + "channels": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "rules": Array [ + Object { + "args": Object { + "limit": 1, + }, + "name": "max", + }, + ], + "type": "array", + }, + "text": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "postBlockkit", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "channelIds": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "rules": Array [ + Object { + "args": Object { + "limit": 1, + }, + "name": "max", + }, + ], + "type": "array", + }, + "channels": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "items": Array [ + Object { + "flags": Object { + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + ], + "rules": Array [ + Object { + "args": Object { + "limit": 1, + }, + "name": "max", + }, + ], + "type": "array", + }, + "text": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + ], + "type": "alternatives", +} +`; + +exports[`Connector type config checks detect connector type changes for: .swimlane 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "appId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "connectorType": Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "all", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "alerts", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "cases", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "mappings": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "alertIdConfig": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "fieldType": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "id": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "name": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "caseIdConfig": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "fieldType": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "id": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "name": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "caseNameConfig": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "fieldType": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "id": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "name": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "commentsConfig": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "fieldType": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "id": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "name": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "descriptionConfig": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "fieldType": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "id": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "name": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "ruleNameConfig": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "fieldType": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "id": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "name": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "severityConfig": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "fieldType": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "id": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "name": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .swimlane 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "apiToken": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .swimlane 3`] = ` +Object { + "flags": Object { + "error": [Function], + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "allow": Array [ + "pushToService", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comments": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "items": Array [ + Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "comment": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "commentId": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + ], + "type": "array", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "incident": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "alertId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "caseId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "caseName": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "description": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "externalId": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "ruleName": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "severity": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + ], + "type": "alternatives", +} +`; + +exports[`Connector type config checks detect connector type changes for: .teams 1`] = ` +Object { + "flags": Object { + "default": Object {}, + "error": [Function], + "presence": "optional", + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .teams 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "webhookUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .teams 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "message": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .tines 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "url": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .tines 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "email": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "token": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .tines 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "subAction": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "subActionParams": Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + "unknown": true, + }, + "keys": Object {}, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .torq 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "webhookIntegrationUrl": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .torq 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "token": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .torq 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "body": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .webhook 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "authType": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "webhook-authentication-basic", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "webhook-authentication-ssl", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "ca": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "certType": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "ssl-crt-key", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "ssl-pfx", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "hasAuth": Object { + "flags": Object { + "default": true, + "error": [Function], + "presence": "optional", + }, + "type": "boolean", + }, + "headers": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "key": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "value": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "name": "entries", + }, + ], + "type": "record", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "method": Object { + "flags": Object { + "default": "post", + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "post", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "put", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "url": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "verificationMode": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "allow": Array [ + "none", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "certificate", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + Object { + "schema": Object { + "allow": Array [ + "full", + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .webhook 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "crt": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "key": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "password": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "pfx": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "user": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .webhook 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "body": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .xmatters 1`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "configUrl": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "usesBasic": Object { + "flags": Object { + "default": true, + "error": [Function], + "presence": "optional", + }, + "type": "boolean", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .xmatters 2`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "password": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "secretsUrl": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + "user": Object { + "flags": Object { + "default": null, + "error": [Function], + "presence": "optional", + }, + "matches": Array [ + Object { + "schema": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + Object { + "schema": Object { + "allow": Array [ + null, + ], + "flags": Object { + "error": [Function], + "only": true, + }, + "type": "any", + }, + }, + ], + "type": "alternatives", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; + +exports[`Connector type config checks detect connector type changes for: .xmatters 3`] = ` +Object { + "flags": Object { + "default": Object { + "special": "deep", + }, + "error": [Function], + "presence": "optional", + }, + "keys": Object { + "alertActionGroupName": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "date": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "ruleName": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "severity": Object { + "flags": Object { + "error": [Function], + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "signalId": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "spaceId": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + "tags": Object { + "flags": Object { + "default": [Function], + "error": [Function], + "presence": "optional", + }, + "rules": Array [ + Object { + "args": Object { + "method": [Function], + }, + "name": "custom", + }, + ], + "type": "string", + }, + }, + "preferences": Object { + "stripUnknown": Object { + "objects": false, + }, + }, + "type": "object", +} +`; diff --git a/x-pack/plugins/actions/server/integration_tests/connector_types.test.ts b/x-pack/plugins/actions/server/integration_tests/connector_types.test.ts new file mode 100644 index 0000000000000..6a2382ea3088f --- /dev/null +++ b/x-pack/plugins/actions/server/integration_tests/connector_types.test.ts @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { TestElasticsearchUtils, TestKibanaUtils } from '@kbn/core-test-helpers-kbn-server'; +import { ActionTypeRegistry } from '../action_type_registry'; +import { setupTestServers } from './lib'; +import { connectorTypes } from './mocks/connector_types'; + +jest.mock('../action_type_registry', () => { + const actual = jest.requireActual('../action_type_registry'); + return { + ...actual, + ActionTypeRegistry: jest.fn().mockImplementation((opts) => { + return new actual.ActionTypeRegistry(opts); + }), + }; +}); + +describe('Connector type config checks', () => { + let esServer: TestElasticsearchUtils; + let kibanaServer: TestKibanaUtils; + let actionTypeRegistry: ActionTypeRegistry; + + beforeAll(async () => { + const setupResult = await setupTestServers(); + esServer = setupResult.esServer; + kibanaServer = setupResult.kibanaServer; + + const mockedActionTypeRegistry = jest.requireMock('../action_type_registry'); + expect(mockedActionTypeRegistry.ActionTypeRegistry).toHaveBeenCalledTimes(1); + actionTypeRegistry = mockedActionTypeRegistry.ActionTypeRegistry.mock.results[0].value; + }); + + afterAll(async () => { + if (kibanaServer) { + await kibanaServer.stop(); + } + if (esServer) { + await esServer.stop(); + } + }); + + test('ensure connector types list up to date', () => { + expect(connectorTypes).toEqual(actionTypeRegistry.getAllTypes()); + }); + + for (const connectorTypeId of connectorTypes) { + test(`detect connector type changes for: ${connectorTypeId}`, async () => { + const connectorType = actionTypeRegistry.get(connectorTypeId); + + expect(connectorType?.validate.config.schema.getSchema!().describe()).toMatchSnapshot(); + expect(connectorType.validate.secrets.schema.getSchema!().describe()).toMatchSnapshot(); + expect(connectorType.validate.params.schema.getSchema!().describe()).toMatchSnapshot(); + }); + } +}); diff --git a/x-pack/plugins/actions/server/integration_tests/lib/index.ts b/x-pack/plugins/actions/server/integration_tests/lib/index.ts new file mode 100644 index 0000000000000..c9e6e4c7649bd --- /dev/null +++ b/x-pack/plugins/actions/server/integration_tests/lib/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 { setupTestServers } from './setup_test_servers'; diff --git a/x-pack/plugins/actions/server/integration_tests/lib/setup_test_servers.ts b/x-pack/plugins/actions/server/integration_tests/lib/setup_test_servers.ts new file mode 100644 index 0000000000000..4b722d5460213 --- /dev/null +++ b/x-pack/plugins/actions/server/integration_tests/lib/setup_test_servers.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { createTestServers, createRootWithCorePlugins } from '@kbn/core-test-helpers-kbn-server'; + +export async function setupTestServers(settings = {}) { + const { startES } = createTestServers({ + adjustTimeout: (t) => jest.setTimeout(t), + settings: { + es: { + license: 'trial', + }, + }, + }); + + const esServer = await startES(); + + const root = createRootWithCorePlugins(settings, { oss: false }); + + await root.preboot(); + const coreSetup = await root.setup(); + const coreStart = await root.start(); + + return { + esServer, + kibanaServer: { + root, + coreSetup, + coreStart, + stop: async () => await root.shutdown(), + }, + }; +} diff --git a/x-pack/plugins/actions/server/integration_tests/mocks/connector_types.ts b/x-pack/plugins/actions/server/integration_tests/mocks/connector_types.ts new file mode 100644 index 0000000000000..473f5b72ce59b --- /dev/null +++ b/x-pack/plugins/actions/server/integration_tests/mocks/connector_types.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. + */ + +export const connectorTypes: string[] = [ + '.email', + '.index', + '.pagerduty', + '.swimlane', + '.server-log', + '.slack', + '.slack_api', + '.webhook', + '.cases-webhook', + '.xmatters', + '.servicenow', + '.servicenow-sir', + '.servicenow-itom', + '.jira', + '.resilient', + '.teams', + '.torq', + '.opsgenie', + '.tines', + '.gen-ai', + '.bedrock', + '.d3security', + '.sentinelone', +]; diff --git a/x-pack/plugins/actions/server/types.ts b/x-pack/plugins/actions/server/types.ts index 343d9b3dde4f6..e2ef2675a59e9 100644 --- a/x-pack/plugins/actions/server/types.ts +++ b/x-pack/plugins/actions/server/types.ts @@ -16,6 +16,7 @@ import { SavedObjectReference, Logger, } from '@kbn/core/server'; +import { AnySchema } from 'joi'; import { ActionTypeRegistry } from './action_type_registry'; import { PluginSetupContract, PluginStartContract } from './plugin'; import { ActionsClient } from './actions_client'; @@ -101,11 +102,12 @@ export type ExecutorType< options: ActionTypeExecutorOptions ) => Promise>; -export interface ValidatorType { +export interface ValidatorType { schema: { - validate(value: unknown): Type; + validate(value: unknown): T; + getSchema?: () => AnySchema; }; - customValidator?: (value: Type, validatorServices: ValidatorServices) => void; + customValidator?: (value: T, validatorServices: ValidatorServices) => void; } export interface ValidatorServices { diff --git a/x-pack/plugins/actions/tsconfig.json b/x-pack/plugins/actions/tsconfig.json index 63c296d2d35e0..92a1074c95115 100644 --- a/x-pack/plugins/actions/tsconfig.json +++ b/x-pack/plugins/actions/tsconfig.json @@ -44,7 +44,8 @@ "@kbn/core-elasticsearch-server-mocks", "@kbn/core-logging-server-mocks", "@kbn/serverless", - "@kbn/actions-types" + "@kbn/actions-types", + "@kbn/core-test-helpers-kbn-server" ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/alerting/docs/openapi/bundled.json b/x-pack/plugins/alerting/docs/openapi/bundled.json index 6092bfc5bf60c..71807860d383a 100644 --- a/x-pack/plugins/alerting/docs/openapi/bundled.json +++ b/x-pack/plugins/alerting/docs/openapi/bundled.json @@ -2592,6 +2592,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -2642,6 +2645,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -2692,6 +2698,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -2740,6 +2749,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -2788,6 +2800,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -2836,6 +2851,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -2884,6 +2902,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -2932,6 +2953,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -2982,6 +3006,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -3030,6 +3057,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -3077,6 +3107,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -3127,6 +3160,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -3225,6 +3261,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -4322,6 +4361,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -4370,6 +4412,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -4420,6 +4465,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -4517,6 +4565,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -4567,6 +4618,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -4617,6 +4671,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "consumer": { "$ref": "#/components/schemas/consumer" }, @@ -4872,6 +4929,20 @@ } } }, + "alert_delay": { + "type": "object", + "description": "Indicates that an alert occurs only when the specified number of consecutive runs met the rule conditions.", + "required": [ + "active" + ], + "properties": { + "active": { + "type": "number", + "description": "The number of consecutive runs that must meet the rule conditions.", + "example": 3 + } + } + }, "consumer": { "type": "string", "description": "The name of the application or feature that owns the rule. For example: `alerts`, `apm`, `discover`, `infrastructure`, `logs`, `metrics`, `ml`, `monitoring`, `securitySolution`, `siem`, `stackAlerts`, or `uptime`.\n" @@ -6566,6 +6637,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "api_key_created_by_user": { "type": "boolean", "description": "Indicates whether the API key that is associated with the rule was created by the user.", @@ -6857,6 +6931,9 @@ "actions": { "$ref": "#/components/schemas/actions" }, + "alert_delay": { + "$ref": "#/components/schemas/alert_delay" + }, "name": { "type": "string", "description": "The name of the rule.", @@ -7254,6 +7331,9 @@ } } ], + "alert_delay": { + "active": 3 + }, "consumer": "alerts", "name": "my rule", "params": { @@ -7500,6 +7580,9 @@ } } ], + "alert_delay": { + "active": 3 + }, "api_key_created_by_user": false, "api_key_owner": "elastic", "consumer": "alerts", diff --git a/x-pack/plugins/alerting/docs/openapi/bundled.yaml b/x-pack/plugins/alerting/docs/openapi/bundled.yaml index f847686a2cced..e029e8550020f 100644 --- a/x-pack/plugins/alerting/docs/openapi/bundled.yaml +++ b/x-pack/plugins/alerting/docs/openapi/bundled.yaml @@ -1691,6 +1691,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -1728,6 +1730,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -1764,6 +1768,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -1798,6 +1804,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -1832,6 +1840,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -1866,6 +1876,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -1901,6 +1913,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -1936,6 +1950,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -1972,6 +1988,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -2007,6 +2025,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -2040,6 +2060,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -2077,6 +2099,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -2147,6 +2171,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -2943,6 +2969,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -2977,6 +3005,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -3014,6 +3044,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -3084,6 +3116,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -3121,6 +3155,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -3157,6 +3193,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' consumer: $ref: '#/components/schemas/consumer' enabled: @@ -3341,6 +3379,16 @@ components: description: A universally unique identifier (UUID) for the action. examples: - 1c7a1280-f28c-4e06-96b2-e4e5f05d1d61 + alert_delay: + type: object + description: Indicates that an alert occurs only when the specified number of consecutive runs met the rule conditions. + required: + - active + properties: + active: + type: number + description: The number of consecutive runs that must meet the rule conditions. + example: 3 consumer: type: string description: | @@ -4526,6 +4574,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' api_key_created_by_user: type: boolean description: Indicates whether the API key that is associated with the rule was created by the user. @@ -4729,6 +4779,8 @@ components: properties: actions: $ref: '#/components/schemas/actions' + alert_delay: + $ref: '#/components/schemas/alert_delay' name: type: string description: The name of the rule. @@ -5018,6 +5070,8 @@ components: - Value: {{context.value}} - Conditions Met: {{context.conditions}} over {{rule.params.timeWindowSize}}{{rule.params.timeWindowUnit}} - Timestamp: {{context.date}} + alert_delay: + active: 3 consumer: alerts name: my rule params: @@ -5223,6 +5277,8 @@ components: - Value: {{context.value}} - Conditions Met: {{context.conditions}} over {{rule.params.timeWindowSize}}{{rule.params.timeWindowUnit}} - Timestamp: {{context.date}} + alert_delay: + active: 3 api_key_created_by_user: false api_key_owner: elastic consumer: alerts diff --git a/x-pack/plugins/alerting/docs/openapi/components/examples/create_index_threshold_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/examples/create_index_threshold_rule_request.yaml index 801d298c5f922..53859628f57a1 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/examples/create_index_threshold_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/examples/create_index_threshold_rule_request.yaml @@ -9,6 +9,8 @@ value: params: level: info message: "Rule '{{rule.name}}' is active for group '{{context.group}}':\n\n- Value: {{context.value}}\n- Conditions Met: {{context.conditions}} over {{rule.params.timeWindowSize}}{{rule.params.timeWindowUnit}}\n- Timestamp: {{context.date}}" + alert_delay: + active: 3 consumer: alerts name: my rule params: diff --git a/x-pack/plugins/alerting/docs/openapi/components/examples/create_index_threshold_rule_response.yaml b/x-pack/plugins/alerting/docs/openapi/components/examples/create_index_threshold_rule_response.yaml index cf755e08d3bfd..da172f5df9ff7 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/examples/create_index_threshold_rule_response.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/examples/create_index_threshold_rule_response.yaml @@ -12,6 +12,8 @@ value: params: level: info message: "Rule {{rule.name}} is active for group {{context.group} :\n\n- Value: {{context.value}}\n- Conditions Met: {{context.conditions}} over {{rule.params.timeWindowSize}}{{rule.params.timeWindowUnit}}\n- Timestamp: {{context.date}}" + alert_delay: + active: 3 api_key_created_by_user: false api_key_owner: elastic consumer: alerts diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/alert_delay.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/alert_delay.yaml new file mode 100644 index 0000000000000..45fe6f6f0eb5b --- /dev/null +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/alert_delay.yaml @@ -0,0 +1,9 @@ +type: object +description: Indicates that an alert occurs only when the specified number of consecutive runs met the rule conditions. +required: + - active +properties: + active: + type: number + description: The number of consecutive runs that must meet the rule conditions. + example: 3 \ No newline at end of file diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_anomaly_detection_alert_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_anomaly_detection_alert_rule_request.yaml index d4bdb712f634d..27db1b6a72a53 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_anomaly_detection_alert_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_anomaly_detection_alert_rule_request.yaml @@ -11,6 +11,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_anomaly_detection_jobs_health_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_anomaly_detection_jobs_health_rule_request.yaml index d9fd3b3a63ddb..01a6737bb7715 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_anomaly_detection_jobs_health_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_anomaly_detection_jobs_health_rule_request.yaml @@ -11,6 +11,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_anomaly_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_anomaly_rule_request.yaml index 7b091dc1abfd2..60bb44cad45db 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_anomaly_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_anomaly_rule_request.yaml @@ -10,6 +10,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_error_count_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_error_count_rule_request.yaml index 9bbe46301ceeb..482aa0e289e82 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_error_count_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_error_count_rule_request.yaml @@ -10,6 +10,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_transaction_duration_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_transaction_duration_rule_request.yaml index eaff2c48ffbfc..f6757b188ee2c 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_transaction_duration_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_transaction_duration_rule_request.yaml @@ -10,6 +10,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_transaction_error_rate_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_transaction_error_rate_rule_request.yaml index 505e5b69f57fd..239ded7c3cd85 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_transaction_error_rate_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_apm_transaction_error_rate_rule_request.yaml @@ -10,6 +10,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_es_query_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_es_query_rule_request.yaml index d8ca95e1e482d..b3f86de78972b 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_es_query_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_es_query_rule_request.yaml @@ -11,6 +11,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_geo_containment_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_geo_containment_rule_request.yaml index ed30fc5064f1b..bd875097a0653 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_geo_containment_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_geo_containment_rule_request.yaml @@ -12,6 +12,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_index_threshold_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_index_threshold_rule_request.yaml index d97f2c0f78e5c..b7fd292e5c4e8 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_index_threshold_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_index_threshold_rule_request.yaml @@ -11,6 +11,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_inventory_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_inventory_rule_request.yaml index ddef0a3e4cdd1..f5b967c559f81 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_inventory_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_inventory_rule_request.yaml @@ -11,6 +11,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_metric_anomaly_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_metric_anomaly_rule_request.yaml index 4c80967fbe26a..0beda5b40555e 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_metric_anomaly_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_metric_anomaly_rule_request.yaml @@ -9,6 +9,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_metric_threshold_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_metric_threshold_rule_request.yaml index 775015ca6006e..8d37ab9defc6e 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_metric_threshold_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_infra_metric_threshold_rule_request.yaml @@ -11,6 +11,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_log_threshold_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_log_threshold_rule_request.yaml index ce4baaf78ac68..35aa5805ad967 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_log_threshold_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_log_threshold_rule_request.yaml @@ -10,6 +10,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_slo_burn_rate_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_slo_burn_rate_rule_request.yaml index dcb6e5932a60d..e3a7467109600 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_slo_burn_rate_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_slo_burn_rate_rule_request.yaml @@ -14,6 +14,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_monitor_status_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_monitor_status_rule_request.yaml index d392630259d19..4c79b44a3d869 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_monitor_status_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_monitor_status_rule_request.yaml @@ -10,6 +10,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_uptime_duration_anomaly_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_uptime_duration_anomaly_rule_request.yaml index 76fb45e99bd9a..e9746f14f0ecf 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_uptime_duration_anomaly_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_uptime_duration_anomaly_rule_request.yaml @@ -12,6 +12,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_uptime_tls_certificate_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_uptime_tls_certificate_rule_request.yaml index 883342ce74619..8c71961b4961d 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_uptime_tls_certificate_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_synthetics_uptime_tls_certificate_rule_request.yaml @@ -11,6 +11,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_transform_health_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_transform_health_rule_request.yaml index ebe92de8c5cf2..a655db451ec84 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_transform_health_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_transform_health_rule_request.yaml @@ -11,6 +11,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_uptime_monitor_status_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_uptime_monitor_status_rule_request.yaml index 95d8efd6d1c17..70f3b5b8b05ad 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/create_uptime_monitor_status_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/create_uptime_monitor_status_rule_request.yaml @@ -10,6 +10,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' consumer: $ref: 'consumer.yaml' enabled: diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/rule_response_properties.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/rule_response_properties.yaml index 51310c87b6c5c..e48d316506ee0 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/rule_response_properties.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/rule_response_properties.yaml @@ -22,6 +22,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' api_key_created_by_user: type: boolean description: Indicates whether the API key that is associated with the rule was created by the user. diff --git a/x-pack/plugins/alerting/docs/openapi/components/schemas/update_rule_request.yaml b/x-pack/plugins/alerting/docs/openapi/components/schemas/update_rule_request.yaml index 63293f76ca710..fb6bd33aa81da 100644 --- a/x-pack/plugins/alerting/docs/openapi/components/schemas/update_rule_request.yaml +++ b/x-pack/plugins/alerting/docs/openapi/components/schemas/update_rule_request.yaml @@ -9,6 +9,8 @@ required: properties: actions: $ref: 'actions.yaml' + alert_delay: + $ref: 'alert_delay.yaml' name: type: string description: The name of the rule. diff --git a/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.test.ts b/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.test.ts index 7a348e583ac6c..826ee952a6bb6 100644 --- a/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.test.ts +++ b/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.test.ts @@ -62,6 +62,9 @@ const sampleRule: SanitizedRule & { activeSnoozes?: string[] } = }, nextRun: DATE_2020, revision: 0, + alertDelay: { + active: 10, + }, }; describe('rewriteRule', () => { diff --git a/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.ts b/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.ts index 953211a5ef4f7..d0e59278b13c5 100644 --- a/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.ts +++ b/x-pack/plugins/alerting/server/routes/lib/rewrite_rule.ts @@ -37,6 +37,7 @@ export const rewriteRule = ({ activeSnoozes, lastRun, nextRun, + alertDelay, ...rest }: SanitizedRule & { activeSnoozes?: string[] }) => ({ ...rest, @@ -78,4 +79,5 @@ export const rewriteRule = ({ ...(lastRun ? { last_run: rewriteRuleLastRun(lastRun) } : {}), ...(nextRun ? { next_run: nextRun } : {}), ...(apiKeyCreatedByUser !== undefined ? { api_key_created_by_user: apiKeyCreatedByUser } : {}), + ...(alertDelay !== undefined ? { alert_delay: alertDelay } : {}), }); diff --git a/x-pack/plugins/alerting/server/routes/update_rule.test.ts b/x-pack/plugins/alerting/server/routes/update_rule.test.ts index 5a4b3a19c0d7c..b48e6d72bef3f 100644 --- a/x-pack/plugins/alerting/server/routes/update_rule.test.ts +++ b/x-pack/plugins/alerting/server/routes/update_rule.test.ts @@ -59,6 +59,9 @@ describe('updateRuleRoute', () => { }, ], notifyWhen: RuleNotifyWhen.CHANGE, + alertDelay: { + active: 10, + }, }; const updateRequest: AsApiContract['data']> = { @@ -73,6 +76,9 @@ describe('updateRuleRoute', () => { alerts_filter: mockedAlert.actions[0].alertsFilter, }, ], + alert_delay: { + active: 10, + }, }; const updateResult: AsApiContract> = { @@ -86,6 +92,7 @@ describe('updateRuleRoute', () => { connector_type_id: actionTypeId, alerts_filter: alertsFilter, })), + alert_delay: mockedAlert.alertDelay, }; it('updates a rule with proper parameters', async () => { @@ -135,6 +142,9 @@ describe('updateRuleRoute', () => { "uuid": "1234-5678", }, ], + "alertDelay": Object { + "active": 10, + }, "name": "abc", "notifyWhen": "onActionGroupChange", "params": Object { diff --git a/x-pack/plugins/alerting/server/routes/update_rule.ts b/x-pack/plugins/alerting/server/routes/update_rule.ts index d24af256de613..9419d84d06341 100644 --- a/x-pack/plugins/alerting/server/routes/update_rule.ts +++ b/x-pack/plugins/alerting/server/routes/update_rule.ts @@ -52,16 +52,22 @@ const bodySchema = schema.object({ ) ) ), + alert_delay: schema.maybe( + schema.object({ + active: schema.number(), + }) + ), }); const rewriteBodyReq: RewriteRequestCase> = (result) => { - const { notify_when: notifyWhen, actions, ...rest } = result.data; + const { notify_when: notifyWhen, alert_delay: alertDelay, actions, ...rest } = result.data; return { ...result, data: { ...rest, notifyWhen, actions: rewriteActionsReq(actions), + alertDelay, }, }; }; @@ -83,6 +89,7 @@ const rewriteBodyRes: RewriteResponseCase> = ({ isSnoozedUntil, lastRun, nextRun, + alertDelay, ...rest }) => ({ ...rest, @@ -115,6 +122,7 @@ const rewriteBodyRes: RewriteResponseCase> = ({ ...(lastRun ? { last_run: rewriteRuleLastRun(lastRun) } : {}), ...(nextRun ? { next_run: nextRun } : {}), ...(apiKeyCreatedByUser !== undefined ? { api_key_created_by_user: apiKeyCreatedByUser } : {}), + ...(alertDelay ? { alert_delay: alertDelay } : {}), }); export const updateRuleRoute = ( diff --git a/x-pack/plugins/alerting/server/rules_client/methods/update.ts b/x-pack/plugins/alerting/server/rules_client/methods/update.ts index 33afee4c20d26..1255173beefe4 100644 --- a/x-pack/plugins/alerting/server/rules_client/methods/update.ts +++ b/x-pack/plugins/alerting/server/rules_client/methods/update.ts @@ -17,7 +17,7 @@ import { } from '../../types'; import { validateRuleTypeParams, getRuleNotifyWhenType } from '../../lib'; import { WriteOperations, AlertingAuthorizationEntity } from '../../authorization'; -import { parseDuration, getRuleCircuitBreakerErrorMessage } from '../../../common'; +import { parseDuration, getRuleCircuitBreakerErrorMessage, AlertDelay } from '../../../common'; import { retryIfConflicts } from '../../lib/retry_if_conflicts'; import { bulkMarkApiKeysForInvalidation } from '../../invalidate_pending_api_keys/bulk_mark_api_keys_for_invalidation'; import { ruleAuditEvent, RuleAuditAction } from '../common/audit_events'; @@ -51,6 +51,7 @@ export interface UpdateOptions { params: Params; throttle?: string | null; notifyWhen?: RuleNotifyWhenType | null; + alertDelay?: AlertDelay; }; allowMissingConnectorSecrets?: boolean; shouldIncrementRevision?: ShouldIncrementRevision; diff --git a/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts b/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts index be3221c8ed2f1..7384ab467a8e9 100644 --- a/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts +++ b/x-pack/plugins/alerting/server/rules_client/tests/update.test.ts @@ -279,6 +279,9 @@ describe('update()', () => { scheduledTaskId: 'task-123', createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), + alertDelay: { + active: 5, + }, }, references: [ { @@ -334,6 +337,9 @@ describe('update()', () => { }, }, ], + alertDelay: { + active: 10, + }, }, }); expect(result).toMatchInlineSnapshot(` @@ -364,6 +370,9 @@ describe('update()', () => { }, }, ], + "alertDelay": Object { + "active": 5, + }, "createdAt": 2019-02-12T21:01:22.479Z, "enabled": true, "id": "1", @@ -422,6 +431,9 @@ describe('update()', () => { "uuid": "102", }, ], + "alertDelay": Object { + "active": 10, + }, "alertTypeId": "myType", "apiKey": null, "apiKeyCreatedByUser": null, diff --git a/x-pack/plugins/apm/public/components/app/service_overview/index.tsx b/x-pack/plugins/apm/public/components/app/service_overview/index.tsx index 743843c825210..9813adc5d8a3e 100644 --- a/x-pack/plugins/apm/public/components/app/service_overview/index.tsx +++ b/x-pack/plugins/apm/public/components/app/service_overview/index.tsx @@ -6,7 +6,7 @@ */ import { i18n } from '@kbn/i18n'; -import React from 'react'; +import React, { useEffect } from 'react'; import { EuiFlexGroup, @@ -16,6 +16,7 @@ import { EuiPanel, EuiSpacer, } from '@elastic/eui'; +import { useApmPluginContext } from '../../../context/apm_plugin/use_apm_plugin_context'; import { AgentName } from '../../../../typings/es_schemas/ui/fields/agent'; import { isOpenTelemetryAgentName, @@ -52,6 +53,22 @@ export function ServiceOverview() { const { serviceName, fallbackToTransactions, agentName, serverlessType } = useApmServiceContext(); + const { setScreenContext } = + useApmPluginContext().observabilityAIAssistant.service; + + useEffect(() => { + return setScreenContext({ + screenDescription: `The user is looking at the service overview page for ${serviceName}.`, + data: [ + { + name: 'service_name', + description: 'The name of the service', + value: serviceName, + }, + ], + }); + }, [setScreenContext, serviceName]); + const { query, query: { kuery, environment, rangeFrom, rangeTo, transactionType }, diff --git a/x-pack/plugins/cases/public/components/create/custom_fields.test.tsx b/x-pack/plugins/cases/public/components/create/custom_fields.test.tsx index 864ba68ff690a..45fe037371b64 100644 --- a/x-pack/plugins/cases/public/components/create/custom_fields.test.tsx +++ b/x-pack/plugins/cases/public/components/create/custom_fields.test.tsx @@ -16,7 +16,8 @@ import { customFieldsConfigurationMock } from '../../containers/mock'; import { CustomFields } from './custom_fields'; import * as i18n from './translations'; -describe('CustomFields', () => { +// FLAKY: https://github.com/elastic/kibana/issues/176805 +describe.skip('CustomFields', () => { let appMockRender: AppMockRenderer; const onSubmit = jest.fn(); diff --git a/x-pack/plugins/cases/public/components/create/flyout/create_case_flyout.test.tsx b/x-pack/plugins/cases/public/components/create/flyout/create_case_flyout.test.tsx index effa3d450af89..2d0b86b142a14 100644 --- a/x-pack/plugins/cases/public/components/create/flyout/create_case_flyout.test.tsx +++ b/x-pack/plugins/cases/public/components/create/flyout/create_case_flyout.test.tsx @@ -23,7 +23,11 @@ const defaultProps = { owner: 'securitySolution', }; -describe('CreateCaseFlyout', () => { +// FLAKY: https://github.com/elastic/kibana/issues/174525 +// FLAKY: https://github.com/elastic/kibana/issues/174526 +// FLAKY: https://github.com/elastic/kibana/issues/174527 +// FLAKY: https://github.com/elastic/kibana/issues/174528 +describe.skip('CreateCaseFlyout', () => { let mockedContext: AppMockRenderer; beforeEach(() => { mockedContext = createAppMockRenderer(); diff --git a/x-pack/plugins/cases/public/components/filter_popover/index.test.tsx b/x-pack/plugins/cases/public/components/filter_popover/index.test.tsx index 23d53c6d83d9b..43f010e8b8e68 100644 --- a/x-pack/plugins/cases/public/components/filter_popover/index.test.tsx +++ b/x-pack/plugins/cases/public/components/filter_popover/index.test.tsx @@ -14,7 +14,15 @@ import { createAppMockRenderer } from '../../common/mock'; import { FilterPopover } from '.'; -describe('FilterPopover ', () => { +// FLAKY: https://github.com/elastic/kibana/issues/176679 +// FLAKY: https://github.com/elastic/kibana/issues/176680 +// FLAKY: https://github.com/elastic/kibana/issues/176681 +// FLAKY: https://github.com/elastic/kibana/issues/176682 +// FLAKY: https://github.com/elastic/kibana/issues/176683 +// FLAKY: https://github.com/elastic/kibana/issues/176684 +// FLAKY: https://github.com/elastic/kibana/issues/176685 +// FLAKY: https://github.com/elastic/kibana/issues/176686 +describe.skip('FilterPopover ', () => { let appMockRender: AppMockRenderer; const onSelectedOptionsChanged = jest.fn(); const tags: string[] = ['coke', 'pepsi']; diff --git a/x-pack/plugins/cases/public/components/user_actions/property_actions/alert_property_actions.test.tsx b/x-pack/plugins/cases/public/components/user_actions/property_actions/alert_property_actions.test.tsx index ac2d1d245b56b..64dfa08944ea1 100644 --- a/x-pack/plugins/cases/public/components/user_actions/property_actions/alert_property_actions.test.tsx +++ b/x-pack/plugins/cases/public/components/user_actions/property_actions/alert_property_actions.test.tsx @@ -17,7 +17,8 @@ import { } from '../../../common/mock'; import { AlertPropertyActions } from './alert_property_actions'; -describe('AlertPropertyActions', () => { +// FLAKY: https://github.com/elastic/kibana/issues/174667 +describe.skip('AlertPropertyActions', () => { let appMock: AppMockRenderer; const props = { diff --git a/x-pack/plugins/cases/public/components/user_actions/property_actions/user_comment_property_actions.test.tsx b/x-pack/plugins/cases/public/components/user_actions/property_actions/user_comment_property_actions.test.tsx index 8fc3b0cb8adcb..c24d26fa3b283 100644 --- a/x-pack/plugins/cases/public/components/user_actions/property_actions/user_comment_property_actions.test.tsx +++ b/x-pack/plugins/cases/public/components/user_actions/property_actions/user_comment_property_actions.test.tsx @@ -17,7 +17,8 @@ import { import { UserCommentPropertyActions } from './user_comment_property_actions'; import { waitFor } from '@testing-library/react'; -describe('UserCommentPropertyActions', () => { +// FLAKY: https://github.com/elastic/kibana/issues/175310 +describe.skip('UserCommentPropertyActions', () => { let appMock: AppMockRenderer; const props = { diff --git a/x-pack/plugins/enterprise_search/public/applications/index.tsx b/x-pack/plugins/enterprise_search/public/applications/index.tsx index 37b55411487cf..928b6bfbac46c 100644 --- a/x-pack/plugins/enterprise_search/public/applications/index.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/index.tsx @@ -25,7 +25,7 @@ import { ClientConfigType, InitialAppData, ProductAccess } from '../../common/ty import { PluginsStart, ClientData, ESConfig } from '../plugin'; import { externalUrl } from './shared/enterprise_search_url'; -import { mountFlashMessagesLogic, Toasts } from './shared/flash_messages'; +import { mountFlashMessagesLogic } from './shared/flash_messages'; import { getCloudEnterpriseSearchHost } from './shared/get_cloud_enterprise_search_host/get_cloud_enterprise_search_host'; import { mountHttpLogic } from './shared/http'; import { mountKibanaLogic } from './shared/kibana'; @@ -66,7 +66,7 @@ export const renderApp = ( workplaceSearch, } = data; const { history } = params; - const { application, chrome, http, uiSettings } = core; + const { application, chrome, http, notifications, uiSettings } = core; const { capabilities, navigateToUrl } = application; const { charts, cloud, guidedOnboarding, lens, security, share, ml } = plugins; @@ -138,7 +138,7 @@ export const renderApp = ( http, readOnlyMode, }); - const unmountFlashMessagesLogic = mountFlashMessagesLogic(); + const unmountFlashMessagesLogic = mountFlashMessagesLogic({ notifications }); ReactDOM.render( @@ -158,7 +158,6 @@ export const renderApp = ( searchOAuth={searchOAuth} workplaceSearch={workplaceSearch} /> - diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.test.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.test.tsx index dd1aef467d3dc..78670c70f9a00 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.test.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.test.tsx @@ -5,15 +5,15 @@ * 2.0. */ -import { setMockValues, setMockActions } from '../../__mocks__/kea_logic'; +import { setMockValues } from '../../__mocks__/kea_logic'; import React from 'react'; import { shallow } from 'enzyme'; -import { EuiCallOut, EuiGlobalToastList } from '@elastic/eui'; +import { EuiCallOut } from '@elastic/eui'; -import { FlashMessages, Toasts } from './flash_messages'; +import { FlashMessages } from './flash_messages'; describe('FlashMessages', () => { it('renders an array of callouts', () => { @@ -52,37 +52,3 @@ describe('FlashMessages', () => { expect(wrapper.find('[data-test-subj="testing"]').text()).toContain('Some action'); }); }); - -describe('Toasts', () => { - const actions = { dismissToastMessage: jest.fn() }; - beforeAll(() => setMockActions(actions)); - - it('renders an EUI toast list', () => { - const mockToasts = [ - { id: 'test', title: 'Hello world!!' }, - { - color: 'success', - iconType: 'check', - title: 'Success!', - toastLifeTimeMs: 500, - id: 'successToastId', - }, - { - color: 'danger', - iconType: 'error', - title: 'Oh no!', - text:
Something went wrong
, - id: 'errorToastId', - }, - ]; - setMockValues({ toastMessages: mockToasts }); - - const wrapper = shallow(); - const euiToastList = wrapper.find(EuiGlobalToastList); - - expect(euiToastList).toHaveLength(1); - expect(euiToastList.prop('toasts')).toEqual(mockToasts); - expect(euiToastList.prop('dismissToast')).toEqual(actions.dismissToastMessage); - expect(euiToastList.prop('toastLifeTimeMs')).toEqual(5000); - }); -}); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.tsx b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.tsx index 27dd19a3062ca..f85eaa8dfe3c2 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.tsx +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages.tsx @@ -7,11 +7,11 @@ import React, { Fragment } from 'react'; -import { useValues, useActions } from 'kea'; +import { useValues } from 'kea'; -import { EuiCallOut, EuiSpacer, EuiGlobalToastList } from '@elastic/eui'; +import { EuiCallOut, EuiSpacer } from '@elastic/eui'; -import { FLASH_MESSAGE_TYPES, DEFAULT_TOAST_TIMEOUT } from './constants'; +import { FLASH_MESSAGE_TYPES } from './constants'; import { FlashMessagesLogic } from './flash_messages_logic'; export const FlashMessages: React.FC = ({ children }) => { @@ -35,21 +35,3 @@ export const FlashMessages: React.FC = ({ children }) => { ); }; - -/* - * NOTE: Toasts are rendered at the highest app level (@see public/applications/index.tsx) - * so that they don't rerender/reset their timers when navigating between pages, - * and also to prevent z-index issues with flyouts and modals - */ -export const Toasts: React.FC = () => { - const { toastMessages } = useValues(FlashMessagesLogic); - const { dismissToastMessage } = useActions(FlashMessagesLogic); - - return ( - - ); -}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.test.ts index 19e236ac122f0..5ab0032aafbb3 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.test.ts @@ -5,19 +5,28 @@ * 2.0. */ +import { LogicMounter } from '../../__mocks__/kea_logic'; import { mockKibanaValues } from '../../__mocks__/kea_logic/kibana_logic.mock'; import { resetContext } from 'kea'; +import type { NotificationsStart } from '@kbn/core-notifications-browser'; + const { history } = mockKibanaValues; -import { FlashMessagesLogic, mountFlashMessagesLogic } from './flash_messages_logic'; +import { FlashMessagesLogic } from './flash_messages_logic'; import { IFlashMessage } from './types'; describe('FlashMessagesLogic', () => { + const { mount: mountFlashMessagesLogic, unmount: unmountFlashMessagesLogic } = new LogicMounter( + FlashMessagesLogic + ); const mount = () => { resetContext({}); - return mountFlashMessagesLogic(); + mountFlashMessagesLogic(undefined, { + notifications: {} as unknown as NotificationsStart, + }); + return unmountFlashMessagesLogic; }; beforeEach(() => { @@ -27,10 +36,10 @@ describe('FlashMessagesLogic', () => { it('has default values', () => { mount(); expect(FlashMessagesLogic.values).toEqual({ + historyListener: expect.any(Function), messages: [], + notifications: {}, queuedMessages: [], - toastMessages: [], - historyListener: expect.any(Function), }); }); @@ -94,45 +103,6 @@ describe('FlashMessagesLogic', () => { }); }); - describe('toastMessages', () => { - beforeAll(() => { - mount(); - }); - - describe('addToastMessage', () => { - it('appends a toast message to the current toasts array', () => { - FlashMessagesLogic.actions.addToastMessage({ id: 'hello' }); - FlashMessagesLogic.actions.addToastMessage({ id: 'world' }); - FlashMessagesLogic.actions.addToastMessage({ id: 'lorem ipsum' }); - - expect(FlashMessagesLogic.values.toastMessages).toEqual([ - { id: 'hello' }, - { id: 'world' }, - { id: 'lorem ipsum' }, - ]); - }); - }); - - describe('dismissToastMessage', () => { - it('removes a specific toast ID from the current toasts array', () => { - FlashMessagesLogic.actions.dismissToastMessage({ id: 'world' }); - - expect(FlashMessagesLogic.values.toastMessages).toEqual([ - { id: 'hello' }, - { id: 'lorem ipsum' }, - ]); - }); - }); - - describe('clearToastMessages', () => { - it('resets toast messages back to an empty array', () => { - FlashMessagesLogic.actions.clearToastMessages(); - - expect(FlashMessagesLogic.values.toastMessages).toEqual([]); - }); - }); - }); - describe('history listener logic', () => { describe('setHistoryListener', () => { it('sets the historyListener value', () => { diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.ts index f71897cc5a1d7..580503b0324ec 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/flash_messages_logic.ts @@ -7,75 +7,67 @@ import { kea, MakeLogicType } from 'kea'; -import { EuiGlobalToastListToast as IToast } from '@elastic/eui'; +import type { NotificationsStart } from '@kbn/core-notifications-browser'; import { KibanaLogic } from '../kibana'; import { IFlashMessage } from './types'; interface FlashMessagesValues { + historyListener: Function | null; messages: IFlashMessage[]; + notifications: NotificationsStart; queuedMessages: IFlashMessage[]; - toastMessages: IToast[]; - historyListener: Function | null; } interface FlashMessagesActions { setFlashMessages(messages: IFlashMessage | IFlashMessage[]): { messages: IFlashMessage[] }; clearFlashMessages(): void; setQueuedMessages(messages: IFlashMessage | IFlashMessage[]): { messages: IFlashMessage[] }; clearQueuedMessages(): void; - addToastMessage(newToast: IToast): { newToast: IToast }; - dismissToastMessage(removedToast: IToast): { removedToast: IToast }; - clearToastMessages(): void; setHistoryListener(historyListener: Function): { historyListener: Function }; } +interface FlashMessagesLogicProps { + notifications: NotificationsStart; +} + const convertToArray = (messages: IFlashMessage | IFlashMessage[]) => !Array.isArray(messages) ? [messages] : messages; -export const FlashMessagesLogic = kea>({ - path: ['enterprise_search', 'flash_messages_logic'], +export const FlashMessagesLogic = kea< + MakeLogicType +>({ actions: { - setFlashMessages: (messages) => ({ messages: convertToArray(messages) }), clearFlashMessages: () => null, - setQueuedMessages: (messages) => ({ messages: convertToArray(messages) }), clearQueuedMessages: () => null, - addToastMessage: (newToast) => ({ newToast }), - dismissToastMessage: (removedToast) => ({ removedToast }), - clearToastMessages: () => null, + setFlashMessages: (messages) => ({ messages: convertToArray(messages) }), setHistoryListener: (historyListener) => ({ historyListener }), + setQueuedMessages: (messages) => ({ messages: convertToArray(messages) }), }, - reducers: { + path: ['enterprise_search', 'flash_messages_logic'], + reducers: ({ props }) => ({ + historyListener: [ + null, + { + setHistoryListener: (_, { historyListener }) => historyListener, + }, + ], messages: [ [], { - setFlashMessages: (_, { messages }) => messages, clearFlashMessages: () => [], + setFlashMessages: (_, { messages }) => messages, }, ], + notifications: [props.notifications || {}, {}], queuedMessages: [ [], { - setQueuedMessages: (_, { messages }) => messages, clearQueuedMessages: () => [], + setQueuedMessages: (_, { messages }) => messages, }, ], - toastMessages: [ - [], - { - addToastMessage: (toasts, { newToast }) => [...toasts, newToast], - dismissToastMessage: (toasts, { removedToast }) => - toasts.filter(({ id }) => id !== removedToast.id), - clearToastMessages: () => [], - }, - ], - historyListener: [ - null, - { - setHistoryListener: (_, { historyListener }) => historyListener, - }, - ], - }, + }), events: ({ values, actions }) => ({ afterMount: () => { // On React Router navigation, clear previous flash messages and load any queued messages @@ -96,7 +88,8 @@ export const FlashMessagesLogic = kea { +export const mountFlashMessagesLogic = (props: FlashMessagesLogicProps) => { + FlashMessagesLogic(props); const unmount = FlashMessagesLogic.mount(); return unmount; }; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.test.ts index 1e3705a3800ed..d7cea1fe1b26d 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/handle_api_errors.test.ts @@ -10,6 +10,8 @@ jest.mock('./set_message_helpers', () => ({ })); import '../../__mocks__/kea_logic/kibana_logic.mock'; +import type { NotificationsStart } from '@kbn/core-notifications-browser'; + import { FlashMessagesLogic } from './flash_messages_logic'; import { flashAPIErrors, getErrorsFromHttpResponse, toastAPIErrors } from './handle_api_errors'; import { flashErrorToast } from './set_message_helpers'; @@ -28,6 +30,7 @@ describe('flashAPIErrors', () => { beforeEach(() => { jest.clearAllMocks(); + FlashMessagesLogic({ notifications: {} as unknown as NotificationsStart }); FlashMessagesLogic.mount(); jest.spyOn(FlashMessagesLogic.actions, 'setFlashMessages'); jest.spyOn(FlashMessagesLogic.actions, 'setQueuedMessages'); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/index.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/index.ts index 3d3775aee9607..e73b865dce83b 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/index.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/index.ts @@ -5,7 +5,7 @@ * 2.0. */ -export { FlashMessages, Toasts } from './flash_messages'; +export { FlashMessages } from './flash_messages'; export { FlashMessagesLogic, mountFlashMessagesLogic } from './flash_messages_logic'; export type { IFlashMessage } from './types'; export { flashAPIErrors, toastAPIErrors } from './handle_api_errors'; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.test.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.test.ts index 25da2c2f728a2..640f0e774519e 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.test.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.test.ts @@ -7,7 +7,9 @@ import '../../__mocks__/kea_logic/kibana_logic.mock'; -import { FlashMessagesLogic } from './flash_messages_logic'; +import type { NotificationsStart } from '@kbn/core-notifications-browser'; + +import { FlashMessagesLogic, mountFlashMessagesLogic } from './flash_messages_logic'; import { setSuccessMessage, setErrorMessage, @@ -19,10 +21,18 @@ import { } from './set_message_helpers'; describe('Flash Message Helpers', () => { + const mockNotifications = { + toasts: { + add: jest.fn(), + }, + }; const message = 'I am a message'; + beforeAll(() => { + mountFlashMessagesLogic({ notifications: mockNotifications as unknown as NotificationsStart }); + }); beforeEach(() => { - FlashMessagesLogic.mount(); + jest.clearAllMocks(); }); it('setSuccessMessage()', () => { @@ -76,10 +86,6 @@ describe('Flash Message Helpers', () => { }); describe('toast helpers', () => { - afterEach(() => { - FlashMessagesLogic.actions.clearToastMessages(); - }); - describe('without optional args', () => { beforeEach(() => { jest.spyOn(global.Date, 'now').mockReturnValueOnce(1234567890); @@ -88,27 +94,23 @@ describe('Flash Message Helpers', () => { it('flashSuccessToast', () => { flashSuccessToast('You did a thing!'); - expect(FlashMessagesLogic.values.toastMessages).toEqual([ - { - color: 'success', - iconType: 'check', - title: 'You did a thing!', - id: 'successToast-1234567890', - }, - ]); + expect(mockNotifications.toasts.add).toHaveBeenCalledTimes(1); + expect(mockNotifications.toasts.add).toHaveBeenCalledWith({ + color: 'success', + iconType: 'check', + title: 'You did a thing!', + }); }); it('flashErrorToast', () => { flashErrorToast('Something went wrong'); - expect(FlashMessagesLogic.values.toastMessages).toEqual([ - { - color: 'danger', - iconType: 'error', - title: 'Something went wrong', - id: 'errorToast-1234567890', - }, - ]); + expect(mockNotifications.toasts.add).toHaveBeenCalledTimes(1); + expect(mockNotifications.toasts.add).toHaveBeenCalledWith({ + color: 'danger', + iconType: 'error', + title: 'Something went wrong', + }); }); }); @@ -117,38 +119,32 @@ describe('Flash Message Helpers', () => { flashSuccessToast('You did a thing!', { text: '', toastLifeTimeMs: 50, - id: 'customId', }); - expect(FlashMessagesLogic.values.toastMessages).toEqual([ - { - color: 'success', - iconType: 'check', - title: 'You did a thing!', - text: '', - toastLifeTimeMs: 50, - id: 'customId', - }, - ]); + expect(mockNotifications.toasts.add).toHaveBeenCalledTimes(1); + expect(mockNotifications.toasts.add).toHaveBeenCalledWith({ + color: 'success', + iconType: 'check', + title: 'You did a thing!', + text: '', + toastLifeTimeMs: 50, + }); }); it('flashErrorToast', () => { flashErrorToast('Something went wrong', { text: "Here's some helpful advice on what to do", toastLifeTimeMs: 50000, - id: 'specificErrorId', }); - expect(FlashMessagesLogic.values.toastMessages).toEqual([ - { - color: 'danger', - iconType: 'error', - title: 'Something went wrong', - text: "Here's some helpful advice on what to do", - toastLifeTimeMs: 50000, - id: 'specificErrorId', - }, - ]); + expect(mockNotifications.toasts.add).toHaveBeenCalledTimes(1); + expect(mockNotifications.toasts.add).toHaveBeenCalledWith({ + color: 'danger', + iconType: 'error', + title: 'Something went wrong', + text: "Here's some helpful advice on what to do", + toastLifeTimeMs: 50000, + }); }); }); }); diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.ts index 37f7256ad44a9..1a5ced86caecc 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/set_message_helpers.ts @@ -42,19 +42,17 @@ export const clearFlashMessages = () => { }; export const flashSuccessToast = (message: string, toastOptions: ToastOptions = {}) => { - FlashMessagesLogic.actions.addToastMessage({ + FlashMessagesLogic.values.notifications.toasts.add({ ...FLASH_MESSAGE_TYPES.success, ...toastOptions, title: message, - id: toastOptions?.id || `successToast-${Date.now()}`, }); }; export const flashErrorToast = (message: string, toastOptions: ToastOptions = {}) => { - FlashMessagesLogic.actions.addToastMessage({ + FlashMessagesLogic.values.notifications.toasts.add({ ...FLASH_MESSAGE_TYPES.error, ...toastOptions, title: message, - id: toastOptions?.id || `errorToast-${Date.now()}`, }); }; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/types.ts b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/types.ts index 078252abcdaef..47040fb76cbc4 100644 --- a/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/types.ts +++ b/x-pack/plugins/enterprise_search/public/applications/shared/flash_messages/types.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { ReactNode, ReactChild } from 'react'; +import { ReactNode } from 'react'; export type FlashMessageTypes = 'success' | 'info' | 'warning' | 'error'; export type FlashMessageColors = 'success' | 'primary' | 'warning' | 'danger'; @@ -20,7 +20,6 @@ export interface IFlashMessage { // @see EuiGlobalToastListToast for more props export interface ToastOptions { iconType?: string; - id?: string; - text?: ReactChild; // Additional text below the message/title, same as IFlashMessage['description'] - toastLifeTimeMs?: number; // Allows customing per-toast timeout + text?: string; // Additional text below the message/title, same as EuiToast['text'] + toastLifeTimeMs?: number; // Allows customizing per-toast timeout } diff --git a/x-pack/plugins/enterprise_search/tsconfig.json b/x-pack/plugins/enterprise_search/tsconfig.json index 9ed91655f25af..bd114930b2026 100644 --- a/x-pack/plugins/enterprise_search/tsconfig.json +++ b/x-pack/plugins/enterprise_search/tsconfig.json @@ -67,6 +67,7 @@ "@kbn/core-capabilities-common", "@kbn/react-kibana-context-theme", "@kbn/code-editor", - "@kbn/console-plugin" + "@kbn/console-plugin", + "@kbn/core-notifications-browser" ] } 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 76fd291155139..3dab659e64232 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 @@ -22,6 +22,8 @@ import type { Agent, AgentPolicy } from '../../../../types'; import { SearchBar } from '../../../../components'; import { AGENTS_INDEX, AGENTS_PREFIX } from '../../../../constants'; +import { useStartServices } from '../../../../hooks'; + import { AgentBulkActions } from './bulk_actions'; import type { SelectionMode } from './types'; import { AgentActivityButton } from './agent_activity_button'; @@ -91,6 +93,7 @@ export const SearchAndFilterBar: React.FunctionComponent { const { isFirstTimeAgentUser, isLoading: isFirstTimeAgentUserLoading } = useIsFirstTimeAgentUserQuery(); + const { cloud } = useStartServices(); return ( <> @@ -107,23 +110,25 @@ export const SearchAndFilterBar: React.FunctionComponent
- - - } - > - - - - - + {!cloud?.isServerlessEnabled && ( + + + } + > + + + + + + )} { expect(res).toEqual({ body: { item: { id: 'host1' } } }); }); + it('should return ok on put in serverless if host urls are not passed', async () => { + jest.spyOn(appContextService, 'getCloud').mockReturnValue({ isServerlessEnabled: true } as any); + + const res = await putFleetServerHostHandler( + mockContext, + { body: { name: ['Renamed'] }, params: { outputId: 'host1' } } as any, + mockResponse as any + ); + + expect(res).toEqual({ body: { item: { id: 'host1' } } }); + }); + it('should return ok on put in stateful if host url is different from default', async () => { jest .spyOn(appContextService, 'getCloud') diff --git a/x-pack/plugins/fleet/server/routes/output/handler.test.ts b/x-pack/plugins/fleet/server/routes/output/handler.test.ts index be1c162d7056b..c24863d1cc08f 100644 --- a/x-pack/plugins/fleet/server/routes/output/handler.test.ts +++ b/x-pack/plugins/fleet/server/routes/output/handler.test.ts @@ -178,6 +178,21 @@ describe('output handler', () => { expect(res).toEqual({ body: { item: { id: 'output1' } } }); }); + it('should return ok on put elasticsearch output in serverless if host url is not passed', async () => { + jest.spyOn(appContextService, 'getCloud').mockReturnValue({ isServerlessEnabled: true } as any); + + const res = await putOutputHandler( + mockContext, + { + body: { type: 'elasticsearch', name: 'Renamed output' }, + params: { outputId: 'output1' }, + } as any, + mockResponse as any + ); + + expect(res).toEqual({ body: { item: { id: 'output1' } } }); + }); + it('should return ok on put elasticsearch output in stateful if host url is different from default', async () => { jest .spyOn(appContextService, 'getCloud') diff --git a/x-pack/plugins/fleet/server/routes/output/handler.ts b/x-pack/plugins/fleet/server/routes/output/handler.ts index 237ff2986703c..14598a3b628f4 100644 --- a/x-pack/plugins/fleet/server/routes/output/handler.ts +++ b/x-pack/plugins/fleet/server/routes/output/handler.ts @@ -170,6 +170,10 @@ async function validateOutputServerless( throw Boom.badRequest('Output type remote_elasticsearch not supported in serverless'); } // Elasticsearch outputs must have the default host URL in serverless. + // No need to validate on update if hosts are not passed. + if (outputId && !output.hosts) { + return; + } const defaultOutput = await outputService.get(soClient, SERVERLESS_DEFAULT_OUTPUT_ID); let originalOutput; if (outputId) { diff --git a/x-pack/plugins/infra/common/alerting/metrics/alert_link.test.ts b/x-pack/plugins/infra/common/alerting/metrics/alert_link.test.ts index 5e0a9e38c1cf2..441922d3fb771 100644 --- a/x-pack/plugins/infra/common/alerting/metrics/alert_link.test.ts +++ b/x-pack/plugins/infra/common/alerting/metrics/alert_link.test.ts @@ -7,7 +7,11 @@ import { ParsedTechnicalFields } from '@kbn/rule-registry-plugin/common/parse_technical_fields'; import { ALERT_RULE_PARAMETERS, TIMESTAMP } from '@kbn/rule-data-utils'; -import { getInventoryViewInAppUrl, flatAlertRuleParams } from './alert_link'; +import { + getInventoryViewInAppUrl, + flatAlertRuleParams, + getMetricsViewInAppUrl, +} from './alert_link'; describe('Inventory Threshold Rule', () => { describe('flatAlertRuleParams', () => { @@ -98,6 +102,19 @@ describe('Inventory Threshold Rule', () => { ); }); + it('should point to host-details when host.name is present', () => { + const fields = { + [TIMESTAMP]: '2022-01-01T00:00:00.000Z', + [`${ALERT_RULE_PARAMETERS}.nodeType`]: 'kubernetes', + [`${ALERT_RULE_PARAMETERS}.criteria.metric`]: ['cpu'], + [`host.name`]: ['my-host'], + } as unknown as ParsedTechnicalFields & Record; + const url = getInventoryViewInAppUrl(fields); + expect(url).toEqual( + '/app/metrics/link-to/host-detail/my-host?from=1640995200000&to=1640996100000' + ); + }); + it('should work with custom metrics when ALERT_RULE_PARAMETERS is an object', () => { const fields = { '@timestamp': '2022-01-01T00:00:00.000Z', @@ -155,3 +172,26 @@ describe('Inventory Threshold Rule', () => { }); }); }); + +describe('Metrics Rule', () => { + describe('getMetricsViewInAppUrl', () => { + it('should point to host-details when host.name is present', () => { + const fields = { + [TIMESTAMP]: '2022-01-01T00:00:00.000Z', + [`host.name`]: ['my-host'], + } as unknown as ParsedTechnicalFields & Record; + const url = getMetricsViewInAppUrl(fields); + expect(url).toEqual( + '/app/metrics/link-to/host-detail/my-host?from=1640995200000&to=1640996100000' + ); + }); + + it('should point to metrics explorer', () => { + const fields = { + [TIMESTAMP]: '2022-01-01T00:00:00.000Z', + } as unknown as ParsedTechnicalFields & Record; + const url = getMetricsViewInAppUrl(fields); + expect(url).toEqual('/app/metrics/explorer'); + }); + }); +}); diff --git a/x-pack/plugins/infra/common/alerting/metrics/alert_link.ts b/x-pack/plugins/infra/common/alerting/metrics/alert_link.ts index e72246ae9a5c0..ff6b6d2c752ce 100644 --- a/x-pack/plugins/infra/common/alerting/metrics/alert_link.ts +++ b/x-pack/plugins/infra/common/alerting/metrics/alert_link.ts @@ -9,6 +9,13 @@ import { ALERT_RULE_PARAMETERS, TIMESTAMP } from '@kbn/rule-data-utils'; import { encode } from '@kbn/rison'; import { stringify } from 'query-string'; import { ParsedTechnicalFields } from '@kbn/rule-registry-plugin/common/parse_technical_fields'; +import { InventoryItemType } from '@kbn/metrics-data-access-plugin/common'; +import { + fifteenMinutesInMilliseconds, + HOST_FIELD, + LINK_TO_INVENTORY, + METRICS_EXPLORER_URL, +} from '../../constants'; export const flatAlertRuleParams = (params: {}, pKey = ''): Record => { return Object.entries(params).reduce((acc, [key, field]) => { @@ -46,37 +53,68 @@ export const getInventoryViewInAppUrl = ( } const nodeTypeField = `${ALERT_RULE_PARAMETERS}.nodeType`; - const nodeType = inventoryFields[nodeTypeField]; - let inventoryViewInAppUrl = '/app/metrics/link-to/inventory?'; + const nodeType = inventoryFields[nodeTypeField] as InventoryItemType; + const hostName = inventoryFields[HOST_FIELD]; if (nodeType) { - const linkToParams: Record = { - nodeType: inventoryFields[nodeTypeField][0], - timestamp: Date.parse(inventoryFields[TIMESTAMP]), - customMetric: '', - }; - // We always pick the first criteria metric for the URL - const criteriaMetric = inventoryFields[`${ALERT_RULE_PARAMETERS}.criteria.metric`][0]; - if (criteriaMetric === 'custom') { - const criteriaCustomMetricId = - inventoryFields[`${ALERT_RULE_PARAMETERS}.criteria.customMetric.id`][0]; - const criteriaCustomMetricAggregation = - inventoryFields[`${ALERT_RULE_PARAMETERS}.criteria.customMetric.aggregation`][0]; - const criteriaCustomMetricField = - inventoryFields[`${ALERT_RULE_PARAMETERS}.criteria.customMetric.field`][0]; - - const customMetric = encode({ - id: criteriaCustomMetricId, - type: 'custom', - field: criteriaCustomMetricField, - aggregation: criteriaCustomMetricAggregation, - }); - linkToParams.customMetric = customMetric; - linkToParams.metric = customMetric; + if (hostName) { + return getLinkToHostDetails({ hostName, timestamp: inventoryFields[TIMESTAMP] }); } else { - linkToParams.metric = encode({ type: criteriaMetric }); + const linkToParams = { + nodeType: inventoryFields[nodeTypeField][0], + timestamp: Date.parse(inventoryFields[TIMESTAMP]), + customMetric: '', + metric: '', + }; + + // We always pick the first criteria metric for the URL + const criteriaMetric = inventoryFields[`${ALERT_RULE_PARAMETERS}.criteria.metric`][0]; + if (criteriaMetric === 'custom') { + const criteriaCustomMetricId = + inventoryFields[`${ALERT_RULE_PARAMETERS}.criteria.customMetric.id`][0]; + const criteriaCustomMetricAggregation = + inventoryFields[`${ALERT_RULE_PARAMETERS}.criteria.customMetric.aggregation`][0]; + const criteriaCustomMetricField = + inventoryFields[`${ALERT_RULE_PARAMETERS}.criteria.customMetric.field`][0]; + + const customMetric = encode({ + id: criteriaCustomMetricId, + type: 'custom', + field: criteriaCustomMetricField, + aggregation: criteriaCustomMetricAggregation, + }); + linkToParams.customMetric = customMetric; + linkToParams.metric = customMetric; + } else { + linkToParams.metric = encode({ type: criteriaMetric }); + } + return `${LINK_TO_INVENTORY}?${stringify(linkToParams)}`; } - inventoryViewInAppUrl += stringify(linkToParams); } - return inventoryViewInAppUrl; + + return LINK_TO_INVENTORY; }; + +export const getMetricsViewInAppUrl = (fields: ParsedTechnicalFields & Record) => { + const hostName = fields[HOST_FIELD]; + const timestamp = fields[TIMESTAMP]; + + return hostName ? getLinkToHostDetails({ hostName, timestamp }) : METRICS_EXPLORER_URL; +}; + +export function getLinkToHostDetails({ + hostName, + timestamp, +}: { + hostName: string; + timestamp: string; +}): string { + const queryParams = { + from: Date.parse(timestamp), + to: Date.parse(timestamp) + fifteenMinutesInMilliseconds, + }; + + const encodedParams = encode(stringify(queryParams)); + + return `/app/metrics/link-to/host-detail/${hostName}?${encodedParams}`; +} diff --git a/x-pack/plugins/infra/common/alerting/metrics/index.ts b/x-pack/plugins/infra/common/alerting/metrics/index.ts index 3ed41e70e2269..2c66638711cd0 100644 --- a/x-pack/plugins/infra/common/alerting/metrics/index.ts +++ b/x-pack/plugins/infra/common/alerting/metrics/index.ts @@ -17,5 +17,3 @@ export const isTooManyBucketsPreviewException = ( value: any ): value is TooManyBucketsPreviewExceptionMetadata => Boolean(value && value.TOO_MANY_BUCKETS_PREVIEW_EXCEPTION); - -export const LINK_TO_METRICS_EXPLORER = '/app/metrics/explorer'; diff --git a/x-pack/plugins/infra/common/constants.ts b/x-pack/plugins/infra/common/constants.ts index 7d0b94705f9e6..e4621f63793c2 100644 --- a/x-pack/plugins/infra/common/constants.ts +++ b/x-pack/plugins/infra/common/constants.ts @@ -11,6 +11,7 @@ export const METRICS_APP = 'metrics'; export const LOGS_APP = 'logs'; export const METRICS_FEATURE_ID = 'infrastructure'; +export const INFRA_ALERT_FEATURE_ID = 'infrastructure'; export const LOGS_FEATURE_ID = 'logs'; export type InfraFeatureId = typeof METRICS_FEATURE_ID | typeof LOGS_FEATURE_ID; @@ -32,3 +33,7 @@ export const O11Y_AAD_FIELDS = [ 'labels.*', 'tags', ]; + +export const LINK_TO_INVENTORY = '/app/metrics/link-to/inventory'; +export const METRICS_EXPLORER_URL = '/app/metrics/explorer'; +export const fifteenMinutesInMilliseconds = 15 * 60 * 1000; diff --git a/x-pack/plugins/infra/common/http_api/infra/get_infra_metrics.ts b/x-pack/plugins/infra/common/http_api/infra/get_infra_metrics.ts index f0b0f4eb7f0ab..1c6076b277a55 100644 --- a/x-pack/plugins/infra/common/http_api/infra/get_infra_metrics.ts +++ b/x-pack/plugins/infra/common/http_api/infra/get_infra_metrics.ts @@ -53,11 +53,16 @@ export const GetInfraMetricsRequestBodyPayloadRT = rt.intersection([ }), ]); -export const InfraAssetMetricsItemRT = rt.type({ - name: rt.string, - metrics: rt.array(InfraAssetMetricsRT), - metadata: rt.array(InfraAssetMetadataRT), -}); +export const InfraAssetMetricsItemRT = rt.intersection([ + rt.type({ + name: rt.string, + metrics: rt.array(InfraAssetMetricsRT), + metadata: rt.array(InfraAssetMetadataRT), + }), + rt.partial({ + alertsCount: rt.number, + }), +]); export const GetInfraMetricsResponsePayloadRT = rt.type({ type: rt.literal('host'), diff --git a/x-pack/plugins/infra/public/alerting/metric_threshold/rule_data_formatters.ts b/x-pack/plugins/infra/public/alerting/metric_threshold/rule_data_formatters.ts index a377396b5eb89..75d5bceb61327 100644 --- a/x-pack/plugins/infra/public/alerting/metric_threshold/rule_data_formatters.ts +++ b/x-pack/plugins/infra/public/alerting/metric_threshold/rule_data_formatters.ts @@ -7,13 +7,12 @@ import { ALERT_REASON } from '@kbn/rule-data-utils'; import { ObservabilityRuleTypeFormatter } from '@kbn/observability-plugin/public'; -import { LINK_TO_METRICS_EXPLORER } from '../../../common/alerting/metrics'; +import { getMetricsViewInAppUrl } from '../../../common/alerting/metrics/alert_link'; export const formatReason: ObservabilityRuleTypeFormatter = ({ fields }) => { const reason = fields[ALERT_REASON] ?? '-'; - const link = LINK_TO_METRICS_EXPLORER; // TODO https://github.com/elastic/kibana/issues/106497 & https://github.com/elastic/kibana/issues/106958 return { reason, - link, + link: getMetricsViewInAppUrl(fields), }; }; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/config.ts b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/config.ts index cf4374cae94fa..253bb59f79d66 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/config.ts +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/config.ts @@ -11,5 +11,4 @@ import type { ValidFeatureId } from '@kbn/rule-data-utils'; export const ALERTS_PER_PAGE = 10; export const ALERTS_TABLE_ID = 'xpack.infra.hosts.alerts.table'; -export const INFRA_ALERT_FEATURE_ID = 'infrastructure'; export const infraAlertFeatureIds: ValidFeatureId[] = [AlertConsumers.INFRASTRUCTURE]; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table.test.ts b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table.test.ts index 1d7ea3bd82538..9534406d5dcfa 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table.test.ts +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table.test.ts @@ -72,6 +72,7 @@ const mockHostNode: InfraAssetMetricsItem[] = [ { name: 'cloud.provider', value: 'aws' }, ], name: 'host-0', + alertsCount: 0, }, { metrics: [ @@ -109,6 +110,7 @@ const mockHostNode: InfraAssetMetricsItem[] = [ { name: 'host.ip', value: '243.86.94.22' }, ], name: 'host-1', + alertsCount: 0, }, ]; @@ -161,6 +163,7 @@ describe('useHostTable hook', () => { diskSpaceUsage: 0.2040001, memoryFree: 34359.738368, normalizedLoad1m: 239.2040001, + alertsCount: 0, }, { name: 'host-1', @@ -178,6 +181,7 @@ describe('useHostTable hook', () => { diskSpaceUsage: 0.5400000214576721, memoryFree: 9.194304, normalizedLoad1m: 100, + alertsCount: 0, }, ]; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx index 446a0c577bca9..c54877bd11a20 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table.tsx @@ -13,6 +13,8 @@ import { isEqual } from 'lodash'; import { isNumber } from 'lodash/fp'; import { CloudProvider } from '@kbn/custom-icons'; import { findInventoryModel } from '@kbn/metrics-data-access-plugin/common'; +import { EuiToolTip } from '@elastic/eui'; +import { EuiBadge } from '@elastic/eui'; import { useKibanaContextForPlugin } from '../../../../hooks/use_kibana'; import { createInventoryMetricFormatter } from '../../inventory_view/lib/create_inventory_metric_formatter'; import { EntryTitle } from '../components/table/entry_title'; @@ -44,6 +46,7 @@ interface HostMetadata { export type HostNodeRow = HostMetadata & HostMetrics & { name: string; + alertsCount?: number; }; /** @@ -54,7 +57,7 @@ const formatMetric = (type: InfraAssetMetricType, value: number | undefined | nu }; const buildItemsList = (nodes: InfraAssetMetricsItem[]): HostNodeRow[] => { - return nodes.map(({ metrics, metadata, name }) => { + return nodes.map(({ metrics, metadata, name, alertsCount }) => { const metadataKeyValue = metadata.reduce( (acc, curr) => ({ ...acc, @@ -79,12 +82,14 @@ const buildItemsList = (nodes: InfraAssetMetricsItem[]): HostNodeRow[] => { }), {} as HostMetrics ), + + alertsCount: alertsCount ?? 0, }; }); }; -const isTitleColumn = (cell: any): cell is HostNodeRow['title'] => { - return typeof cell === 'object' && cell && 'name' in cell; +const isTitleColumn = (cell: HostNodeRow[keyof HostNodeRow]): cell is HostNodeRow['title'] => { + return cell !== null && typeof cell === 'object' && cell && 'name' in cell; }; const sortValues = (aValue: any, bValue: any, { direction }: Sorting) => { @@ -124,6 +129,8 @@ export const useHostsTable = () => { const [selectedItems, setSelectedItems] = useState([]); const { hostNodes } = useHostsViewContext(); + const displayAlerts = hostNodes.some((item) => 'alertsCount' in item); + const { value: formulas } = useAsync(() => inventoryModel.metrics.getFormulas()); const [{ detailsItemId, pagination, sorting }, setProperties] = useHostsTableUrlState(); @@ -221,6 +228,39 @@ export const useHostsTable = () => { }, ], }, + ...(displayAlerts + ? [ + { + name: TABLE_COLUMN_LABEL.alertsCount, + field: 'alertsCount', + sortable: true, + 'data-test-subj': 'hostsView-tableRow-alertsCount', + render: (alertsCount: HostNodeRow['alertsCount'], row: HostNodeRow) => { + if (!alertsCount) { + return null; + } + return ( + + { + setProperties({ detailsItemId: row.id === detailsItemId ? null : row.id }); + }} + onClickAriaLabel={TABLE_COLUMN_LABEL.alertsCount} + iconOnClick={() => { + setProperties({ detailsItemId: row.id === detailsItemId ? null : row.id }); + }} + iconOnClickAriaLabel={TABLE_COLUMN_LABEL.alertsCount} + > + {alertsCount} + + + ); + }, + }, + ] + : []), { name: TABLE_COLUMN_LABEL.title, field: 'title', @@ -315,7 +355,6 @@ export const useHostsTable = () => { 'data-test-subj': 'hostsView-tableRow-rx', render: (avg: number) => formatMetric('rx', avg), align: 'right', - width: '120px', }, { name: ( @@ -330,7 +369,6 @@ export const useHostsTable = () => { 'data-test-subj': 'hostsView-tableRow-tx', render: (avg: number) => formatMetric('tx', avg), align: 'right', - width: '120px', }, ], [ @@ -344,6 +382,7 @@ export const useHostsTable = () => { formulas?.tx.value, reportHostEntryClick, setProperties, + displayAlerts, ] ); diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table_url_state.ts b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table_url_state.ts index c1dcafefaccc3..dd53bd96dc185 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table_url_state.ts +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/hooks/use_hosts_table_url_state.ts @@ -18,8 +18,8 @@ import { DEFAULT_PAGE_SIZE, LOCAL_STORAGE_PAGE_SIZE_KEY } from '../constants'; export const GET_DEFAULT_TABLE_PROPERTIES: TableProperties = { detailsItemId: null, sorting: { - direction: 'asc', - field: 'name', + direction: 'desc', + field: 'alertsCount', }, pagination: { pageIndex: 0, diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/translations.ts b/x-pack/plugins/infra/public/pages/metrics/hosts/translations.ts index 304b1980d965c..9be99e1d70a8b 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/translations.ts +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/translations.ts @@ -8,6 +8,10 @@ import { i18n } from '@kbn/i18n'; export const TABLE_COLUMN_LABEL = { + alertsCount: i18n.translate('xpack.infra.hostsViewPage.table.alertsColumnHeader', { + defaultMessage: 'Active alerts', + }), + title: i18n.translate('xpack.infra.hostsViewPage.table.nameColumnHeader', { defaultMessage: 'Name', }), diff --git a/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts b/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts index 56b8fe29c85d6..398eaa0ccf3b8 100644 --- a/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts +++ b/x-pack/plugins/infra/server/lib/adapters/framework/adapter_types.ts @@ -22,7 +22,10 @@ import { PluginSetupContract as FeaturesPluginSetup } from '@kbn/features-plugin import { SpacesPluginSetup } from '@kbn/spaces-plugin/server'; import { PluginSetupContract as AlertingPluginContract } from '@kbn/alerting-plugin/server'; import { MlPluginSetup } from '@kbn/ml-plugin/server'; -import { RuleRegistryPluginSetupContract } from '@kbn/rule-registry-plugin/server'; +import { + RuleRegistryPluginSetupContract, + RuleRegistryPluginStartContract, +} from '@kbn/rule-registry-plugin/server'; import { ObservabilityPluginSetup } from '@kbn/observability-plugin/server'; import { LogsSharedPluginSetup, LogsSharedPluginStart } from '@kbn/logs-shared-plugin/server'; import { VersionedRouteConfig } from '@kbn/core-http-server'; @@ -59,6 +62,7 @@ export interface InfraServerPluginStartDeps { dataViews: DataViewsPluginStart; logsShared: LogsSharedPluginStart; profilingDataAccess?: ProfilingDataAccessPluginStart; + ruleRegistry: RuleRegistryPluginStartContract; apmDataAccess: ApmDataAccessPluginStart; } diff --git a/x-pack/plugins/infra/server/lib/alerting/common/utils.ts b/x-pack/plugins/infra/server/lib/alerting/common/utils.ts index 40b1ae35f3d5e..acec238176d9b 100644 --- a/x-pack/plugins/infra/server/lib/alerting/common/utils.ts +++ b/x-pack/plugins/infra/server/lib/alerting/common/utils.ts @@ -20,8 +20,10 @@ import { ES_FIELD_TYPES } from '@kbn/field-types'; import { set } from '@kbn/safer-lodash-set'; import { Alert } from '@kbn/alerts-as-data-utils'; import { ParsedExperimentalFields } from '@kbn/rule-registry-plugin/common/parse_experimental_fields'; -import { LINK_TO_METRICS_EXPLORER } from '../../../../common/alerting/metrics'; -import { getInventoryViewInAppUrl } from '../../../../common/alerting/metrics/alert_link'; +import { + getInventoryViewInAppUrl, + getMetricsViewInAppUrl, +} from '../../../../common/alerting/metrics/alert_link'; import { AlertExecutionDetails, InventoryMetricConditions, @@ -120,18 +122,20 @@ export const getAlertDetailsPageEnabledForApp = ( return config[appName].enabled; }; -export const getViewInInventoryAppUrl = ({ +export const getInventoryViewInAppUrlWithSpaceId = ({ basePath, criteria, nodeType, spaceId, timestamp, + hostName, }: { basePath: IBasePath; criteria: InventoryMetricConditions[]; nodeType: string; spaceId: string; timestamp: string; + hostName?: string; }) => { const { metric, customMetric } = criteria[0]; @@ -142,6 +146,7 @@ export const getViewInInventoryAppUrl = ({ [`${ALERT_RULE_PARAMETERS}.criteria.customMetric.field`]: [customMetric?.field], [`${ALERT_RULE_PARAMETERS}.nodeType`]: [nodeType], [TIMESTAMP]: timestamp, + [HOST_NAME]: hostName, }; return addSpaceIdToPath( @@ -151,8 +156,28 @@ export const getViewInInventoryAppUrl = ({ ); }; -export const getViewInMetricsAppUrl = (basePath: IBasePath, spaceId: string) => - addSpaceIdToPath(basePath.publicBaseUrl, spaceId, LINK_TO_METRICS_EXPLORER); +export const getMetricsViewInAppUrlWithSpaceId = ({ + basePath, + spaceId, + timestamp, + hostName, +}: { + basePath: IBasePath; + spaceId: string; + timestamp: string; + hostName?: string; +}) => { + const fields = { + [TIMESTAMP]: timestamp, + [HOST_NAME]: hostName, + }; + + return addSpaceIdToPath( + basePath.publicBaseUrl, + spaceId, + getMetricsViewInAppUrl(parseTechnicalFields(fields, true)) + ); +}; export const KUBERNETES_POD_UID = 'kubernetes.pod.uid'; export const NUMBER_OF_DOCUMENTS = 10; diff --git a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts index ce2f66645bf1d..8de485b60fd7e 100644 --- a/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts +++ b/x-pack/plugins/infra/server/lib/alerting/inventory_metric_threshold/inventory_metric_threshold_executor.ts @@ -37,7 +37,7 @@ import { createScopedLogger, flattenAdditionalContext, getContextForRecoveredAlerts, - getViewInInventoryAppUrl, + getInventoryViewInAppUrlWithSpaceId, UNGROUPED_FACTORY_KEY, } from '../common/utils'; import { evaluateCondition, ConditionResult } from './evaluate_condition'; @@ -149,7 +149,7 @@ export const createInventoryMetricThresholdExecutor = (libs: InfraBackendLibs) = reason, timestamp: startedAt.toISOString(), value: null, - viewInAppUrl: getViewInInventoryAppUrl({ + viewInAppUrl: getInventoryViewInAppUrlWithSpaceId({ basePath: libs.basePath, criteria, nodeType, @@ -286,12 +286,13 @@ export const createInventoryMetricThresholdExecutor = (libs: InfraBackendLibs) = value: mapToConditionsLookup(results, (result) => formatMetric(result[group].metric, result[group].currentValue) ), - viewInAppUrl: getViewInInventoryAppUrl({ + viewInAppUrl: getInventoryViewInAppUrlWithSpaceId({ basePath: libs.basePath, criteria, nodeType, timestamp: indexedStartedAt, spaceId, + hostName: additionalContext?.host?.name, }), ...additionalContext, }; @@ -323,12 +324,13 @@ export const createInventoryMetricThresholdExecutor = (libs: InfraBackendLibs) = metric: mapToConditionsLookup(criteria, (c) => c.metric), threshold: mapToConditionsLookup(criteria, (c) => c.threshold), timestamp: startedAt.toISOString(), - viewInAppUrl: getViewInInventoryAppUrl({ + viewInAppUrl: getInventoryViewInAppUrlWithSpaceId({ basePath: libs.basePath, criteria, nodeType, timestamp: indexedStartedAt, spaceId, + hostName: additionalContext?.host?.name, }), originalAlertState: translateActionGroupToAlertState(originalActionGroup), originalAlertStateWasALERT: originalActionGroup === FIRED_ACTIONS_ID, diff --git a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts index 830e50d04f5c7..a4601bdbfd742 100644 --- a/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts +++ b/x-pack/plugins/infra/server/lib/alerting/metric_threshold/metric_threshold_executor.ts @@ -33,7 +33,7 @@ import { createScopedLogger, AdditionalContext, getContextForRecoveredAlerts, - getViewInMetricsAppUrl, + getMetricsViewInAppUrlWithSpaceId, UNGROUPED_FACTORY_KEY, hasAdditionalContext, validGroupByForContext, @@ -171,7 +171,6 @@ export const createMetricThresholdExecutor = const { fromKueryExpression } = await import('@kbn/es-query'); fromKueryExpression(params.filterQueryText); } catch (e) { - logger.error(e.message); const timestamp = startedAt.toISOString(); const actionGroupId = FIRED_ACTIONS_ID; // Change this to an Error action group when able const reason = buildInvalidQueryAlertReason(params.filterQueryText); @@ -182,7 +181,11 @@ export const createMetricThresholdExecutor = reason, timestamp, value: null, - viewInAppUrl: getViewInMetricsAppUrl(libs.basePath, spaceId), + viewInAppUrl: getMetricsViewInAppUrlWithSpaceId({ + basePath: libs.basePath, + spaceId, + timestamp, + }), }; await alertReporter(UNGROUPED_FACTORY_KEY, reason, actionGroupId, alertContext); @@ -356,7 +359,12 @@ export const createMetricThresholdExecutor = } return formatAlertResult(evaluation).currentValue; }), - viewInAppUrl: getViewInMetricsAppUrl(libs.basePath, spaceId), + viewInAppUrl: getMetricsViewInAppUrlWithSpaceId({ + basePath: libs.basePath, + spaceId, + timestamp, + hostName: additionalContext?.host?.name, + }), ...additionalContext, }; @@ -407,7 +415,12 @@ export const createMetricThresholdExecutor = }), timestamp, threshold: mapToConditionsLookup(criteria, (c) => c.threshold), - viewInAppUrl: getViewInMetricsAppUrl(libs.basePath, spaceId), + viewInAppUrl: getMetricsViewInAppUrlWithSpaceId({ + basePath: libs.basePath, + spaceId, + timestamp: indexedStartedAt, + hostName: additionalContext?.host?.name, + }), originalAlertState: translateActionGroupToAlertState(originalActionGroup), originalAlertStateWasALERT: originalActionGroup === FIRED_ACTIONS.id, diff --git a/x-pack/plugins/infra/server/routes/infra/index.ts b/x-pack/plugins/infra/server/routes/infra/index.ts index d98e8034e6207..4d8fd931082c1 100644 --- a/x-pack/plugins/infra/server/routes/infra/index.ts +++ b/x-pack/plugins/infra/server/routes/infra/index.ts @@ -14,6 +14,7 @@ import { GetInfraMetricsResponsePayloadRT, } from '../../../common/http_api/infra'; import { InfraBackendLibs } from '../../lib/infra_types'; +import { getInfraAlertsClient } from './lib/helpers/get_infra_alerts_client'; import { getHosts } from './lib/host/get_hosts'; export const initInfraMetricsRoute = (libs: InfraBackendLibs) => { @@ -35,10 +36,20 @@ export const initInfraMetricsRoute = (libs: InfraBackendLibs) => { try { const searchClient = data.search.asScoped(request); + const alertsClient = await getInfraAlertsClient({ + getStartServices: libs.getStartServices, + request, + }); const soClient = savedObjects.getScopedClient(request); const source = await libs.sources.getSourceConfiguration(soClient, params.sourceId); - const hosts = await getHosts({ searchClient, sourceConfig: source.configuration, params }); + const hosts = await getHosts({ + searchClient, + alertsClient, + sourceConfig: source.configuration, + params, + }); + return response.ok({ body: GetInfraMetricsResponsePayloadRT.encode(hosts), }); diff --git a/x-pack/plugins/infra/server/routes/infra/lib/helpers/get_infra_alerts_client.ts b/x-pack/plugins/infra/server/routes/infra/lib/helpers/get_infra_alerts_client.ts new file mode 100644 index 0000000000000..7110a822fb8a4 --- /dev/null +++ b/x-pack/plugins/infra/server/routes/infra/lib/helpers/get_infra_alerts_client.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 { isEmpty } from 'lodash'; +import { ESSearchRequest, InferSearchResponseOf } from '@kbn/es-types'; +import { ParsedTechnicalFields } from '@kbn/rule-registry-plugin/common'; +import { KibanaRequest } from '@kbn/core/server'; +import type { InfraPluginStartServicesAccessor } from '../../../../types'; + +type RequiredParams = ESSearchRequest & { + size: number; + track_total_hits: boolean | number; +}; + +export type InfraAlertsClient = Awaited>; + +export async function getInfraAlertsClient({ + getStartServices, + request, +}: { + getStartServices: InfraPluginStartServicesAccessor; + request: KibanaRequest; +}) { + const [, { ruleRegistry }] = await getStartServices(); + const alertsClient = await ruleRegistry.getRacClientWithRequest(request); + const infraAlertsIndices = await alertsClient.getAuthorizedAlertsIndices(['infrastructure']); + + if (!infraAlertsIndices || isEmpty(infraAlertsIndices)) { + throw Error('No alert indices exist for "infrastrucuture"'); + } + + return { + search( + searchParams: TParams + ): Promise> { + return alertsClient.find({ + ...searchParams, + index: infraAlertsIndices.join(','), + }) as Promise; + }, + }; +} diff --git a/x-pack/plugins/infra/server/routes/infra/lib/host/get_hosts.ts b/x-pack/plugins/infra/server/routes/infra/lib/host/get_hosts.ts index 6d44224661750..6eab207f7fbae 100644 --- a/x-pack/plugins/infra/server/routes/infra/lib/host/get_hosts.ts +++ b/x-pack/plugins/infra/server/routes/infra/lib/host/get_hosts.ts @@ -11,6 +11,7 @@ import { mapToApiResponse } from '../mapper'; import { hasFilters } from '../utils'; import { GetHostsArgs } from '../types'; import { getAllHosts } from './get_all_hosts'; +import { getHostsAlertsCount } from './get_hosts_alerts_count'; export const getHosts = async (args: GetHostsArgs): Promise => { const runFilterQuery = hasFilters(args.params.query); @@ -23,8 +24,23 @@ export const getHosts = async (args: GetHostsArgs): Promise { diff --git a/x-pack/plugins/infra/server/routes/infra/lib/host/get_hosts_alerts_count.ts b/x-pack/plugins/infra/server/routes/infra/lib/host/get_hosts_alerts_count.ts new file mode 100644 index 0000000000000..d1e17e8d133ee --- /dev/null +++ b/x-pack/plugins/infra/server/routes/infra/lib/host/get_hosts_alerts_count.ts @@ -0,0 +1,89 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { kqlQuery, termQuery, termsQuery } from '@kbn/observability-plugin/server'; +import { + ALERT_RULE_PRODUCER, + ALERT_STATUS, + ALERT_STATUS_ACTIVE, + ALERT_UUID, +} from '@kbn/rule-data-utils'; +import { INFRA_ALERT_FEATURE_ID } from '../../../../../common/constants'; +import { BUCKET_KEY, MAX_SIZE } from '../constants'; +import { InfraAlertsClient } from '../helpers/get_infra_alerts_client'; + +export type HostAlertsResponse = Array<{ + name: string; + alertsCount: number; +}>; + +export async function getHostsAlertsCount({ + alertsClient, + hostNamesShortList, + kuery, + from, + to, + maxNumHosts = MAX_SIZE, +}: { + alertsClient: InfraAlertsClient; + hostNamesShortList: string[]; + kuery?: string; + from: string; + to: string; + maxNumHosts?: number; +}): Promise { + const rangeQuery = [ + { + range: { + 'kibana.alert.time_range': { + gte: from, + lte: to, + format: 'strict_date_optional_time', + }, + }, + }, + ]; + const params = { + size: 0, + track_total_hits: false, + query: { + bool: { + filter: [ + ...termQuery(ALERT_RULE_PRODUCER, INFRA_ALERT_FEATURE_ID), + ...termQuery(ALERT_STATUS, ALERT_STATUS_ACTIVE), + ...termsQuery(BUCKET_KEY, ...hostNamesShortList), + ...rangeQuery, + ...kqlQuery(kuery), + ], + }, + }, + aggs: { + hosts: { + terms: { + field: BUCKET_KEY, + size: maxNumHosts, + }, + aggs: { + alerts_count: { + cardinality: { + field: ALERT_UUID, + }, + }, + }, + }, + }, + }; + + const result = await alertsClient.search(params); + + const filterAggBuckets = result.aggregations?.hosts.buckets ?? []; + + return filterAggBuckets.map((bucket) => ({ + name: bucket.key as string, + alertsCount: bucket.alerts_count.value, + })); +} diff --git a/x-pack/plugins/infra/server/routes/infra/lib/mapper.ts b/x-pack/plugins/infra/server/routes/infra/lib/mapper.ts index 89d2e71b364f9..cc922d42c8991 100644 --- a/x-pack/plugins/infra/server/routes/infra/lib/mapper.ts +++ b/x-pack/plugins/infra/server/routes/infra/lib/mapper.ts @@ -20,10 +20,12 @@ import { HostsMetricsSearchValueRT, } from './types'; import { METADATA_AGGREGATION_NAME } from './constants'; +import { HostAlertsResponse } from './host/get_hosts_alerts_count'; export const mapToApiResponse = ( params: GetInfraMetricsRequestBodyPayload, - buckets?: HostsMetricsSearchBucket[] | undefined + buckets?: HostsMetricsSearchBucket[] | undefined, + alertsCountResponse?: HostAlertsResponse ): GetInfraMetricsResponsePayload => { if (!buckets) { return { @@ -32,12 +34,20 @@ export const mapToApiResponse = ( }; } - const hosts = buckets.map((bucket) => { - const metrics = convertMetricBucket(params, bucket); - const metadata = convertMetadataBucket(bucket); + const hosts = buckets + .map((bucket) => { + const metrics = convertMetricBucket(params, bucket); + const metadata = convertMetadataBucket(bucket); - return { name: bucket.key as string, metrics, metadata }; - }); + const cpuValue = metrics.find((metric) => metric.name === 'cpu')?.value ?? 0; + const alerts = alertsCountResponse?.find((item) => item.name === bucket.key); + + return { name: bucket.key as string, metrics, metadata, cpuValue, ...alerts }; + }) + .sort((a, b) => { + return b.cpuValue - a.cpuValue; + }) + .map(({ cpuValue, ...rest }) => rest); return { type: params.type, diff --git a/x-pack/plugins/infra/server/routes/infra/lib/types.ts b/x-pack/plugins/infra/server/routes/infra/lib/types.ts index d9800112e7dfe..ab097e91b2b09 100644 --- a/x-pack/plugins/infra/server/routes/infra/lib/types.ts +++ b/x-pack/plugins/infra/server/routes/infra/lib/types.ts @@ -12,6 +12,7 @@ import { InfraStaticSourceConfiguration } from '../../../../common/source_config import { GetInfraMetricsRequestBodyPayload } from '../../../../common/http_api/infra'; import { BasicMetricValueRT, TopMetricsTypeRT } from '../../../lib/metrics/types'; +import { InfraAlertsClient } from './helpers/get_infra_alerts_client'; export const FilteredMetricsTypeRT = rt.type({ doc_count: rt.number, @@ -76,6 +77,7 @@ export interface HostsMetricsAggregationQueryConfig { export interface GetHostsArgs { searchClient: ISearchClient; + alertsClient: InfraAlertsClient; sourceConfig: InfraStaticSourceConfiguration; params: GetInfraMetricsRequestBodyPayload; } diff --git a/x-pack/plugins/lens/common/constants.ts b/x-pack/plugins/lens/common/constants.ts index 4274bdb17c747..955d260abe8a6 100644 --- a/x-pack/plugins/lens/common/constants.ts +++ b/x-pack/plugins/lens/common/constants.ts @@ -88,4 +88,4 @@ export function getFullPath(id?: string) { return `/app/${PLUGIN_ID}${id ? getEditPath(id) : getBasePath()}`; } -export const COLOR_MAPPING_OFF_BY_DEFAULT = true; +export const COLOR_MAPPING_OFF_BY_DEFAULT = false; diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/get_edit_lens_configuration.tsx b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/get_edit_lens_configuration.tsx index 1ac76928e011c..c243ac9b84193 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/get_edit_lens_configuration.tsx +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/get_edit_lens_configuration.tsx @@ -120,6 +120,7 @@ export async function getEditLensConfiguration( hidesSuggestions, onApplyCb, onCancelCb, + hideTimeFilterInfo, }: EditLensConfigurationProps) => { if (!lensServices || !datasourceMap || !visualizationMap) { return ; @@ -217,6 +218,7 @@ export async function getEditLensConfiguration( deletePanel, onApplyCb, onCancelCb, + hideTimeFilterInfo, }; return getWrapper( diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx index 3e2bf4f60aa2b..d9f4d080b0cdf 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/lens_configuration_flyout.tsx @@ -69,6 +69,7 @@ export function LensEditConfigurationFlyout({ hidesSuggestions, onApplyCb, onCancelCb, + hideTimeFilterInfo, }: EditConfigPanelProps) { const euiTheme = useEuiTheme(); const previousAttributes = useRef(attributes); @@ -431,6 +432,7 @@ export function LensEditConfigurationFlyout({ expandCodeEditor={(status: boolean) => {}} isCodeEditorExpanded detectTimestamp={Boolean(adHocDataViews?.[0]?.timeFieldName)} + hideTimeFilterInfo={hideTimeFilterInfo} errors={errors} warning={ suggestsLimitedColumns diff --git a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts index 4439cb1b791c1..d974bfa634776 100644 --- a/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts +++ b/x-pack/plugins/lens/public/app_plugin/shared/edit_on_the_fly/types.ts @@ -86,6 +86,9 @@ export interface EditConfigPanelProps { onApplyCb?: (input: TypedLensByValueInput['attributes']) => void; /** Optional callback for cancel flyout button */ onCancelCb?: () => void; + // in cases where the embeddable is not filtered by time + // (e.g. through unified search) set this property to true + hideTimeFilterInfo?: boolean; } export interface LayerConfigurationProps { diff --git a/x-pack/plugins/lens/public/datasources/common/field_item.test.tsx b/x-pack/plugins/lens/public/datasources/common/field_item.test.tsx index 72686f0faf69f..afd178a64ece5 100644 --- a/x-pack/plugins/lens/public/datasources/common/field_item.test.tsx +++ b/x-pack/plugins/lens/public/datasources/common/field_item.test.tsx @@ -140,7 +140,8 @@ describe('Lens Field Item', () => { }, documentField, ], - } as IndexPattern; + isTimeBased: jest.fn(), + } as unknown as IndexPattern; defaultProps = { indexPattern, diff --git a/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/dimension_panel.test.tsx b/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/dimension_panel.test.tsx index 86ac619e9dcaa..dedd7c2f38ef5 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/dimension_panel.test.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/dimension_panel.test.tsx @@ -7,7 +7,8 @@ import { ReactWrapper, ShallowWrapper } from 'enzyme'; import React, { ChangeEvent } from 'react'; -import { act } from 'react-dom/test-utils'; +import { screen, act, render, within } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { findTestSubject } from '@elastic/eui/lib/test'; import { EuiComboBox, @@ -282,6 +283,30 @@ describe('FormBasedDimensionEditor', () => { jest.clearAllMocks(); }); + const renderDimensionPanel = (propsOverrides = {}) => { + const Wrapper: React.FC<{ + children: React.ReactNode; + }> = ({ children }) => { + return {children}; + }; + + const rtlRender = render( + , + { + wrapper: Wrapper, + } + ); + + const getVisibleFieldSelectOptions = () => { + const optionsList = screen.getByRole('dialog'); + return within(optionsList) + .getAllByRole('option') + .map((option) => option.textContent); + }; + + return { ...rtlRender, getVisibleFieldSelectOptions }; + }; + let wrapper: ReactWrapper | ShallowWrapper; afterEach(() => { @@ -293,71 +318,67 @@ describe('FormBasedDimensionEditor', () => { it('should call the filterOperations function', () => { const filterOperations = jest.fn().mockReturnValue(true); - wrapper = mountWithServices( - - ); - + renderDimensionPanel({ filterOperations }); expect(filterOperations).toBeCalled(); }); it('should show field select', () => { - wrapper = mountWithServices(); - - expect(getFieldSelectComboBox(wrapper)).toHaveLength(1); + renderDimensionPanel(); + expect(screen.getByTestId('indexPattern-dimension-field')).toBeInTheDocument(); }); it('should not show field select on fieldless operation', () => { - wrapper = mountWithServices( - - ); + renderDimensionPanel({ + state: getStateWithColumns({ + col1: { + label: 'Filters', + dataType: 'string', + isBucketed: false, - expect(getFieldSelectComboBox(wrapper)).toHaveLength(0); + // Private + operationType: 'filters', + params: { filters: [] }, + } as FiltersIndexPatternColumn, + }), + }); + expect(screen.queryByTestId('indexPattern-dimension-field')).not.toBeInTheDocument(); }); it('should not show any choices if the filter returns false', () => { - wrapper = mountWithServices( - false} - /> - ); - - expect(getFieldSelectComboBox(wrapper).prop('options')!).toHaveLength(0); + renderDimensionPanel({ + columnId: 'col2', + filterOperations: () => false, + }); + userEvent.click(screen.getByRole('button', { name: /open list of options/i })); + expect(screen.getByText(/There aren't any options available/)).toBeInTheDocument(); }); it('should list all field names and document as a whole in prioritized order', () => { - wrapper = mountWithServices(); - - const options = getFieldSelectComboBox(wrapper).prop('options'); + const { getVisibleFieldSelectOptions } = renderDimensionPanel(); - expect(options).toHaveLength(3); + const comboBoxButton = screen.getAllByRole('button', { name: /open list of options/i })[0]; + const comboBoxInput = screen.getAllByTestId('comboBoxSearchInput')[0]; + userEvent.click(comboBoxButton); - expect(options![0].label).toEqual('Records'); - expect(options![1].options!.map(({ label }) => label)).toEqual([ + const allOptions = [ + 'Records', 'timestampLabel', 'bytes', 'memory', 'source', - ]); + // these fields are generated to test the issue #148062 about fields that are using JS Object method names + ...Object.getOwnPropertyNames(Object.getPrototypeOf({})).sort(), + ]; + expect(allOptions.slice(0, 7)).toEqual(getVisibleFieldSelectOptions()); - // these fields are generated to test the issue #148062 about fields that are using JS Object method names - expect(options![2].options!.map(({ label }) => label)).toEqual( - Object.getOwnPropertyNames(Object.getPrototypeOf({})).sort() - ); + // keep hitting arrow down to scroll to the next options (react-window only renders visible options) + userEvent.type(comboBoxInput, '{ArrowDown}'.repeat(12)); + + expect(getVisibleFieldSelectOptions()).toEqual(allOptions.slice(5, 16)); + + // press again to go back to the beginning + userEvent.type(comboBoxInput, '{ArrowDown}'); + expect(getVisibleFieldSelectOptions()).toEqual(allOptions.slice(0, 9)); }); it('should hide fields that have no data', () => { @@ -1783,7 +1804,11 @@ describe('FormBasedDimensionEditor', () => { }); expect(setState.mock.calls[0]).toEqual([expect.any(Function), { isDimensionComplete: true }]); - expect(setState.mock.calls[0][0](props.state)).toEqual({ + let newState = props.state; + act(() => { + newState = setState.mock.calls[0][0](props.state); + }); + expect(newState).toEqual({ ...props.state, layers: { first: { diff --git a/x-pack/plugins/lens/public/datasources/form_based/utils.test.tsx b/x-pack/plugins/lens/public/datasources/form_based/utils.test.tsx index 7d7b2d9b59f83..3302aac2a5579 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/utils.test.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/utils.test.tsx @@ -310,7 +310,11 @@ describe('indexpattern_datasource utils', () => { ]), [ `${rootId}X${formulaParts.length}`, - { operationType: 'math', references: formulaParts.map((_, i) => `${rootId}X${i}`) }, + { + operationType: 'math', + references: formulaParts.map((_, i) => `${rootId}X${i}`), + label: 'Part of formula', + }, ], ]); } diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/data_panel_wrapper.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/data_panel_wrapper.tsx index b9ad0df04aaa3..da78db7ed0bc6 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/data_panel_wrapper.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/data_panel_wrapper.tsx @@ -194,7 +194,9 @@ export const DataPanelWrapper = memo((props: DataPanelWrapperProps) => { <> {DataPanelComponent && ( -
{DataPanelComponent(datasourceProps)}
+
+ {DataPanelComponent(datasourceProps)} +
)} ); diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx index 7cd48d6beb03d..d99f6418870fa 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/editor_frame.test.tsx @@ -7,31 +7,18 @@ import React, { useEffect } from 'react'; import { ReactWrapper } from 'enzyme'; -import faker from 'faker'; - -// Tests are executed in a jsdom environment who does not have sizing methods, -// thus the AutoSizer will always compute a 0x0 size space -// Mock the AutoSizer inside EuiSelectable (Chart Switch) and return some dimensions > 0 -jest.mock('react-virtualized-auto-sizer', () => { - return function (props: { - children: (dimensions: { width: number; height: number }) => React.ReactNode; - disableHeight?: boolean; - }) { - const { children, disableHeight, ...otherProps } = props; - return ( - // js-dom may complain that a non-DOM attributes are used when appending props - // Handle the disableHeight case using native DOM styling -
- {children({ width: 100, height: 100 })} -
- ); - }; -}); +import { screen, fireEvent, within, waitFor } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; -import { EuiPanel, EuiToolTip } from '@elastic/eui'; import { EditorFrame, EditorFrameProps } from './editor_frame'; -import { DatasourcePublicAPI, DatasourceSuggestion, Visualization } from '../../types'; -import { act } from 'react-dom/test-utils'; +import { + DatasourceMap, + DatasourcePublicAPI, + DatasourceSuggestion, + Visualization, + VisualizationMap, +} from '../../types'; +import { act } from '@testing-library/react'; import { coreMock } from '@kbn/core/public/mocks'; import { createMockVisualization, @@ -42,15 +29,13 @@ import { renderWithReduxStore, } from '../../mocks'; import { inspectorPluginMock } from '@kbn/inspector-plugin/public/mocks'; -import { ReactExpressionRendererType } from '@kbn/expressions-plugin/public'; import { DragDrop, useDragDropContext } from '@kbn/dom-drag-drop'; import { uiActionsPluginMock } from '@kbn/ui-actions-plugin/public/mocks'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { expressionsPluginMock } from '@kbn/expressions-plugin/public/mocks'; import { mockDataPlugin, mountWithProvider } from '../../mocks'; -import { setState } from '../../state_management'; +import { LensAppState, setState } from '../../state_management'; import { getLensInspectorService } from '../../lens_inspector_service'; -import { toExpression } from '@kbn/interpreter'; import { createIndexPatternServiceMock } from '../../mocks/data_views_service_mock'; import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; import { EventAnnotationServiceType } from '@kbn/event-annotation-plugin/public'; @@ -105,6 +90,7 @@ function getDefaultProps() { indexPatternService: createIndexPatternServiceMock(), getUserMessages: () => [], addUserMessages: () => () => {}, + ExpressionRenderer: createExpressionRendererMock(), }; return defaultProps; } @@ -116,207 +102,172 @@ describe('editor_frame', () => { let mockVisualization2: jest.Mocked; let mockDatasource2: DatasourceMock; - let expressionRendererMock: ReactExpressionRendererType; + let visualizationMap: VisualizationMap; + let datasourceMap: DatasourceMap; beforeEach(() => { - mockVisualization = { - ...createMockVisualization(), - id: 'testVis', - visualizationTypes: [ - { - icon: 'empty', - id: 'testVis', - label: faker.lorem.word(), - groupLabel: 'testVisGroup', - }, - ], - }; - mockVisualization2 = { - ...createMockVisualization(), - id: 'testVis2', - visualizationTypes: [ - { - icon: 'empty', - id: 'testVis2', - label: 'TEST2', - groupLabel: 'testVis2Group', - }, - ], - }; - - mockVisualization.getLayerIds.mockReturnValue(['first']); - mockVisualization2.getLayerIds.mockReturnValue(['second']); + mockVisualization = createMockVisualization(); + mockVisualization2 = createMockVisualization('testVis2', ['second']); mockDatasource = createMockDatasource(); mockDatasource2 = createMockDatasource('testDatasource2'); + mockDatasource.getLayers.mockReturnValue(['first']); + mockDatasource.getDatasourceSuggestionsFromCurrentState.mockReturnValue([ + { + state: {}, + table: { + columns: [], + isMultiRow: true, + layerId: 'first', + changeType: 'unchanged', + }, + keptLayerIds: [], + }, + ]); + + visualizationMap = { + testVis: mockVisualization, + testVis2: mockVisualization2, + }; - expressionRendererMock = createExpressionRendererMock(); + datasourceMap = { + testDatasource: mockDatasource, + testDatasource2: mockDatasource2, + }; }); - describe('initialization', () => { - it('should not render something before all datasources are initialized', async () => { - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: mockVisualization, - }, - datasourceMap: { - testDatasource: mockDatasource, - }, - - ExpressionRenderer: expressionRendererMock, - }; - const { lensStore } = await mountWithProvider(, { + const renderEditorFrame = ( + propsOverrides: Partial = {}, + { preloadedStateOverrides }: { preloadedStateOverrides: Partial } = { + preloadedStateOverrides: {}, + } + ) => { + const { store, ...rtlRender } = renderWithReduxStore( + , + {}, + { preloadedState: { activeDatasourceId: 'testDatasource', - datasourceStates: { - testDatasource: { - isLoading: true, - state: { - internalState1: '', - }, - }, - }, - }, - }); - expect(mockDatasource.DataPanelComponent).not.toHaveBeenCalled(); - lensStore.dispatch( - setState({ + visualization: { activeId: mockVisualization.id, state: 'initialState' }, datasourceStates: { testDatasource: { isLoading: false, state: { - internalState1: '', + internalState: 'datasourceState', }, }, }, - }) - ); - expect(mockDatasource.DataPanelComponent).toHaveBeenCalled(); - }); - - it('should initialize visualization state and render config panel', async () => { - const initialState = {}; - mockDatasource.getLayers.mockReturnValue(['first']); - - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: { ...mockVisualization, initialize: () => initialState }, - }, - datasourceMap: { - testDatasource: { - ...mockDatasource, - initialize: () => Promise.resolve(), - }, + ...preloadedStateOverrides, }, + storeDeps: mockStoreDeps({ datasourceMap, visualizationMap }), + } + ); - ExpressionRenderer: expressionRendererMock, - }; + const openChartSwitch = () => { + userEvent.click(screen.getByTestId('lnsChartSwitchPopover')); + }; - await mountWithProvider(, { - preloadedState: { - visualization: { activeId: 'testVis', state: initialState }, - }, + const waitForChartSwitchClosed = () => { + waitFor(() => { + expect(screen.queryByTestId('lnsChartSwitchList')).not.toBeInTheDocument(); }); + }; - expect(mockVisualization.getConfiguration).toHaveBeenCalledWith( - expect.objectContaining({ state: initialState }) - ); - }); - - let instance: ReactWrapper; - - it('should render the resulting expression using the expression renderer', async () => { - mockDatasource.getLayers.mockReturnValue(['first']); - - const props: EditorFrameProps = { - ...getDefaultProps(), - visualizationMap: { - testVis: { - ...mockVisualization, - toExpression: (state, datasourceLayers, attrs, datasourceExpressionsByLayers = {}) => - toExpression({ - type: 'expression', - chain: [ - ...(datasourceExpressionsByLayers.first?.chain ?? []), - { type: 'function', function: 'testVis', arguments: {} }, - ], - }), - }, - }, - datasourceMap: { - testDatasource: { - ...mockDatasource, - toExpression: () => 'datasource', - }, - }, + const getMenuItem = (subType: string) => { + const list = screen.getByTestId('lnsChartSwitchList'); + return within(list).getByTestId(`lnsChartSwitchPopover_${subType}`); + }; - ExpressionRenderer: expressionRendererMock, - }; - instance = ( - await mountWithProvider(, { - preloadedState: { - visualization: { activeId: 'testVis', state: {} }, + const switchToVis = (subType: string) => { + fireEvent.click(getMenuItem(subType)); + }; + const queryLayerPanel = () => screen.queryByTestId('lns-layerPanel-0'); + const queryWorkspacePanel = () => screen.queryByTestId('lnsWorkspace'); + const queryDataPanel = () => screen.queryByTestId('lnsDataPanelWrapper'); + + return { + ...rtlRender, + store, + switchToVis, + getMenuItem, + openChartSwitch, + queryLayerPanel, + queryWorkspacePanel, + queryDataPanel, + waitForChartSwitchClosed, + simulateLoadingDatasource: () => + store.dispatch( + setState({ datasourceStates: { testDatasource: { isLoading: false, state: { - internalState1: '', + internalState: 'datasourceState', + }, + }, + }, + }) + ), + }; + }; + + describe('initialization', () => { + it('should render workspace panel, data panel and layer panel when all datasources are initialized', async () => { + const { queryWorkspacePanel, queryDataPanel, queryLayerPanel, simulateLoadingDatasource } = + renderEditorFrame(undefined, { + preloadedStateOverrides: { + datasourceStates: { + testDatasource: { + isLoading: true, + state: { + internalState: 'datasourceState', }, }, }, }, - }) - ).instance; + }); - instance.update(); + expect(mockVisualization.getConfiguration).not.toHaveBeenCalled(); + expect(queryWorkspacePanel()).not.toBeInTheDocument(); + expect(queryDataPanel()).not.toBeInTheDocument(); + expect(queryLayerPanel()).not.toBeInTheDocument(); - expect(instance.find(expressionRendererMock).prop('expression')).toMatchInlineSnapshot(` - "datasource - | testVis" - `); + simulateLoadingDatasource(); + expect(mockVisualization.getConfiguration).toHaveBeenCalledWith( + expect.objectContaining({ state: 'initialState' }) + ); + + expect(queryWorkspacePanel()).toBeInTheDocument(); + expect(queryDataPanel()).toBeInTheDocument(); + expect(queryLayerPanel()).toBeInTheDocument(); + }); + it('should render the resulting expression using the expression renderer', async () => { + renderEditorFrame(); + expect(screen.getByTestId('lnsExpressionRenderer')).toHaveTextContent( + 'datasource_expression | testVis' + ); }); }); describe('state update', () => { it('should re-render config panel after state update', async () => { - mockDatasource.getLayers.mockReturnValue(['first']); - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: { ...mockVisualization, toExpression: () => null }, - }, - datasourceMap: { - testDatasource: mockDatasource, - }, + const { store } = renderEditorFrame(); + const updatedState = 'updatedVisState'; - ExpressionRenderer: expressionRendererMock, - }; - renderWithReduxStore( - , - {}, - { - preloadedState: { - activeDatasourceId: 'testDatasource', - visualization: { activeId: mockVisualization.id, state: {} }, - datasourceStates: { - testDatasource: { - isLoading: false, - state: '', - }, - }, + store.dispatch( + setState({ + visualization: { + activeId: mockVisualization.id, + state: updatedState, }, - } + }) ); - const updatedState = {}; - const setDatasourceState = (mockDatasource.DataPanelComponent as jest.Mock).mock.calls[0][0] - .setState; - act(() => { - setDatasourceState(updatedState); - }); - expect(mockVisualization.getConfiguration).toHaveBeenCalledTimes(3); expect(mockVisualization.getConfiguration).toHaveBeenLastCalledWith( expect.objectContaining({ @@ -326,20 +277,7 @@ describe('editor_frame', () => { }); it('should re-render data panel after state update', async () => { - mockDatasource.getLayers.mockReturnValue(['first']); - - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: mockVisualization, - }, - datasourceMap: { - testDatasource: mockDatasource, - }, - - ExpressionRenderer: expressionRendererMock, - }; - await mountWithProvider(); + renderEditorFrame(); const setDatasourceState = (mockDatasource.DataPanelComponent as jest.Mock).mock.calls[0][0] .setState; @@ -349,9 +287,8 @@ describe('editor_frame', () => { const updatedState = { title: 'shazm', }; - act(() => { - setDatasourceState(updatedState); - }); + + setDatasourceState(updatedState); expect(mockDatasource.DataPanelComponent).toHaveBeenCalledTimes(1); expect(mockDatasource.DataPanelComponent).toHaveBeenLastCalledWith( @@ -362,21 +299,7 @@ describe('editor_frame', () => { }); it('should re-render config panel with updated datasource api after datasource state update', async () => { - mockDatasource.getLayers.mockReturnValue(['first']); - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: mockVisualization, - }, - datasourceMap: { - testDatasource: mockDatasource, - }, - - ExpressionRenderer: expressionRendererMock, - }; - await mountWithProvider(, { - preloadedState: { visualization: { activeId: mockVisualization.id, state: {} } }, - }); + renderEditorFrame(); const updatedPublicAPI: DatasourcePublicAPI = { datasourceId: 'testDatasource', @@ -394,9 +317,8 @@ describe('editor_frame', () => { const setDatasourceState = (mockDatasource.DataPanelComponent as jest.Mock).mock.calls[0][0] .setState; - act(() => { - setDatasourceState('newState'); - }); + + setDatasourceState('newState'); expect(mockVisualization.getConfiguration).toHaveBeenCalledTimes(1); expect(mockVisualization.getConfiguration).toHaveBeenCalledWith( @@ -413,34 +335,10 @@ describe('editor_frame', () => { describe('datasource public api communication', () => { it('should give access to the datasource state in the datasource factory function', async () => { - const datasourceState = {}; - mockDatasource.initialize.mockReturnValue(datasourceState); - mockDatasource.getLayers.mockReturnValue(['first']); - - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: mockVisualization, - }, - datasourceMap: { - testDatasource: mockDatasource, - }, - - ExpressionRenderer: expressionRendererMock, - }; - await mountWithProvider(, { - preloadedState: { - datasourceStates: { - testDatasource: { - isLoading: false, - state: {}, - }, - }, - }, - }); + renderEditorFrame(); expect(mockDatasource.getPublicAPI).toHaveBeenCalledWith({ - state: datasourceState, + state: { internalState: 'datasourceState' }, layerId: 'first', indexPatterns: {}, }); @@ -448,75 +346,15 @@ describe('editor_frame', () => { }); describe('switching', () => { - let instance: ReactWrapper; - - function switchTo(subType: string) { - act(() => { - instance.find('[data-test-subj="lnsChartSwitchPopover"]').last().simulate('click'); - }); - - instance.update(); - - act(() => { - instance - .find(`[data-test-subj="lnsChartSwitchPopover_${subType}"]`) - .last() - .simulate('click'); - }); - } - - beforeEach(async () => { - mockVisualization2.initialize.mockReturnValue({ initial: true }); - mockDatasource.getLayers.mockReturnValue(['first', 'second']); - mockDatasource.getDatasourceSuggestionsFromCurrentState.mockReturnValue([ - { - state: {}, - table: { - columns: [], - isMultiRow: true, - layerId: 'first', - changeType: 'unchanged', - }, - keptLayerIds: [], - }, - ]); - - const visualizationMap = { - testVis: mockVisualization, - testVis2: mockVisualization2, - }; - - const datasourceMap = { - testDatasource: mockDatasource, - testDatasource2: mockDatasource2, - }; - - const props = { - ...getDefaultProps(), - visualizationMap, - datasourceMap, - ExpressionRenderer: expressionRendererMock, - }; - instance = ( - await mountWithProvider(, { - storeDeps: mockStoreDeps({ datasourceMap, visualizationMap }), - }) - ).instance; - - // necessary to flush elements to dom synchronously - instance.update(); - }); - - afterEach(() => { - instance.unmount(); - }); - it('should initialize other visualization on switch', async () => { - switchTo('testVis2'); + const { openChartSwitch, switchToVis } = renderEditorFrame(); + openChartSwitch(); + switchToVis('testVis2'); expect(mockVisualization2.initialize).toHaveBeenCalled(); }); it('should use suggestions to switch to new visualization', async () => { + const { openChartSwitch, switchToVis } = renderEditorFrame(); const initialState = { suggested: true }; mockVisualization2.initialize.mockReturnValueOnce({ initial: true }); mockVisualization2.getVisualizationTypeId.mockReturnValueOnce('testVis2'); @@ -528,9 +366,8 @@ describe('editor_frame', () => { previewIcon: 'empty', }, ]); - - switchTo('testVis2'); - + openChartSwitch(); + switchToVis('testVis2'); expect(mockVisualization2.getSuggestions).toHaveBeenCalled(); expect(mockVisualization2.initialize).toHaveBeenCalledWith(expect.anything(), initialState); expect(mockVisualization2.getConfiguration).toHaveBeenCalledWith( @@ -541,7 +378,9 @@ describe('editor_frame', () => { it('should fall back when switching visualizations if the visualization has no suggested use', async () => { mockVisualization2.initialize.mockReturnValueOnce({ initial: true }); - switchTo('testVis2'); + const { openChartSwitch, switchToVis, waitForChartSwitchClosed } = renderEditorFrame(); + openChartSwitch(); + switchToVis('testVis2'); expect(mockDatasource.publicAPIMock.getTableSpec).toHaveBeenCalled(); expect(mockVisualization2.getSuggestions).toHaveBeenCalled(); @@ -553,131 +392,80 @@ describe('editor_frame', () => { expect(mockVisualization2.getConfiguration).toHaveBeenCalledWith( expect.objectContaining({ state: { initial: true } }) ); + waitForChartSwitchClosed(); }); }); describe('suggestions', () => { it('should fetch suggestions of currently active datasource', async () => { - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: mockVisualization, - }, - datasourceMap: { - testDatasource: mockDatasource, - testDatasource2: mockDatasource2, - }, - - ExpressionRenderer: expressionRendererMock, - }; - await mountWithProvider(); - + renderEditorFrame(); expect(mockDatasource.getDatasourceSuggestionsFromCurrentState).toHaveBeenCalled(); expect(mockDatasource2.getDatasourceSuggestionsFromCurrentState).not.toHaveBeenCalled(); }); it('should fetch suggestions of all visualizations', async () => { - mockDatasource.getDatasourceSuggestionsFromCurrentState.mockReturnValue([ - { - state: {}, - table: { - changeType: 'unchanged', - columns: [], - isMultiRow: true, - layerId: 'first', - }, - keptLayerIds: [], - }, - ]); - - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: mockVisualization, - testVis2: mockVisualization2, - }, - datasourceMap: { - testDatasource: mockDatasource, - testDatasource2: mockDatasource2, - }, - - ExpressionRenderer: expressionRendererMock, - }; - await mountWithProvider(); + renderEditorFrame(); expect(mockVisualization.getSuggestions).toHaveBeenCalled(); expect(mockVisualization2.getSuggestions).toHaveBeenCalled(); }); - let instance: ReactWrapper; it('should display top 5 suggestions in descending order', async () => { - mockDatasource.getLayers.mockReturnValue(['first']); - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: { - ...mockVisualization, - getSuggestions: () => [ - { - score: 0.1, - state: {}, - title: 'Suggestion6', - previewIcon: 'empty', - }, - { - score: 0.5, - state: {}, - title: 'Suggestion3', - previewIcon: 'empty', - }, - { - score: 0.7, - state: {}, - title: 'Suggestion2', - previewIcon: 'empty', - }, - { - score: 0.8, - state: {}, - title: 'Suggestion1', - previewIcon: 'empty', - }, - ], - }, - testVis2: { - ...mockVisualization, - getSuggestions: () => [ - { - score: 0.4, - state: {}, - title: 'Suggestion5', - previewIcon: 'empty', - }, - { - score: 0.45, - state: {}, - title: 'Suggestion4', - previewIcon: 'empty', - }, - ], - }, + visualizationMap = { + testVis: { + ...mockVisualization, + getSuggestions: () => [ + { + score: 0.1, + state: {}, + title: 'Suggestion6', + previewIcon: 'empty', + }, + { + score: 0.5, + state: {}, + title: 'Suggestion3', + previewIcon: 'empty', + }, + { + score: 0.7, + state: {}, + title: 'Suggestion2', + previewIcon: 'empty', + }, + { + score: 0.8, + state: {}, + title: 'Suggestion1', + previewIcon: 'empty', + }, + ], }, - datasourceMap: { - testDatasource: { - ...mockDatasource, - getDatasourceSuggestionsFromCurrentState: () => [generateSuggestion()], - }, + testVis2: { + ...mockVisualization, + getSuggestions: () => [ + { + score: 0.4, + state: {}, + title: 'Suggestion5', + previewIcon: 'empty', + }, + { + score: 0.45, + state: {}, + title: 'Suggestion4', + previewIcon: 'empty', + }, + ], }, - - ExpressionRenderer: expressionRendererMock, }; - instance = (await mountWithProvider()).instance; + + renderEditorFrame(); expect( - instance - .find('[data-test-subj="lnsSuggestion"]') - .find(EuiPanel) - .map((el) => el.parents(EuiToolTip).prop('content')) + within(screen.getByTestId('lnsSuggestionsPanel')) + .getAllByTestId('lnsSuggestion') + .map((el) => el.textContent) ).toEqual([ 'Current visualization', 'Suggestion1', @@ -691,39 +479,26 @@ describe('editor_frame', () => { it('should switch to suggested visualization', async () => { mockDatasource.getLayers.mockReturnValue(['first', 'second', 'third']); const newDatasourceState = {}; - const suggestionVisState = {}; - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: { - ...mockVisualization, - getSuggestions: () => [ - { - score: 0.8, - state: suggestionVisState, - title: 'Suggestion1', - previewIcon: 'empty', - }, - ], - }, - testVis2: mockVisualization2, - }, - datasourceMap: { - testDatasource: { - ...mockDatasource, - getDatasourceSuggestionsFromCurrentState: () => [generateSuggestion()], - }, + const suggestionVisState = { suggested: true }; + + visualizationMap = { + testVis: { + ...mockVisualization, + getSuggestions: () => [ + { + score: 0.8, + state: suggestionVisState, + title: 'Suggestion1', + previewIcon: 'empty', + }, + ], }, - - ExpressionRenderer: expressionRendererMock, + testVis2: mockVisualization2, }; - instance = (await mountWithProvider()).instance; - act(() => { - instance.find('[data-test-subj="lnsSuggestion"]').at(2).simulate('click'); - }); + renderEditorFrame(); + userEvent.click(screen.getByLabelText(/Suggestion1/i)); - expect(mockVisualization.getConfiguration).toHaveBeenCalledTimes(2); expect(mockVisualization.getConfiguration).toHaveBeenLastCalledWith( expect.objectContaining({ state: suggestionVisState, @@ -735,13 +510,18 @@ describe('editor_frame', () => { }) ); }); + describe('legacy tests', () => { + let instance: ReactWrapper; + + afterEach(() => { + instance.unmount(); + }); + + // this test doesn't test anything, it's buggy and should be rewritten when we find a way to user test drag and drop + it.skip('should switch to best suggested visualization on field drop', async () => { + const suggestionVisState = {}; - it('should switch to best suggested visualization on field drop', async () => { - mockDatasource.getLayers.mockReturnValue(['first']); - const suggestionVisState = {}; - const props = { - ...getDefaultProps(), - visualizationMap: { + visualizationMap = { testVis: { ...mockVisualization, getSuggestions: () => [ @@ -760,210 +540,196 @@ describe('editor_frame', () => { ], }, testVis2: mockVisualization2, - }, - datasourceMap: { + }; + datasourceMap = { testDatasource: { ...mockDatasource, getDatasourceSuggestionsForField: () => [generateSuggestion()], getDatasourceSuggestionsFromCurrentState: () => [generateSuggestion()], getDatasourceSuggestionsForVisualizeField: () => [generateSuggestion()], }, - }, + }; + renderEditorFrame(); - ExpressionRenderer: expressionRendererMock, - }; - instance = (await mountWithProvider()).instance; + mockVisualization.getConfiguration.mockClear(); + act(() => { + instance.find('[data-test-subj="lnsWorkspace"]').last().simulate('drop'); + }); - act(() => { - instance.find('[data-test-subj="lnsWorkspace"]').last().simulate('drop'); + expect(mockVisualization.getConfiguration).toHaveBeenCalledWith( + expect.objectContaining({ + state: {}, + }) + ); }); - expect(mockVisualization.getConfiguration).toHaveBeenCalledWith( - expect.objectContaining({ - state: suggestionVisState, - }) - ); - }); - - it('should use the currently selected visualization if possible on field drop', async () => { - mockDatasource.getLayers.mockReturnValue(['first', 'second', 'third']); - const suggestionVisState = {}; - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: { - ...mockVisualization, - getSuggestions: () => [ - { - score: 0.2, - state: {}, - title: 'Suggestion1', - previewIcon: 'empty', - }, - { - score: 0.6, - state: suggestionVisState, - title: 'Suggestion2', - previewIcon: 'empty', - }, - ], - }, - testVis2: { - ...mockVisualization2, - getSuggestions: () => [ - { - score: 0.8, - state: {}, - title: 'Suggestion3', - previewIcon: 'empty', - }, - ], + it('should use the currently selected visualization if possible on field drop', async () => { + mockDatasource.getLayers.mockReturnValue(['first', 'second', 'third']); + const suggestionVisState = {}; + const props = { + ...getDefaultProps(), + visualizationMap: { + testVis: { + ...mockVisualization, + getSuggestions: () => [ + { + score: 0.2, + state: {}, + title: 'Suggestion1', + previewIcon: 'empty', + }, + { + score: 0.6, + state: suggestionVisState, + title: 'Suggestion2', + previewIcon: 'empty', + }, + ], + }, + testVis2: { + ...mockVisualization2, + getSuggestions: () => [ + { + score: 0.8, + state: {}, + title: 'Suggestion3', + previewIcon: 'empty', + }, + ], + }, }, - }, - datasourceMap: { - testDatasource: { - ...mockDatasource, - getDatasourceSuggestionsForField: () => [generateSuggestion()], - getDatasourceSuggestionsFromCurrentState: () => [generateSuggestion()], - getDatasourceSuggestionsForVisualizeField: () => [generateSuggestion()], - DataPanelComponent: jest.fn().mockImplementation(() =>
), + datasourceMap: { + testDatasource: { + ...mockDatasource, + getDatasourceSuggestionsForField: () => [generateSuggestion()], + getDatasourceSuggestionsFromCurrentState: () => [generateSuggestion()], + getDatasourceSuggestionsForVisualizeField: () => [generateSuggestion()], + DataPanelComponent: jest.fn().mockImplementation(() =>
), + }, }, - }, - - ExpressionRenderer: expressionRendererMock, - } as EditorFrameProps; - instance = ( - await mountWithProvider(, { - preloadedState: { - datasourceStates: { - testDatasource: { - isLoading: false, - state: { - internalState1: '', + } as EditorFrameProps; + instance = ( + await mountWithProvider(, { + preloadedState: { + datasourceStates: { + testDatasource: { + isLoading: false, + state: { + internalState1: '', + }, }, }, }, - }, - }) - ).instance; - - instance.update(); + }) + ).instance; + + instance.update(); + + act(() => { + instance.find('[data-test-subj="mockVisA"]').find(DragDrop).prop('onDrop')!( + { + indexPatternId: '1', + field: {}, + id: '1', + humanData: { label: 'draggedField' }, + }, + 'field_add' + ); + }); - act(() => { - instance.find('[data-test-subj="mockVisA"]').find(DragDrop).prop('onDrop')!( - { - indexPatternId: '1', - field: {}, - id: '1', - humanData: { label: 'draggedField' }, - }, - 'field_add' + expect(mockVisualization.getConfiguration).toHaveBeenCalledWith( + expect.objectContaining({ + state: suggestionVisState, + }) ); }); - expect(mockVisualization.getConfiguration).toHaveBeenCalledWith( - expect.objectContaining({ - state: suggestionVisState, - }) - ); - }); - - it('should use the highest priority suggestion available', async () => { - mockDatasource.getLayers.mockReturnValue(['first', 'second', 'third']); - const suggestionVisState = {}; - const mockVisualization3 = { - ...createMockVisualization(), - id: 'testVis3', - getLayerIds: () => ['third'], - visualizationTypes: [ - { - icon: 'empty', - id: 'testVis3', - label: 'TEST3', - groupLabel: 'testVis3Group', - }, - ], - getSuggestions: () => [ - { - score: 0.9, - state: suggestionVisState, - title: 'Suggestion3', - previewIcon: 'empty', - }, - { - score: 0.7, - state: {}, - title: 'Suggestion4', - previewIcon: 'empty', - }, - ], - }; - - const props = { - ...getDefaultProps(), - visualizationMap: { - testVis: { - ...mockVisualization, - // do not return suggestions for the currently active vis, otherwise it will be chosen - getSuggestions: () => [], - }, - testVis2: { - ...mockVisualization2, - getSuggestions: () => [], - }, - testVis3: { - ...mockVisualization3, + it('should use the highest priority suggestion available', async () => { + mockDatasource.getLayers.mockReturnValue(['first', 'second', 'third']); + const suggestionVisState = {}; + const mockVisualization3 = { + ...createMockVisualization('testVis3', ['third']), + getSuggestions: () => [ + { + score: 0.9, + state: suggestionVisState, + title: 'Suggestion3', + previewIcon: 'empty', + }, + { + score: 0.7, + state: {}, + title: 'Suggestion4', + previewIcon: 'empty', + }, + ], + }; + + const props = { + ...getDefaultProps(), + visualizationMap: { + testVis: { + ...mockVisualization, + // do not return suggestions for the currently active vis, otherwise it will be chosen + getSuggestions: () => [], + }, + testVis2: { + ...mockVisualization2, + getSuggestions: () => [], + }, + testVis3: { + ...mockVisualization3, + }, }, - }, - datasourceMap: { - testDatasource: { - ...mockDatasource, - getDatasourceSuggestionsForField: () => [generateSuggestion()], - getDatasourceSuggestionsFromCurrentState: () => [generateSuggestion()], - getDatasourceSuggestionsForVisualizeField: () => [generateSuggestion()], - DataPanelComponent: jest.fn().mockImplementation(() => { - const [, dndDispatch] = useDragDropContext(); - useEffect(() => { - dndDispatch({ - type: 'startDragging', - payload: { - dragging: { - id: 'draggedField', - humanData: { label: '1' }, + datasourceMap: { + testDatasource: { + ...mockDatasource, + getDatasourceSuggestionsForField: () => [generateSuggestion()], + getDatasourceSuggestionsFromCurrentState: () => [generateSuggestion()], + getDatasourceSuggestionsForVisualizeField: () => [generateSuggestion()], + DataPanelComponent: jest.fn().mockImplementation(() => { + const [, dndDispatch] = useDragDropContext(); + useEffect(() => { + dndDispatch({ + type: 'startDragging', + payload: { + dragging: { + id: 'draggedField', + humanData: { label: '1' }, + }, }, - }, - }); - }, [dndDispatch]); - return
; - }), + }); + }, [dndDispatch]); + return
; + }), + }, }, - }, - ExpressionRenderer: expressionRendererMock, - } as EditorFrameProps; + } as EditorFrameProps; - instance = (await mountWithProvider()).instance; + instance = (await mountWithProvider()).instance; - instance.update(); + instance.update(); - act(() => { - instance.find(DragDrop).filter('[dataTestSubj="lnsWorkspace"]').prop('onDrop')!( - { - indexPatternId: '1', - field: {}, - id: '1', - humanData: { - label: 'label', + act(() => { + instance.find(DragDrop).filter('[dataTestSubj="lnsWorkspace"]').prop('onDrop')!( + { + indexPatternId: '1', + field: {}, + id: '1', + humanData: { + label: 'label', + }, }, - }, - 'field_add' + 'field_add' + ); + }); + + expect(mockVisualization3.getConfiguration).toHaveBeenCalledWith( + expect.objectContaining({ + state: suggestionVisState, + }) ); }); - - expect(mockVisualization3.getConfiguration).toHaveBeenCalledWith( - expect.objectContaining({ - state: suggestionVisState, - }) - ); }); }); }); diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.test.tsx index 3e613d5a23e89..a82da848dc4a2 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.test.tsx @@ -6,62 +6,54 @@ */ import React from 'react'; -import { ReactWrapper } from 'enzyme'; -import type { PaletteOutput } from '@kbn/coloring'; +import { screen, fireEvent, within } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; import { createMockVisualization, mockStoreDeps, createMockFramePublicAPI, mockDatasourceMap, mockDatasourceStates, + renderWithReduxStore, } from '../../../mocks'; -import { mountWithProvider } from '../../../mocks'; - -// Tests are executed in a jsdom environment who does not have sizing methods, -// thus the AutoSizer will always compute a 0x0 size space -// Mock the AutoSizer inside EuiSelectable (Chart Switch) and return some dimensions > 0 -jest.mock('react-virtualized-auto-sizer', () => { - return function (props: { - children: (dimensions: { width: number; height: number }) => React.ReactNode; - }) { - const { children } = props; - return
{children({ width: 100, height: 100 })}
; - }; -}); -import { Visualization, FramePublicAPI, DatasourcePublicAPI } from '../../../types'; -import { ChartSwitch } from './chart_switch'; -import { applyChanges } from '../../../state_management'; +import { + Visualization, + FramePublicAPI, + DatasourcePublicAPI, + SuggestionRequest, +} from '../../../types'; +import { ChartSwitch, ChartSwitchProps } from './chart_switch'; +import { LensAppState, applyChanges } from '../../../state_management'; describe('chart_switch', () => { function generateVisualization(id: string): jest.Mocked { return { - ...createMockVisualization(), - id, - getVisualizationTypeId: jest.fn((_state) => id), - visualizationTypes: [ + ...createMockVisualization(id), + getSuggestions: jest.fn((options) => [ { - icon: 'empty', - id, - label: `Label ${id}`, - groupLabel: `${id}Group`, + score: 1, + title: '', + state: `suggestion ${id}`, + previewIcon: 'empty', }, - ], - initialize: jest.fn((_addNewLayer, state) => { - return state || `${id} initial state`; - }), - getSuggestions: jest.fn((options) => { - return [ - { - score: 1, - title: '', - state: `suggestion ${id}`, - previewIcon: 'empty', - }, - ]; - }), + ]), }; } + let visualizationMap = mockVisualizationMap(); + let datasourceMap = mockDatasourceMap(); + let datasourceStates = mockDatasourceStates(); + let frame = mockFrame(['a']); + + beforeEach(() => { + visualizationMap = mockVisualizationMap(); + datasourceMap = mockDatasourceMap(); + datasourceStates = mockDatasourceStates(); + frame = mockFrame(['a']); + }); + afterEach(() => { + jest.clearAllMocks(); + }); /** * There are three visualizations. Each one has the same suggestion behavior: @@ -145,44 +137,66 @@ describe('chart_switch', () => { } as FramePublicAPI; } - function showFlyout(instance: ReactWrapper) { - instance.find('button[data-test-subj="lnsChartSwitchPopover"]').first().simulate('click'); - } - - function switchTo(subType: string, instance: ReactWrapper) { - showFlyout(instance); - instance.find(`[data-test-subj="lnsChartSwitchPopover_${subType}"]`).first().simulate('click'); - } - - function getMenuItem(subType: string, instance: ReactWrapper) { - showFlyout(instance); - return instance.find(`[data-test-subj="lnsChartSwitchPopover_${subType}"]`).first(); - } - it('should use suggested state if there is a suggestion from the target visualization', async () => { - const visualizationMap = mockVisualizationMap(); - const { instance, lensStore } = await mountWithProvider( + const renderChartSwitch = ( + propsOverrides: Partial = {}, + { preloadedStateOverrides }: { preloadedStateOverrides: Partial } = { + preloadedStateOverrides: {}, + } + ) => { + const { store, ...rtlRender } = renderWithReduxStore( , + {}, { + storeDeps: mockStoreDeps({ datasourceMap, visualizationMap }), preloadedState: { visualization: { activeId: 'visA', state: 'state from a', }, + datasourceStates, + activeDatasourceId: 'testDatasource', + ...preloadedStateOverrides, }, } ); - switchTo('visB', instance); + const openChartSwitch = () => { + userEvent.click(screen.getByTestId('lnsChartSwitchPopover')); + }; + + const getMenuItem = (subType: string) => { + const list = screen.getByTestId('lnsChartSwitchList'); + return within(list).getByTestId(`lnsChartSwitchPopover_${subType}`); + }; + + const switchToVis = (subType: string) => { + fireEvent.click(getMenuItem(subType)); + }; + + return { + ...rtlRender, + store, + switchToVis, + getMenuItem, + openChartSwitch, + }; + }; + + it('should use suggested state if there is a suggestion from the target visualization', async () => { + const { store, openChartSwitch, switchToVis } = renderChartSwitch(); + openChartSwitch(); + switchToVis('visB'); - expect(lensStore.dispatch).toHaveBeenCalledWith({ + expect(store.dispatch).toHaveBeenCalledWith({ type: 'lens/switchVisualization', payload: { suggestion: { - visualizationState: 'suggestion visB', + visualizationState: 'visB initial state', newVisualizationId: 'visB', datasourceId: 'testDatasource', datasourceState: {}, @@ -190,38 +204,18 @@ describe('chart_switch', () => { clearStagedPreview: true, }, }); - expect(lensStore.dispatch).not.toHaveBeenCalledWith({ type: applyChanges.type }); // should not apply changes automatically + expect(store.dispatch).not.toHaveBeenCalledWith({ type: applyChanges.type }); // should not apply changes automatically }); it('should use initial state if there is no suggestion from the target visualization', async () => { - const visualizationMap = mockVisualizationMap(); visualizationMap.visB.getSuggestions.mockReturnValueOnce([]); - const frame = mockFrame(['a']); (frame.datasourceLayers.a?.getTableSpec as jest.Mock).mockReturnValue([]); - const datasourceMap = mockDatasourceMap(); - const datasourceStates = mockDatasourceStates(); - const { instance, lensStore } = await mountWithProvider( - , - { - storeDeps: mockStoreDeps({ datasourceMap, visualizationMap }), - preloadedState: { - datasourceStates, - activeDatasourceId: 'testDatasource', - visualization: { - activeId: 'visA', - state: {}, - }, - }, - } - ); + const { store, switchToVis, openChartSwitch } = renderChartSwitch(); + openChartSwitch(); + switchToVis('visB'); - switchTo('visB', instance); expect(datasourceMap.testDatasource.removeLayer).toHaveBeenCalledWith({}, 'a'); // from preloaded state - expect(lensStore.dispatch).toHaveBeenCalledWith({ + expect(store.dispatch).toHaveBeenCalledWith({ type: 'lens/switchVisualization', payload: { suggestion: { @@ -231,16 +225,13 @@ describe('chart_switch', () => { clearStagedPreview: true, }, }); - expect(lensStore.dispatch).toHaveBeenCalledWith({ + expect(store.dispatch).toHaveBeenCalledWith({ type: 'lens/removeLayers', payload: { layerIds: ['a'], visualizationId: 'visA' }, }); }); it('should indicate data loss if not all columns will be used', async () => { - const visualizationMap = mockVisualizationMap(); - const frame = mockFrame(['a']); - const datasourceMap = mockDatasourceMap(); datasourceMap.testDatasource.getDatasourceSuggestionsFromCurrentState.mockReturnValue([ { state: {}, @@ -276,61 +267,21 @@ describe('chart_switch', () => { { columnId: 'col3', fields: [] }, ]); - const { instance } = await mountWithProvider( - , - { - preloadedState: { - visualization: { - activeId: 'visA', - state: {}, - }, - }, - } - ); + const { openChartSwitch, getMenuItem } = renderChartSwitch(); + openChartSwitch(); - expect( - getMenuItem('visB', instance) - .find('[data-test-subj="lnsChartSwitchPopoverAlert_visB"]') - .first() - .props().type - ).toEqual('warning'); + expect(within(getMenuItem('visB')).getByText(/warning/i)).toBeInTheDocument(); }); it('should indicate data loss if not all layers will be used', async () => { - const visualizationMap = mockVisualizationMap(); - const frame = mockFrame(['a', 'b']); - const { instance } = await mountWithProvider( - , - { - preloadedState: { - visualization: { - activeId: 'visA', - state: {}, - }, - }, - } - ); - - expect( - getMenuItem('visB', instance) - .find('[data-test-subj="lnsChartSwitchPopoverAlert_visB"]') - .first() - .props().type - ).toEqual('warning'); + frame = mockFrame(['a', 'b']); + const { openChartSwitch, getMenuItem } = renderChartSwitch(); + openChartSwitch(); + expect(within(getMenuItem('visB')).getByText(/warning/i)).toBeInTheDocument(); }); it('should support multi-layer suggestions without data loss', async () => { - const visualizationMap = mockVisualizationMap(); - const frame = mockFrame(['a', 'b']); - const datasourceMap = mockDatasourceMap(); + frame = mockFrame(['a', 'b']); datasourceMap.testDatasource.getDatasourceSuggestionsFromCurrentState.mockReturnValue([ { state: {}, @@ -352,147 +303,53 @@ describe('chart_switch', () => { keptLayerIds: ['a', 'b'], }, ]); - - const { instance } = await mountWithProvider( - , - { - preloadedState: { - visualization: { - activeId: 'visA', - state: {}, - }, - }, - } - ); - - expect( - getMenuItem('visB', instance).find('[data-test-subj="lnsChartSwitchPopoverAlert_visB"]') - ).toHaveLength(0); + const { openChartSwitch, getMenuItem } = renderChartSwitch(); + openChartSwitch(); + expect(within(getMenuItem('visB')).queryByText(/warning/i)).not.toBeInTheDocument(); }); it('should indicate data loss if no data will be used', async () => { - const visualizationMap = mockVisualizationMap(); visualizationMap.visB.getSuggestions.mockReturnValueOnce([]); - const frame = mockFrame(['a']); - - const { instance } = await mountWithProvider( - , - { - preloadedState: { - visualization: { - activeId: 'visA', - state: {}, - }, - }, - } - ); - - expect( - getMenuItem('visB', instance) - .find('[data-test-subj="lnsChartSwitchPopoverAlert_visB"]') - .first() - .props().type - ).toEqual('warning'); + const { openChartSwitch, getMenuItem } = renderChartSwitch(); + openChartSwitch(); + expect(within(getMenuItem('visB')).queryByText(/warning/i)).toBeInTheDocument(); }); it('should not indicate data loss if there is no data', async () => { - const visualizationMap = mockVisualizationMap(); visualizationMap.visB.getSuggestions.mockReturnValueOnce([]); - const frame = mockFrame(['a']); + frame = mockFrame(['a']); (frame.datasourceLayers.a?.getTableSpec as jest.Mock).mockReturnValue([]); - - const { instance } = await mountWithProvider( - , - - { - preloadedState: { - visualization: { - activeId: 'visA', - state: {}, - }, - }, - } - ); - - expect( - getMenuItem('visB', instance).find('[data-test-subj="lnsChartSwitchPopoverAlert_visB"]') - ).toHaveLength(0); + const { openChartSwitch, getMenuItem } = renderChartSwitch(); + openChartSwitch(); + expect(within(getMenuItem('visB')).queryByText(/warning/i)).not.toBeInTheDocument(); }); it('should not show a warning when the subvisualization is the same', async () => { - const frame = mockFrame(['a', 'b', 'c']); - const visualizationMap = mockVisualizationMap(); - visualizationMap.visC.getVisualizationTypeId.mockReturnValue('subvisC2'); - const switchVisualizationType = jest.fn(() => ({ type: 'subvisC1' })); + frame = mockFrame(['a', 'b', 'c']); - visualizationMap.visC.switchVisualizationType = switchVisualizationType; - - const datasourceStates = mockDatasourceStates(); - - const { instance } = await mountWithProvider( - , - { - preloadedState: { - datasourceStates, - activeDatasourceId: 'testDatasource', - visualization: { - activeId: 'visC', - state: { type: 'subvisC2' }, - }, + visualizationMap.visC.getVisualizationTypeId.mockReturnValue('subvisC2'); + visualizationMap.visC.switchVisualizationType = jest.fn(() => ({ type: 'subvisC1' })); + const { openChartSwitch, getMenuItem } = renderChartSwitch(undefined, { + preloadedStateOverrides: { + visualization: { + activeId: 'visC', + state: { type: 'subvisC2' }, }, - } - ); - - expect( - getMenuItem('subvisC2', instance).find( - '[data-test-subj="lnsChartSwitchPopoverAlert_subvisC2"]' - ) - ).toHaveLength(0); + }, + }); + openChartSwitch(); + expect(within(getMenuItem('subvisC2')).queryByText(/warning/i)).not.toBeInTheDocument(); }); it('should get suggestions when switching subvisualization', async () => { - const visualizationMap = mockVisualizationMap(); visualizationMap.visB.getSuggestions.mockReturnValueOnce([]); - const frame = mockFrame(['a', 'b', 'c']); - const datasourceMap = mockDatasourceMap(); + frame = mockFrame(['a', 'b', 'c']); datasourceMap.testDatasource.getLayers.mockReturnValue(['a', 'b', 'c']); - const datasourceStates = mockDatasourceStates(); - const { instance, lensStore } = await mountWithProvider( - , - { - storeDeps: mockStoreDeps({ datasourceMap, visualizationMap }), - preloadedState: { - datasourceStates, - visualization: { - activeId: 'visA', - state: {}, - }, - }, - } - ); + const { openChartSwitch, switchToVis, store } = renderChartSwitch(); + openChartSwitch(); + switchToVis('visB'); - switchTo('visB', instance); expect(datasourceMap.testDatasource.removeLayer).toHaveBeenCalledWith({}, 'a'); expect(datasourceMap.testDatasource.removeLayer).toHaveBeenCalledWith({}, 'b'); expect(datasourceMap.testDatasource.removeLayer).toHaveBeenCalledWith({}, 'c'); @@ -502,7 +359,7 @@ describe('chart_switch', () => { }) ); - expect(lensStore.dispatch).toHaveBeenCalledWith({ + expect(store.dispatch).toHaveBeenCalledWith({ type: 'lens/switchVisualization', payload: { suggestion: { @@ -517,75 +374,49 @@ describe('chart_switch', () => { }); it('should query main palette from active chart and pass into suggestions', async () => { - const visualizationMap = mockVisualizationMap(); - const mockPalette: PaletteOutput = { type: 'palette', name: 'mock' }; - visualizationMap.visA.getMainPalette = jest.fn(() => ({ + const legacyPalette: SuggestionRequest['mainPalette'] = { type: 'legacyPalette', - value: mockPalette, - })); + value: { type: 'palette', name: 'mock' }, + }; + visualizationMap.visA.getMainPalette = jest.fn(() => legacyPalette); visualizationMap.visB.getSuggestions.mockReturnValueOnce([]); - const frame = mockFrame(['a', 'b', 'c']); - const currentVisState = {}; - const datasourceMap = mockDatasourceMap(); + frame = mockFrame(['a', 'b', 'c']); datasourceMap.testDatasource.getLayers.mockReturnValue(['a', 'b', 'c']); - const { instance } = await mountWithProvider( - , - { - preloadedState: { - visualization: { - activeId: 'visA', - state: currentVisState, - }, - }, - storeDeps: mockStoreDeps({ datasourceMap, visualizationMap }), - } - ); - - switchTo('visB', instance); + const { openChartSwitch, switchToVis } = renderChartSwitch(); + openChartSwitch(); + switchToVis('visB'); - expect(visualizationMap.visA.getMainPalette).toHaveBeenCalledWith(currentVisState); + expect(visualizationMap.visA.getMainPalette).toHaveBeenCalledWith('state from a'); expect(visualizationMap.visB.getSuggestions).toHaveBeenCalledWith( expect.objectContaining({ keptLayerIds: ['a'], - mainPalette: { type: 'legacyPalette', value: mockPalette }, + mainPalette: legacyPalette, }) ); }); it('should not remove layers when switching between subtypes', async () => { - const frame = mockFrame(['a', 'b', 'c']); - const visualizationMap = mockVisualizationMap(); - const switchVisualizationType = jest.fn(() => 'switched'); + frame = mockFrame(['a', 'b', 'c']); + visualizationMap.visC.switchVisualizationType = jest.fn(() => 'switched'); - visualizationMap.visC.switchVisualizationType = switchVisualizationType; - const datasourceMap = mockDatasourceMap(); - const { instance, lensStore } = await mountWithProvider( - , - { - preloadedState: { - visualization: { - activeId: 'visC', - state: { type: 'subvisC1' }, - }, + const { openChartSwitch, switchToVis, store } = renderChartSwitch(undefined, { + preloadedStateOverrides: { + visualization: { + activeId: 'visC', + state: { type: 'subvisC1' }, }, - storeDeps: mockStoreDeps({ datasourceMap, visualizationMap }), - } - ); + }, + }); - switchTo('subvisC3', instance); - expect(switchVisualizationType).toHaveBeenCalledWith('subvisC3', { type: 'subvisC3' }); + openChartSwitch(); + switchToVis('subvisC3'); + expect(visualizationMap.visC.switchVisualizationType).toHaveBeenCalledWith('subvisC3', { + type: 'subvisC3', + }); - expect(lensStore.dispatch).toHaveBeenCalledWith({ + expect(store.dispatch).toHaveBeenCalledWith({ type: 'lens/switchVisualization', payload: { suggestion: { @@ -601,31 +432,22 @@ describe('chart_switch', () => { }); it('should not remove layers and initialize with existing state when switching between subtypes without data', async () => { - const frame = mockFrame(['a']); const datasourceLayers = frame.datasourceLayers as Record; datasourceLayers.a.getTableSpec = jest.fn().mockReturnValue([]); - const visualizationMap = mockVisualizationMap(); + visualizationMap.visC.getSuggestions = jest.fn().mockReturnValue([]); visualizationMap.visC.switchVisualizationType = jest.fn(() => 'switched'); - const datasourceMap = mockDatasourceMap(); - const { instance } = await mountWithProvider( - , - { - preloadedState: { - visualization: { - activeId: 'visC', - state: { type: 'subvisC1' }, - }, - }, - storeDeps: mockStoreDeps({ datasourceMap, visualizationMap }), - } - ); - switchTo('subvisC3', instance); + const { openChartSwitch, switchToVis } = renderChartSwitch(undefined, { + preloadedStateOverrides: { + visualization: { + activeId: 'visC', + state: { type: 'subvisC1' }, + }, + }, + }); + openChartSwitch(); + switchToVis('subvisC3'); expect(visualizationMap.visC.switchVisualizationType).toHaveBeenCalledWith('subvisC3', { type: 'subvisC1', @@ -634,9 +456,8 @@ describe('chart_switch', () => { }); it('should switch to the updated datasource state', async () => { - const visualizationMap = mockVisualizationMap(); - const frame = mockFrame(['a', 'b']); - const datasourceMap = mockDatasourceMap(); + frame = mockFrame(['a', 'b']); + datasourceMap.testDatasource.getDatasourceSuggestionsFromCurrentState.mockReturnValue([ { state: 'testDatasource suggestion', @@ -666,33 +487,19 @@ describe('chart_switch', () => { keptLayerIds: [], }, ]); - const { instance, lensStore } = await mountWithProvider( - , - { - storeDeps: mockStoreDeps({ datasourceMap, visualizationMap }), - preloadedState: { - visualization: { - activeId: 'visA', - state: {}, - }, - }, - } - ); - switchTo('visB', instance); + const { openChartSwitch, switchToVis, store } = renderChartSwitch(); + openChartSwitch(); + switchToVis('visB'); - expect(lensStore.dispatch).toHaveBeenCalledWith({ + expect(store.dispatch).toHaveBeenCalledWith({ type: 'lens/switchVisualization', payload: { suggestion: { newVisualizationId: 'visB', datasourceId: 'testDatasource', datasourceState: 'testDatasource suggestion', - visualizationState: 'suggestion visB', + visualizationState: 'visB initial state', }, clearStagedPreview: true, }, @@ -700,37 +507,18 @@ describe('chart_switch', () => { }); it('should ensure the new visualization has the proper subtype', async () => { - const visualizationMap = mockVisualizationMap(); - const switchVisualizationType = jest.fn( + visualizationMap.visB.switchVisualizationType = jest.fn( (visualizationType, state) => `${state} ${visualizationType}` ); + const { openChartSwitch, switchToVis, store } = renderChartSwitch(); + openChartSwitch(); + switchToVis('visB'); - visualizationMap.visB.switchVisualizationType = switchVisualizationType; - const datasourceMap = mockDatasourceMap(); - const { instance, lensStore } = await mountWithProvider( - , - { - storeDeps: mockStoreDeps({ datasourceMap, visualizationMap }), - preloadedState: { - visualization: { - activeId: 'visA', - state: {}, - }, - }, - } - ); - - switchTo('visB', instance); - - expect(lensStore.dispatch).toHaveBeenCalledWith({ + expect(store.dispatch).toHaveBeenCalledWith({ type: 'lens/switchVisualization', payload: { suggestion: { - visualizationState: 'suggestion visB visB', + visualizationState: 'visB initial state visB', newVisualizationId: 'visB', datasourceId: 'testDatasource', datasourceState: {}, @@ -741,56 +529,27 @@ describe('chart_switch', () => { }); it('should use the suggestion that matches the subtype', async () => { - const visualizationMap = mockVisualizationMap(); - const switchVisualizationType = jest.fn(); - - visualizationMap.visC.switchVisualizationType = switchVisualizationType; - const datasourceMap = mockDatasourceMap(); - const { instance } = await mountWithProvider( - , - { - preloadedState: { - visualization: { - activeId: 'visC', - state: { type: 'subvisC3' }, - }, + const { openChartSwitch, switchToVis } = renderChartSwitch(undefined, { + preloadedStateOverrides: { + visualization: { + activeId: 'visC', + state: { type: 'subvisC3' }, }, - } - ); - - switchTo('subvisC1', instance); - expect(switchVisualizationType).toHaveBeenCalledWith('subvisC1', { + }, + }); + openChartSwitch(); + switchToVis('subvisC1'); + expect(visualizationMap.visC.switchVisualizationType).toHaveBeenCalledWith('subvisC1', { type: 'subvisC1', notPrimary: true, }); }); it('should show all visualization types', async () => { - const datasourceMap = mockDatasourceMap(); - const { instance } = await mountWithProvider( - , - { - preloadedState: { - visualization: { - activeId: 'visA', - state: {}, - }, - }, - } - ); - - showFlyout(instance); - - const allDisplayed = ['visA', 'visB', 'subvisC1', 'subvisC2', 'subvisC3'].every( - (subType) => instance.find(`[data-test-subj="lnsChartSwitchPopover_${subType}"]`).length > 0 + const { openChartSwitch, getMenuItem } = renderChartSwitch(); + openChartSwitch(); + const allDisplayed = ['visA', 'visB', 'subvisC1', 'subvisC2', 'subvisC3'].every((subType) => + getMenuItem(subType) ); expect(allDisplayed).toBeTruthy(); diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.tsx index c40c81285dc15..2cb8fc75a6758 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/chart_switch.tsx @@ -55,7 +55,7 @@ interface VisualizationSelection { sameDatasources?: boolean; } -interface Props { +export interface ChartSwitchProps { framePublicAPI: FramePublicAPI; visualizationMap: VisualizationMap; datasourceMap: DatasourceMap; @@ -126,7 +126,7 @@ function getCurrentVisualizationId( ); } -export const ChartSwitch = memo(function ChartSwitch(props: Props) { +export const ChartSwitch = memo(function ChartSwitch(props: ChartSwitchProps) { const [flyoutOpen, setFlyoutOpen] = useState(false); const dispatchLens = useLensDispatch(); const activeDatasourceId = useLensSelector(selectActiveDatasourceId); @@ -494,7 +494,7 @@ export const ChartSwitch = memo(function ChartSwitch(props: Props) { }); function getTopSuggestion( - props: Props, + props: ChartSwitchProps, visualizationId: string, datasourceStates: DatasourceStates, visualization: VisualizationState, diff --git a/x-pack/plugins/lens/public/mocks/datasource_mock.tsx b/x-pack/plugins/lens/public/mocks/datasource_mock.tsx index 207c6562be557..daf56218bcd07 100644 --- a/x-pack/plugins/lens/public/mocks/datasource_mock.tsx +++ b/x-pack/plugins/lens/public/mocks/datasource_mock.tsx @@ -51,7 +51,7 @@ export function createMockDatasource( removeLayer: jest.fn((state, layerId) => ({ newState: state, removedLayerIds: [layerId] })), cloneLayer: jest.fn((_state, _layerId, _newLayerId, getNewId) => {}), removeColumn: jest.fn((props) => {}), - getLayers: jest.fn((_state) => []), + getLayers: jest.fn((_state) => ['a']), uniqueLabels: jest.fn((_state, dataViews) => ({})), getDropProps: jest.fn(), onDrop: jest.fn(), diff --git a/x-pack/plugins/lens/public/mocks/expression_renderer_mock.tsx b/x-pack/plugins/lens/public/mocks/expression_renderer_mock.tsx index 42187662e0213..842d6ccbb713f 100644 --- a/x-pack/plugins/lens/public/mocks/expression_renderer_mock.tsx +++ b/x-pack/plugins/lens/public/mocks/expression_renderer_mock.tsx @@ -12,5 +12,7 @@ export function createExpressionRendererMock(): jest.Mock< React.ReactElement, [ReactExpressionRendererProps] > { - return jest.fn(({ expression }) => {expression || 'Expression renderer mock'}); + return jest.fn(({ expression }) => ( + {expression || 'Expression renderer mock'} + )); } diff --git a/x-pack/plugins/lens/public/mocks/store_mocks.tsx b/x-pack/plugins/lens/public/mocks/store_mocks.tsx index 0d78a07d3dfce..ad028bfe107f0 100644 --- a/x-pack/plugins/lens/public/mocks/store_mocks.tsx +++ b/x-pack/plugins/lens/public/mocks/store_mocks.tsx @@ -69,7 +69,7 @@ export const renderWithReduxStore = ( { preloadedState, storeDeps, - }: { preloadedState: Partial; storeDeps?: LensStoreDeps } = { + }: { preloadedState?: Partial; storeDeps?: LensStoreDeps } = { preloadedState: {}, storeDeps: mockStoreDeps(), } diff --git a/x-pack/plugins/lens/public/mocks/visualization_mock.tsx b/x-pack/plugins/lens/public/mocks/visualization_mock.tsx index b368f994756eb..663345c824095 100644 --- a/x-pack/plugins/lens/public/mocks/visualization_mock.tsx +++ b/x-pack/plugins/lens/public/mocks/visualization_mock.tsx @@ -6,39 +6,42 @@ */ import React from 'react'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; +import { toExpression } from '@kbn/interpreter'; +import faker from 'faker'; import { Visualization, VisualizationMap } from '../types'; -export function createMockVisualization(id = 'testVis'): jest.Mocked { - const layerId = 'layer1'; - +export function createMockVisualization( + id = 'testVis', + layerIds = ['layer1'] +): jest.Mocked { return { id, clearLayer: jest.fn((state, _layerId, _indexPatternId) => state), removeLayer: jest.fn(), - getLayerIds: jest.fn((_state) => [layerId]), + getLayerIds: jest.fn((_state) => layerIds), getSupportedLayers: jest.fn(() => [{ type: LayerTypes.DATA, label: 'Data Layer' }]), getLayerType: jest.fn((_state, _layerId) => LayerTypes.DATA), visualizationTypes: [ { icon: 'empty', id, - label: 'TEST', + label: faker.lorem.word(), groupLabel: `${id}Group`, }, ], appendLayer: jest.fn(), - getVisualizationTypeId: jest.fn((_state) => 'empty'), + getVisualizationTypeId: jest.fn((_state) => id), getDescription: jest.fn((_state) => ({ label: '' })), switchVisualizationType: jest.fn((_, x) => x), getSuggestions: jest.fn((_options) => []), getRenderEventCounters: jest.fn((_state) => []), - initialize: jest.fn((_addNewLayer, _state) => ({ newState: 'newState' })), + initialize: jest.fn((_addNewLayer, _state) => `${id} initial state`), getConfiguration: jest.fn((props) => ({ groups: [ { groupId: 'a', groupLabel: 'a', - layerId, + layerId: layerIds[0], supportsMoreColumns: true, accessors: [], filterOperations: jest.fn(() => true), @@ -46,7 +49,15 @@ export function createMockVisualization(id = 'testVis'): jest.Mocked 'expression'), + toExpression: jest.fn((state, datasourceLayers, attrs, datasourceExpressionsByLayers = {}) => + toExpression({ + type: 'expression', + chain: [ + ...(datasourceExpressionsByLayers.first?.chain ?? []), + { type: 'function', function: 'testVis', arguments: {} }, + ], + }) + ), toPreviewExpression: jest.fn((_state, _frame) => 'expression'), getUserMessages: jest.fn((_state) => []), setDimension: jest.fn(), diff --git a/x-pack/plugins/lens/public/state_management/__snapshots__/load_initial.test.tsx.snap b/x-pack/plugins/lens/public/state_management/__snapshots__/load_initial.test.tsx.snap index 4c09cefdd6de9..68d4e7d57e983 100644 --- a/x-pack/plugins/lens/public/state_management/__snapshots__/load_initial.test.tsx.snap +++ b/x-pack/plugins/lens/public/state_management/__snapshots__/load_initial.test.tsx.snap @@ -100,9 +100,7 @@ Object { }, "visualization": Object { "activeId": "testVis", - "state": Object { - "newState": "newState", - }, + "state": "testVis initial state", }, }, } diff --git a/x-pack/plugins/lens/public/state_management/load_initial.test.tsx b/x-pack/plugins/lens/public/state_management/load_initial.test.tsx index ef9d84062a720..130e1294b9c95 100644 --- a/x-pack/plugins/lens/public/state_management/load_initial.test.tsx +++ b/x-pack/plugins/lens/public/state_management/load_initial.test.tsx @@ -199,7 +199,7 @@ describe('Initializing the store', () => { expect(store.getState()).toEqual({ lens: expect.objectContaining({ visualization: { - state: { newState: 'newState' }, // new vis gets initialized + state: 'testVis initial state', // new vis gets initialized activeId: 'testVis', }, activeDatasourceId: 'testDatasource2', // resets to first on the list diff --git a/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action_helpers.tsx b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action_helpers.tsx index 6b3c020e40d97..e8a695b735d76 100644 --- a/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action_helpers.tsx +++ b/x-pack/plugins/lens/public/trigger_actions/open_lens_config/in_app_embeddable_edit/in_app_embeddable_edit_action_helpers.tsx @@ -118,6 +118,7 @@ export async function executeEditEmbeddableAction({ onCancelCb={onCancel} canEditTextBasedQuery={activeDatasourceId === 'textBased'} updateSuggestion={onUpdateSuggestion} + hideTimeFilterInfo={true} /> ); diff --git a/x-pack/plugins/lens/public/visualizations/partition/suggestions.test.ts b/x-pack/plugins/lens/public/visualizations/partition/suggestions.test.ts index 64b0488a79bb5..60a7aed1c9274 100644 --- a/x-pack/plugins/lens/public/visualizations/partition/suggestions.test.ts +++ b/x-pack/plugins/lens/public/visualizations/partition/suggestions.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { PaletteOutput } from '@kbn/coloring'; +import { PaletteOutput, DEFAULT_COLOR_MAPPING_CONFIG } from '@kbn/coloring'; import { suggestions } from './suggestions'; import type { DataType, SuggestionRequest } from '../../types'; import type { PieLayerState, PieVisualizationState } from '../../../common/types'; @@ -683,7 +683,7 @@ describe('suggestions', () => { legendMaxLines: 1, truncateLegend: true, nestedLegend: true, - colorMapping: undefined, + colorMapping: DEFAULT_COLOR_MAPPING_CONFIG, }, ], }, diff --git a/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx b/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx index 8897b10b2baea..8a4a14dd6f6e7 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/visualization.test.tsx @@ -7,6 +7,7 @@ import { type ExtraAppendLayerArg, getXyVisualization } from './visualization'; import { Position } from '@elastic/charts'; +import { EUIAmsterdamColorBlindPalette } from '@kbn/coloring'; import { Operation, OperationDescriptor, @@ -221,7 +222,24 @@ describe('xy_visualization', () => { "layers": Array [ Object { "accessors": Array [], - "colorMapping": undefined, + "colorMapping": Object { + "assignments": Array [], + "colorMode": Object { + "type": "categorical", + }, + "paletteId": "${EUIAmsterdamColorBlindPalette.id}", + "specialAssignments": Array [ + Object { + "color": Object { + "type": "loop", + }, + "rule": Object { + "type": "other", + }, + "touched": false, + }, + ], + }, "layerId": "l1", "layerType": "data", "palette": undefined, diff --git a/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts b/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts index 82368c2414c9a..b9d7a7042e530 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts +++ b/x-pack/plugins/lens/public/visualizations/xy/xy_suggestions.test.ts @@ -18,7 +18,7 @@ import { generateId } from '../../id_generator'; import { getXyVisualization } from './xy_visualization'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { eventAnnotationServiceMock } from '@kbn/event-annotation-plugin/public/mocks'; -import { PaletteOutput } from '@kbn/coloring'; +import { type PaletteOutput, DEFAULT_COLOR_MAPPING_CONFIG } from '@kbn/coloring'; import { LayerTypes } from '@kbn/expression-xy-plugin/public'; import { fieldFormatsServiceMock } from '@kbn/field-formats-plugin/public/mocks'; import { coreMock, themeServiceMock } from '@kbn/core/public/mocks'; @@ -917,7 +917,7 @@ describe('xy_suggestions', () => { { ...currentState.layers[0], seriesType: 'line', - colorMapping: undefined, + colorMapping: DEFAULT_COLOR_MAPPING_CONFIG, }, ], }); @@ -964,7 +964,7 @@ describe('xy_suggestions', () => { { ...currentState.layers[0], seriesType: 'line', - colorMapping: undefined, + colorMapping: DEFAULT_COLOR_MAPPING_CONFIG, }, ], }); @@ -975,7 +975,7 @@ describe('xy_suggestions', () => { { ...currentState.layers[0], seriesType: 'bar_stacked', - colorMapping: undefined, + colorMapping: DEFAULT_COLOR_MAPPING_CONFIG, }, ], }); @@ -1099,7 +1099,7 @@ describe('xy_suggestions', () => { ...currentState.layers[0], xAccessor: 'product', splitAccessor: 'category', - colorMapping: undefined, + colorMapping: DEFAULT_COLOR_MAPPING_CONFIG, }, ], }); @@ -1145,7 +1145,7 @@ describe('xy_suggestions', () => { ...currentState.layers[0], xAccessor: 'category', splitAccessor: 'product', - colorMapping: undefined, + colorMapping: DEFAULT_COLOR_MAPPING_CONFIG, }, ], }); @@ -1192,7 +1192,7 @@ describe('xy_suggestions', () => { ...currentState.layers[0], xAccessor: 'timestamp', splitAccessor: 'product', - colorMapping: undefined, + colorMapping: DEFAULT_COLOR_MAPPING_CONFIG, }, ], }); diff --git a/x-pack/plugins/metrics_data_access/common/inventory_models/host/metrics/dashboards/kpi.ts b/x-pack/plugins/metrics_data_access/common/inventory_models/host/metrics/dashboards/kpi.ts index 2556811c1a44d..f358d2281704c 100644 --- a/x-pack/plugins/metrics_data_access/common/inventory_models/host/metrics/dashboards/kpi.ts +++ b/x-pack/plugins/metrics_data_access/common/inventory_models/host/metrics/dashboards/kpi.ts @@ -23,7 +23,7 @@ export const kpi = { }) => { const { cpuUsage, diskUsage, memoryUsage, normalizedLoad1m } = createBasicCharts({ chartType: 'metric', - fromFormulas: ['cpuUsage', 'diskUsage', 'memoryUsage', 'normalizedLoad1m'], + fromFormulas: ['cpuUsage', 'normalizedLoad1m', 'memoryUsage', 'diskUsage'], chartConfig: { trendLine: true, subtitle: options?.subtitle ?? AVERAGE, @@ -33,7 +33,7 @@ export const kpi = { }); return createDashboardModel({ - charts: [cpuUsage, diskUsage, memoryUsage, normalizedLoad1m].map((p) => ({ + charts: [cpuUsage, normalizedLoad1m, memoryUsage, diskUsage].map((p) => ({ ...p, decimals: 1, })), diff --git a/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer.js b/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer.js index 76c0ffb038971..cb1f18fd82358 100644 --- a/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer.js +++ b/x-pack/plugins/ml/public/application/timeseriesexplorer/timeseriesexplorer.js @@ -447,9 +447,13 @@ export class TimeSeriesExplorer extends React.Component { stateUpdate.contextAggregationInterval, bounds ); + if ( - focusRange === undefined || - this.previousSelectedForecastId !== this.props.selectedForecastId + // If the user's focus range is not defined (i.e. no 'zoom' parameter restored from the appState URL), + // then calculate the default focus range to use + zoom === undefined && + (focusRange === undefined || + this.previousSelectedForecastId !== this.props.selectedForecastId) ) { focusRange = calculateDefaultFocusRange( autoZoomDuration, diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap index 9a9eb41224222..82ad350e19e84 100644 --- a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/__snapshots__/log_rate_analysis_query.test.ts.snap @@ -113,21 +113,16 @@ Object { ], }, }, - Object { - "bool": Object { - "minimum_should_match": 1, - "should": Array [ - Object { - "match": Object { - "groupByField": "groupByValue", - }, - }, - ], - }, - }, ], }, }, + Object { + "term": Object { + "groupByField": Object { + "value": "groupByValue", + }, + }, + }, ], "must": Array [], "must_not": Array [], @@ -186,33 +181,42 @@ Object { ], }, }, - Object { - "bool": Object { - "minimum_should_match": 1, - "should": Array [ - Object { - "match": Object { - "groupByField": "groupByValue", - }, - }, - ], - }, - }, - Object { - "bool": Object { - "minimum_should_match": 1, - "should": Array [ - Object { - "match": Object { - "secondGroupByField": "secondGroupByValue", - }, - }, - ], - }, - }, ], }, }, + Object { + "term": Object { + "groupByField": Object { + "value": "groupByValue", + }, + }, + }, + Object { + "term": Object { + "secondGroupByField": Object { + "value": "secondGroupByValue", + }, + }, + }, + ], + "must": Array [], + "must_not": Array [], + "should": Array [], + }, +} +`; + +exports[`buildEsQuery should generate correct es query for rule without filter and with group by 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "term": Object { + "groupByField": Object { + "value": "groupByValue", + }, + }, + }, ], "must": Array [], "must_not": Array [], diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts index 8169816800e4d..0e5da33f67d6c 100644 --- a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.test.ts @@ -71,6 +71,30 @@ describe('buildEsQuery', () => { params: mockedParams, alert: {}, }, + { + title: 'rule without filter and with group by', + params: { + groupBy: ['host.hostname'], + searchConfiguration: { + index, + query: { query: '', language: 'kuery' }, + }, + criteria: [ + { + metrics: [{ name: 'A', aggType: Aggregators.COUNT }], + timeSize: 1, + timeUnit: 'm', + threshold: [90], + comparator: Comparator.GT, + }, + ], + }, + alert: { + fields: { + 'kibana.alert.group': [mockedAlertWithMultipleGroups.fields['kibana.alert.group'][0]], + }, + }, + }, { title: 'rule with multiple metrics', params: { diff --git a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts index b9eef4643802a..e09b9e5a9617d 100644 --- a/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts +++ b/x-pack/plugins/observability/public/components/custom_threshold/components/alert_details_app_section/helpers/log_rate_analysis_query.ts @@ -7,17 +7,15 @@ import { get } from 'lodash'; import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; -import { Aggregators, GroupBy } from '../../../../../../common/custom_threshold_rule/types'; +import { getGroupFilters } from '../../helpers/get_group'; +import { Aggregators } from '../../../../../../common/custom_threshold_rule/types'; import { buildEsQuery } from '../../../../../utils/build_es_query'; import type { TopAlert } from '../../../../../typings/alerts'; import type { CustomThresholdRuleTypeParams } from '../../../types'; import type { CustomThresholdExpressionMetric } from '../../../../../../common/custom_threshold_rule/types'; +import type { Group } from '../../types'; -const getKuery = ( - metrics: CustomThresholdExpressionMetric[], - filter?: string, - groupBy?: GroupBy -) => { +const getKuery = (metrics: CustomThresholdExpressionMetric[], filter?: string) => { let query = ''; const isOneCountConditionWithFilter = metrics.length === 1 && metrics[0].aggType === 'count' && metrics[0].filter; @@ -30,12 +28,6 @@ const getKuery = ( query = `(${filter})`; } - if (groupBy) { - groupBy.forEach(({ field, value }) => { - query += ` and ${field}: ${value}`; - }); - } - return query; }; @@ -52,10 +44,12 @@ export const getLogRateAnalysisEQQuery = ( return; } - const groupBy: GroupBy | undefined = get(alert, 'fields["kibana.alert.group"]'); + const group: Group[] | undefined = get(alert, 'fields["kibana.alert.group"]'); const optionalFilter: string | undefined = get(params.searchConfiguration, 'query.query'); + const groupByFilters = getGroupFilters(group); const boolQuery = buildEsQuery({ - kuery: getKuery(params.criteria[0].metrics, optionalFilter, groupBy), + kuery: getKuery(params.criteria[0].metrics, optionalFilter), + filters: groupByFilters, }); return boolQuery; diff --git a/x-pack/plugins/observability/public/pages/slo_details/slo_details.tsx b/x-pack/plugins/observability/public/pages/slo_details/slo_details.tsx index 960bd7b5cefdc..2c9db46d37f99 100644 --- a/x-pack/plugins/observability/public/pages/slo_details/slo_details.tsx +++ b/x-pack/plugins/observability/public/pages/slo_details/slo_details.tsx @@ -59,7 +59,7 @@ export function SloDetailsPage() { instanceId: sloInstanceId, shouldRefetch: isAutoRefreshing, }); - const isCloningOrDeleting = Boolean(useIsMutating()); + const isDeleting = Boolean(useIsMutating(['deleteSlo'])); const [selectedTabId, setSelectedTabId] = useState(() => { const searchParams = new URLSearchParams(search); @@ -109,7 +109,7 @@ export function SloDetailsPage() { navigateToUrl(basePath.prepend(paths.observability.slos)); } - const isPerformingAction = isLoading || isCloningOrDeleting; + const isPerformingAction = isLoading || isDeleting; const handleToggleAutoRefresh = () => { setIsAutoRefreshing(!isAutoRefreshing); diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx index 1969db914a495..54499750187c8 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx @@ -80,6 +80,16 @@ export function QueryBuilder({ query: kqlQuerySchema.is(field.value) ? String(field.value) : field.value.kqlQuery, language: 'kuery', }} + onQueryChange={(value) => { + if (kqlQuerySchema.is(field.value)) { + field.onChange(String(value.query?.query)); + } else { + field.onChange({ + ...(field.value ?? {}), + kqlQuery: String(value.query?.query), + }); + } + }} onQuerySubmit={(value) => { if (kqlQuerySchema.is(field.value)) { field.onChange(String(value.query?.query)); diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx index 9b5ddfc29b07d..b64f208886125 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form.tsx @@ -10,12 +10,14 @@ import { i18n } from '@kbn/i18n'; import type { GetSLOResponse } from '@kbn/slo-schema'; import React, { useCallback } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; -import { EquivalentApiRequest } from './common/equivalent_api_request'; import { paths } from '../../../../common/locators/paths'; import { useCreateSlo } from '../../../hooks/slo/use_create_slo'; import { useUpdateSlo } from '../../../hooks/slo/use_update_slo'; +import { useCreateRule } from '../../../hooks/use_create_rule'; +import { BurnRateRuleParams } from '../../../typings'; import { useKibana } from '../../../utils/kibana_react'; import { SLO_EDIT_FORM_DEFAULT_VALUES } from '../constants'; +import { createBurnRateRuleRequestBody } from '../helpers/create_burn_rate_rule_request_body'; import { transformCreateSLOFormToCreateSLOInput, transformSloResponseToCreateSloForm, @@ -25,13 +27,11 @@ import { useParseUrlState } from '../hooks/use_parse_url_state'; import { useSectionFormValidation } from '../hooks/use_section_form_validation'; import { useShowSections } from '../hooks/use_show_sections'; import { CreateSLOForm } from '../types'; +import { EquivalentApiRequest } from './common/equivalent_api_request'; +import { SLOInspectWrapper } from './common/slo_inspect'; import { SloEditFormDescriptionSection } from './slo_edit_form_description_section'; import { SloEditFormIndicatorSection } from './slo_edit_form_indicator_section'; import { SloEditFormObjectiveSection } from './slo_edit_form_objective_section'; -import { useCreateRule } from '../../../hooks/use_create_rule'; -import { createBurnRateRuleRequestBody } from '../helpers/create_burn_rate_rule_request_body'; -import { BurnRateRuleParams } from '../../../typings'; -import { SLOInspectWrapper } from './common/slo_inspect'; export interface Props { slo?: GetSLOResponse; @@ -50,7 +50,7 @@ export function SloEditForm({ slo }: Props) { const sloFormValuesFromSloResponse = transformSloResponseToCreateSloForm(slo); const methods = useForm({ - defaultValues: SLO_EDIT_FORM_DEFAULT_VALUES, + defaultValues: sloFormValuesFromUrlState ?? SLO_EDIT_FORM_DEFAULT_VALUES, values: sloFormValuesFromUrlState ? sloFormValuesFromUrlState : sloFormValuesFromSloResponse, mode: 'all', }); @@ -86,7 +86,7 @@ export function SloEditForm({ slo }: Props) { if (isEditMode) { const processedValues = transformValuesToUpdateSLOInput(values); - updateSlo({ sloId: slo.id, slo: processedValues }); + await updateSlo({ sloId: slo.id, slo: processedValues }); navigate(basePath.prepend(paths.observability.slos)); } else { const processedValues = transformCreateSLOFormToCreateSLOInput(values); @@ -156,7 +156,7 @@ export function SloEditForm({ slo }: Props) { navigateToUrl(basePath.prepend(paths.observability.slos))} > {i18n.translate('xpack.observability.slo.sloEdit.cancelButton', { @@ -166,10 +166,13 @@ export function SloEditForm({ slo }: Props) { - + diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx index 3c87168792303..8db7460014a0b 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/slo_edit_form_indicator_section.tsx @@ -7,7 +7,7 @@ import { EuiFormRow, EuiPanel, EuiSelect, EuiSpacer } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; -import React from 'react'; +import React, { useMemo } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; import { SLI_OPTIONS } from '../constants'; import { useUnregisterFields } from '../hooks/use_unregister_fields'; @@ -28,8 +28,10 @@ export function SloEditFormIndicatorSection({ isEditMode }: SloEditFormIndicator const { control, watch } = useFormContext(); useUnregisterFields({ isEditMode }); - const getIndicatorTypeForm = () => { - switch (watch('indicator.type')) { + const indicatorType = watch('indicator.type'); + + const indicatorTypeForm = useMemo(() => { + switch (indicatorType) { case 'sli.kql.custom': return ; case 'sli.apm.transactionDuration': @@ -45,7 +47,7 @@ export function SloEditFormIndicatorSection({ isEditMode }: SloEditFormIndicator default: return null; } - }; + }, [indicatorType]); return ( )} - {getIndicatorTypeForm()} + {indicatorTypeForm} ); } diff --git a/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_parse_url_state.ts b/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_parse_url_state.ts index 16edf6df757c1..2c305feda3c06 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_parse_url_state.ts +++ b/x-pack/plugins/observability/public/pages/slo_edit/hooks/use_parse_url_state.ts @@ -9,18 +9,22 @@ import { createKbnUrlStateStorage } from '@kbn/kibana-utils-plugin/public'; import { CreateSLOInput } from '@kbn/slo-schema'; import { RecursivePartial } from '@kbn/utility-types'; import { useHistory } from 'react-router-dom'; +import { useMemo } from 'react'; import { transformPartialUrlStateToFormState } from '../helpers/process_slo_form_values'; import { CreateSLOForm } from '../types'; export function useParseUrlState(): CreateSLOForm | undefined { const history = useHistory(); - const urlStateStorage = createKbnUrlStateStorage({ - history, - useHash: false, - useHashQuery: false, - }); - const urlState = urlStateStorage.get>('_a'); + return useMemo(() => { + const urlStateStorage = createKbnUrlStateStorage({ + history, + useHash: false, + useHashQuery: false, + }); - return !!urlState ? transformPartialUrlStateToFormState(urlState) : undefined; + const urlState = urlStateStorage.get>('_a'); + + return !!urlState ? transformPartialUrlStateToFormState(urlState) : undefined; + }, [history]); } diff --git a/x-pack/plugins/observability/public/pages/slos/components/common/sort_by_select.tsx b/x-pack/plugins/observability/public/pages/slos/components/common/sort_by_select.tsx index 1119c275180f2..2982e8e67ef9d 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/common/sort_by_select.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/common/sort_by_select.tsx @@ -17,6 +17,7 @@ import type { SortField } from '../slo_list_search_bar'; export interface Props { onStateChange: (newState: Partial) => void; state: SearchState; + loading: boolean; } export type Item = EuiSelectableOption & { @@ -25,7 +26,7 @@ export type Item = EuiSelectableOption & { checked?: EuiSelectableOptionCheckedType; }; -export function SLOSortBy({ state, onStateChange }: Props) { +export function SLOSortBy({ state, onStateChange, loading }: Props) { const [isSortByPopoverOpen, setIsSortByPopoverOpen] = useState(false); const sortBy = state.sort.by; @@ -125,6 +126,7 @@ export function SLOSortBy({ state, onStateChange }: Props) { isPopoverOpen={isSortByPopoverOpen} setIsPopoverOpen={setIsSortByPopoverOpen} label={SORT_BY_LABEL} + loading={loading} /> ); } diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_context_menu.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_context_menu.tsx index 0ad5c4b4d827e..de03eab18fbb1 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_context_menu.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_context_menu.tsx @@ -34,6 +34,7 @@ export interface Props { items: JSX.Element[]; selected: string; label: string; + loading: boolean; } export type Item = EuiSelectableOption & { @@ -49,6 +50,7 @@ export function SLOContextMenu({ items, selected, setIsPopoverOpen, + loading, }: Props) { const singleContextMenuPopoverId = useGeneratedHtmlId({ prefix: 'singleContextMenuPopover', @@ -65,6 +67,7 @@ export function SLOContextMenu({ iconType="arrowDown" iconSide="right" onClick={handleTogglePopover} + isLoading={loading} > {selected} diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx index b7b51f631860a..221c51ed4348f 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list.tsx @@ -45,9 +45,6 @@ export function SloList() { } = useKibana().services; const { results = [], total = 0 } = sloList ?? {}; - const isCreatingSlo = Boolean(useIsMutating(['creatingSlo'])); - const isCloningSlo = Boolean(useIsMutating(['cloningSlo'])); - const isUpdatingSlo = Boolean(useIsMutating(['updatingSlo'])); const isDeletingSlo = Boolean(useIsMutating(['deleteSlo'])); const onStateChange = (newState: Partial) => { @@ -99,7 +96,7 @@ export function SloList() { onChangeView={(newView) => onStateChange({ view: newView })} onStateChange={onStateChange} state={state} - loading={isLoading || isCreatingSlo || isCloningSlo || isUpdatingSlo || isDeletingSlo} + loading={isLoading || isDeletingSlo} /> {groupBy === 'ungrouped' && ( diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_group_by.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_group_by.tsx index aeefcb84bc3af..a10fc2a114d5c 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_group_by.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_group_by.tsx @@ -16,6 +16,7 @@ export type GroupByField = 'ungrouped' | 'slo.tags' | 'status' | 'slo.indicator. export interface Props { onStateChange: (newState: Partial) => void; state: SearchState; + loading: boolean; } export type Item = EuiSelectableOption & { @@ -24,7 +25,7 @@ export type Item = EuiSelectableOption & { checked?: EuiSelectableOptionCheckedType; }; -export function SloGroupBy({ onStateChange, state }: Props) { +export function SloGroupBy({ onStateChange, state, loading }: Props) { const [isGroupByPopoverOpen, setIsGroupByPopoverOpen] = useState(false); const groupBy = state.groupBy; @@ -99,6 +100,7 @@ export function SloGroupBy({ onStateChange, state }: Props) { isPopoverOpen={isGroupByPopoverOpen} setIsPopoverOpen={setIsGroupByPopoverOpen} label={GROUP_TITLE} + loading={loading} /> ); } diff --git a/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_bar.tsx b/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_bar.tsx index 42ece861e3542..10f471655890f 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_bar.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/slo_list_search_bar.tsx @@ -35,12 +35,8 @@ export function SloListSearchBar() { const containerRef = React.useRef(null); - const isCreatingSlo = Boolean(useIsMutating(['creatingSlo'])); - const isCloningSlo = Boolean(useIsMutating(['cloningSlo'])); - const isUpdatingSlo = Boolean(useIsMutating(['updatingSlo'])); const isDeletingSlo = Boolean(useIsMutating(['deleteSlo'])); - - const loading = isCreatingSlo || isCloningSlo || isUpdatingSlo || isDeletingSlo; + const loading = isDeletingSlo; const { dataView } = useCreateDataView({ indexPatternString: SLO_SUMMARY_DESTINATION_INDEX_NAME, diff --git a/x-pack/plugins/observability/public/pages/slos/components/toggle_slo_view.tsx b/x-pack/plugins/observability/public/pages/slos/components/toggle_slo_view.tsx index 0a29c66944888..8de731bf5ec24 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/toggle_slo_view.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/toggle_slo_view.tsx @@ -46,7 +46,14 @@ const toggleButtonsIcons = [ }, ]; -export function ToggleSLOView({ sloView, onChangeView, onStateChange, sloList, state }: Props) { +export function ToggleSLOView({ + sloView, + onChangeView, + onStateChange, + sloList, + state, + loading, +}: Props) { const total = sloList?.total ?? 0; const pageSize = sloList?.perPage ?? 0; const pageIndex = sloList?.page ?? 1; @@ -79,10 +86,10 @@ export function ToggleSLOView({ sloView, onChangeView, onStateChange, sloList, s )} - + - + onChangeView(id as SLOView)} isIconOnly + isDisabled={loading} /> diff --git a/x-pack/plugins/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap b/x-pack/plugins/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap index fe58f98867fbb..2de050e170b38 100644 --- a/x-pack/plugins/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap +++ b/x-pack/plugins/observability/public/utils/build_es_query/__snapshots__/build_es_query.test.ts.snap @@ -54,6 +54,64 @@ Object { } `; +exports[`buildEsQuery should generate correct es query for {"timeRange":{"from":"2022-08-30T15:23:23.721Z","to":"2022-08-30T15:38:28.171Z"},"kuery":"kibana.alert.status: \\"recovered\\" and kibana.alert.duration.us >= 120","filters":[{"meta":{},"query":{"service.name":{"value":"synth-node-0"}}}]} 1`] = ` +Object { + "bool": Object { + "filter": Array [ + Object { + "bool": Object { + "filter": Array [ + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "match_phrase": Object { + "kibana.alert.status": "recovered", + }, + }, + ], + }, + }, + Object { + "bool": Object { + "minimum_should_match": 1, + "should": Array [ + Object { + "range": Object { + "kibana.alert.duration.us": Object { + "gte": "120", + }, + }, + }, + ], + }, + }, + ], + }, + }, + Object { + "range": Object { + "kibana.alert.time_range": Object { + "format": "strict_date_optional_time", + "gte": "2022-08-30T15:23:23.721Z", + "lte": "2022-08-30T15:38:28.171Z", + }, + }, + }, + Object { + "service.name": Object { + "value": "synth-node-0", + }, + }, + ], + "must": Array [], + "must_not": Array [], + "should": Array [], + }, +} +`; + exports[`buildEsQuery should generate correct es query for {"timeRange":{"from":"2022-08-30T15:23:23.721Z","to":"2022-08-30T15:38:28.171Z"},"kuery":"kibana.alert.status: \\"recovered\\" and kibana.alert.duration.us >= 120"} 1`] = ` Object { "bool": Object { @@ -166,4 +224,3 @@ Object { }, } `; - diff --git a/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.test.ts b/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.test.ts index 3cb37893e6169..415fca67f3c63 100644 --- a/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.test.ts +++ b/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.test.ts @@ -34,9 +34,26 @@ describe('buildEsQuery', () => { timeRange: defaultTimeRange, kuery: 'kibana.alert.status: "recovered" and kibana.alert.duration.us >= 120', }, + { + timeRange: defaultTimeRange, + kuery: 'kibana.alert.status: "recovered" and kibana.alert.duration.us >= 120', + filters: [ + { + meta: {}, + query: { + 'service.name': { + value: 'synth-node-0', + }, + }, + }, + ], + }, ]; - test.each(testData)('should generate correct es query for %j', ({ kuery, timeRange }) => { - expect(buildEsQuery({ timeRange, kuery })).toMatchSnapshot(); - }); + test.each(testData)( + 'should generate correct es query for %j', + ({ kuery, timeRange, filters }) => { + expect(buildEsQuery({ timeRange, kuery, filters })).toMatchSnapshot(); + } + ); }); diff --git a/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.ts b/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.ts index acf6b4cfc4a7e..a3a95d0e8e919 100644 --- a/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.ts +++ b/x-pack/plugins/observability/public/utils/build_es_query/build_es_query.ts @@ -5,24 +5,37 @@ * 2.0. */ -import { buildEsQuery as kbnBuildEsQuery, TimeRange, Query, EsQueryConfig } from '@kbn/es-query'; +import { + buildEsQuery as kbnBuildEsQuery, + EsQueryConfig, + Filter, + Query, + TimeRange, +} from '@kbn/es-query'; import { ALERT_TIME_RANGE } from '@kbn/rule-data-utils'; import { getTime } from '@kbn/data-plugin/common'; interface BuildEsQueryArgs { timeRange?: TimeRange; kuery?: string; - queries?: Query[]; config?: EsQueryConfig; + queries?: Query[]; + filters?: Filter[]; } -export function buildEsQuery({ timeRange, kuery, queries = [], config = {} }: BuildEsQueryArgs) { +export function buildEsQuery({ + timeRange, + kuery, + config = {}, + queries = [], + filters = [], +}: BuildEsQueryArgs) { const timeFilter = timeRange && getTime(undefined, timeRange, { fieldName: ALERT_TIME_RANGE, }); - const filtersToUse = timeFilter ? [timeFilter] : []; + const filtersToUse: Filter[] = timeFilter ? [timeFilter, ...filters] : filters; const kueryFilter = kuery ? [{ query: kuery, language: 'kuery' }] : []; const queryToUse = [...kueryFilter, ...queries]; return kbnBuildEsQuery(undefined, queryToUse, filtersToUse, config); diff --git a/x-pack/plugins/observability_ai_assistant/kibana.jsonc b/x-pack/plugins/observability_ai_assistant/kibana.jsonc index a3eaad0d216a3..2ca4b560393f0 100644 --- a/x-pack/plugins/observability_ai_assistant/kibana.jsonc +++ b/x-pack/plugins/observability_ai_assistant/kibana.jsonc @@ -10,6 +10,7 @@ "requiredPlugins": [ "alerting", "actions", + "data", "dataViews", "features", "lens", @@ -24,10 +25,8 @@ "dataViews", "ml" ], - "requiredBundles": [ "kibanaReact", "kibanaUtils"], - "optionalPlugins": [ - "cloud" - ], + "requiredBundles": ["kibanaReact", "kibanaUtils"], + "optionalPlugins": ["cloud"], "extraPublicDirs": [] } } diff --git a/x-pack/plugins/observability_ai_assistant/public/components/action_menu_item/action_menu_item.tsx b/x-pack/plugins/observability_ai_assistant/public/components/action_menu_item/action_menu_item.tsx index c22d32e7a49d7..ca8af6956ff36 100644 --- a/x-pack/plugins/observability_ai_assistant/public/components/action_menu_item/action_menu_item.tsx +++ b/x-pack/plugins/observability_ai_assistant/public/components/action_menu_item/action_menu_item.tsx @@ -5,16 +5,20 @@ * 2.0. */ import React, { useEffect, useMemo, useState } from 'react'; +import datemath from '@elastic/datemath'; import { EuiFlexGroup, EuiFlexItem, EuiHeaderLink, EuiLoadingSpinner } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; +import moment from 'moment'; import { ObservabilityAIAssistantChatServiceProvider } from '../../context/observability_ai_assistant_chat_service_provider'; import { useAbortableAsync } from '../../hooks/use_abortable_async'; import { useObservabilityAIAssistant } from '../../hooks/use_observability_ai_assistant'; import { AssistantAvatar } from '../assistant_avatar'; import { ChatFlyout } from '../chat/chat_flyout'; +import { useKibana } from '../../hooks/use_kibana'; export function ObservabilityAIAssistantActionMenuItem() { const service = useObservabilityAIAssistant(); + const { plugins } = useKibana().services; const [isOpen, setIsOpen] = useState(false); @@ -44,15 +48,15 @@ export function ObservabilityAIAssistantActionMenuItem() { }; }, []); + const { from, to } = plugins.start.data.query.timefilter.timefilter.getTime(); useEffect(() => { - const unregister = service.setScreenContext({ - screenDescription: 'The user is looking at ' + window.location.href, - }); + const start = datemath.parse(from)?.format() ?? moment().subtract(1, 'day').toISOString(); + const end = datemath.parse(to)?.format() ?? moment().toISOString(); - return () => { - unregister(); - }; - }, [service]); + return service.setScreenContext({ + screenDescription: `The user is looking at ${window.location.href}. The current time range is ${start} - ${end}.`, + }); + }, [service, from, to]); if (!service.isEnabled()) { return null; diff --git a/x-pack/plugins/observability_ai_assistant/public/components/chat/chat_body.tsx b/x-pack/plugins/observability_ai_assistant/public/components/chat/chat_body.tsx index a89419c366a2d..83eae35e59f97 100644 --- a/x-pack/plugins/observability_ai_assistant/public/components/chat/chat_body.tsx +++ b/x-pack/plugins/observability_ai_assistant/public/components/chat/chat_body.tsx @@ -154,6 +154,7 @@ export function ChatBody({ } const containerClassName = css` + min-width: 0; max-height: 100%; max-width: ${startedFrom === 'conversationView' ? 1200 - 250 + 'px' // page template max width - conversation list width. diff --git a/x-pack/plugins/observability_ai_assistant/public/components/chat/welcome_message.tsx b/x-pack/plugins/observability_ai_assistant/public/components/chat/welcome_message.tsx index 0227ef42e2808..be6fc3fe77efa 100644 --- a/x-pack/plugins/observability_ai_assistant/public/components/chat/welcome_message.tsx +++ b/x-pack/plugins/observability_ai_assistant/public/components/chat/welcome_message.tsx @@ -87,7 +87,7 @@ export function WelcomeMessage({ className={fullHeightClassName} > - + - +

{i18n.translate('xpack.observabilityAiAssistant.disclaimer.title', { defaultMessage: 'Welcome to the AI Assistant for Observability', diff --git a/x-pack/plugins/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx b/x-pack/plugins/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx index f381c6457cd63..de264de9abb4e 100644 --- a/x-pack/plugins/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx +++ b/x-pack/plugins/observability_ai_assistant/public/components/connector_selector/connector_selector_base.tsx @@ -11,6 +11,7 @@ import { EuiLoadingSpinner, EuiSuperSelect, EuiText, + EuiTextTruncate, } from '@elastic/eui'; import React from 'react'; import { i18n } from '@kbn/i18n'; @@ -30,8 +31,8 @@ const wrapperClassName = css` } `; -const noWrapClassName = css` - white-space: nowrap; +const smallFontClassName = css` + font-size: 12px; `; export function ConnectorSelectorBase(props: ConnectorSelectorBaseProps) { @@ -84,14 +85,14 @@ export function ConnectorSelectorBase(props: ConnectorSelectorBaseProps) { gutterSize="xs" responsive={false} > - + ({ value: connector.id, inputDisplay: ( - + {i18n.translate( @@ -102,18 +103,16 @@ export function ConnectorSelectorBase(props: ConnectorSelectorBaseProps) { )} - - - {connector.name} - + + ), - dropdownDisplay: ( - - {connector.name} - - ), + dropdownDisplay: {connector.name}, }))} onChange={(id) => { props.selectConnector(id); diff --git a/x-pack/plugins/observability_ai_assistant/public/components/page_template.tsx b/x-pack/plugins/observability_ai_assistant/public/components/page_template.tsx index 94c36f463aaf4..7cab8d586c83e 100644 --- a/x-pack/plugins/observability_ai_assistant/public/components/page_template.tsx +++ b/x-pack/plugins/observability_ai_assistant/public/components/page_template.tsx @@ -36,6 +36,7 @@ export function ObservabilityAIAssistantPageTemplate({ children }: { children: R contentProps: { className: pageSectionContentClassName, }, + paddingSize: 'none', }} > {children} diff --git a/x-pack/plugins/observability_ai_assistant/public/functions/visualize_esql.tsx b/x-pack/plugins/observability_ai_assistant/public/functions/visualize_esql.tsx index 61295f4faf6f7..05ab7890d3951 100644 --- a/x-pack/plugins/observability_ai_assistant/public/functions/visualize_esql.tsx +++ b/x-pack/plugins/observability_ai_assistant/public/functions/visualize_esql.tsx @@ -25,7 +25,7 @@ import type { import React, { useState, useEffect, useCallback, useMemo, useContext } from 'react'; import ReactDOM from 'react-dom'; import useAsync from 'react-use/lib/useAsync'; -import { getIndexPatternFromESQLQuery } from '@kbn/esql-utils'; +import { getIndexPatternFromESQLQuery, getESQLAdHocDataview } from '@kbn/esql-utils'; import { VisualizeESQLFunctionArguments, VisualizeESQLUserIntention, @@ -85,9 +85,7 @@ export function VisualizeESQL({ }, [lens]); const dataViewAsync = useAsync(() => { - return dataViews.create({ - title: indexPattern, - }); + return getESQLAdHocDataview(indexPattern, dataViews); }, [indexPattern]); const chatFlyoutSecondSlotHandler = useContext(ObservabilityAIAssistantMultipaneFlyoutContext); @@ -352,13 +350,15 @@ export function registerVisualizeQueryRenderFunction({ break; } + const trimmedQuery = query.trim(); + return ( - - - { - if (conversationId) { - observabilityAIAssistantRouter.push('/conversations/new', { - path: {}, - query: {}, - }); - } else { - // clear the chat - chatBodyKeyRef.current = v4(); - forceUpdate(); - } - }} - onClickChat={(id) => { - navigateToConversation(id, false); - }} - onClickDeleteConversation={(id) => { - if (conversationId === id) { - navigateToConversation(undefined, false); - } - }} + + + { + if (conversationId) { + observabilityAIAssistantRouter.push('/conversations/new', { + path: {}, + query: {}, + }); + } else { + // clear the chat + chatBodyKeyRef.current = v4(); + forceUpdate(); + } + }} + onClickChat={(id) => { + navigateToConversation(id, false); + }} + onClickDeleteConversation={(id) => { + if (conversationId === id) { + navigateToConversation(undefined, false); + } + }} + /> + + + + {!chatService.value ? ( + + + + + + + ) : null} + + {chatService.value && ( + + - - - - {!chatService.value ? ( - - - - - - - ) : null} - - {chatService.value && ( - - -
- -
-
- )} -
- +
+ +
+ + )} +
); } diff --git a/x-pack/plugins/observability_ai_assistant/public/types.ts b/x-pack/plugins/observability_ai_assistant/public/types.ts index 3a4c4fbc59d7d..2846a01b049c7 100644 --- a/x-pack/plugins/observability_ai_assistant/public/types.ts +++ b/x-pack/plugins/observability_ai_assistant/public/types.ts @@ -32,6 +32,7 @@ import type { TriggersAndActionsUIPublicPluginSetup, TriggersAndActionsUIPublicPluginStart, } from '@kbn/triggers-actions-ui-plugin/public'; +import { DataPublicPluginSetup, DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { StreamingChatResponseEventWithoutError } from '../common/conversation_complete'; import type { ContextDefinition, @@ -112,6 +113,7 @@ export type ChatRegistrationRenderFunction = ({}: { export interface ConfigSchema {} export interface ObservabilityAIAssistantPluginSetupDependencies { + data: DataPublicPluginSetup; dataViews: DataViewsPublicPluginSetup; features: FeaturesPluginSetup; lens: LensPublicSetup; @@ -122,6 +124,7 @@ export interface ObservabilityAIAssistantPluginSetupDependencies { } export interface ObservabilityAIAssistantPluginStartDependencies { + data: DataPublicPluginStart; dataViews: DataViewsPublicPluginStart; features: FeaturesPluginStart; lens: LensPublicStart; diff --git a/x-pack/plugins/observability_ai_assistant/tsconfig.json b/x-pack/plugins/observability_ai_assistant/tsconfig.json index 13af731fd49db..177e87be3de66 100644 --- a/x-pack/plugins/observability_ai_assistant/tsconfig.json +++ b/x-pack/plugins/observability_ai_assistant/tsconfig.json @@ -68,7 +68,8 @@ "@kbn/visualization-utils", "@kbn/field-types", "@kbn/es-types", - "@kbn/esql-utils" + "@kbn/esql-utils", + "@kbn/data-plugin" ], "exclude": ["target/**/*"] } diff --git a/x-pack/plugins/observability_solution/logs_explorer/common/constants.ts b/x-pack/plugins/observability_solution/logs_explorer/common/constants.ts index 7839a5c0654cd..231be1a7b96fd 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/common/constants.ts +++ b/x-pack/plugins/observability_solution/logs_explorer/common/constants.ts @@ -74,3 +74,20 @@ export const SMART_FALLBACK_FIELDS = { // UI preferences export const DEFAULT_COLUMNS = [RESOURCE_FIELD_CONFIGURATION, CONTENT_FIELD_CONFIGURATION]; export const DEFAULT_ROWS_PER_PAGE = 100; + +// List of prefixes which needs to be filtered out for Display in Content Column +export const FILTER_OUT_FIELDS_PREFIXES_FOR_CONTENT = [ + '_', // Filter fields like '_id', '_score' + '@timestamp', + 'agent.', + 'elastic_agent.', + 'data_stream.', + 'ecs.', + 'host.', + 'container.', + 'cloud.', + 'kubernetes.', + 'orchestrator.', + 'log.', + 'service.', +]; diff --git a/x-pack/plugins/observability_solution/logs_explorer/common/index.ts b/x-pack/plugins/observability_solution/logs_explorer/common/index.ts index 0f593cb8ad072..9eb381441cc55 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/common/index.ts +++ b/x-pack/plugins/observability_solution/logs_explorer/common/index.ts @@ -16,6 +16,9 @@ export { AllDatasetSelection, datasetSelectionPlainRT, hydrateDatasetSelection, + isDatasetSelection, + isDataViewSelection, + isUnresolvedDatasetSelection, UnresolvedDatasetSelection, } from './dataset_selection'; export type { DatasetSelectionPlain } from './dataset_selection'; diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/dataset_selector.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/dataset_selector.tsx index 507f4d83f8957..36b9e337a5a90 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/dataset_selector.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/dataset_selector.tsx @@ -44,6 +44,7 @@ export function DatasetSelector({ discoverEsqlUrlProps, integrations, integrationsError, + isDataViewAvailable, isEsqlEnabled, isLoadingDataViews, isLoadingIntegrations, @@ -164,8 +165,16 @@ export function DatasetSelector({ 'data-test-subj': getDataViewTestSubj(dataView.title), name: , onClick: () => selectDataView(dataView), + disabled: !isDataViewAvailable(dataView), })); - }, [dataViews, dataViewsError, isLoadingDataViews, selectDataView, onDataViewsReload]); + }, [ + dataViews, + dataViewsError, + isDataViewAvailable, + isLoadingDataViews, + onDataViewsReload, + selectDataView, + ]); const tabs = [ { diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/sub_components/data_view_menu_item.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/sub_components/data_view_menu_item.tsx index 04388f4f479ec..a260574a28e03 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/sub_components/data_view_menu_item.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/sub_components/data_view_menu_item.tsx @@ -21,7 +21,7 @@ const rightSpacing = css` `; export const DataViewMenuItem = ({ dataView }: DataViewMenuItemProps) => { - if (dataView.dataType === 'logs') { + if (dataView.isLogsDataType()) { return {dataView.name}; } diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/types.ts b/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/types.ts index 5076f382f2fcb..e2572f4543533 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/types.ts +++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/dataset_selector/types.ts @@ -26,7 +26,12 @@ import { INTEGRATIONS_TAB_ID, UNCATEGORIZED_TAB_ID, } from './constants'; -import { LoadDataViews, ReloadDataViews, SearchDataViews } from '../../hooks/use_data_views'; +import { + IsDataViewAvailable, + LoadDataViews, + ReloadDataViews, + SearchDataViews, +} from '../../hooks/use_data_views'; import { DiscoverEsqlUrlProps } from '../../hooks/use_esql'; export interface DatasetSelectorProps { @@ -53,6 +58,8 @@ export interface DatasetSelectorProps { isSearchingIntegrations: boolean; /* Flag for determining whether ESQL is enabled or not */ isEsqlEnabled: boolean; + /* Used against a data view to assert its availability */ + isDataViewAvailable: IsDataViewAvailable; /* Triggered when retrying to load the data views */ onDataViewsReload: ReloadDataViews; /* Triggered when the data views tab is selected */ diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/content.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/content.tsx index 5e485cb03c99b..13ae9ce80fa09 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/content.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/components/virtual_columns/content.tsx @@ -88,8 +88,14 @@ export const Content = ({ return getShouldShowFieldHandler(dataViewFields, dataView, true); }, [dataView]); + const formattedRow = useMemo(() => { + return formatJsonDocumentForContent(row); + }, [row]); + if (isDetails && !renderLogMessage) { - return ; + return ( + + ); } return ( @@ -102,7 +108,7 @@ export const Content = ({ ) : ( ); }; + +const formatJsonDocumentForContent = (row: DataTableRecord) => { + const flattenedResult: DataTableRecord['flattened'] = {}; + const rawFieldResult: DataTableRecord['raw']['fields'] = {}; + const { raw, flattened } = row; + const { fields } = raw; + + // We need 2 loops here for flattened and raw.fields. Flattened contains all fields, + // whereas raw.fields only contains certain fields excluding _ignored + for (const key in flattened) { + if ( + !constants.FILTER_OUT_FIELDS_PREFIXES_FOR_CONTENT.some((prefix) => key.startsWith(prefix)) + ) { + flattenedResult[key] = flattened[key]; + } + } + + for (const key in fields) { + if ( + !constants.FILTER_OUT_FIELDS_PREFIXES_FOR_CONTENT.some((prefix) => key.startsWith(prefix)) + ) { + rawFieldResult[key] = fields[key]; + } + } + + return { + ...row, + flattened: flattenedResult, + raw: { + ...raw, + fields: rawFieldResult, + }, + }; +}; diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/controller/create_controller.ts b/x-pack/plugins/observability_solution/logs_explorer/public/controller/create_controller.ts index 59aad01a0b388..daaa5b27029c6 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/controller/create_controller.ts +++ b/x-pack/plugins/observability_solution/logs_explorer/public/controller/create_controller.ts @@ -43,7 +43,7 @@ export const createLogsExplorerControllerFactory = customizations?: LogsExplorerCustomizations; initialState?: InitialState; }): Promise => { - const { data, dataViews, discover } = plugins; + const { data, dataViews } = plugins; const datasetsClient = new DatasetsService().start({ http: core.http, @@ -70,7 +70,8 @@ export const createLogsExplorerControllerFactory = const machine = createLogsExplorerControllerStateMachine({ datasetsClient, - plugins: { dataViews, discover }, + dataViews, + events: customizations.events, initialContext, query: discoverServices.data.query, toasts: core.notifications.toasts, diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/customizations/custom_dataset_selector.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/customizations/custom_dataset_selector.tsx index b298a2363a983..4623d73852240 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/customizations/custom_dataset_selector.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/customizations/custom_dataset_selector.tsx @@ -8,6 +8,7 @@ import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import React from 'react'; import { DatasetSelector } from '../components/dataset_selector'; +import { LogsExplorerController } from '../controller'; import { DatasetsProvider, useDatasetsContext } from '../hooks/use_datasets'; import { useDatasetSelection } from '../hooks/use_dataset_selection'; import { DataViewsProvider, useDataViewsContext } from '../hooks/use_data_views'; @@ -52,6 +53,7 @@ export const CustomDatasetSelector = withProviders(({ logsExplorerControllerStat dataViews, error: dataViewsError, isLoading: isLoadingDataViews, + isDataViewAvailable, loadDataViews, reloadDataViews, searchDataViews, @@ -68,6 +70,7 @@ export const CustomDatasetSelector = withProviders(({ logsExplorerControllerStat dataViews={dataViews} dataViewsError={dataViewsError} discoverEsqlUrlProps={discoverEsqlUrlProps} + isDataViewAvailable={isDataViewAvailable} integrations={integrations} integrationsError={integrationsError} isEsqlEnabled={isEsqlEnabled} @@ -98,12 +101,14 @@ export const CustomDatasetSelector = withProviders(({ logsExplorerControllerStat export default CustomDatasetSelector; export type CustomDatasetSelectorBuilderProps = CustomDatasetSelectorProps & { + controller: LogsExplorerController; datasetsClient: IDatasetsClient; dataViews: DataViewsPublicPluginStart; }; function withProviders(Component: React.FunctionComponent) { return function ComponentWithProviders({ + controller, datasetsClient, dataViews, logsExplorerControllerStateService, @@ -111,7 +116,10 @@ function withProviders(Component: React.FunctionComponent - + diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/customizations/logs_explorer_profile.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/customizations/logs_explorer_profile.tsx index ac5eb2d6d81c6..e00bbfa03b7d5 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/customizations/logs_explorer_profile.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/customizations/logs_explorer_profile.tsx @@ -64,6 +64,7 @@ export const createLogsExplorerProfileCustomizations = return ( = (props: Props) => React.ReactNode; @@ -25,8 +26,15 @@ export interface LogsExplorerFlyoutContentProps { doc: LogDocument; } +export type OnUknownDataViewSelectionHandler = (context: LogsExplorerControllerContext) => void; + +export interface LogsExplorerCustomizationEvents { + onUknownDataViewSelection?: OnUknownDataViewSelectionHandler; +} + export interface LogsExplorerCustomizations { flyout?: { renderContent?: RenderContentCustomization; }; + events?: LogsExplorerCustomizationEvents; } diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/hooks/use_data_views.tsx b/x-pack/plugins/observability_solution/logs_explorer/public/hooks/use_data_views.tsx index a71375ff2ea25..60af9d3591adf 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/hooks/use_data_views.tsx +++ b/x-pack/plugins/observability_solution/logs_explorer/public/hooks/use_data_views.tsx @@ -8,12 +8,15 @@ import { useCallback } from 'react'; import createContainer from 'constate'; import { useInterpret, useSelector } from '@xstate/react'; -import { DataViewListItem, DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; +import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; +import { DataViewDescriptor } from '../../common/data_views/models/data_view_descriptor'; import { SortOrder } from '../../common/latest'; import { createDataViewsStateMachine } from '../state_machines/data_views'; +import { LogsExplorerCustomizations } from '../controller'; interface DataViewsContextDeps { dataViewsService: DataViewsPublicPluginStart; + events: LogsExplorerCustomizations['events']; } export interface SearchDataViewsParams { @@ -21,12 +24,12 @@ export interface SearchDataViewsParams { sortOrder: SortOrder; } -export type DataViewSelectionHandler = (dataView: DataViewListItem) => void; export type SearchDataViews = (params: SearchDataViewsParams) => void; export type LoadDataViews = () => void; export type ReloadDataViews = () => void; +export type IsDataViewAvailable = (dataView: DataViewDescriptor) => boolean; -const useDataViews = ({ dataViewsService }: DataViewsContextDeps) => { +const useDataViews = ({ dataViewsService, events }: DataViewsContextDeps) => { const dataViewsStateService = useInterpret(() => createDataViewsStateMachine({ dataViews: dataViewsService, @@ -39,6 +42,13 @@ const useDataViews = ({ dataViewsService }: DataViewsContextDeps) => { const isLoading = useSelector(dataViewsStateService, (state) => state.matches('loading')); + const isDataViewAvailable: IsDataViewAvailable = useCallback( + (dataView) => + dataView.isLogsDataType() || + (dataView.isUnknownDataType() && Boolean(events?.onUknownDataViewSelection)), + [events?.onUknownDataViewSelection] + ); + const loadDataViews = useCallback( () => dataViewsStateService.send({ type: 'LOAD_DATA_VIEWS' }), [dataViewsStateService] @@ -81,6 +91,7 @@ const useDataViews = ({ dataViewsService }: DataViewsContextDeps) => { dataViews, // Actions + isDataViewAvailable, loadDataViews, reloadDataViews, searchDataViews, diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/index.ts b/x-pack/plugins/observability_solution/logs_explorer/public/index.ts index 6e452f8904828..c768b3a7cb3f3 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/index.ts +++ b/x-pack/plugins/observability_solution/logs_explorer/public/index.ts @@ -17,6 +17,7 @@ export type { } from './controller'; export type { LogsExplorerCustomizations, + LogsExplorerCustomizationEvents, LogsExplorerFlyoutContentProps, } from './customizations/types'; export type { LogsExplorerControllerContext } from './state_machines/logs_explorer_controller'; diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/discover_service.ts b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/discover_service.ts index d67c74097d701..96fbe4ff34440 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/discover_service.ts +++ b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/discover_service.ts @@ -5,11 +5,10 @@ * 2.0. */ -import { DiscoverStart } from '@kbn/discover-plugin/public'; import { isEmpty } from 'lodash'; import { ActionFunction, actions, InvokeCallback } from 'xstate'; -import { getDiscoverColumnsWithFallbackFieldsFromDisplayOptions } from '../../../../utils/convert_discover_app_state'; -import { DataViewSelection, isDataViewSelection } from '../../../../../common/dataset_selection'; +import { LogsExplorerCustomizations } from '../../../../controller'; +import { isDataViewSelection } from '../../../../../common/dataset_selection'; import { getChartDisplayOptionsFromDiscoverAppState, getDiscoverAppStateFromContext, @@ -110,32 +109,14 @@ export const updateDiscoverAppStateFromContext: ActionFunction< context.discoverStateContainer.appState.update(getDiscoverAppStateFromContext(context)); }; -export const redirectToDiscoverAction = +export const redirectToDiscover = ( - discover: DiscoverStart + events?: LogsExplorerCustomizations['events'] ): ActionFunction => (context, event) => { if (event.type === 'UPDATE_DATASET_SELECTION' && isDataViewSelection(event.data)) { - return redirectToDiscover({ context, datasetSelection: event.data, discover }); + if (events?.onUknownDataViewSelection) { + return events.onUknownDataViewSelection({ ...context, datasetSelection: event.data }); + } } }; - -export const redirectToDiscover = ({ - context, - datasetSelection, - discover, -}: { - discover: DiscoverStart; - context: LogsExplorerControllerContext; - datasetSelection: DataViewSelection; -}) => { - return discover.locator?.navigate({ - breakdownField: context.chart.breakdownField ?? undefined, - columns: getDiscoverColumnsWithFallbackFieldsFromDisplayOptions(context), - dataViewSpec: datasetSelection.selection.dataView.toDataviewSpec(), - filters: context.filters, - query: context.query, - refreshInterval: context.refreshInterval, - timeRange: context.time, - }); -}; diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/selection_service.ts b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/selection_service.ts index 281b446869276..bcf6bfce7730b 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/selection_service.ts +++ b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/services/selection_service.ts @@ -5,8 +5,8 @@ * 2.0. */ -import { DiscoverStart } from '@kbn/discover-plugin/public'; import { InvokeCreator } from 'xstate'; +import { LogsExplorerCustomizations } from '../../../../controller'; import { Dataset } from '../../../../../common/datasets'; import { isDataViewSelection, @@ -16,17 +16,16 @@ import { } from '../../../../../common/dataset_selection'; import { IDatasetsClient } from '../../../../services/datasets'; import { LogsExplorerControllerContext, LogsExplorerControllerEvent } from '../types'; -import { redirectToDiscover } from './discover_service'; interface LogsExplorerControllerSelectionServiceDeps { datasetsClient: IDatasetsClient; - discover: DiscoverStart; + events?: LogsExplorerCustomizations['events']; } export const initializeSelection = ({ datasetsClient, - discover, + events, }: LogsExplorerControllerSelectionServiceDeps): InvokeCreator< LogsExplorerControllerContext, LogsExplorerControllerEvent @@ -39,9 +38,10 @@ export const initializeSelection = */ if ( isDataViewSelection(context.datasetSelection) && - context.datasetSelection.selection.dataView.isUnknownDataType() + context.datasetSelection.selection.dataView.isUnknownDataType() && + events?.onUknownDataViewSelection ) { - return redirectToDiscover({ context, datasetSelection: context.datasetSelection, discover }); + return events?.onUknownDataViewSelection(context); } /** diff --git a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/state_machine.ts b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/state_machine.ts index 3354fbbcd7a02..da393ef99213c 100644 --- a/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/state_machine.ts +++ b/x-pack/plugins/observability_solution/logs_explorer/public/state_machines/logs_explorer_controller/src/state_machine.ts @@ -8,7 +8,8 @@ import { IToasts } from '@kbn/core/public'; import { QueryStart } from '@kbn/data-plugin/public'; import { actions, createMachine, interpret, InterpreterFrom, raise } from 'xstate'; -import { LogsExplorerStartDeps } from '../../../types'; +import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; +import { LogsExplorerCustomizations } from '../../../controller'; import { ControlPanelRT } from '../../../../common/control_panels'; import { AllDatasetSelection, @@ -28,7 +29,7 @@ import { } from './services/control_panels'; import { changeDataView, createAdHocDataView } from './services/data_view_service'; import { - redirectToDiscoverAction, + redirectToDiscover, subscribeToDiscoverState, updateContextFromDiscoverAppState, updateContextFromDiscoverDataState, @@ -319,7 +320,8 @@ export const createPureLogsExplorerControllerStateMachine = ( export interface LogsExplorerControllerStateMachineDependencies { datasetsClient: IDatasetsClient; - plugins: Pick; + dataViews: DataViewsPublicPluginStart; + events?: LogsExplorerCustomizations['events']; initialContext?: LogsExplorerControllerContext; query: QueryStart; toasts: IToasts; @@ -327,7 +329,8 @@ export interface LogsExplorerControllerStateMachineDependencies { export const createLogsExplorerControllerStateMachine = ({ datasetsClient, - plugins: { dataViews, discover }, + dataViews, + events, initialContext = DEFAULT_CONTEXT, query, toasts, @@ -336,14 +339,14 @@ export const createLogsExplorerControllerStateMachine = ({ actions: { notifyCreateDataViewFailed: createCreateDataViewFailedNotifier(toasts), notifyDatasetSelectionRestoreFailed: createDatasetSelectionRestoreFailedNotifier(toasts), - redirectToDiscover: redirectToDiscoverAction(discover), + redirectToDiscover: redirectToDiscover(events), updateTimefilterFromContext: updateTimefilterFromContext(query), }, services: { changeDataView: changeDataView({ dataViews }), createAdHocDataView: createAdHocDataView(), initializeControlPanels: initializeControlPanels(), - initializeSelection: initializeSelection({ datasetsClient, discover }), + initializeSelection: initializeSelection({ datasetsClient, events }), subscribeControlGroup: subscribeControlGroup(), updateControlPanels: updateControlPanels(), discoverStateService: subscribeToDiscoverState(), diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/public/logs_explorer_customizations/discover_navigation_handler.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/public/logs_explorer_customizations/discover_navigation_handler.ts new file mode 100644 index 0000000000000..8ffd223201c99 --- /dev/null +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/public/logs_explorer_customizations/discover_navigation_handler.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 { DiscoverStart } from '@kbn/discover-plugin/public'; +import { isDataViewSelection } from '@kbn/logs-explorer-plugin/common'; +import { + getDiscoverColumnsWithFallbackFieldsFromDisplayOptions, + LogsExplorerCustomizationEvents, +} from '@kbn/logs-explorer-plugin/public'; + +export const createOnUknownDataViewSelectionHandler = ( + discover: DiscoverStart +): LogsExplorerCustomizationEvents['onUknownDataViewSelection'] => { + return (context) => { + if (isDataViewSelection(context.datasetSelection)) + discover.locator?.navigate({ + breakdownField: context.chart.breakdownField ?? undefined, + columns: getDiscoverColumnsWithFallbackFieldsFromDisplayOptions(context), + dataViewSpec: context.datasetSelection.selection.dataView.toDataviewSpec(), + filters: context.filters, + query: context.query, + refreshInterval: context.refreshInterval, + timeRange: context.time, + }); + }; +}; diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/public/logs_explorer_customizations/index.ts b/x-pack/plugins/observability_solution/observability_logs_explorer/public/logs_explorer_customizations/index.ts index 1a10437340344..9e8c3061d6f55 100644 --- a/x-pack/plugins/observability_solution/observability_logs_explorer/public/logs_explorer_customizations/index.ts +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/public/logs_explorer_customizations/index.ts @@ -6,15 +6,23 @@ */ import { CreateLogsExplorerController } from '@kbn/logs-explorer-plugin/public'; +import { PluginKibanaContextValue } from '../utils/use_kibana'; +import { createOnUknownDataViewSelectionHandler } from './discover_navigation_handler'; import { renderFlyoutContent } from './flyout_content'; export const createLogsExplorerControllerWithCustomizations = - (createLogsExplorerController: CreateLogsExplorerController): CreateLogsExplorerController => + ( + createLogsExplorerController: CreateLogsExplorerController, + services: PluginKibanaContextValue + ): CreateLogsExplorerController => (args) => createLogsExplorerController({ ...args, customizations: { ...args.customizations, + events: { + onUknownDataViewSelection: createOnUknownDataViewSelectionHandler(services.discover), + }, flyout: { renderContent: renderFlyoutContent, }, diff --git a/x-pack/plugins/observability_solution/observability_logs_explorer/public/routes/main/main_route.tsx b/x-pack/plugins/observability_solution/observability_logs_explorer/public/routes/main/main_route.tsx index b9468354955e2..be071eb1dfcc3 100644 --- a/x-pack/plugins/observability_solution/observability_logs_explorer/public/routes/main/main_route.tsx +++ b/x-pack/plugins/observability_solution/observability_logs_explorer/public/routes/main/main_route.tsx @@ -35,8 +35,12 @@ export const ObservabilityLogsExplorerMainRoute = () => { const urlStateStorageContainer = useKbnUrlStateStorageFromRouterContext(); const createLogsExplorerController = useMemo( - () => createLogsExplorerControllerWithCustomizations(logsExplorer.createLogsExplorerController), - [logsExplorer.createLogsExplorerController] + () => + createLogsExplorerControllerWithCustomizations( + logsExplorer.createLogsExplorerController, + services + ), + [logsExplorer.createLogsExplorerController, services] ); return ( diff --git a/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts b/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts index 237487a408225..5cb3a31787863 100644 --- a/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts +++ b/x-pack/plugins/osquery/cypress/e2e/all/alerts_response_actions_form.cy.ts @@ -182,7 +182,7 @@ describe('Alert Event Details - Response Actions Form', { tags: ['@ess', '@serve cy.intercept('PUT', '/api/detection_engine/rules').as('saveRuleSingleQuery'); cy.getBySel('ruleEditSubmitButton').click(); - cy.wait('@saveRuleSingleQuery').should(({ request }) => { + cy.wait('@saveRuleSingleQuery', { timeout: 15000 }).should(({ request }) => { const oneQuery = [ { interval: 3600, diff --git a/x-pack/plugins/osquery/public/agents/use_all_agents.ts b/x-pack/plugins/osquery/public/agents/use_all_agents.ts index 7d09470397e76..862e8fe1efbc7 100644 --- a/x-pack/plugins/osquery/public/agents/use_all_agents.ts +++ b/x-pack/plugins/osquery/public/agents/use_all_agents.ts @@ -42,7 +42,7 @@ export const useAllAgents = (searchValue = '', opts: RequestOptions = { perPage: kuery = `(${osqueryPolicies.map((p) => `policy_id:${p}`).join(' or ')})`; if (searchValue) { - kuery += ` and (local_metadata.host.hostname.keyword:*${searchValue}* or local_metadata.elastic.agent.id:*${searchValue}*)`; + kuery += ` and (local_metadata.host.hostname.keyword:*${searchValue}* or local_metadata.elastic.agent.id:*${searchValue}* or policy_id: *${searchValue}* or local_metadata.os.platform: *${searchValue}* or policy_name:${searchValue} )`; } else { kuery += ` and (status:online ${ agentIds?.length ? `or local_metadata.elastic.agent.id:(${agentIds.join(' or ')})` : '' diff --git a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agents.ts b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agents.ts index c930bb4d9ffe5..d33911a59fcb4 100644 --- a/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agents.ts +++ b/x-pack/plugins/osquery/server/routes/fleet_wrapper/get_agents.ts @@ -48,6 +48,53 @@ export const getAgentsRoute = (router: IRouter, osqueryContext: OsqueryAppContex pitId?: string; getStatusSummary?: boolean; }; + + const internalSavedObjectsClient = await getInternalSavedObjectsClient( + osqueryContext.getStartServices + ); + const packagePolicyService = osqueryContext.service.getPackagePolicyService(); + const agentPolicyService = osqueryContext.service.getAgentPolicyService(); + + const { items: packagePolicies } = (await packagePolicyService?.list( + internalSavedObjectsClient, + { + kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name:${OSQUERY_INTEGRATION_NAME}`, + perPage: 1000, + page: 1, + } + )) ?? { items: [] as PackagePolicy[] }; + const supportedPackagePolicyIds = filter(packagePolicies, (packagePolicy) => + satisfies(packagePolicy.package?.version ?? '', '>=0.6.0') + ); + const agentPolicyIds = uniq(map(supportedPackagePolicyIds, 'policy_id')); + + const agentPolicies = await agentPolicyService?.getByIds( + internalSavedObjectsClient, + agentPolicyIds + ); + + // FIND agents by policy_name + const policyNamePattern = /policy_name:([^ ]+)/; + let kuery = query.kuery; + const policyName: string | undefined = kuery.match(policyNamePattern)?.[1]; + + const foundPolicyByName = policyName + ? agentPolicies?.filter((policy) => + policy.name.toLowerCase().includes(policyName.toLowerCase()) + ) + : []; + + if (foundPolicyByName?.length) { + kuery = + // remove the ) from the end of the kuery + kuery.slice(0, -1) + + ' or ' + + foundPolicyByName.map((p) => `policy_id:${p.id}`).join(' or ') + + ')'; + } + + const agentPolicyById = mapKeys(agentPolicies, 'id'); + try { esAgents = await osqueryContext.service.getAgentService()?.asInternalUser.listAgents({ page: query.page, @@ -58,7 +105,7 @@ export const getAgentsRoute = (router: IRouter, osqueryContext: OsqueryAppContex getStatusSummary: query.getStatusSummary, pitId: query.pitId, searchAfter: query.searchAfter, - kuery: query.kuery, + kuery, showInactive: query.showInactive, aggregations: { platforms: { @@ -78,32 +125,6 @@ export const getAgentsRoute = (router: IRouter, osqueryContext: OsqueryAppContex return response.badRequest({ body: error }); } - const internalSavedObjectsClient = await getInternalSavedObjectsClient( - osqueryContext.getStartServices - ); - const packagePolicyService = osqueryContext.service.getPackagePolicyService(); - const agentPolicyService = osqueryContext.service.getAgentPolicyService(); - - const { items: packagePolicies } = (await packagePolicyService?.list( - internalSavedObjectsClient, - { - kuery: `${PACKAGE_POLICY_SAVED_OBJECT_TYPE}.package.name:${OSQUERY_INTEGRATION_NAME}`, - perPage: 1000, - page: 1, - } - )) ?? { items: [] as PackagePolicy[] }; - const supportedPackagePolicyIds = filter(packagePolicies, (packagePolicy) => - satisfies(packagePolicy.package?.version ?? '', '>=0.6.0') - ); - const agentPolicyIds = uniq(map(supportedPackagePolicyIds, 'policy_id')); - - const agentPolicies = await agentPolicyService?.getByIds( - internalSavedObjectsClient, - agentPolicyIds - ); - - const agentPolicyById = mapKeys(agentPolicies, 'id'); - const { platforms, overlap, policies } = processAggregations(esAgents?.aggregations); return response.ok({ diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts b/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts index 650d8b50625ab..0a73eddd6e5c7 100644 --- a/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts +++ b/x-pack/plugins/remote_clusters/__jest__/client_integration/add/remote_clusters_add.test.ts @@ -80,8 +80,8 @@ describe('Create Remote cluster', () => { expect(actions.saveButton.isDisabled()).toBe(true); }); - test('renders no switch for cloud url input and proxy address + server name input modes', () => { - expect(actions.cloudUrlSwitch.exists()).toBe(false); + test('renders no switch for cloud advanced options', () => { + expect(actions.cloudAdvancedOptionsSwitch.exists()).toBe(false); }); }); describe('on cloud', () => { @@ -93,19 +93,21 @@ describe('Create Remote cluster', () => { component.update(); }); - test('renders a switch between cloud url input and proxy address + server name input for proxy connection', () => { - expect(actions.cloudUrlSwitch.exists()).toBe(true); + test('TLS server name has optional label', () => { + actions.cloudAdvancedOptionsSwitch.toggle(); + expect(actions.tlsServerNameInput.getLabel()).toBe('TLS server name (optional)'); + }); + + test('renders a switch for advanced options', () => { + expect(actions.cloudAdvancedOptionsSwitch.exists()).toBe(true); }); test('renders no switch between sniff and proxy modes', () => { expect(actions.connectionModeSwitch.exists()).toBe(false); }); - test('defaults to cloud url input for proxy connection', () => { - expect(actions.cloudUrlSwitch.isChecked()).toBe(false); - }); - test('server name has no optional label', () => { - actions.cloudUrlSwitch.toggle(); - expect(actions.serverNameInput.getLabel()).toBe('Server name'); + + test('advanced options are initially disabled', () => { + expect(actions.cloudAdvancedOptionsSwitch.isChecked()).toBe(false); }); }); }); @@ -290,19 +292,22 @@ describe('Create Remote cluster', () => { component.update(); }); - test('cloud url is required since cloud url input is enabled by default', () => { + test('remote address is required', () => { actions.saveButton.click(); - expect(actions.getErrorMessages()).toContain('A url is required.'); + expect(actions.getErrorMessages()).toContain('A remote address is required.'); }); - test('proxy address and server name are required when cloud url input is disabled', () => { - actions.cloudUrlSwitch.toggle(); - actions.saveButton.click(); - expect(actions.getErrorMessages()).toEqual([ - 'Name is required.', - 'A proxy address is required.', - 'A server name is required.', - ]); + test('should only allow alpha-numeric characters and "-" (dash) in the remote address "host" part', async () => { + await actions.saveButton.click(); // display form errors + + const expectInvalidChar = (char: string) => { + actions.cloudRemoteAddressInput.setValue(`192.16${char}:3000`); + expect(actions.getErrorMessages()).toContain('Remote address is invalid.'); + }; + + [...NON_ALPHA_NUMERIC_CHARS, ...ACCENTED_CHARS] + .filter(notInArray(['-', '_', ':'])) + .forEach(expectInvalidChar); }); }); }); diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx b/x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx index d83e82397b19c..c4c656bb646d5 100644 --- a/x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx +++ b/x-pack/plugins/remote_clusters/__jest__/client_integration/edit/remote_clusters_edit.test.tsx @@ -77,7 +77,7 @@ describe('Edit Remote cluster', () => { describe('on cloud', () => { const cloudUrl = 'cloud-url'; const defaultCloudPort = '9400'; - test('existing cluster that defaults to cloud url (default port)', async () => { + test('existing cluster that has the same TLS server name as the host in the remote address', async () => { const cluster: Cluster = { name: REMOTE_CLUSTER_EDIT_NAME, mode: 'proxy', @@ -92,16 +92,16 @@ describe('Edit Remote cluster', () => { }); component.update(); - expect(actions.cloudUrlInput.exists()).toBe(true); - expect(actions.cloudUrlInput.getValue()).toBe(cloudUrl); + expect(actions.cloudRemoteAddressInput.exists()).toBe(true); + expect(actions.cloudRemoteAddressInput.getValue()).toBe(`${cloudUrl}:${defaultCloudPort}`); + expect(actions.tlsServerNameInput.exists()).toBe(false); }); - test('existing cluster that defaults to manual input (non-default port)', async () => { + test("existing cluster that doesn't have a TLS server name", async () => { const cluster: Cluster = { name: REMOTE_CLUSTER_EDIT_NAME, mode: 'proxy', proxyAddress: `${cloudUrl}:9500`, - serverName: cloudUrl, securityModel: 'certificate', }; httpRequestsMockHelpers.setLoadRemoteClustersResponse([cluster]); @@ -111,13 +111,12 @@ describe('Edit Remote cluster', () => { }); component.update(); - expect(actions.cloudUrlInput.exists()).toBe(false); - - expect(actions.proxyAddressInput.exists()).toBe(true); - expect(actions.serverNameInput.exists()).toBe(true); + expect(actions.cloudRemoteAddressInput.exists()).toBe(true); + expect(actions.cloudRemoteAddressInput.getValue()).toBe(`${cloudUrl}:9500`); + expect(actions.tlsServerNameInput.exists()).toBe(true); }); - test('existing cluster that defaults to manual input (proxy address is different from server name)', async () => { + test('existing cluster that has remote address different from TLS server name)', async () => { const cluster: Cluster = { name: REMOTE_CLUSTER_EDIT_NAME, mode: 'proxy', @@ -132,10 +131,9 @@ describe('Edit Remote cluster', () => { }); component.update(); - expect(actions.cloudUrlInput.exists()).toBe(false); - - expect(actions.proxyAddressInput.exists()).toBe(true); - expect(actions.serverNameInput.exists()).toBe(true); + expect(actions.cloudRemoteAddressInput.exists()).toBe(true); + expect(actions.cloudRemoteAddressInput.getValue()).toBe(`${cloudUrl}:${defaultCloudPort}`); + expect(actions.tlsServerNameInput.exists()).toBe(true); }); }); }); diff --git a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts b/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts index f17a790c65041..f657058231a84 100644 --- a/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts +++ b/x-pack/plugins/remote_clusters/__jest__/client_integration/helpers/remote_clusters_actions.ts @@ -28,14 +28,15 @@ export interface RemoteClustersActions { toggle: () => void; isChecked: () => boolean; }; - cloudUrlSwitch: { + cloudAdvancedOptionsSwitch: { toggle: () => void; exists: () => boolean; isChecked: () => boolean; }; - cloudUrlInput: { + cloudRemoteAddressInput: { exists: () => boolean; getValue: () => string; + setValue: (remoteAddress: string) => void; }; seedsInput: { setValue: (seed: string) => void; @@ -49,6 +50,10 @@ export interface RemoteClustersActions { getLabel: () => string; exists: () => boolean; }; + tlsServerNameInput: { + getLabel: () => string; + exists: () => boolean; + }; isOnFirstStep: () => boolean; saveButton: { click: () => void; @@ -123,10 +128,10 @@ export const createRemoteClustersActions = (testBed: TestBed): RemoteClustersAct }; }; - const createCloudUrlSwitchActions = () => { - const cloudUrlSelector = 'remoteClusterFormCloudUrlToggle'; + const createCloudAdvancedOptionsSwitchActions = () => { + const cloudUrlSelector = 'remoteClusterFormCloudAdvancedOptionsToggle'; return { - cloudUrlSwitch: { + cloudAdvancedOptionsSwitch: { exists: () => exists(cloudUrlSelector), toggle: () => { act(() => { @@ -230,14 +235,26 @@ export const createRemoteClustersActions = (testBed: TestBed): RemoteClustersAct }; }; + const createTlsServerNameActions = () => { + const serverNameSelector = 'remoteClusterFormTLSServerNameFormRow'; + return { + tlsServerNameInput: { + getLabel: () => find(serverNameSelector).find('label').text(), + exists: () => exists(serverNameSelector), + }, + }; + }; + const globalErrorExists = () => exists('remoteClusterFormGlobalError'); - const createCloudUrlInputActions = () => { - const cloudUrlInputSelector = 'remoteClusterFormCloudUrlInput'; + const createCloudRemoteAddressInputActions = () => { + const cloudUrlInputSelector = 'remoteClusterFormRemoteAddressInput'; return { - cloudUrlInput: { + cloudRemoteAddressInput: { exists: () => exists(cloudUrlInputSelector), getValue: () => find(cloudUrlInputSelector).props().value, + setValue: (remoteAddress: string) => + form.setInputValue(cloudUrlInputSelector, remoteAddress), }, }; }; @@ -247,11 +264,12 @@ export const createRemoteClustersActions = (testBed: TestBed): RemoteClustersAct ...createNameInputActions(), ...createSkipUnavailableActions(), ...createConnectionModeActions(), - ...createCloudUrlSwitchActions(), + ...createCloudAdvancedOptionsSwitchActions(), ...createSeedsInputActions(), - ...createCloudUrlInputActions(), + ...createCloudRemoteAddressInputActions(), ...createProxyAddressActions(), ...createServerNameActions(), + ...createTlsServerNameActions(), ...createSetupTrustActions(), getErrorMessages: form.getErrorsMessages, globalErrorExists, diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/cloud_url_help.tsx b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/cloud_url_help.tsx deleted file mode 100644 index 504d77514e654..0000000000000 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/cloud_url_help.tsx +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React, { FunctionComponent, useState } from 'react'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { EuiLink, EuiPopover, EuiPopoverTitle, EuiText } from '@elastic/eui'; -import { useAppContext } from '../../../../app_context'; - -export const CloudUrlHelp: FunctionComponent = () => { - const [isOpen, setIsOpen] = useState(false); - const { cloudBaseUrl } = useAppContext(); - return ( - - { - setIsOpen(!isOpen); - }} - > - - - - } - isOpen={isOpen} - closePopover={() => setIsOpen(false)} - anchorPosition="upCenter" - > - - - - - - - - ), - elasticsearch: Elasticsearch, - }} - /> - - - ); -}; diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx index 1808a519ccac6..f44f5ffc0cf9c 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx +++ b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode.tsx @@ -8,12 +8,13 @@ import React, { FunctionComponent } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; -import { EuiDescribedFormGroup, EuiTitle, EuiFormRow, EuiSwitch, EuiSpacer } from '@elastic/eui'; +import { EuiDescribedFormGroup, EuiTitle, EuiFormRow, EuiSwitch } from '@elastic/eui'; import { SNIFF_MODE, PROXY_MODE } from '../../../../../../common/constants'; import { useAppContext } from '../../../../app_context'; import { ClusterErrors } from '../validators'; +import { ConnectionModeCloud } from './connection_mode_cloud'; import { SniffConnection } from './sniff_connection'; import { ProxyConnection } from './proxy_connection'; import { FormFields } from '../remote_cluster_form'; @@ -27,10 +28,12 @@ export interface Props { export const ConnectionMode: FunctionComponent = (props) => { const { fields, onFieldsChange } = props; - const { mode, cloudUrlEnabled } = fields; + const { mode } = fields; const { isCloudEnabled } = useAppContext(); - return ( + return isCloudEnabled ? ( + + ) : ( @@ -44,51 +47,27 @@ export const ConnectionMode: FunctionComponent = (props) => { } description={ <> - {isCloudEnabled ? ( - <> - - - - } - checked={!cloudUrlEnabled} - data-test-subj="remoteClusterFormCloudUrlToggle" - onChange={(e) => onFieldsChange({ cloudUrlEnabled: !e.target.checked })} - /> - - - - ) : ( - <> - + + + + } + checked={mode === PROXY_MODE} + data-test-subj="remoteClusterFormConnectionModeToggle" + onChange={(e) => + onFieldsChange({ mode: e.target.checked ? PROXY_MODE : SNIFF_MODE }) + } /> - - - } - checked={mode === PROXY_MODE} - data-test-subj="remoteClusterFormConnectionModeToggle" - onChange={(e) => - onFieldsChange({ mode: e.target.checked ? PROXY_MODE : SNIFF_MODE }) - } - /> - - - )} + + } fullWidth diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx new file mode 100644 index 0000000000000..42dc257b4baf3 --- /dev/null +++ b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/connection_mode_cloud.tsx @@ -0,0 +1,175 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { FunctionComponent } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; + +import { + EuiDescribedFormGroup, + EuiTitle, + EuiFormRow, + EuiSwitch, + EuiSpacer, + EuiFieldText, + EuiLink, + EuiFieldNumber, + EuiCode, +} from '@elastic/eui'; + +import { i18n } from '@kbn/i18n'; +import { proxySettingsUrl } from '../../../../services/documentation'; + +import { ClusterErrors } from '../validators'; +import { FormFields } from '../remote_cluster_form'; + +export interface Props { + fields: FormFields; + onFieldsChange: (fields: Partial) => void; + fieldsErrors: ClusterErrors; + areErrorsVisible: boolean; +} + +export const ConnectionModeCloud: FunctionComponent = (props) => { + const { fields, fieldsErrors, areErrorsVisible, onFieldsChange } = props; + const { cloudRemoteAddress, serverName, proxySocketConnections, cloudAdvancedOptionsEnabled } = + fields; + const { cloudRemoteAddress: cloudRemoteAddressError } = fieldsErrors; + + return ( + +

+ +

+ + } + description={ + <> + + + + } + checked={cloudAdvancedOptionsEnabled} + data-test-subj="remoteClusterFormCloudAdvancedOptionsToggle" + onChange={(e) => onFieldsChange({ cloudAdvancedOptionsEnabled: e.target.checked })} + /> + + + + } + fullWidth + > + + } + helpText={ + {'9400'}, + }} + /> + } + isInvalid={Boolean(areErrorsVisible && cloudRemoteAddressError)} + error={cloudRemoteAddressError} + fullWidth + > + onFieldsChange({ cloudRemoteAddress: e.target.value })} + isInvalid={Boolean(areErrorsVisible && cloudRemoteAddressError)} + data-test-subj="remoteClusterFormRemoteAddressInput" + fullWidth + /> + + + {cloudAdvancedOptionsEnabled && ( + <> + + } + helpText={ + + + + ), + }} + /> + } + fullWidth + > + onFieldsChange({ serverName: e.target.value })} + fullWidth + /> + + + + } + helpText={ + + } + fullWidth + > + onFieldsChange({ proxySocketConnections: Number(e.target.value) })} + fullWidth + /> + + + )} +
+ ); +}; diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx index 2158b497016da..f322aebee9d7e 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx +++ b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/components/proxy_connection.tsx @@ -9,132 +9,84 @@ import React, { FunctionComponent } from 'react'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { EuiFieldNumber, EuiFieldText, EuiFormRow, EuiLink } from '@elastic/eui'; -import { useAppContext } from '../../../../app_context'; import { proxySettingsUrl } from '../../../../services/documentation'; import { Props } from './connection_mode'; -import { CloudUrlHelp } from './cloud_url_help'; export const ProxyConnection: FunctionComponent = (props) => { const { fields, fieldsErrors, areErrorsVisible, onFieldsChange } = props; - const { isCloudEnabled } = useAppContext(); - const { proxyAddress, serverName, proxySocketConnections, cloudUrl, cloudUrlEnabled } = fields; - const { - proxyAddress: proxyAddressError, - serverName: serverNameError, - cloudUrl: cloudUrlError, - } = fieldsErrors; + const { proxyAddress, serverName, proxySocketConnections } = fields; + const { proxyAddress: proxyAddressError } = fieldsErrors; return ( <> - {cloudUrlEnabled ? ( - <> - - } - labelAppend={} - isInvalid={Boolean(areErrorsVisible && cloudUrlError)} - error={cloudUrlError} - fullWidth - helpText={ - - } - > - onFieldsChange({ cloudUrl: e.target.value })} - isInvalid={Boolean(areErrorsVisible && cloudUrlError)} - data-test-subj="remoteClusterFormCloudUrlInput" - fullWidth + <> + + } + helpText={ + - - - ) : ( - <> - - } - helpText={ - - } + } + isInvalid={Boolean(areErrorsVisible && proxyAddressError)} + error={proxyAddressError} + fullWidth + > + onFieldsChange({ proxyAddress: e.target.value })} isInvalid={Boolean(areErrorsVisible && proxyAddressError)} - error={proxyAddressError} + data-test-subj="remoteClusterFormProxyAddressInput" fullWidth - > - onFieldsChange({ proxyAddress: e.target.value })} - isInvalid={Boolean(areErrorsVisible && proxyAddressError)} - data-test-subj="remoteClusterFormProxyAddressInput" - fullWidth - /> - + /> + - - ) : ( - - ) - } - helpText={ - - - - ), - }} - /> - } - fullWidth - > - onFieldsChange({ serverName: e.target.value })} - isInvalid={Boolean(areErrorsVisible && serverNameError)} - fullWidth + - - - )} + } + helpText={ + + + + ), + }} + /> + } + fullWidth + > + onFieldsChange({ serverName: e.target.value })} + fullWidth + /> + + + { { ...defaultClusterValues, mode: defaultMode, - cloudUrl: convertProxyConnectionToCloudUrl(cluster), - cloudUrlEnabled: isCloudEnabled && isCloudUrlEnabled(cluster), + cloudRemoteAddress: cluster?.proxyAddress || '', + cloudAdvancedOptionsEnabled: isCloudAdvancedOptionsEnabled(cluster), }, cluster ); @@ -123,14 +125,33 @@ export class RemoteClusterForm extends Component { onFieldsChange = (changedFields: Partial) => { const { isCloudEnabled } = this.context; - // when cloudUrl changes, fill proxy address and server name - const { cloudUrl } = changedFields; - if (cloudUrl) { - const { proxyAddress, serverName } = convertCloudUrlToProxyConnection(cloudUrl); + // when cloud remote address changes, fill proxy address and server name + const { cloudRemoteAddress, cloudAdvancedOptionsEnabled } = changedFields; + if (cloudRemoteAddress) { + const { proxyAddress, serverName } = + convertCloudRemoteAddressToProxyConnection(cloudRemoteAddress); + // Only change the server name if the advanced options are not currently open + if (this.state.fields.cloudAdvancedOptionsEnabled) { + changedFields = { + ...changedFields, + proxyAddress, + }; + } else { + changedFields = { + ...changedFields, + proxyAddress, + serverName, + }; + } + } + + // If we switch off the advanced options, revert the server name to + // the host name from the proxy address + if (cloudAdvancedOptionsEnabled === false) { changedFields = { ...changedFields, - proxyAddress, - serverName, + serverName: this.state.fields.proxyAddress?.split(':')[0], + proxySocketConnections: defaultClusterValues.proxySocketConnections, }; } @@ -416,13 +437,7 @@ export class RemoteClusterForm extends Component { renderErrors = () => { const { areErrorsVisible, - fieldsErrors: { - name: errorClusterName, - seeds: errorsSeeds, - proxyAddress: errorProxyAddress, - serverName: errorServerName, - cloudUrl: errorCloudUrl, - }, + fieldsErrors: { name: errorClusterName, seeds: errorsSeeds, proxyAddress: errorProxyAddress }, } = this.state; const hasErrors = this.hasErrors(); @@ -463,29 +478,6 @@ export class RemoteClusterForm extends Component { }); } - if (errorServerName) { - errorExplanations.push({ - key: 'serverNameExplanation', - field: i18n.translate( - 'xpack.remoteClusters.remoteClusterForm.inputServerNameErrorMessage', - { - defaultMessage: 'The "Server name" field is invalid.', - } - ), - error: errorServerName, - }); - } - - if (errorCloudUrl) { - errorExplanations.push({ - key: 'cloudUrlExplanation', - field: i18n.translate('xpack.remoteClusters.remoteClusterForm.inputcloudUrlErrorMessage', { - defaultMessage: 'The "Elasticsearch endpoint URL" field is invalid.', - }), - error: errorCloudUrl, - }); - } - const messagesToBeRendered = errorExplanations.length && (
diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts index a695b95b8de85..6a710dae744ba 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts +++ b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/index.ts @@ -9,12 +9,10 @@ export { validateName } from './validate_name'; export { validateProxy } from './validate_proxy'; export { validateSeeds } from './validate_seeds'; export { validateSeed } from './validate_seed'; -export { validateServerName } from './validate_server_name'; export type { ClusterErrors } from './validate_cluster'; export { validateCluster } from './validate_cluster'; export { - isCloudUrlEnabled, - validateCloudUrl, - convertProxyConnectionToCloudUrl, - convertCloudUrlToProxyConnection, + isCloudAdvancedOptionsEnabled, + validateCloudRemoteAddress, + convertCloudRemoteAddressToProxyConnection, } from './validate_cloud_url'; diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts index 5990b29474da2..5bdfd23f5cfdb 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts +++ b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.test.ts @@ -6,135 +6,93 @@ */ import { - isCloudUrlEnabled, - validateCloudUrl, - convertCloudUrlToProxyConnection, - convertProxyConnectionToCloudUrl, + isCloudAdvancedOptionsEnabled, + validateCloudRemoteAddress, + convertCloudRemoteAddressToProxyConnection, i18nTexts, } from './validate_cloud_url'; -describe('Cloud url', () => { +describe('Cloud remote address', () => { describe('validation', () => { it('errors when the url is empty', () => { - const actual = validateCloudUrl(''); + const actual = validateCloudRemoteAddress(''); expect(actual).toBe(i18nTexts.urlEmpty); }); it('errors when the url is invalid', () => { - const actual = validateCloudUrl('invalid%url'); + const actual = validateCloudRemoteAddress('invalid%url'); expect(actual).toBe(i18nTexts.urlInvalid); }); }); - describe('is cloud url', () => { - it('true for a new cluster', () => { - const actual = isCloudUrlEnabled(); - expect(actual).toBe(true); + describe('is advanced options toggle enabled', () => { + it('false for a new cluster', () => { + const actual = isCloudAdvancedOptionsEnabled(); + expect(actual).toBe(false); }); - it('true when proxy connection is empty', () => { - const actual = isCloudUrlEnabled({ + it('false when proxy address is empty', () => { + const actual = isCloudAdvancedOptionsEnabled({ name: 'test', proxyAddress: '', - serverName: '', securityModel: 'certificate', }); - expect(actual).toBe(true); + expect(actual).toBe(false); }); - it('true when proxy address is the same as server name and default port', () => { - const actual = isCloudUrlEnabled({ + it('false when proxy address is the same as server name', () => { + const actual = isCloudAdvancedOptionsEnabled({ name: 'test', proxyAddress: 'some-proxy:9400', serverName: 'some-proxy', securityModel: 'certificate', }); - expect(actual).toBe(true); + expect(actual).toBe(false); }); - it('false when proxy address is the same as server name but not default port', () => { - const actual = isCloudUrlEnabled({ + it('true when proxy address is not the same as server name', () => { + const actual = isCloudAdvancedOptionsEnabled({ name: 'test', - proxyAddress: 'some-proxy:1234', - serverName: 'some-proxy', + proxyAddress: 'some-proxy:9400', + serverName: 'some-server-name', securityModel: 'certificate', }); - expect(actual).toBe(false); + expect(actual).toBe(true); }); - it('true when proxy address is not the same as server name', () => { - const actual = isCloudUrlEnabled({ + it('true when socket connections is not the default value', () => { + const actual = isCloudAdvancedOptionsEnabled({ name: 'test', proxyAddress: 'some-proxy:9400', - serverName: 'some-server-name', + serverName: 'some-proxy-name', + proxySocketConnections: 19, securityModel: 'certificate', }); - expect(actual).toBe(false); + expect(actual).toBe(true); }); }); - describe('conversion from cloud url', () => { + describe('conversion from cloud remote address', () => { it('empty url to empty proxy connection values', () => { - const actual = convertCloudUrlToProxyConnection(''); + const actual = convertCloudRemoteAddressToProxyConnection(''); expect(actual).toEqual({ proxyAddress: '', serverName: '' }); }); it('url with protocol and port to proxy connection values', () => { - const actual = convertCloudUrlToProxyConnection('http://test.com:1234'); - expect(actual).toEqual({ proxyAddress: 'test.com:9400', serverName: 'test.com' }); + const actual = convertCloudRemoteAddressToProxyConnection('http://test.com:1234'); + expect(actual).toEqual({ proxyAddress: 'test.com:1234', serverName: 'test.com' }); }); it('url with protocol and no port to proxy connection values', () => { - const actual = convertCloudUrlToProxyConnection('http://test.com'); + const actual = convertCloudRemoteAddressToProxyConnection('http://test.com'); expect(actual).toEqual({ proxyAddress: 'test.com:9400', serverName: 'test.com' }); }); it('url with no protocol to proxy connection values', () => { - const actual = convertCloudUrlToProxyConnection('test.com'); + const actual = convertCloudRemoteAddressToProxyConnection('test.com'); expect(actual).toEqual({ proxyAddress: 'test.com:9400', serverName: 'test.com' }); }); + it('invalid url to empty proxy connection values', () => { - const actual = convertCloudUrlToProxyConnection('invalid%url'); + const actual = convertCloudRemoteAddressToProxyConnection('invalid%url'); expect(actual).toEqual({ proxyAddress: '', serverName: '' }); }); }); - - describe('conversion to cloud url', () => { - it('empty proxy address to empty cloud url', () => { - const actual = convertProxyConnectionToCloudUrl({ - name: 'test', - proxyAddress: '', - serverName: 'test', - securityModel: 'certificate', - }); - expect(actual).toEqual(''); - }); - - it('empty server name to empty cloud url', () => { - const actual = convertProxyConnectionToCloudUrl({ - name: 'test', - proxyAddress: 'test', - serverName: '', - securityModel: 'certificate', - }); - expect(actual).toEqual(''); - }); - - it('different proxy address and server name to empty cloud url', () => { - const actual = convertProxyConnectionToCloudUrl({ - name: 'test', - proxyAddress: 'test', - serverName: 'another-test', - securityModel: 'certificate', - }); - expect(actual).toEqual(''); - }); - - it('valid proxy connection to cloud url', () => { - const actual = convertProxyConnectionToCloudUrl({ - name: 'test', - proxyAddress: 'test-proxy:9400', - serverName: 'test-proxy', - securityModel: 'certificate', - }); - expect(actual).toEqual('test-proxy'); - }); - }); }); diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx index deb0148f36edf..54f050a789b9f 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx +++ b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cloud_url.tsx @@ -13,14 +13,14 @@ import { isAddressValid } from './validate_address'; export const i18nTexts = { urlEmpty: ( ), urlInvalid: ( ), }; @@ -28,20 +28,22 @@ export const i18nTexts = { const CLOUD_DEFAULT_PROXY_PORT = '9400'; const EMPTY_PROXY_VALUES = { proxyAddress: '', serverName: '' }; const PROTOCOL_REGEX = new RegExp(/^https?:\/\//); +const DEFAULT_SOCKET_CONNECTIONS = 18; -export const isCloudUrlEnabled = (cluster?: Cluster): boolean => { - // enable cloud url for new clusters +export const isCloudAdvancedOptionsEnabled = (cluster?: Cluster): boolean => { + // The toggle is switched off by default if (!cluster) { - return true; + return false; } - const { proxyAddress, serverName } = cluster; - if (!proxyAddress && !serverName) { - return true; + const { proxyAddress, serverName, proxySocketConnections } = cluster; + if (!proxyAddress) { + return false; } - const portParts = (proxyAddress ?? '').split(':'); - const proxyAddressWithoutPort = portParts[0]; - const port = portParts[1]; - return port === CLOUD_DEFAULT_PROXY_PORT && proxyAddressWithoutPort === serverName; + const proxyAddressWithoutPort = (proxyAddress ?? '').split(':')[0]; + return ( + proxyAddressWithoutPort !== serverName || + (proxySocketConnections != null && proxySocketConnections !== DEFAULT_SOCKET_CONNECTIONS) + ); }; const formatUrl = (url: string) => { @@ -51,29 +53,23 @@ const formatUrl = (url: string) => { return url; }; -export const convertProxyConnectionToCloudUrl = (cluster?: Cluster): string => { - if (!isCloudUrlEnabled(cluster)) { - return ''; - } - return cluster?.serverName ?? ''; -}; -export const convertCloudUrlToProxyConnection = ( - cloudUrl: string = '' -): { proxyAddress: string; serverName: string } => { - cloudUrl = formatUrl(cloudUrl); - if (!cloudUrl || !isAddressValid(cloudUrl)) { +export const convertCloudRemoteAddressToProxyConnection = (url: string) => { + url = formatUrl(url); + if (!url || !isAddressValid(url)) { return EMPTY_PROXY_VALUES; } - const address = cloudUrl.split(':')[0]; - return { proxyAddress: `${address}:${CLOUD_DEFAULT_PROXY_PORT}`, serverName: address }; + const host = url.split(':')[0]; + const port = url.split(':')[1]; + const proxyAddress = port ? url : `${host}:${CLOUD_DEFAULT_PROXY_PORT}`; + return { proxyAddress, serverName: host }; }; -export const validateCloudUrl = (cloudUrl: string): JSX.Element | null => { - if (!cloudUrl) { +export const validateCloudRemoteAddress = (url?: string): JSX.Element | null => { + if (!url) { return i18nTexts.urlEmpty; } - cloudUrl = formatUrl(cloudUrl); - if (!isAddressValid(cloudUrl)) { + url = formatUrl(url); + if (!isAddressValid(url)) { return i18nTexts.urlInvalid; } return null; diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx index e0fa434f21d5c..aba0b0462cdf5 100644 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx +++ b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_cluster.tsx @@ -9,8 +9,7 @@ import { validateName } from './validate_name'; import { PROXY_MODE, SNIFF_MODE } from '../../../../../../common/constants'; import { validateSeeds } from './validate_seeds'; import { validateProxy } from './validate_proxy'; -import { validateServerName } from './validate_server_name'; -import { validateCloudUrl } from './validate_cloud_url'; +import { validateCloudRemoteAddress } from './validate_cloud_url'; import { FormFields } from '../remote_cluster_form'; type ClusterError = JSX.Element | null; @@ -19,21 +18,15 @@ export interface ClusterErrors { name?: ClusterError; seeds?: ClusterError; proxyAddress?: ClusterError; - serverName?: ClusterError; - cloudUrl?: ClusterError; + cloudRemoteAddress?: ClusterError; } export const validateCluster = (fields: FormFields, isCloudEnabled: boolean): ClusterErrors => { - const { name, seeds = [], mode, proxyAddress, serverName, cloudUrlEnabled, cloudUrl } = fields; + const { name, seeds = [], mode, proxyAddress, cloudRemoteAddress } = fields; return { name: validateName(name), seeds: mode === SNIFF_MODE ? validateSeeds(seeds) : null, - proxyAddress: !cloudUrlEnabled && mode === PROXY_MODE ? validateProxy(proxyAddress) : null, - // server name is only required in cloud when proxy mode is enabled - serverName: - !cloudUrlEnabled && isCloudEnabled && mode === PROXY_MODE - ? validateServerName(serverName) - : null, - cloudUrl: cloudUrlEnabled ? validateCloudUrl(cloudUrl) : null, + proxyAddress: mode === PROXY_MODE ? validateProxy(proxyAddress) : null, + cloudRemoteAddress: isCloudEnabled ? validateCloudRemoteAddress(cloudRemoteAddress) : null, }; }; diff --git a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_server_name.tsx b/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_server_name.tsx deleted file mode 100644 index eb110f75e9e15..0000000000000 --- a/x-pack/plugins/remote_clusters/public/application/sections/components/remote_cluster_form/validators/validate_server_name.tsx +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import React from 'react'; -import { FormattedMessage } from '@kbn/i18n-react'; - -export function validateServerName(serverName?: string) { - if (!serverName || !serverName.trim()) { - return ( - - ); - } - - return null; -} diff --git a/x-pack/plugins/security_solution/common/endpoint/service/authz/authz.ts b/x-pack/plugins/security_solution/common/endpoint/service/authz/authz.ts index 922e8c3cdd383..e9ee14d1a8b40 100644 --- a/x-pack/plugins/security_solution/common/endpoint/service/authz/authz.ts +++ b/x-pack/plugins/security_solution/common/endpoint/service/authz/authz.ts @@ -8,6 +8,7 @@ import type { ENDPOINT_PRIVILEGES, FleetAuthz } from '@kbn/fleet-plugin/common'; import { omit } from 'lodash'; +import type { AppFeaturesService } from '../../../../server/lib/app_features_service'; import { RESPONSE_CONSOLE_ACTION_COMMANDS_TO_REQUIRED_AUTHZ } from '../response_actions/constants'; import type { LicenseService } from '../../../license'; import type { EndpointAuthz } from '../../types/authz'; @@ -21,20 +22,28 @@ import type { MaybeImmutable } from '../../types'; * level, use `calculateEndpointAuthz()` * * @param fleetAuthz - * @param privilege + * @param appFeatureService */ -export function hasKibanaPrivilege( - fleetAuthz: FleetAuthz, - privilege: keyof typeof ENDPOINT_PRIVILEGES -): boolean { - return fleetAuthz.packagePrivileges?.endpoint?.actions[privilege].executePackageAction ?? false; -} - -export function hasEndpointExceptionsPrivilege( - fleetAuthz: FleetAuthz, - privilege: 'showEndpointExceptions' | 'crudEndpointExceptions' -): boolean { - return fleetAuthz.endpointExceptionsPrivileges?.actions[privilege] ?? false; +function hasAuthFactory(fleetAuthz: FleetAuthz, appFeatureService?: AppFeaturesService) { + return function hasAuth( + privilege: keyof typeof ENDPOINT_PRIVILEGES, + { action }: { action?: string } = {} + ): boolean { + // Product features control + if (appFeatureService) { + // Only server side has to check this, to prevent "superuser" role from being allowed to use product gated APIs. + // UI side does not need to check this. Capabilities list is correct for superuser. + const actionToCheck = action ?? appFeatureService.getApiActionName(privilege); + if (!appFeatureService.isActionRegistered(actionToCheck)) { + return false; + } + } + // Role access control + if (privilege === 'showEndpointExceptions' || privilege === 'crudEndpointExceptions') { + return fleetAuthz.endpointExceptionsPrivileges?.actions[privilege] ?? false; + } + return fleetAuthz.packagePrivileges?.endpoint?.actions[privilege].executePackageAction ?? false; + }; } /** @@ -48,57 +57,42 @@ export function hasEndpointExceptionsPrivilege( export const calculateEndpointAuthz = ( licenseService: LicenseService, fleetAuthz: FleetAuthz, - userRoles: MaybeImmutable = [] + userRoles: MaybeImmutable = [], + appFeaturesService?: AppFeaturesService // only exists on the server side ): EndpointAuthz => { + const hasAuth = hasAuthFactory(fleetAuthz, appFeaturesService); + const isPlatinumPlusLicense = licenseService.isPlatinumPlus(); const isEnterpriseLicense = licenseService.isEnterprise(); const hasEndpointManagementAccess = userRoles.includes('superuser'); - const canWriteSecuritySolution = hasKibanaPrivilege(fleetAuthz, 'writeSecuritySolution'); - const canReadSecuritySolution = hasKibanaPrivilege(fleetAuthz, 'readSecuritySolution'); - const canWriteEndpointList = hasKibanaPrivilege(fleetAuthz, 'writeEndpointList'); - const canReadEndpointList = hasKibanaPrivilege(fleetAuthz, 'readEndpointList'); - const canWritePolicyManagement = hasKibanaPrivilege(fleetAuthz, 'writePolicyManagement'); - const canReadPolicyManagement = hasKibanaPrivilege(fleetAuthz, 'readPolicyManagement'); - const canWriteActionsLogManagement = hasKibanaPrivilege(fleetAuthz, 'writeActionsLogManagement'); - const canReadActionsLogManagement = hasKibanaPrivilege(fleetAuthz, 'readActionsLogManagement'); - const canIsolateHost = hasKibanaPrivilege(fleetAuthz, 'writeHostIsolation'); - const canUnIsolateHost = hasKibanaPrivilege(fleetAuthz, 'writeHostIsolationRelease'); - const canWriteProcessOperations = hasKibanaPrivilege(fleetAuthz, 'writeProcessOperations'); - const canWriteTrustedApplications = hasKibanaPrivilege(fleetAuthz, 'writeTrustedApplications'); - const canReadTrustedApplications = hasKibanaPrivilege(fleetAuthz, 'readTrustedApplications'); - const canWriteHostIsolationExceptions = hasKibanaPrivilege( - fleetAuthz, - 'writeHostIsolationExceptions' - ); - const canReadHostIsolationExceptions = hasKibanaPrivilege( - fleetAuthz, - 'readHostIsolationExceptions' - ); - const canAccessHostIsolationExceptions = hasKibanaPrivilege( - fleetAuthz, - 'accessHostIsolationExceptions' - ); - const canDeleteHostIsolationExceptions = hasKibanaPrivilege( - fleetAuthz, - 'deleteHostIsolationExceptions' - ); - const canWriteBlocklist = hasKibanaPrivilege(fleetAuthz, 'writeBlocklist'); - const canReadBlocklist = hasKibanaPrivilege(fleetAuthz, 'readBlocklist'); - const canWriteEventFilters = hasKibanaPrivilege(fleetAuthz, 'writeEventFilters'); - const canReadEventFilters = hasKibanaPrivilege(fleetAuthz, 'readEventFilters'); - const canWriteFileOperations = hasKibanaPrivilege(fleetAuthz, 'writeFileOperations'); + const canWriteSecuritySolution = hasAuth('writeSecuritySolution', { action: 'ui:crud' }); + const canReadSecuritySolution = hasAuth('readSecuritySolution', { action: 'ui:show' }); + const canWriteEndpointList = hasAuth('writeEndpointList'); + const canReadEndpointList = hasAuth('readEndpointList'); + const canWritePolicyManagement = hasAuth('writePolicyManagement'); + const canReadPolicyManagement = hasAuth('readPolicyManagement'); + const canWriteActionsLogManagement = hasAuth('writeActionsLogManagement'); + const canReadActionsLogManagement = hasAuth('readActionsLogManagement'); + const canIsolateHost = hasAuth('writeHostIsolation'); + const canUnIsolateHost = hasAuth('writeHostIsolationRelease'); + const canWriteProcessOperations = hasAuth('writeProcessOperations'); + const canWriteTrustedApplications = hasAuth('writeTrustedApplications'); + const canReadTrustedApplications = hasAuth('readTrustedApplications'); + const canWriteHostIsolationExceptions = hasAuth('writeHostIsolationExceptions'); + const canReadHostIsolationExceptions = hasAuth('readHostIsolationExceptions'); + const canAccessHostIsolationExceptions = hasAuth('accessHostIsolationExceptions'); + const canDeleteHostIsolationExceptions = hasAuth('deleteHostIsolationExceptions'); + const canWriteBlocklist = hasAuth('writeBlocklist'); + const canReadBlocklist = hasAuth('readBlocklist'); + const canWriteEventFilters = hasAuth('writeEventFilters'); + const canReadEventFilters = hasAuth('readEventFilters'); + const canWriteFileOperations = hasAuth('writeFileOperations'); - const canWriteExecuteOperations = hasKibanaPrivilege(fleetAuthz, 'writeExecuteOperations'); + const canWriteExecuteOperations = hasAuth('writeExecuteOperations'); - const canReadEndpointExceptions = hasEndpointExceptionsPrivilege( - fleetAuthz, - 'showEndpointExceptions' - ); - const canWriteEndpointExceptions = hasEndpointExceptionsPrivilege( - fleetAuthz, - 'crudEndpointExceptions' - ); + const canReadEndpointExceptions = hasAuth('showEndpointExceptions'); + const canWriteEndpointExceptions = hasAuth('crudEndpointExceptions'); const authz: EndpointAuthz = { canWriteSecuritySolution, diff --git a/x-pack/plugins/security_solution/common/experimental_features.ts b/x-pack/plugins/security_solution/common/experimental_features.ts index c4ca7321f9731..a6d263c120a20 100644 --- a/x-pack/plugins/security_solution/common/experimental_features.ts +++ b/x-pack/plugins/security_solution/common/experimental_features.ts @@ -192,6 +192,12 @@ export const allowedExperimentalValues = Object.freeze({ */ timelineEsqlTabDisabled: false, + /* + * Disables date pickers and sourcerer in analyzer if needed. + * + */ + analyzerDatePickersAndSourcererDisabled: false, + /** * Enables per-field rule diffs tab in the prebuilt rule upgrade flyout * diff --git a/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx b/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx index 17d482ff4c21d..5213a24172357 100644 --- a/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx +++ b/x-pack/plugins/security_solution/public/app/home/template_wrapper/index.tsx @@ -12,6 +12,7 @@ import { IS_DRAGGING_CLASS_NAME } from '@kbn/securitysolution-t-grid'; import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; import type { KibanaPageTemplateProps } from '@kbn/shared-ux-page-kibana-template'; import { ExpandableFlyoutProvider } from '@kbn/expandable-flyout'; +import { EXPANDABLE_FLYOUT_URL_KEY } from '../../../common/hooks/use_url_state'; import { SecuritySolutionFlyout } from '../../../flyout'; import { useSecuritySolutionNavigation } from '../../../common/components/navigation/use_security_solution_navigation'; import { TimelineId } from '../../../../common/types/timeline'; @@ -67,7 +68,7 @@ export const SecuritySolutionTemplateWrapper: React.FC + { ); expect(pollForSignalIndexMock).toHaveBeenCalledTimes(1); }); + + it('renders without a popover when analyzer is the scope', () => { + mount( + + + + ); + expect(wrapper.find(`[data-test-subj="sourcerer-popover"]`).exists()).toBeFalsy(); + }); }); diff --git a/x-pack/plugins/security_solution/public/common/components/sourcerer/index.tsx b/x-pack/plugins/security_solution/public/common/components/sourcerer/index.tsx index 5a2f3050c1590..6d6e336f68736 100644 --- a/x-pack/plugins/security_solution/public/common/components/sourcerer/index.tsx +++ b/x-pack/plugins/security_solution/public/common/components/sourcerer/index.tsx @@ -8,7 +8,6 @@ import { EuiComboBox, EuiForm, - EuiOutsideClickDetector, EuiPopover, EuiPopoverTitle, EuiSpacer, @@ -23,6 +22,7 @@ import type { sourcererModel } from '../../store/sourcerer'; import { sourcererActions, sourcererSelectors } from '../../store/sourcerer'; import { useDeepEqualSelector } from '../../hooks/use_selector'; import type { SourcererUrlState } from '../../store/sourcerer/model'; +import type { ModifiedTypes } from './use_pick_index_patterns'; import { SourcererScopeName } from '../../store/sourcerer/model'; import { usePickIndexPatterns } from './use_pick_index_patterns'; import { FormRow, PopoverContent, StyledButtonEmpty, StyledFormRow } from './helpers'; @@ -39,6 +39,89 @@ export interface SourcererComponentProps { scope: sourcererModel.SourcererScopeName; } +interface SourcererPopoverProps { + showSourcerer: boolean; + activePatterns?: string[]; + isTriggerDisabled: boolean; + isModified: ModifiedTypes; + isOnlyDetectionAlerts: boolean; + isPopoverOpen: boolean; + loading: boolean; + setPopoverIsOpenCb: () => void; + selectedPatterns: string[]; + signalIndexName: string | null; + handleClosePopOver: () => void; + isTimelineSourcerer: boolean; + selectedDataViewId: string | null; + sourcererMissingPatterns: string[]; + onUpdateDetectionAlertsChecked: () => void; + handleOutsideClick: () => void; + setMissingPatterns: (missingPatterns: string[]) => void; + setDataViewId: (dataViewId: string | null) => void; + scopeId: sourcererModel.SourcererScopeName; + children: React.ReactNode; +} + +const SourcererPopover = React.memo( + ({ + showSourcerer, + activePatterns, + isTriggerDisabled, + isModified, + isOnlyDetectionAlerts, + isPopoverOpen, + loading, + setPopoverIsOpenCb, + selectedPatterns, + signalIndexName, + handleClosePopOver, + isTimelineSourcerer, + selectedDataViewId, + sourcererMissingPatterns, + onUpdateDetectionAlertsChecked, + setMissingPatterns, + setDataViewId, + scopeId, + children, + }) => { + if (!showSourcerer) { + return null; + } else if (scopeId === SourcererScopeName.analyzer) { + return <>{children}; + } else { + return ( + + } + closePopover={handleClosePopOver} + data-test-subj={isTimelineSourcerer ? 'timeline-sourcerer-popover' : 'sourcerer-popover'} + display="block" + isOpen={isPopoverOpen} + ownFocus + repositionOnScroll + > + <>{children} + + ); + } + } +); + +SourcererPopover.displayName = 'SourcererPopover'; + export const Sourcerer = React.memo(({ scope: scopeId }) => { const dispatch = useDispatch(); const isDetectionsSourcerer = scopeId === SourcererScopeName.detections; @@ -57,7 +140,6 @@ export const Sourcerer = React.memo(({ scope: scopeId } missingPatterns: sourcererMissingPatterns, }, } = useDeepEqualSelector((state) => sourcererScopeSelector(state, scopeId)); - const { pollForSignalIndex } = useSignalHelpers(); useEffect(() => { @@ -188,9 +270,18 @@ export const Sourcerer = React.memo(({ scope: scopeId } }, [dispatchChangeDataView, dataViewId, selectedOptions]); const handleClosePopOver = useCallback(() => { + handleOutsideClick(); + setDataViewId(selectedDataViewId); + setMissingPatterns(sourcererMissingPatterns); + onUpdateDetectionAlertsChecked(); setPopoverIsOpen(false); setExpandAdvancedOptions(false); - }, []); + }, [ + handleOutsideClick, + onUpdateDetectionAlertsChecked, + selectedDataViewId, + sourcererMissingPatterns, + ]); // deprecated timeline index pattern handlers const onContinueUpdateDeprecated = useCallback(() => { @@ -247,137 +338,126 @@ export const Sourcerer = React.memo(({ scope: scopeId } setDataViewId(selectedDataViewId); }, [selectedDataViewId]); - const onOutsideClick = useCallback(() => { - setDataViewId(selectedDataViewId); - setMissingPatterns(sourcererMissingPatterns); - onUpdateDetectionAlertsChecked(); - handleOutsideClick(); - }, [ - handleOutsideClick, - onUpdateDetectionAlertsChecked, - selectedDataViewId, - sourcererMissingPatterns, - ]); - const onExpandAdvancedOptionsClicked = useCallback(() => { setExpandAdvancedOptions((prevState) => !prevState); }, []); - // always show sourcerer in timeline - return indicesExist || scopeId === SourcererScopeName.timeline ? ( - { + return ( + indicesExist || [SourcererScopeName.analyzer, SourcererScopeName.timeline].includes(scopeId) + ); + }, [indicesExist, scopeId]); + + return ( + + + + <>{i18n.SELECT_DATA_VIEW} + + - } - closePopover={handleClosePopOver} - data-test-subj={isTimelineSourcerer ? 'timeline-sourcerer-popover' : 'sourcerer-popover'} - display="block" - isOpen={isPopoverOpen} - ownFocus - repositionOnScroll - > - - - - <>{i18n.SELECT_DATA_VIEW} - - + {(dataViewId === null && isModified === 'deprecated') || + isModified === 'missingPatterns' ? ( + setIsShowingUpdateModal(false)} + onReset={resetDataSources} + onUpdateStepOne={isModified === 'deprecated' ? onUpdateDeprecated : onUpdateDataView} + onUpdateStepTwo={onUpdateDataView} + selectedPatterns={selectedPatterns} /> - - {(dataViewId === null && isModified === 'deprecated') || - isModified === 'missingPatterns' ? ( - setIsShowingUpdateModal(false)} - onReset={resetDataSources} - onUpdateStepOne={isModified === 'deprecated' ? onUpdateDeprecated : onUpdateDataView} - onUpdateStepTwo={onUpdateDataView} - selectedPatterns={selectedPatterns} - /> - ) : ( - - <> - - {dataViewId && ( - - - - )} - - - - {i18n.INDEX_PATTERNS_ADVANCED_OPTIONS_TITLE} - - {expandAdvancedOptions && } - - + <> + + {dataViewId && ( + + - - - + )} + + + + {i18n.INDEX_PATTERNS_ADVANCED_OPTIONS_TITLE} + + {expandAdvancedOptions && } + + - - - - )} - - - - ) : null; + + + + + + + )} + + + ); }); Sourcerer.displayName = 'Sourcerer'; diff --git a/x-pack/plugins/security_solution/public/common/components/sourcerer/use_pick_index_patterns.tsx b/x-pack/plugins/security_solution/public/common/components/sourcerer/use_pick_index_patterns.tsx index 52f87ccbe06ed..429b8919aa70a 100644 --- a/x-pack/plugins/security_solution/public/common/components/sourcerer/use_pick_index_patterns.tsx +++ b/x-pack/plugins/security_solution/public/common/components/sourcerer/use_pick_index_patterns.tsx @@ -67,12 +67,16 @@ export const usePickIndexPatterns = ({ } = useKibana().services; const isHookAlive = useRef(true); const [loadingIndexPatterns, setLoadingIndexPatterns] = useState(false); - const alertsOptions = useMemo( - () => (signalIndexName ? patternListToOptions([signalIndexName]) : []), - [signalIndexName] - ); + // anything that uses patternListToOptions should be memoized, as it always returns a new array + // TODO: fix that + const signalPatternListToOptions = useMemo(() => { + return signalIndexName ? patternListToOptions([signalIndexName]) : []; + }, [signalIndexName]); + const selectedPatternsAsOptions = useMemo(() => { + return patternListToOptions(selectedPatterns); + }, [selectedPatterns]); const [selectedOptions, setSelectedOptions] = useState>>( - isOnlyDetectionAlerts ? alertsOptions : patternListToOptions(selectedPatterns) + isOnlyDetectionAlerts ? signalPatternListToOptions : selectedPatternsAsOptions ); const [isModified, setIsModified] = useState( dataViewId == null ? 'deprecated' : missingPatterns.length > 0 ? 'missingPatterns' : '' @@ -121,7 +125,7 @@ export const usePickIndexPatterns = ({ const getDefaultSelectedOptionsByDataView = useCallback( (id: string, isAlerts: boolean = false): Array> => scopeId === SourcererScopeName.detections || isAlerts - ? alertsOptions + ? signalPatternListToOptions : patternListToOptions( getScopePatternListSelection( kibanaDataViews.find((dataView) => dataView.id === id), @@ -130,7 +134,7 @@ export const usePickIndexPatterns = ({ id === defaultDataViewId ) ), - [alertsOptions, kibanaDataViews, scopeId, signalIndexName, defaultDataViewId] + [signalPatternListToOptions, kibanaDataViews, scopeId, signalIndexName, defaultDataViewId] ); const defaultSelectedPatternsAsOptions = useMemo( @@ -162,11 +166,10 @@ export const usePickIndexPatterns = ({ useEffect(() => { setSelectedOptions( scopeId === SourcererScopeName.detections - ? alertsOptions - : patternListToOptions(selectedPatterns) + ? signalPatternListToOptions + : selectedPatternsAsOptions ); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [selectedPatterns, scopeId]); + }, [selectedPatterns, scopeId, selectedPatternsAsOptions, signalPatternListToOptions]); // when scope updates, check modified to set/remove alerts label useEffect(() => { onSetIsModified( @@ -200,7 +203,9 @@ export const usePickIndexPatterns = ({ if (isHookAlive.current) { dispatch(sourcererActions.setDataView(dataView)); setSelectedOptions( - isOnlyDetectionAlerts ? alertsOptions : patternListToOptions(dataView.patternList) + isOnlyDetectionAlerts + ? signalPatternListToOptions + : patternListToOptions(dataView.patternList) ); } } catch (err) { @@ -212,7 +217,7 @@ export const usePickIndexPatterns = ({ } }, [ - alertsOptions, + signalPatternListToOptions, dispatch, getDefaultSelectedOptionsByDataView, isOnlyDetectionAlerts, @@ -243,8 +248,8 @@ export const usePickIndexPatterns = ({ }, []); const handleOutsideClick = useCallback(() => { - setSelectedOptions(patternListToOptions(selectedPatterns)); - }, [selectedPatterns]); + setSelectedOptions(selectedPatternsAsOptions); + }, [selectedPatternsAsOptions]); return { allOptions, diff --git a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.test.tsx b/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.test.tsx index e7ef62fc95b80..fade86c6c698c 100644 --- a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.test.tsx @@ -12,6 +12,12 @@ import { useSearchStrategy } from '../../use_search_strategy'; jest.mock('../../use_search_strategy', () => ({ useSearchStrategy: jest.fn(), })); + +jest.mock('../../../../entity_analytics/api/hooks/use_risk_engine_status', () => ({ + useIsNewRiskScoreModuleInstalled: jest + .fn() + .mockReturnValue({ isLoading: false, installed: true }), +})); const mockUseSearchStrategy = useSearchStrategy as jest.Mock; const mockSearch = jest.fn(); diff --git a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.tsx b/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.tsx index 807e8a5d3fdd3..81bca2bed7cf2 100644 --- a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/related_entities/related_hosts/index.tsx @@ -51,7 +51,8 @@ export const useUserRelatedHosts = ({ abort: skip, }); - const isNewRiskScoreModuleInstalled = useIsNewRiskScoreModuleInstalled(); + const { installed: isNewRiskScoreModuleInstalled, isLoading: riskScoreStatusLoading } = + useIsNewRiskScoreModuleInstalled(); const userRelatedHostsResponse = useMemo( () => ({ @@ -76,10 +77,10 @@ export const useUserRelatedHosts = ({ ); useEffect(() => { - if (!skip) { + if (!skip && !riskScoreStatusLoading) { search(userRelatedHostsRequest); } - }, [userRelatedHostsRequest, search, skip]); + }, [userRelatedHostsRequest, search, skip, riskScoreStatusLoading]); return userRelatedHostsResponse; }; diff --git a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.test.tsx b/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.test.tsx index 904b0e6569e65..51bf34bddd338 100644 --- a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.test.tsx @@ -12,6 +12,13 @@ import { useSearchStrategy } from '../../use_search_strategy'; jest.mock('../../use_search_strategy', () => ({ useSearchStrategy: jest.fn(), })); + +jest.mock('../../../../entity_analytics/api/hooks/use_risk_engine_status', () => ({ + useIsNewRiskScoreModuleInstalled: jest + .fn() + .mockReturnValue({ isLoading: false, installed: true }), +})); + const mockUseSearchStrategy = useSearchStrategy as jest.Mock; const mockSearch = jest.fn(); @@ -30,7 +37,7 @@ const mockResult = { loading: false, }; -describe('useUsersRelatedHosts', () => { +describe('useHostRelatedUsers', () => { beforeEach(() => { jest.clearAllMocks(); mockUseSearchStrategy.mockReturnValue({ diff --git a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.tsx b/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.tsx index 736839a5c0d1b..c759b33d29954 100644 --- a/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/related_entities/related_users/index.tsx @@ -35,7 +35,8 @@ export const useHostRelatedUsers = ({ from, skip = false, }: UseHostRelatedUsersParam): UseHostRelatedUsersResult => { - const isNewRiskScoreModuleInstalled = useIsNewRiskScoreModuleInstalled(); + const { installed: isNewRiskScoreModuleInstalled, isLoading: riskScoreStatusLoading } = + useIsNewRiskScoreModuleInstalled(); const { loading, result: response, @@ -75,10 +76,10 @@ export const useHostRelatedUsers = ({ ); useEffect(() => { - if (!skip) { + if (!skip && !riskScoreStatusLoading) { search(hostRelatedUsersRequest); } - }, [hostRelatedUsersRequest, search, skip]); + }, [hostRelatedUsersRequest, riskScoreStatusLoading, search, skip]); return hostRelatedUsersResponse; }; 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 35f3c73b209fc..eb218e626f176 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 @@ -161,7 +161,7 @@ describe('Sourcerer Hooks', () => { }); await waitForNextUpdate(); rerender(); - expect(mockDispatch).toBeCalledTimes(2); + expect(mockDispatch).toBeCalledTimes(3); expect(mockDispatch.mock.calls[0][0]).toEqual({ type: 'x-pack/security_solution/local/sourcerer/SET_DATA_VIEW_LOADING', payload: { id: 'security-solution', loading: true }, @@ -207,30 +207,30 @@ describe('Sourcerer Hooks', () => { await waitForNextUpdate(); rerender(); await waitFor(() => { - expect(mockDispatch.mock.calls[2][0]).toEqual({ + expect(mockDispatch.mock.calls[3][0]).toEqual({ type: 'x-pack/security_solution/local/sourcerer/SET_SOURCERER_SCOPE_LOADING', payload: { loading: true }, }); - expect(mockDispatch.mock.calls[3][0]).toEqual({ + expect(mockDispatch.mock.calls[4][0]).toEqual({ type: 'x-pack/security_solution/local/sourcerer/SET_SIGNAL_INDEX_NAME', payload: { signalIndexName: mockSourcererState.signalIndexName }, }); - expect(mockDispatch.mock.calls[4][0]).toEqual({ + expect(mockDispatch.mock.calls[5][0]).toEqual({ type: 'x-pack/security_solution/local/sourcerer/SET_DATA_VIEW_LOADING', payload: { id: mockSourcererState.defaultDataView.id, loading: true, }, }); - expect(mockDispatch.mock.calls[5][0]).toEqual({ + expect(mockDispatch.mock.calls[6][0]).toEqual({ type: 'x-pack/security_solution/local/sourcerer/SET_SOURCERER_DATA_VIEWS', payload: mockNewDataViews, }); - expect(mockDispatch.mock.calls[6][0]).toEqual({ + expect(mockDispatch.mock.calls[7][0]).toEqual({ type: 'x-pack/security_solution/local/sourcerer/SET_SOURCERER_SCOPE_LOADING', payload: { loading: false }, }); - expect(mockDispatch).toHaveBeenCalledTimes(7); + expect(mockDispatch).toHaveBeenCalledTimes(8); expect(mockSearch).toHaveBeenCalledTimes(2); }); }); @@ -396,7 +396,7 @@ describe('Sourcerer Hooks', () => { ); await waitForNextUpdate(); rerender(); - expect(mockDispatch.mock.calls[2][0]).toEqual({ + expect(mockDispatch.mock.calls[3][0]).toEqual({ type: 'x-pack/security_solution/local/sourcerer/SET_SELECTED_DATA_VIEW', payload: { id: 'detections', diff --git a/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx b/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx index 2e9c6cf796e57..aece36b854992 100644 --- a/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/sourcerer/index.tsx @@ -207,6 +207,18 @@ export const useInitSourcerer = ( ), }) ); + dispatch( + sourcererActions.setSelectedDataView({ + id: SourcererScopeName.analyzer, + selectedDataViewId: defaultDataView.id, + selectedPatterns: getScopePatternListSelection( + defaultDataView, + SourcererScopeName.analyzer, + signalIndexName, + true + ), + }) + ); } else if ( signalIndexNameSourcerer != null && (activeTimeline == null || activeTimeline.savedObjectId == null) && @@ -226,6 +238,18 @@ export const useInitSourcerer = ( ), }) ); + dispatch( + sourcererActions.setSelectedDataView({ + id: SourcererScopeName.analyzer, + selectedDataViewId: defaultDataView.id, + selectedPatterns: getScopePatternListSelection( + defaultDataView, + SourcererScopeName.analyzer, + signalIndexNameSourcerer, + true + ), + }) + ); } }, [ activeTimeline, @@ -425,26 +449,26 @@ export const useSourcererDataView = ( [legacyDataView, missingPatterns.length, selectedDataView] ); - const indicesExist = useMemo( - () => - loading || sourcererDataView.loading - ? true - : checkIfIndicesExist({ - scopeId, - signalIndexName, - patternList: sourcererDataView.patternList, - isDefaultDataViewSelected: sourcererDataView.id === defaultDataView.id, - }), - [ - defaultDataView.id, - loading, - scopeId, - signalIndexName, - sourcererDataView.id, - sourcererDataView.loading, - sourcererDataView.patternList, - ] - ); + const indicesExist = useMemo(() => { + if (loading || sourcererDataView.loading) { + return true; + } else { + return checkIfIndicesExist({ + scopeId, + signalIndexName, + patternList: sourcererDataView.patternList, + isDefaultDataViewSelected: sourcererDataView.id === defaultDataView.id, + }); + } + }, [ + defaultDataView.id, + loading, + scopeId, + signalIndexName, + sourcererDataView.id, + sourcererDataView.loading, + sourcererDataView.patternList, + ]); const browserFields = useCallback(() => { const { browserFields: dataViewBrowserFields } = getDataViewStateFromIndexFields( diff --git a/x-pack/plugins/security_solution/public/common/hooks/use_url_state.ts b/x-pack/plugins/security_solution/public/common/hooks/use_url_state.ts index cf5616e0c33fe..451687e71cc6e 100644 --- a/x-pack/plugins/security_solution/public/common/hooks/use_url_state.ts +++ b/x-pack/plugins/security_solution/public/common/hooks/use_url_state.ts @@ -5,7 +5,6 @@ * 2.0. */ -import { EXPANDABLE_FLYOUT_URL_KEY } from '@kbn/expandable-flyout'; import { useSyncGlobalQueryString } from '../utils/global_query_string'; import { useInitSearchBarFromUrlParams } from './search_bar/use_init_search_bar_url_params'; import { useInitTimerangeFromUrlParam } from './search_bar/use_init_timerange_url_params'; @@ -16,6 +15,8 @@ import { useQueryTimelineByIdOnUrlChange } from './timeline/use_query_timeline_b import { useInitFlyoutFromUrlParam } from './flyout/use_init_flyout_url_param'; import { useSyncFlyoutUrlParam } from './flyout/use_sync_flyout_url_param'; +export const EXPANDABLE_FLYOUT_URL_KEY = 'eventFlyout' as const; + export const useUrlState = () => { useSyncGlobalQueryString(); useInitSearchBarFromUrlParams(); diff --git a/x-pack/plugins/security_solution/public/common/mock/global_state.ts b/x-pack/plugins/security_solution/public/common/mock/global_state.ts index 2de75c414e0f5..93b02d7267de8 100644 --- a/x-pack/plugins/security_solution/public/common/mock/global_state.ts +++ b/x-pack/plugins/security_solution/public/common/mock/global_state.ts @@ -481,6 +481,16 @@ export const mockGlobalState: State = { true ), }, + [SourcererScopeName.analyzer]: { + ...mockSourcererState.sourcererScopes[SourcererScopeName.default], + selectedDataViewId: mockSourcererState.defaultDataView.id, + selectedPatterns: getScopePatternListSelection( + mockSourcererState.defaultDataView, + SourcererScopeName.default, + mockSourcererState.signalIndexName, + true + ), + }, }, }, globalUrlParam: {}, diff --git a/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.ts b/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.ts index 88328b9548379..e0f651a383b36 100644 --- a/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.ts +++ b/x-pack/plugins/security_solution/public/common/store/sourcerer/helpers.ts @@ -26,6 +26,8 @@ const getPatternListFromScope = ( return signalIndexName != null ? [signalIndexName] : []; case SourcererScopeName.timeline: return sortWithExcludesAtEnd(patternList); + case SourcererScopeName.analyzer: + return sortWithExcludesAtEnd(patternList); } }; diff --git a/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts b/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts index d0569c24a5029..e22efd70a9621 100644 --- a/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts +++ b/x-pack/plugins/security_solution/public/common/store/sourcerer/model.ts @@ -16,6 +16,7 @@ export enum SourcererScopeName { default = 'default', detections = 'detections', timeline = 'timeline', + analyzer = 'analyzer', } /** @@ -189,5 +190,9 @@ export const initialSourcererState: SourcererModel = { ...initSourcererScope, id: SourcererScopeName.timeline, }, + [SourcererScopeName.analyzer]: { + ...initSourcererScope, + id: SourcererScopeName.analyzer, + }, }, }; diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx index e6c8e1f5cc439..c756c71b3bc20 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_details_ui/pages/rule_details/index.tsx @@ -163,6 +163,14 @@ const StyledMinHeightTabContainer = styled.div` min-height: 800px; `; +/** + * Wrapper for the About, Definition and Schedule sections. + * - Allows for overflow wrapping of extremely long text, that might otherwise break the layout. + */ +const RuleFieldsSectionWrapper = styled.div` + overflow-wrap: anywhere; +`; + type DetectionEngineComponentProps = PropsFromRedux; const RuleDetailsPageComponent: React.FC = ({ @@ -648,50 +656,52 @@ const RuleDetailsPageComponent: React.FC = ({ {ruleError} - - - {rule !== null && ( - - )} - - - - - - - {rule !== null && !isStartingJobs && ( - - )} - - - - - - {rule != null && } - - - {hasActions && ( - - - + + + + {rule !== null && ( + + )} + + + + + + + {rule !== null && !isStartingJobs && ( + + )} - )} - - - + + + + {rule != null && } + + + {hasActions && ( + + + + + + )} + + + + diff --git a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx index 449a9c58d89fe..601432513fbb8 100644 --- a/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx +++ b/x-pack/plugins/security_solution/public/detection_engine/rule_management/components/rule_details/rule_definition_section.tsx @@ -90,22 +90,25 @@ const Filters = ({ filters, dataViewId, index, 'data-test-subj': dataTestSubj }: return ( - {flattenedFilters.map((filter, idx) => ( - - - {indexPattern != null ? ( - - ) : ( - - )} - - - ))} + {flattenedFilters.map((filter, idx) => { + const displayContent = filter.meta.alias ? ( + filter.meta.alias + ) : ( + + ); + return ( + + + {indexPattern != null ? displayContent : } + + + ); + })} ); }; diff --git a/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_data.test.ts b/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_data.test.ts new file mode 100644 index 0000000000000..5613cf551b464 --- /dev/null +++ b/x-pack/plugins/security_solution/public/detections/components/endpoint_responder/use_responder_action_data.test.ts @@ -0,0 +1,140 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; +import { useResponderActionData } from './use_responder_action_data'; +import { renderHook } from '@testing-library/react-hooks'; +import { useGetEndpointDetails } from '../../../management/hooks'; +import { HostStatus } from '../../../../common/endpoint/types'; + +jest.mock('../../../common/hooks/use_experimental_features'); +jest.mock('../../../management/hooks', () => ({ + useGetEndpointDetails: (jest.fn() as jest.Mock).mockImplementation(() => ({ enabled: false })), + useWithShowResponder: jest.fn(), +})); + +const useGetEndpointDetailsMock = useGetEndpointDetails as jest.Mock; +const useIsExperimentalFeatureEnabledMock = useIsExperimentalFeatureEnabled as jest.Mock; + +describe('#useResponderActionData', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should return `responder` menu item as `disabled` if agentType is not `endpoint` and feature flag is enabled', () => { + useIsExperimentalFeatureEnabledMock.mockReturnValue(false); + + const { result } = renderHook(() => + useResponderActionData({ + endpointId: 'some-agent-type-id', + // @ts-expect-error this is for testing purpose + agentType: 'some_agent_type', + eventData: [], + }) + ); + expect(result.current.isDisabled).toEqual(true); + }); + + describe('when agentType is `endpoint`', () => { + it.each(Object.values(HostStatus).filter((status) => status !== 'unenrolled'))( + 'should return `responder` menu item as `enabled `if agentType is `endpoint` when endpoint is %s', + (hostStatus) => { + useGetEndpointDetailsMock.mockReturnValue({ + data: { + host_status: hostStatus, + }, + isFetching: false, + error: undefined, + }); + const { result } = renderHook(() => + useResponderActionData({ + endpointId: 'endpoint-id', + agentType: 'endpoint', + }) + ); + expect(result.current.isDisabled).toEqual(false); + } + ); + + it('should return responder menu item `disabled` if agentType is `endpoint` when endpoint is `unenrolled`', () => { + useGetEndpointDetailsMock.mockReturnValue({ + data: { + host_status: 'unenrolled', + }, + isFetching: false, + error: undefined, + }); + const { result } = renderHook(() => + useResponderActionData({ + endpointId: 'endpoint-id', + agentType: 'endpoint', + }) + ); + expect(result.current.isDisabled).toEqual(true); + }); + + it('should return responder menu item `disabled` if agentType is `endpoint` when endpoint data has error', () => { + useGetEndpointDetailsMock.mockReturnValue({ + data: { + host_status: 'online', + }, + isFetching: false, + error: new Error('uh oh!'), + }); + const { result } = renderHook(() => + useResponderActionData({ + endpointId: 'endpoint-id', + agentType: 'endpoint', + }) + ); + expect(result.current.isDisabled).toEqual(true); + }); + + it('should return responder menu item `disabled` if agentType is `endpoint` and endpoint data is fetching', () => { + useGetEndpointDetailsMock.mockReturnValue({ + data: undefined, + isFetching: true, + error: undefined, + }); + + const { result } = renderHook(() => + useResponderActionData({ + endpointId: 'endpoint-id', + agentType: 'endpoint', + }) + ); + expect(result.current.isDisabled).toEqual(true); + }); + }); + + describe('when agentType is `sentinel_one`', () => { + it('should return `responder` menu item as `disabled` if agentType is `sentinel_one` and feature flag is disabled', () => { + useIsExperimentalFeatureEnabledMock.mockReturnValue(false); + + const { result } = renderHook(() => + useResponderActionData({ + endpointId: 'sentinel-one-id', + agentType: 'sentinel_one', + eventData: [], + }) + ); + expect(result.current.isDisabled).toEqual(true); + }); + + it('should return `responder` menu item as `enabled `if agentType is `sentinel_one` and feature flag is enabled', () => { + useIsExperimentalFeatureEnabledMock.mockReturnValue(true); + const { result } = renderHook(() => + useResponderActionData({ + endpointId: 'sentinel-one-id', + agentType: 'sentinel_one', + eventData: [], + }) + ); + expect(result.current.isDisabled).toEqual(false); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_status.ts b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_status.ts index 07ef32f0a3e41..bedd09c21f0f5 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_status.ts +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_engine_status.ts @@ -21,10 +21,19 @@ export const useInvalidateRiskEngineStatusQuery = () => { }, [queryClient]); }; -export const useIsNewRiskScoreModuleInstalled = () => { - const { data: riskEngineStatus } = useRiskEngineStatus(); +interface RiskScoreModuleStatus { + isLoading: boolean; + installed?: boolean; +} - return riskEngineStatus?.isNewRiskScoreModuleInstalled ?? false; +export const useIsNewRiskScoreModuleInstalled = (): RiskScoreModuleStatus => { + const { data: riskEngineStatus, isLoading } = useRiskEngineStatus(); + + if (isLoading) { + return { isLoading: true }; + } + + return { isLoading: false, installed: !!riskEngineStatus?.isNewRiskScoreModuleInstalled }; }; export const useRiskEngineStatus = () => { diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.test.tsx b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.test.tsx index cee8cc0a4a0ec..60fdb04dffa96 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.test.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.test.tsx @@ -12,8 +12,8 @@ import { useSearchStrategy } from '../../../common/containers/use_search_strateg import { useAppToasts } from '../../../common/hooks/use_app_toasts'; import { useAppToastsMock } from '../../../common/hooks/use_app_toasts.mock'; import { useRiskScoreFeatureStatus } from './use_risk_score_feature_status'; +import { useIsNewRiskScoreModuleInstalled } from './use_risk_engine_status'; import { RiskScoreEntity } from '../../../../common/search_strategy'; - jest.mock('../../../common/containers/use_search_strategy', () => ({ useSearchStrategy: jest.fn(), })); @@ -25,12 +25,20 @@ jest.mock('../../../common/hooks/use_space_id', () => ({ jest.mock('../../../common/hooks/use_app_toasts'); jest.mock('./use_risk_score_feature_status'); +jest.mock('./use_risk_engine_status'); + +const mockUseIsNewRiskScoreModuleInstalled = useIsNewRiskScoreModuleInstalled as jest.Mock; const mockUseRiskScoreFeatureStatus = useRiskScoreFeatureStatus as jest.Mock; const mockUseSearchStrategy = useSearchStrategy as jest.Mock; const mockSearch = jest.fn(); let appToastsMock: jest.Mocked>; +const defaultRiskScoreModuleStatus = { + isLoading: false, + installed: false, +}; + const defaultFeatureStatus = { isLoading: false, isDeprecated: false, @@ -67,6 +75,7 @@ describe.each([RiskScoreEntity.host, RiskScoreEntity.user])( (useAppToasts as jest.Mock).mockReturnValue(appToastsMock); mockUseRiskScoreFeatureStatus.mockReturnValue(defaultFeatureStatus); mockUseSearchStrategy.mockReturnValue(defaultSearchResponse); + mockUseIsNewRiskScoreModuleInstalled.mockReturnValue(defaultRiskScoreModuleStatus); }); test('does not search if license is not valid', () => { @@ -172,6 +181,8 @@ describe.each([RiskScoreEntity.host, RiskScoreEntity.user])( renderHook(() => useRiskScore({ riskEntity }), { wrapper: TestProviders, }); + + expect(mockSearch).toHaveBeenCalledTimes(1); expect(mockSearch).toHaveBeenCalledWith({ defaultIndex: [`ml_${riskEntity}_risk_score_latest_default`], factoryQueryType: `${riskEntity}sRiskScore`, @@ -180,6 +191,25 @@ describe.each([RiskScoreEntity.host, RiskScoreEntity.user])( }); }); + test('runs search with new index if feature is enabled and not deprecated and new module installed', () => { + mockUseIsNewRiskScoreModuleInstalled.mockReturnValue({ + ...defaultRiskScoreModuleStatus, + installed: true, + }); + + renderHook(() => useRiskScore({ riskEntity }), { + wrapper: TestProviders, + }); + + expect(mockSearch).toHaveBeenCalledTimes(1); + expect(mockSearch).toHaveBeenCalledWith({ + defaultIndex: ['risk-score.risk-score-latest-default'], + factoryQueryType: `${riskEntity}sRiskScore`, + riskScoreEntity: riskEntity, + includeAlertsCount: false, + }); + }); + test('return result', async () => { mockUseSearchStrategy.mockReturnValue({ ...defaultSearchResponse, diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.tsx b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.tsx index d2d1ba522a877..b82c805d3622e 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score.tsx @@ -82,12 +82,14 @@ export const useRiskScore = ): RiskScoreState => { const spaceId = useSpaceId(); - const isNewRiskScoreModuleInstalled = useIsNewRiskScoreModuleInstalled(); - const defaultIndex = spaceId - ? riskEntity === RiskScoreEntity.host - ? getHostRiskIndex(spaceId, onlyLatest, isNewRiskScoreModuleInstalled) - : getUserRiskIndex(spaceId, onlyLatest, isNewRiskScoreModuleInstalled) - : undefined; + const { installed: isNewRiskScoreModuleInstalled, isLoading: riskScoreStatusLoading } = + useIsNewRiskScoreModuleInstalled(); + const defaultIndex = + spaceId && !riskScoreStatusLoading && isNewRiskScoreModuleInstalled !== undefined + ? riskEntity === RiskScoreEntity.host + ? getHostRiskIndex(spaceId, onlyLatest, isNewRiskScoreModuleInstalled) + : getUserRiskIndex(spaceId, onlyLatest, isNewRiskScoreModuleInstalled) + : undefined; const factoryQueryType = riskEntity === RiskScoreEntity.host ? RiskQueries.hostsRiskScore : RiskQueries.usersRiskScore; diff --git a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_kpi.tsx b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_kpi.tsx index 4105dfc28d83d..029b20e121d9e 100644 --- a/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_kpi.tsx +++ b/x-pack/plugins/security_solution/public/entity_analytics/api/hooks/use_risk_score_kpi.tsx @@ -52,12 +52,14 @@ export const useRiskScoreKpi = ({ }: UseRiskScoreKpiProps): RiskScoreKpi => { const { addError } = useAppToasts(); const spaceId = useSpaceId(); - const isNewRiskScoreModuleInstalled = useIsNewRiskScoreModuleInstalled(); - const defaultIndex = spaceId - ? riskEntity === RiskScoreEntity.host - ? getHostRiskIndex(spaceId, true, isNewRiskScoreModuleInstalled) - : getUserRiskIndex(spaceId, true, isNewRiskScoreModuleInstalled) - : undefined; + const { installed: isNewRiskScoreModuleInstalled, isLoading: riskScoreStatusLoading } = + useIsNewRiskScoreModuleInstalled(); + const defaultIndex = + spaceId && !riskScoreStatusLoading && isNewRiskScoreModuleInstalled !== undefined + ? riskEntity === RiskScoreEntity.host + ? getHostRiskIndex(spaceId, true, isNewRiskScoreModuleInstalled) + : getUserRiskIndex(spaceId, true, isNewRiskScoreModuleInstalled) + : undefined; const { isDeprecated, diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.test.tsx b/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.test.tsx index fdd4bf21e118c..456caaf0d01c5 100644 --- a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.test.tsx +++ b/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.test.tsx @@ -14,6 +14,12 @@ import { useSearchStrategy } from '../../../../common/containers/use_search_stra jest.mock('../../../../common/containers/use_search_strategy', () => ({ useSearchStrategy: jest.fn(), })); + +jest.mock('../../../../entity_analytics/api/hooks/use_risk_engine_status', () => ({ + useIsNewRiskScoreModuleInstalled: jest + .fn() + .mockReturnValue({ isLoading: false, installed: true }), +})); const mockUseSearchStrategy = useSearchStrategy as jest.Mock; const mockSearch = jest.fn(); diff --git a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.tsx b/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.tsx index f2ba97e33313f..a2dcf337f2cd4 100644 --- a/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.tsx +++ b/x-pack/plugins/security_solution/public/explore/hosts/containers/hosts/index.tsx @@ -62,7 +62,8 @@ export const useAllHost = ({ getHostsSelector(state, type) ); - const isNewRiskScoreModuleInstalled = useIsNewRiskScoreModuleInstalled(); + const { installed: isNewRiskScoreModuleInstalled, isLoading: riskScoreStatusLoading } = + useIsNewRiskScoreModuleInstalled(); const [hostsRequest, setHostRequest] = useState(null); @@ -129,6 +130,9 @@ export const useAllHost = ({ ); useEffect(() => { + if (riskScoreStatusLoading) { + return; + } setHostRequest((prevRequest) => { const myRequest: HostsRequestOptionsInput = { ...(prevRequest ?? {}), @@ -162,6 +166,7 @@ export const useAllHost = ({ startDate, sortField, isNewRiskScoreModuleInstalled, + riskScoreStatusLoading, ]); useEffect(() => { diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.test.tsx b/x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.test.tsx index 6879f65791733..8ca96572e3c82 100644 --- a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.test.tsx +++ b/x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.test.tsx @@ -15,6 +15,11 @@ import { UsersType } from '../../store/model'; jest.mock('../../../../common/containers/query_toggle'); jest.mock('../../../../common/lib/kibana'); +jest.mock('../../../../entity_analytics/api/hooks/use_risk_engine_status', () => ({ + useIsNewRiskScoreModuleInstalled: jest + .fn() + .mockReturnValue({ isLoading: false, installed: true }), +})); const mockSearch = jest.fn(); diff --git a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.tsx b/x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.tsx index 286a1b21c735b..f33b57752ff60 100644 --- a/x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.tsx +++ b/x-pack/plugins/security_solution/public/explore/users/pages/navigation/all_users_query_tab_body.tsx @@ -43,7 +43,8 @@ export const AllUsersQueryTabBody = ({ const getUsersSelector = useMemo(() => usersSelectors.allUsersSelector(), []); const { activePage, limit, sort } = useDeepEqualSelector((state) => getUsersSelector(state)); - const isNewRiskScoreModuleInstalled = useIsNewRiskScoreModuleInstalled(); + const { installed: isNewRiskScoreModuleInstalled, isLoading: riskScoreStatusLoading } = + useIsNewRiskScoreModuleInstalled(); const { loading, @@ -67,7 +68,7 @@ export const AllUsersQueryTabBody = ({ }); useEffect(() => { - if (!querySkip) { + if (!querySkip && !riskScoreStatusLoading) { search({ filterQuery, defaultIndex: indexNames, @@ -92,6 +93,7 @@ export const AllUsersQueryTabBody = ({ limit, sort, isNewRiskScoreModuleInstalled, + riskScoreStatusLoading, ]); return ( diff --git a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/release_action.test.tsx b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/release_action.test.tsx index d1a45611a1ac1..a2a42d4325f04 100644 --- a/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/release_action.test.tsx +++ b/x-pack/plugins/security_solution/public/management/components/endpoint_responder/command_render_components/integration_tests/release_action.test.tsx @@ -24,7 +24,8 @@ import { UPGRADE_AGENT_FOR_RESPONDER } from '../../../../../common/translations' jest.mock('../../../../../common/experimental_features_service'); -describe('When using the release action from response actions console', () => { +// FLAKY: https://github.com/elastic/kibana/issues/162530 +describe.skip('When using the release action from response actions console', () => { let render: ( capabilities?: EndpointCapabilities[] ) => Promise>; diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts index 78239fbca02d1..0bc6e907fe827 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/policy/policy_details.cy.ts @@ -44,9 +44,7 @@ describe( const testNote = 'test note'; const updatedTestNote = 'updated test note'; - // FLAKY: https://github.com/elastic/kibana/issues/169187 - // FLAKY: https://github.com/elastic/kibana/issues/169188 - describe.skip('Renders and saves protection updates', () => { + describe('Renders and saves protection updates', () => { let indexedPolicy: IndexedFleetEndpointPolicyResponse; let policy: PolicyData; const defaultDate = moment.utc().subtract(1, 'days'); @@ -90,6 +88,21 @@ describe( cy.getByTestSubj('protectionUpdatesSaveButton').should('be.enabled'); }); + it('should display warning modal when user has unsaved changes', () => { + loadProtectionUpdatesUrl(policy.id); + cy.getByTestSubj('protection-updates-manifest-switch').click(); + cy.getByTestSubj('policySettingsTab').click(); + cy.getByTestSubj('policyDetailsUnsavedChangesModal').within(() => { + cy.getByTestSubj('confirmModalCancelButton').click(); + }); + cy.url().should('include', 'protectionUpdates'); + cy.getByTestSubj('policySettingsTab').click(); + cy.getByTestSubj('policyDetailsUnsavedChangesModal').within(() => { + cy.getByTestSubj('confirmModalConfirmButton').click(); + }); + cy.url().should('include', 'settings'); + }); + it('should successfully update the manifest version to custom date', () => { loadProtectionUpdatesUrl(policy.id); cy.getByTestSubj('protectionUpdatesSaveButton').should('be.disabled'); @@ -310,5 +323,48 @@ describe( }); }); }); + describe('Policy settings', () => { + const loadSettingsUrl = (policyId: string) => + loadPage(`/app/security/administration/policy/${policyId}/settings`); + + describe('Renders policy settings form', () => { + let indexedPolicy: IndexedFleetEndpointPolicyResponse; + let policy: PolicyData; + + beforeEach(() => { + login(); + disableExpandableFlyoutAdvancedSettings(); + getEndpointIntegrationVersion().then((version) => { + createAgentPolicyTask(version).then((data) => { + indexedPolicy = data; + policy = indexedPolicy.integrationPolicies[0]; + }); + }); + }); + + afterEach(() => { + if (indexedPolicy) { + cy.task('deleteIndexedFleetEndpointPolicies', indexedPolicy); + } + }); + it('should render disabled button and display modal if unsaved changes are present', () => { + loadSettingsUrl(policy.id); + cy.getByTestSubj('policyDetailsSaveButton').should('be.disabled'); + cy.getByTestSubj('endpointPolicyForm-malware-enableDisableSwitch').click(); + cy.getByTestSubj('policyDetailsSaveButton').should('not.be.disabled'); + cy.getByTestSubj('policyProtectionUpdatesTab').click(); + cy.getByTestSubj('policyDetailsUnsavedChangesModal').within(() => { + cy.getByTestSubj('confirmModalCancelButton').click(); + }); + cy.url().should('include', 'settings'); + cy.getByTestSubj('policyProtectionUpdatesTab').click(); + + cy.getByTestSubj('policyDetailsUnsavedChangesModal').within(() => { + cy.getByTestSubj('confirmModalConfirmButton').click(); + }); + cy.url().should('include', 'protectionUpdates'); + }); + }); + }); } ); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts index 6667677bda7b7..73a091462b679 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete.cy.ts @@ -20,48 +20,75 @@ describe( }, }, () => { - const allPages = getEndpointManagementPageList(); - const deniedPages = allPages.filter(({ id }) => { - return id !== 'endpointList' && id !== 'policyList'; - }); - const allowedPages = allPages.filter(({ id }) => { - return id === 'endpointList' || id === 'policyList'; - }); - let username: string; - let password: string; - - beforeEach(() => { - login(ROLE.endpoint_operations_analyst).then((response) => { - username = response.username; - password = response.password; + describe('Endpoint Operations Analyst', () => { + const allPages = getEndpointManagementPageList(); + const deniedPages = allPages.filter(({ id }) => { + return id !== 'endpointList' && id !== 'policyList'; }); - }); + const allowedPages = allPages.filter(({ id }) => { + return id === 'endpointList' || id === 'policyList'; + }); + let username: string; + let password: string; - for (const { url, title, pageTestSubj } of allowedPages) { - it(`should allow access to ${title}`, () => { - cy.visit(url); - cy.getByTestSubj(pageTestSubj).should('exist'); + beforeEach(() => { + login(ROLE.endpoint_operations_analyst).then((response) => { + username = response.username; + password = response.password; + }); }); - } - for (const { url, title } of deniedPages) { - it(`should not allow access to ${title}`, () => { - cy.visit(url); - getNoPrivilegesPage().should('exist'); + for (const { url, title, pageTestSubj } of allowedPages) { + it(`should allow access to ${title}`, () => { + cy.visit(url); + cy.getByTestSubj(pageTestSubj).should('exist'); + }); + } + + for (const { url, title } of deniedPages) { + it(`should not allow access to ${title}`, () => { + cy.visit(url); + getNoPrivilegesPage().should('exist'); + }); + } + + // No access to response actions (except `unisolate`) + for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES.filter( + (apiName) => apiName !== 'unisolate' + )) { + it(`should not allow access to Response Action: ${actionName}`, () => { + ensureResponseActionAuthzAccess('none', actionName, username, password); + }); + } + + it('should have access to `unisolate` api', () => { + ensureResponseActionAuthzAccess('all', 'unisolate', username, password); }); - } + }); - // No access to response actions (except `unisolate`) - for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES.filter( - (apiName) => apiName !== 'unisolate' - )) { - it(`should not allow access to Response Action: ${actionName}`, () => { - ensureResponseActionAuthzAccess('none', actionName, username, password); + describe('Elastic superuser', () => { + let username: string; + let password: string; + + beforeEach(() => { + login(ROLE.elastic_serverless).then((response) => { + username = response.username; + password = response.password; + }); }); - } - it('should have access to `unisolate` api', () => { - ensureResponseActionAuthzAccess('all', 'unisolate', username, password); + // No access to response actions (except `unisolate`) + for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES.filter( + (apiName) => apiName !== 'unisolate' + )) { + it(`should not allow access to Response Action: ${actionName}`, () => { + ensureResponseActionAuthzAccess('none', actionName, username, password); + }); + } + + it('should have access to `unisolate` api', () => { + ensureResponseActionAuthzAccess('all', 'unisolate', username, password); + }); }); } ); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts index e00a266f600b9..38fe13ffef995 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/complete_with_endpoint.cy.ts @@ -28,33 +28,58 @@ describe( }, }, () => { - const allPages = getEndpointManagementPageList(); - let username: string; - let password: string; - - beforeEach(() => { - login(ROLE.endpoint_operations_analyst).then((response) => { - username = response.username; - password = response.password; + describe('Endpoint Operations Analyst', () => { + const allPages = getEndpointManagementPageList(); + let username: string; + let password: string; + + beforeEach(() => { + login(ROLE.endpoint_operations_analyst).then((response) => { + username = response.username; + password = response.password; + }); }); - }); - for (const { url, title, pageTestSubj } of allPages) { - it(`should allow access to ${title}`, () => { - cy.visit(url); - cy.getByTestSubj(pageTestSubj).should('exist'); + for (const { url, title, pageTestSubj } of allPages) { + it(`should allow access to ${title}`, () => { + cy.visit(url); + cy.getByTestSubj(pageTestSubj).should('exist'); + }); + } + + for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES) { + it(`should allow access to Response Action: ${actionName}`, () => { + ensureResponseActionAuthzAccess('all', actionName, username, password); + }); + } + + it(`should have access to Fleet`, () => { + visitFleetAgentList(); + getFleetAgentListTable().should('exist'); }); - } + }); + + describe('Elastic superuser', () => { + let username: string; + let password: string; - for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES) { - it(`should allow access to Response Action: ${actionName}`, () => { - ensureResponseActionAuthzAccess('all', actionName, username, password); + beforeEach(() => { + login(ROLE.elastic_serverless).then((response) => { + username = response.username; + password = response.password; + }); }); - } - it(`should have access to Fleet`, () => { - visitFleetAgentList(); - getFleetAgentListTable().should('exist'); + for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES) { + it(`should allow access to Response Action: ${actionName}`, () => { + ensureResponseActionAuthzAccess('all', actionName, username, password); + }); + } + + it(`should have access to Fleet`, () => { + visitFleetAgentList(); + getFleetAgentListTable().should('exist'); + }); }); } ); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts index d0fdcf633814a..d0bedfba31cbf 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials.cy.ts @@ -22,48 +22,75 @@ describe( }, }, () => { - const allPages = getEndpointManagementPageList(); - const deniedPages = allPages.filter(({ id }) => { - return id !== 'endpointList' && id !== 'policyList'; - }); - const allowedPages = allPages.filter(({ id }) => { - return id === 'endpointList' || id === 'policyList'; - }); - let username: string; - let password: string; - - beforeEach(() => { - login(ROLE.endpoint_operations_analyst).then((response) => { - username = response.username; - password = response.password; + describe('Endpoint Operations Analyst', () => { + const allPages = getEndpointManagementPageList(); + const deniedPages = allPages.filter(({ id }) => { + return id !== 'endpointList' && id !== 'policyList'; }); - }); + const allowedPages = allPages.filter(({ id }) => { + return id === 'endpointList' || id === 'policyList'; + }); + let username: string; + let password: string; - for (const { url, title, pageTestSubj } of allowedPages) { - it(`should allow access to ${title}`, () => { - cy.visit(url); - cy.getByTestSubj(pageTestSubj).should('exist'); + beforeEach(() => { + login(ROLE.endpoint_operations_analyst).then((response) => { + username = response.username; + password = response.password; + }); }); - } - for (const { url, title } of deniedPages) { - it(`should NOT allow access to ${title}`, () => { - cy.visit(url); - getNoPrivilegesPage().should('exist'); + for (const { url, title, pageTestSubj } of allowedPages) { + it(`should allow access to ${title}`, () => { + cy.visit(url); + cy.getByTestSubj(pageTestSubj).should('exist'); + }); + } + + for (const { url, title } of deniedPages) { + it(`should NOT allow access to ${title}`, () => { + cy.visit(url); + getNoPrivilegesPage().should('exist'); + }); + } + + // No access to response actions (except `unisolate`) + for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES.filter( + (apiName) => apiName !== 'unisolate' + )) { + it(`should not allow access to Response Action: ${actionName}`, () => { + ensureResponseActionAuthzAccess('none', actionName, username, password); + }); + } + + it('should have access to `unisolate` api', () => { + ensureResponseActionAuthzAccess('all', 'unisolate', username, password); }); - } + }); - // No access to response actions (except `unisolate`) - for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES.filter( - (apiName) => apiName !== 'unisolate' - )) { - it(`should not allow access to Response Action: ${actionName}`, () => { - ensureResponseActionAuthzAccess('none', actionName, username, password); + describe('Elastic superuser', () => { + let username: string; + let password: string; + + beforeEach(() => { + login(ROLE.elastic_serverless).then((response) => { + username = response.username; + password = response.password; + }); }); - } - it('should have access to `unisolate` api', () => { - ensureResponseActionAuthzAccess('all', 'unisolate', username, password); + // No access to response actions (except `unisolate`) + for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES.filter( + (apiName) => apiName !== 'unisolate' + )) { + it(`should not allow access to Response Action: ${actionName}`, () => { + ensureResponseActionAuthzAccess('none', actionName, username, password); + }); + } + + it('should have access to `unisolate` api', () => { + ensureResponseActionAuthzAccess('all', 'unisolate', username, password); + }); }); } ); diff --git a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts index 786f4f20ad25b..8853cf261e5b4 100644 --- a/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts +++ b/x-pack/plugins/security_solution/public/management/cypress/e2e/serverless/feature_access/essentials_with_endpoint.cy.ts @@ -28,54 +28,80 @@ describe( }, }, () => { - const allPages = getEndpointManagementPageMap(); - const allowedPages = [ - allPages.endpointList, - allPages.policyList, - allPages.trustedApps, - allPages.blocklist, - allPages.eventFilters, - ]; - const deniedPages = [allPages.responseActionLog, allPages.hostIsolationExceptions]; - let username: string; - let password: string; + describe('Endpoint Operations Analyst', () => { + const allPages = getEndpointManagementPageMap(); + const allowedPages = [ + allPages.endpointList, + allPages.policyList, + allPages.trustedApps, + allPages.blocklist, + allPages.eventFilters, + ]; + const deniedPages = [allPages.responseActionLog, allPages.hostIsolationExceptions]; + let username: string; + let password: string; - beforeEach(() => { - login(ROLE.endpoint_operations_analyst).then((response) => { - username = response.username; - password = response.password; + beforeEach(() => { + login(ROLE.endpoint_operations_analyst).then((response) => { + username = response.username; + password = response.password; + }); }); - }); - for (const { url, title, pageTestSubj } of allowedPages) { - it(`should allow access to ${title}`, () => { - cy.visit(url); - cy.getByTestSubj(pageTestSubj).should('exist'); + for (const { url, title, pageTestSubj } of allowedPages) { + it(`should allow access to ${title}`, () => { + cy.visit(url); + cy.getByTestSubj(pageTestSubj).should('exist'); + }); + } + + for (const { url, title } of deniedPages) { + it(`should NOT allow access to ${title}`, () => { + cy.visit(url); + cy.getByTestSubj('noPrivilegesPage').should('exist'); + }); + } + + for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES.filter( + (apiName) => apiName !== 'unisolate' + )) { + it(`should not allow access to Response Action: ${actionName}`, () => { + ensureResponseActionAuthzAccess('none', actionName, username, password); + }); + } + + it('should have access to `unisolate` api', () => { + ensureResponseActionAuthzAccess('all', 'unisolate', username, password); }); - } - for (const { url, title } of deniedPages) { - it(`should NOT allow access to ${title}`, () => { - cy.visit(url); - cy.getByTestSubj('noPrivilegesPage').should('exist'); + it(`should have access to Fleet`, () => { + visitFleetAgentList(); + getFleetAgentListTable().should('exist'); }); - } + }); + + describe('Elastic superuser', () => { + let username: string; + let password: string; - for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES.filter( - (apiName) => apiName !== 'unisolate' - )) { - it(`should not allow access to Response Action: ${actionName}`, () => { - ensureResponseActionAuthzAccess('none', actionName, username, password); + beforeEach(() => { + login(ROLE.elastic_serverless).then((response) => { + username = response.username; + password = response.password; + }); }); - } - it('should have access to `unisolate` api', () => { - ensureResponseActionAuthzAccess('all', 'unisolate', username, password); - }); + for (const actionName of RESPONSE_ACTION_API_COMMANDS_NAMES.filter( + (apiName) => apiName !== 'unisolate' + )) { + it(`should not allow access to Response Action: ${actionName}`, () => { + ensureResponseActionAuthzAccess('none', actionName, username, password); + }); + } - it(`should have access to Fleet`, () => { - visitFleetAgentList(); - getFleetAgentListTable().should('exist'); + it('should have access to `unisolate` api', () => { + ensureResponseActionAuthzAccess('all', 'unisolate', username, password); + }); }); } ); diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.test.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.test.tsx index 0c5a98281eec6..b7c4c13237a1f 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.test.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.test.tsx @@ -47,7 +47,9 @@ describe('When rendering PolicySettingsLayout', () => { apiMocks = allFleetHttpMocks(mockedContext.coreStart.http); policyData = new FleetPackagePolicyGenerator('seed').generateEndpointPackagePolicy(); render = () => { - renderResult = mockedContext.render(); + renderResult = mockedContext.render( + + ); return renderResult; }; }); @@ -117,9 +119,17 @@ describe('When rendering PolicySettingsLayout', () => { return expectedUpdates; }; - it('should render layout with expected content', () => { + it('should render layout with expected content when no changes have been made', () => { const { getByTestId } = render(); + expect(getByTestId('endpointPolicyForm')); + expect(getByTestId('policyDetailsCancelButton')).not.toBeDisabled(); + expect(getByTestId('policyDetailsSaveButton')).toBeDisabled(); + }); + + it('should render layout with expected content when changes have been made', () => { + const { getByTestId } = render(); + makeUpdates(); expect(getByTestId('endpointPolicyForm')); expect(getByTestId('policyDetailsCancelButton')).not.toBeDisabled(); expect(getByTestId('policyDetailsSaveButton')).not.toBeDisabled(); @@ -141,6 +151,7 @@ describe('When rendering PolicySettingsLayout', () => { const deferred = getDeferred(); apiMocks.responseProvider.updateEndpointPolicy.mockDelay.mockReturnValue(deferred.promise); const { getByTestId } = render(); + makeUpdates(); await clickSave(true, false); await waitFor(() => { @@ -157,10 +168,11 @@ describe('When rendering PolicySettingsLayout', () => { it('should show success toast on update success', async () => { render(); + makeUpdates(); await clickSave(); await waitFor(() => { - expect(renderResult.getByTestId('policyDetailsSaveButton')).not.toBeDisabled(); + expect(renderResult.getByTestId('policyDetailsSaveButton')).toBeDisabled(); }); expect(toasts.addSuccess).toHaveBeenCalledWith({ @@ -175,6 +187,7 @@ describe('When rendering PolicySettingsLayout', () => { throw new Error('oh oh!'); }); render(); + makeUpdates(); await clickSave(); await waitFor(() => { diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.tsx index 1a3a62c1e2ebf..03ce2889d6f61 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/policy_settings_layout/policy_settings_layout.tsx @@ -12,7 +12,7 @@ import type { ApplicationStart } from '@kbn/core-application-browser'; import { FormattedMessage } from '@kbn/i18n-react'; import { EuiButton, EuiButtonEmpty, EuiFlexGroup, EuiFlexItem, EuiSpacer } from '@elastic/eui'; import { KibanaPageTemplate } from '@kbn/shared-ux-page-kibana-template'; -import { cloneDeep } from 'lodash'; +import { cloneDeep, isEqual } from 'lodash'; import { i18n } from '@kbn/i18n'; import { useUserPrivileges } from '../../../../../common/components/user_privileges'; import { useFetchAgentByAgentPolicySummary } from '../../../../hooks/policy/use_fetch_endpoint_policy_agent_summary'; @@ -33,176 +33,194 @@ import { ConfirmUpdate } from './components/policy_form_confirm_update'; export interface PolicySettingsLayoutProps { policy: MaybeImmutable; + setUnsavedChanges: (isModified: boolean) => void; } -export const PolicySettingsLayout = memo(({ policy: _policy }) => { - const policy = _policy as PolicyData; - const { - services: { - application: { navigateToApp }, - }, - } = useKibana(); - const toasts = useToasts(); - const dispatch = useDispatch(); - const { state: locationRouteState } = useLocation(); - const { canWritePolicyManagement } = useUserPrivileges().endpointPrivileges; - const { isLoading: isUpdating, mutateAsync: sendPolicyUpdate } = useUpdateEndpointPolicy(); - const { data: agentSummaryData } = useFetchAgentByAgentPolicySummary(policy.policy_id); - - const [policySettings, setPolicySettings] = useState( - cloneDeep(policy.inputs[0].config.policy.value) - ); - const [showConfirm, setShowConfirm] = useState(false); - const [routeState, setRouteState] = useState(); - - const isEditMode = canWritePolicyManagement; - const policyName = policy?.name ?? ''; - const routingOnCancelNavigateTo = routeState?.onCancelNavigateTo; - - const navigateToAppArguments = useMemo((): Parameters => { - if (routingOnCancelNavigateTo) { - return routingOnCancelNavigateTo; - } - - return [ - APP_UI_ID, - { - path: getPoliciesPath(), +export const PolicySettingsLayout = memo( + ({ policy: _policy, setUnsavedChanges }) => { + const policy = _policy as PolicyData; + const { + services: { + application: { navigateToApp }, }, - ]; - }, [routingOnCancelNavigateTo]); - - const handleSettingsOnChange: PolicySettingsFormProps['onChange'] = useCallback((updates) => { - setPolicySettings(updates.updatedPolicy); - }, []); - - const handleCancelOnClick = useNavigateToAppEventHandler(...navigateToAppArguments); - - const handleSaveOnClick = useCallback(() => { - setShowConfirm(true); - }, []); - - const handleSaveCancel = useCallback(() => { - setShowConfirm(false); - }, []); - - const handleSaveConfirmation = useCallback(() => { - const update = cloneDeep(policy); - - update.inputs[0].config.policy.value = policySettings; - sendPolicyUpdate({ policy: update }) - .then(({ item: policyItem }) => { - toasts.addSuccess({ - 'data-test-subj': 'policyDetailsSuccessMessage', - title: i18n.translate( - 'xpack.securitySolution.endpoint.policy.details.updateSuccessTitle', - { - defaultMessage: 'Success!', - } - ), - text: i18n.translate( - 'xpack.securitySolution.endpoint.policy.details.updateSuccessMessage', - { - defaultMessage: 'Integration {name} has been updated.', - values: { name: policyName }, - } - ), - }); + } = useKibana(); + const toasts = useToasts(); + const dispatch = useDispatch(); + const { state: locationRouteState } = useLocation(); + const { canWritePolicyManagement } = useUserPrivileges().endpointPrivileges; + const { isLoading: isUpdating, mutateAsync: sendPolicyUpdate } = useUpdateEndpointPolicy(); + const { data: agentSummaryData } = useFetchAgentByAgentPolicySummary(policy.policy_id); + + const [policySettings, setPolicySettings] = useState( + cloneDeep(policy.inputs[0].config.policy.value) + ); + + const [policyModified, setPolicyModified] = useState(false); + + const [showConfirm, setShowConfirm] = useState(false); + const [routeState, setRouteState] = useState(); + + const isEditMode = canWritePolicyManagement; + const policyName = policy?.name ?? ''; + const routingOnCancelNavigateTo = routeState?.onCancelNavigateTo; + + const navigateToAppArguments = useMemo((): Parameters => { + if (routingOnCancelNavigateTo) { + return routingOnCancelNavigateTo; + } + + return [ + APP_UI_ID, + { + path: getPoliciesPath(), + }, + ]; + }, [routingOnCancelNavigateTo]); + + const handleSettingsOnChange: PolicySettingsFormProps['onChange'] = useCallback( + (updates) => { + setPolicySettings(updates.updatedPolicy); + setPolicyModified(!isEqual(updates.updatedPolicy, policy.inputs[0].config.policy.value)); + }, + [policy.inputs] + ); + const handleCancelOnClick = useNavigateToAppEventHandler(...navigateToAppArguments); + + const handleSaveOnClick = useCallback(() => { + setShowConfirm(true); + }, []); + + const handleSaveCancel = useCallback(() => { + setShowConfirm(false); + }, []); + + const handleSaveConfirmation = useCallback(() => { + const update = cloneDeep(policy); + + update.inputs[0].config.policy.value = policySettings; + sendPolicyUpdate({ policy: update }) + .then(({ item: policyItem }) => { + toasts.addSuccess({ + 'data-test-subj': 'policyDetailsSuccessMessage', + title: i18n.translate( + 'xpack.securitySolution.endpoint.policy.details.updateSuccessTitle', + { + defaultMessage: 'Success!', + } + ), + text: i18n.translate( + 'xpack.securitySolution.endpoint.policy.details.updateSuccessMessage', + { + defaultMessage: 'Integration {name} has been updated.', + values: { name: policyName }, + } + ), + }); - if (routeState && routeState.onSaveNavigateTo) { - navigateToApp(...routeState.onSaveNavigateTo); - } else { - // Since the 'policyItem' is stored in a store and fetched as a result of an action on urlChange, we still need to dispatch an action even though Redux was removed from this component. - dispatch({ - type: 'serverReturnedPolicyDetailsData', - payload: { - policyItem, - }, + if (routeState && routeState.onSaveNavigateTo) { + navigateToApp(...routeState.onSaveNavigateTo); + } else { + setPolicyModified(false); + // Since the 'policyItem' is stored in a store and fetched as a result of an action on urlChange, we still need to dispatch an action even though Redux was removed from this component. + dispatch({ + type: 'serverReturnedPolicyDetailsData', + payload: { + policyItem, + }, + }); + } + }) + .catch((err) => { + toasts.addDanger({ + 'data-test-subj': 'policyDetailsFailureMessage', + title: i18n.translate( + 'xpack.securitySolution.endpoint.policy.details.updateErrorTitle', + { + defaultMessage: 'Failed!', + } + ), + text: err.message, }); - } - }) - .catch((err) => { - toasts.addDanger({ - 'data-test-subj': 'policyDetailsFailureMessage', - title: i18n.translate('xpack.securitySolution.endpoint.policy.details.updateErrorTitle', { - defaultMessage: 'Failed!', - }), - text: err.message, }); - }); - - handleSaveCancel(); - }, [ - dispatch, - handleSaveCancel, - navigateToApp, - policy, - policyName, - policySettings, - routeState, - sendPolicyUpdate, - toasts, - ]); - - useEffect(() => { - if (!routeState && locationRouteState) { - setRouteState(locationRouteState); - } - }, [locationRouteState, routeState]); - - return ( - <> - {showConfirm && ( - { + if (!routeState && locationRouteState) { + setRouteState(locationRouteState); + } + }, [locationRouteState, routeState]); + + useEffect(() => { + setUnsavedChanges(policyModified); + }, [policyModified, setUnsavedChanges]); + + return ( + <> + {showConfirm && ( + + )} + + - )} - - - - - - - - - - - - - {isEditMode && ( + + + + + - - + - )} - - - - ); -}); + {isEditMode && ( + + + + + + )} + + + + ); + } +); PolicySettingsLayout.displayName = 'PolicySettingsLayout'; diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx index d99a7682dfd90..5d244884c1068 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/protection_updates/protection_updates_layout.tsx @@ -43,6 +43,7 @@ import { getControlledArtifactCutoffDate } from '../../../../../../common/endpoi interface ProtectionUpdatesLayoutProps { policy: MaybeImmutable; + setUnsavedChanges: (isModified: boolean) => void; } const AUTOMATIC_UPDATES_CHECKBOX_LABEL = i18n.translate( @@ -60,7 +61,7 @@ const AUTOMATIC_UPDATES_OFF_CHECKBOX_LABEL = i18n.translate( ); export const ProtectionUpdatesLayout = React.memo( - ({ policy: _policy }) => { + ({ policy: _policy, setUnsavedChanges }) => { const toasts = useToasts(); const dispatch = useDispatch(); const { isLoading: isUpdating, mutateAsync: sendPolicyUpdate } = useUpdateEndpointPolicy(); @@ -106,6 +107,10 @@ export const ProtectionUpdatesLayout = React.memo( (fetchedNote ? note !== fetchedNote.note : note !== '') || manifestVersion !== deployedVersion; + useEffect(() => { + setUnsavedChanges(saveButtonEnabled); + }, [saveButtonEnabled, setUnsavedChanges]); + const onSave = useCallback(() => { const update = cloneDeep(policy); update.inputs[0].config.policy.value.global_manifest_version = manifestVersion; diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/policy_tabs.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/policy_tabs.tsx index cdbc253ec6776..5b37aa798effd 100644 --- a/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/policy_tabs.tsx +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/policy_tabs.tsx @@ -9,8 +9,9 @@ import type { EuiTabbedContentTab } from '@elastic/eui'; import { EuiSpacer, EuiTabbedContent } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import React, { useCallback, useEffect, useMemo } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useHistory, useLocation } from 'react-router-dom'; +import { UnsavedChangesConfirmModal } from './unsaved_changes_confirm_modal'; import { useLicense } from '../../../../../common/hooks/use_license'; import { useIsExperimentalFeatureEnabled } from '../../../../../common/hooks/use_experimental_features'; import { ProtectionUpdatesLayout } from '../protection_updates/protection_updates_layout'; @@ -85,6 +86,28 @@ export const PolicyTabs = React.memo(() => { const isInProtectionUpdatesTab = usePolicyDetailsSelector(isOnProtectionUpdatesView); const policyId = usePolicyDetailsSelector(policyIdFromParams); + const [unsavedChangesModal, setUnsavedChangesModal] = useState<{ + showModal: boolean; + nextTab: EuiTabbedContentTab | null; + }>({ showModal: false, nextTab: null }); + + const [unsavedChanges, setUnsavedChanges] = useState< + Record + >({ + [PolicyTabKeys.SETTINGS]: false, + [PolicyTabKeys.PROTECTION_UPDATES]: false, + }); + + const setTabUnsavedChanges = useCallback( + (tab: PolicyTabKeys.SETTINGS | PolicyTabKeys.PROTECTION_UPDATES) => + (hasUnsavedChanges: boolean) => { + if (unsavedChanges[tab] !== hasUnsavedChanges) { + setUnsavedChanges((prev) => ({ ...prev, [tab]: hasUnsavedChanges })); + } + }, + [unsavedChanges] + ); + // By the time the tabs load, we know that we already have a `policyItem` since a conditional // check is done at the `PageDetails` component level. So asserting to non-null/undefined here. // eslint-disable-next-line @typescript-eslint/no-non-null-assertion @@ -213,9 +236,13 @@ export const PolicyTabs = React.memo(() => { <> - + ), + 'data-test-subj': 'policySettingsTab', }, [PolicyTabKeys.TRUSTED_APPS]: canReadTrustedApplications ? { @@ -240,6 +267,7 @@ export const PolicyTabs = React.memo(() => { /> ), + 'data-test-subj': 'policyTrustedAppsTab', } : undefined, [PolicyTabKeys.EVENT_FILTERS]: canReadEventFilters @@ -265,6 +293,7 @@ export const PolicyTabs = React.memo(() => { /> ), + 'data-test-subj': 'policyEventFiltersTab', } : undefined, [PolicyTabKeys.HOST_ISOLATION_EXCEPTIONS]: canReadHostIsolationExceptions @@ -290,6 +319,7 @@ export const PolicyTabs = React.memo(() => { /> ), + 'data-test-subj': 'policyHostIsolationExceptionsTab', } : undefined, [PolicyTabKeys.BLOCKLISTS]: canReadBlocklist @@ -312,6 +342,7 @@ export const PolicyTabs = React.memo(() => { /> ), + 'data-test-subj': 'policyBlocklistTab', } : undefined, @@ -327,14 +358,19 @@ export const PolicyTabs = React.memo(() => { content: ( <> - + ), + 'data-test-subj': 'policyProtectionUpdatesTab', } : undefined, }; }, [ policyItem, + setTabUnsavedChanges, canReadTrustedApplications, getTrustedAppsApiClientInstance, canWriteTrustedApplications, @@ -385,8 +421,15 @@ export const PolicyTabs = React.memo(() => { isInProtectionUpdatesTab, ]); - const onTabClickHandler = useCallback( + const cancelUnsavedChangesModal = useCallback(() => { + setUnsavedChangesModal({ showModal: false, nextTab: null }); + }, [setUnsavedChangesModal]); + + const changeTab = useCallback( (selectedTab: EuiTabbedContentTab) => { + if (unsavedChangesModal.showModal) { + cancelUnsavedChangesModal(); + } let path: string = ''; switch (selectedTab.id) { case PolicyTabKeys.SETTINGS: @@ -410,21 +453,56 @@ export const PolicyTabs = React.memo(() => { } history.push(path, routeState?.backLink ? { backLink: routeState.backLink } : null); }, - [history, policyId, routeState] + [ + cancelUnsavedChangesModal, + history, + policyId, + routeState.backLink, + unsavedChangesModal.showModal, + ] ); + const onTabClickHandler = useCallback( + (selectedTab: EuiTabbedContentTab) => { + if ( + (isInSettingsTab && unsavedChanges[PolicyTabKeys.SETTINGS]) || + (isInProtectionUpdatesTab && unsavedChanges[PolicyTabKeys.PROTECTION_UPDATES]) + ) { + setUnsavedChangesModal({ showModal: true, nextTab: selectedTab }); + } else { + changeTab(selectedTab); + } + }, + [changeTab, isInProtectionUpdatesTab, isInSettingsTab, unsavedChanges] + ); + + const confirmUnsavedChangesModal = useCallback(() => { + if (unsavedChangesModal.nextTab) { + changeTab(unsavedChangesModal.nextTab); + } + }, [changeTab, unsavedChangesModal.nextTab]); + // show loader for privileges validation if (privilegesLoading) { return ; } return ( - + <> + {unsavedChangesModal.showModal && ( + + )} + + ); }); diff --git a/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/unsaved_changes_confirm_modal.tsx b/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/unsaved_changes_confirm_modal.tsx new file mode 100644 index 0000000000000..b7e1b06567081 --- /dev/null +++ b/x-pack/plugins/security_solution/public/management/pages/policy/view/tabs/unsaved_changes_confirm_modal.tsx @@ -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 React from 'react'; +import { EuiConfirmModal } from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { FormattedMessage } from '@kbn/i18n-react'; + +export const UnsavedChangesConfirmModal = React.memo<{ + onConfirm: () => void; + onCancel: () => void; +}>(({ onCancel, onConfirm }) => { + return ( + + + + ); +}); + +UnsavedChangesConfirmModal.displayName = 'UnsavedChangesConfirmModal'; diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/action.ts b/x-pack/plugins/security_solution/public/resolver/store/data/action.ts index 01e93d042810a..dc86fb810dee5 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/data/action.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/data/action.ts @@ -191,6 +191,16 @@ export const userReloadedResolverNode = actionCreator<{ readonly nodeID: string; }>('USER_RELOADED_RESOLVER_NODE'); +export const userOverrodeDateRange = actionCreator<{ + readonly id: string; + readonly timeRange: TimeFilters; +}>('USER_OVERRODE_DATE_RANGE'); + +export const userOverrodeSourcererSelection = actionCreator<{ + readonly id: string; + readonly indices: string[]; +}>('USER_OVERRODE_SOURCERER_SELECTION'); + /** * When the server returns an error after the app requests node data for a set of nodes. */ diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/reducer.test.ts b/x-pack/plugins/security_solution/public/resolver/store/data/reducer.test.ts index a8b6945a4fbe8..a55a0cfd7fee5 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/data/reducer.test.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/data/reducer.test.ts @@ -16,10 +16,27 @@ import { endpointSourceSchema, winlogSourceSchema } from '../../mocks/tree_schem import type { NewResolverTree, ResolverSchema } from '../../../../common/endpoint/types'; import { ancestorsWithAncestryField, descendantsLimit } from '../../models/resolver_tree'; import { EMPTY_RESOLVER } from '../helpers'; -import { serverReturnedResolverData } from './action'; +import { serverReturnedResolverData, userOverrodeDateRange } from './action'; +import { appReceivedNewExternalProperties } from '../actions'; type SourceAndSchemaFunction = () => { schema: ResolverSchema; dataSource: string }; +jest.mock('../../../common/utils/default_date_settings', () => { + const original = jest.requireActual('../../../common/utils/default_date_settings'); + return { + ...original, + getTimeRangeSettings: () => ({ to: '', from: '' }), + }; +}); + +jest.mock('../../../common/utils/normalize_time_range', () => { + const original = jest.requireActual('../../../common/utils/normalize_time_range'); + return { + ...original, + normalizeTimeRange: () => original.normalizeTimeRange(false), + }; +}); + /** * Test the data reducer and selector. */ @@ -187,6 +204,41 @@ describe('Resolver Data Middleware', () => { }); }); + describe('when a user sets a custom time range', () => { + beforeEach(() => { + const from = 'Sep 21, 2024 @ 20:49:13.452'; + const to = 'Sep 21, 2024 @ 20:49:13.452'; + dispatchTree(generatedTreeMetadata.formattedTree, winlogSourceSchema); + store.dispatch( + appReceivedNewExternalProperties({ + id, + resolverComponentInstanceID: id, + locationSearch: '', + databaseDocumentID: id, + filters: {}, + indices: ['index1'], + shouldUpdate: false, + }) + ); + store.dispatch( + userOverrodeDateRange({ + id, + timeRange: { from, to }, + }) + ); + }); + it('should use that time over anything else', () => { + const params = selectors.treeParametersToFetch(store.getState()[id].data); + if (params?.filters !== undefined) { + const { + filters: { from, to }, + } = params; + expect(from).toEqual('Sep 21, 2024 @ 20:49:13.452'); + expect(to).toEqual('Sep 21, 2024 @ 20:49:13.452'); + } + }); + }); + describe('when using winlog schema to layout the graph', () => { beforeEach(() => { dispatchTree(generatedTreeMetadata.formattedTree, winlogSourceSchema); diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/reducer.ts b/x-pack/plugins/security_solution/public/resolver/store/data/reducer.ts index 1ca1a06ad3f67..4c289efd76b45 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/data/reducer.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/data/reducer.ts @@ -12,6 +12,7 @@ import * as treeFetcherParameters from '../../models/tree_fetcher_parameters'; import * as selectors from './selectors'; import * as nodeEventsInCategoryModel from './node_events_in_category_model'; import * as nodeDataModel from '../../models/node_data'; +import { normalizeTimeRange } from '../../../common/utils/normalize_time_range'; import { initialAnalyzerState, immerCase } from '../helpers'; import { appReceivedNewExternalProperties } from '../actions'; import { @@ -29,6 +30,7 @@ import { appRequestedCurrentRelatedEventData, serverReturnedCurrentRelatedEventData, serverFailedToReturnCurrentRelatedEventData, + userOverrodeDateRange, } from './action'; export const dataReducer = reducerWithInitialState(initialAnalyzerState) @@ -247,6 +249,28 @@ export const dataReducer = reducerWithInitialState(initialAnalyzerState) return draft; }) ) + .withHandling( + immerCase(userOverrodeDateRange, (draft, { id, timeRange: { from, to } }) => { + if (from && to) { + const state: Draft = draft[id].data; + if (state.tree?.currentParameters !== undefined) { + state.tree = { + ...state.tree, + currentParameters: { + ...state.tree.currentParameters, + filters: { + from, + to, + }, + }, + }; + } + const normalizedTimeRange = normalizeTimeRange({ from, to }); + draft[id].data.overriddenTimeBounds = normalizedTimeRange; + } + return draft; + }) + ) .withHandling( immerCase(serverReturnedCurrentRelatedEventData, (draft, { id, relatedEvent }) => { draft[id].data.currentRelatedEvent = { diff --git a/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts b/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts index 0d43f22747f06..9be9f28034b61 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/data/selectors.ts @@ -50,6 +50,10 @@ export function detectedBounds(state: DataState) { return state.detectedBounds; } +export function overriddenTimeBounds(state: DataState) { + return state.overriddenTimeBounds; +} + /** * If a request was made and it threw an error or returned a failure response code. */ @@ -631,6 +635,28 @@ export const relatedEventCountOfTypeForNode: ( } ); +export const currentAppliedTimeRange = createSelector( + (state: DataState) => state.tree?.currentParameters?.filters, + (state: DataState) => state.tree?.lastResponse?.parameters?.filters, + detectedBounds, + overriddenTimeBounds, + // eslint-disable-next-line @typescript-eslint/no-shadow + function (currentFilters, lastFilters, detectedBounds, overriddenTimeBounds) { + if (overriddenTimeBounds) { + return overriddenTimeBounds; + } else if (detectedBounds) { + return { + from: detectedBounds.from, + to: detectedBounds.to, + }; + } else if (lastFilters) { + return lastFilters; + } else if (currentFilters) { + return currentFilters; + } + } +); + /** * Which view should show in the panel, as well as what parameters should be used. * Calculated using the query string diff --git a/x-pack/plugins/security_solution/public/resolver/store/selectors.ts b/x-pack/plugins/security_solution/public/resolver/store/selectors.ts index eaf4e344ba7ab..93843d9d0b6ae 100644 --- a/x-pack/plugins/security_solution/public/resolver/store/selectors.ts +++ b/x-pack/plugins/security_solution/public/resolver/store/selectors.ts @@ -43,6 +43,16 @@ export const translation = composeSelectors(cameraStateSelector, cameraSelectors export const detectedBounds = composeSelectors(dataStateSelector, dataSelectors.detectedBounds); +export const overriddenTimeBounds = composeSelectors( + dataStateSelector, + dataSelectors.overriddenTimeBounds +); + +export const currentAppliedTimeRange = composeSelectors( + dataStateSelector, + dataSelectors.currentAppliedTimeRange +); + /** * A matrix that when applied to a Vector2 converts it from screen coordinates to world coordinates. * See https://en.wikipedia.org/wiki/Orthographic_projection diff --git a/x-pack/plugins/security_solution/public/resolver/types.ts b/x-pack/plugins/security_solution/public/resolver/types.ts index cbf1e797e7467..576ee0979cb1f 100644 --- a/x-pack/plugins/security_solution/public/resolver/types.ts +++ b/x-pack/plugins/security_solution/public/resolver/types.ts @@ -315,6 +315,8 @@ export interface DataState { readonly detectedBounds?: TimeFilters; + readonly overriddenTimeBounds?: TimeFilters; + readonly tree?: { /** * The parameters passed from the resolver properties diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/date_picker.tsx b/x-pack/plugins/security_solution/public/resolver/view/controls/date_picker.tsx new file mode 100644 index 0000000000000..aa0c0f6031952 --- /dev/null +++ b/x-pack/plugins/security_solution/public/resolver/view/controls/date_picker.tsx @@ -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 React, { useCallback, memo } from 'react'; +import { useSelector, useDispatch } from 'react-redux'; +import { i18n } from '@kbn/i18n'; +import { EuiPopover, EuiPopoverTitle, EuiSuperDatePicker } from '@elastic/eui'; +import type { ShortDate } from '@elastic/eui'; +import { formatDate } from '../../../common/components/super_date_picker'; +import { StyledEuiButtonIcon } from './styles'; +import { useColors } from '../use_colors'; +import * as selectors from '../../store/selectors'; +import { userOverrodeDateRange } from '../../store/data/action'; +import type { State } from '../../../common/store/types'; + +interface DurationRange { + end: ShortDate; + label?: string; + start: ShortDate; +} + +const emptyRanges: DurationRange[] = []; + +const nodeLegendButtonTitle = i18n.translate( + 'xpack.securitySolution.resolver.graphControls.datePickerButtonTitle', + { + defaultMessage: 'Date Range Selection', + } +); + +const dateRangeDescription = i18n.translate( + 'xpack.securitySolution.resolver.graphControls.datePicker', + { + defaultMessage: 'date range selection', + } +); + +export const DateSelectionButton = memo( + ({ + id, + closePopover, + setActivePopover, + isOpen, + }: { + id: string; + closePopover: () => void; + setActivePopover: (value: 'datePicker') => void; + isOpen: boolean; + }) => { + const dispatch = useDispatch(); + const setAsActivePopover = useCallback( + () => setActivePopover('datePicker'), + [setActivePopover] + ); + const colorMap = useColors(); + + const appliedBounds = useSelector((state: State) => { + return selectors.currentAppliedTimeRange(state.analyzer[id]); + }); + + const onTimeChange = useCallback( + ({ start, end, isInvalid }) => { + if (!isInvalid) { + const isQuickSelection = start.includes('now') || end.includes('now'); + const fromDate = formatDate(start); + let toDate = formatDate(end, { roundUp: true }); + if (isQuickSelection) { + if (start === end) { + toDate = formatDate('now'); + } else { + toDate = formatDate(end); + } + } + dispatch(userOverrodeDateRange({ id, timeRange: { from: fromDate, to: toDate } })); + } + }, + [dispatch, id] + ); + + return ( + + } + isOpen={isOpen} + closePopover={closePopover} + anchorPosition="leftCenter" + > + + {dateRangeDescription} + + + + ); + } +); + +DateSelectionButton.displayName = 'DateSelectionButton'; diff --git a/x-pack/plugins/security_solution/public/resolver/view/graph_controls.test.tsx b/x-pack/plugins/security_solution/public/resolver/view/controls/index.test.tsx similarity index 97% rename from x-pack/plugins/security_solution/public/resolver/view/graph_controls.test.tsx rename to x-pack/plugins/security_solution/public/resolver/view/controls/index.test.tsx index cb36aff214a76..fcc6ca2734f85 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/graph_controls.test.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/controls/index.test.tsx @@ -5,10 +5,10 @@ * 2.0. */ -import { Simulator } from '../test_utilities/simulator'; -import { noAncestorsTwoChildren } from '../data_access_layer/mocks/no_ancestors_two_children'; -import { nudgeAnimationDuration } from '../store/camera/scaling_constants'; -import '../test_utilities/extend_jest'; +import { Simulator } from '../../test_utilities/simulator'; +import { noAncestorsTwoChildren } from '../../data_access_layer/mocks/no_ancestors_two_children'; +import { nudgeAnimationDuration } from '../../store/camera/scaling_constants'; +import '../../test_utilities/extend_jest'; describe('graph controls: when relsover is loaded with an origin node', () => { let simulator: Simulator; diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/index.tsx b/x-pack/plugins/security_solution/public/resolver/view/controls/index.tsx new file mode 100644 index 0000000000000..6829f9ece1fe0 --- /dev/null +++ b/x-pack/plugins/security_solution/public/resolver/view/controls/index.tsx @@ -0,0 +1,246 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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, useContext, useState } from 'react'; +import { i18n } from '@kbn/i18n'; +import type { EuiRangeProps } from '@elastic/eui'; +import { EuiPanel, EuiIcon } from '@elastic/eui'; +import { useSelector, useDispatch } from 'react-redux'; +import { SideEffectContext } from '../side_effect_context'; +import type { Vector2 } from '../../types'; +import * as selectors from '../../store/selectors'; +import { useColors } from '../use_colors'; +import { + userClickedZoomIn, + userClickedZoomOut, + userSetZoomLevel, + userNudgedCamera, + userSetPositionOfCamera, +} from '../../store/camera/action'; +import type { State } from '../../../common/store/types'; +import { useIsExperimentalFeatureEnabled } from '../../../common/hooks/use_experimental_features'; +import { SourcererButton } from './sourcerer_selection'; +import { DateSelectionButton } from './date_picker'; +import { StyledGraphControls, StyledGraphControlsColumn, StyledEuiRange } from './styles'; +import { NodeLegend } from './legend'; +import { SchemaInformation } from './schema'; + +export const GraphControls = React.memo( + ({ + id, + className, + }: { + /** + * Id that identify the scope of analyzer + */ + id: string; + /** + * A className string provided by `styled` + */ + className?: string; + }) => { + const dispatch = useDispatch(); + const scalingFactor = useSelector((state: State) => + selectors.scalingFactor(state.analyzer[id]) + ); + const { timestamp } = useContext(SideEffectContext); + const isDatePickerAndSourcererDisabled = useIsExperimentalFeatureEnabled( + 'analyzerDatePickersAndSourcererDisabled' + ); + const [activePopover, setPopover] = useState< + null | 'schemaInfo' | 'nodeLegend' | 'sourcererSelection' | 'datePicker' + >(null); + const colorMap = useColors(); + + const setActivePopover = useCallback( + (value) => { + if (value === activePopover) { + setPopover(null); + } else { + setPopover(value); + } + }, + [setPopover, activePopover] + ); + + const closePopover = useCallback(() => setPopover(null), []); + + const handleZoomAmountChange: EuiRangeProps['onChange'] = useCallback( + (event) => { + const valueAsNumber = parseFloat( + (event as React.ChangeEvent).target.value + ); + if (isNaN(valueAsNumber) === false) { + dispatch( + userSetZoomLevel({ + id, + zoomLevel: valueAsNumber, + }) + ); + } + }, + [dispatch, id] + ); + + const handleCenterClick = useCallback(() => { + dispatch(userSetPositionOfCamera({ id, cameraView: [0, 0] })); + }, [dispatch, id]); + + const handleZoomOutClick = useCallback(() => { + dispatch(userClickedZoomOut({ id })); + }, [dispatch, id]); + + const handleZoomInClick = useCallback(() => { + dispatch(userClickedZoomIn({ id })); + }, [dispatch, id]); + + const [handleNorth, handleEast, handleSouth, handleWest] = useMemo(() => { + const directionVectors: readonly Vector2[] = [ + [0, 1], + [1, 0], + [0, -1], + [-1, 0], + ]; + return directionVectors.map((direction) => { + return () => { + dispatch(userNudgedCamera({ id, direction, time: timestamp() })); + }; + }); + }, [dispatch, timestamp, id]); + + /* eslint-disable react/button-has-type */ + return ( + + + + + {!isDatePickerAndSourcererDisabled ? ( + <> + + + + ) : null} + + + +
+ +
+
+ + + +
+
+ +
+
+ + + + + +
+
+ ); + } +); + +GraphControls.displayName = 'GraphControls'; diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/legend.tsx b/x-pack/plugins/security_solution/public/resolver/view/controls/legend.tsx new file mode 100644 index 0000000000000..0798050239e5b --- /dev/null +++ b/x-pack/plugins/security_solution/public/resolver/view/controls/legend.tsx @@ -0,0 +1,155 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiPopover, EuiPopoverTitle } from '@elastic/eui'; +import { useColors } from '../use_colors'; +import { StyledDescriptionList } from '../panels/styles'; +import { CubeForProcess } from '../panels/cube_for_process'; +import { GeneratedText } from '../generated_text'; +import { + StyledEuiDescriptionListTitle, + StyledEuiDescriptionListDescription, + StyledEuiButtonIcon, + COLUMN_WIDTH, +} from './styles'; + +// This component defines the cube legend that allows users to identify the meaning of the cubes +// Should be updated to be dynamic if and when non process based resolvers are possible +export const NodeLegend = ({ + id, + closePopover, + setActivePopover, + isOpen, +}: { + id: string; + closePopover: () => void; + setActivePopover: (value: 'nodeLegend') => void; + isOpen: boolean; +}) => { + const setAsActivePopover = useCallback(() => setActivePopover('nodeLegend'), [setActivePopover]); + const colorMap = useColors(); + + const nodeLegendButtonTitle = i18n.translate( + 'xpack.securitySolution.resolver.graphControls.nodeLegendButtonTitle', + { + defaultMessage: 'Node Legend', + } + ); + + return ( + + } + isOpen={isOpen} + closePopover={closePopover} + anchorPosition="leftCenter" + > + + {i18n.translate('xpack.securitySolution.resolver.graphControls.nodeLegend', { + defaultMessage: 'legend', + })} + +
+ + <> + + + + + + {i18n.translate( + 'xpack.securitySolution.resolver.graphControls.runningProcessCube', + { + defaultMessage: 'Running Process', + } + )} + + + + + + + + {i18n.translate( + 'xpack.securitySolution.resolver.graphControls.terminatedProcessCube', + { + defaultMessage: 'Terminated Process', + } + )} + + + + + + + + {i18n.translate( + 'xpack.securitySolution.resolver.graphControls.currentlyLoadingCube', + { + defaultMessage: 'Loading Process', + } + )} + + + + + + + + {i18n.translate('xpack.securitySolution.resolver.graphControls.errorCube', { + defaultMessage: 'Error Process', + })} + + + + +
+
+ ); +}; diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/schema.tsx b/x-pack/plugins/security_solution/public/resolver/view/controls/schema.tsx new file mode 100644 index 0000000000000..4d118887b3931 --- /dev/null +++ b/x-pack/plugins/security_solution/public/resolver/view/controls/schema.tsx @@ -0,0 +1,129 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback } from 'react'; +import { i18n } from '@kbn/i18n'; +import { + EuiPopover, + EuiPopoverTitle, + EuiIconTip, + EuiDescriptionListDescription, +} from '@elastic/eui'; +import { useSelector } from 'react-redux'; +import * as selectors from '../../store/selectors'; +import { useColors } from '../use_colors'; +import { StyledDescriptionList } from '../panels/styles'; +import { GeneratedText } from '../generated_text'; +import type { State } from '../../../common/store/types'; +import { StyledEuiDescriptionListTitle, StyledEuiButtonIcon, COLUMN_WIDTH } from './styles'; + +export const SchemaInformation = ({ + id, + closePopover, + setActivePopover, + isOpen, +}: { + id: string; + closePopover: () => void; + setActivePopover: (value: 'schemaInfo' | null) => void; + isOpen: boolean; +}) => { + const colorMap = useColors(); + const sourceAndSchema = useSelector((state: State) => + selectors.resolverTreeSourceAndSchema(state.analyzer[id]) + ); + const setAsActivePopover = useCallback(() => setActivePopover('schemaInfo'), [setActivePopover]); + + const schemaInfoButtonTitle = i18n.translate( + 'xpack.securitySolution.resolver.graphControls.schemaInfoButtonTitle', + { + defaultMessage: 'Schema Information', + } + ); + + const unknownSchemaValue = i18n.translate( + 'xpack.securitySolution.resolver.graphControls.unknownSchemaValue', + { + defaultMessage: 'Unknown', + } + ); + + return ( + + } + isOpen={isOpen} + closePopover={closePopover} + anchorPosition="leftCenter" + > + + {i18n.translate('xpack.securitySolution.resolver.graphControls.schemaInfoTitle', { + defaultMessage: 'process tree', + })} + + +
+ + <> + + {i18n.translate('xpack.securitySolution.resolver.graphControls.schemaSource', { + defaultMessage: 'source', + })} + + + {sourceAndSchema?.dataSource ?? unknownSchemaValue} + + + {i18n.translate('xpack.securitySolution.resolver.graphControls.schemaID', { + defaultMessage: 'id', + })} + + + {sourceAndSchema?.schema.id ?? unknownSchemaValue} + + + {i18n.translate('xpack.securitySolution.resolver.graphControls.schemaEdge', { + defaultMessage: 'edge', + })} + + + {sourceAndSchema?.schema.parent ?? unknownSchemaValue} + + + +
+
+ ); +}; diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/sourcerer_selection.tsx b/x-pack/plugins/security_solution/public/resolver/view/controls/sourcerer_selection.tsx new file mode 100644 index 0000000000000..ae6a7eb4cb62d --- /dev/null +++ b/x-pack/plugins/security_solution/public/resolver/view/controls/sourcerer_selection.tsx @@ -0,0 +1,65 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { useCallback, memo } from 'react'; +import { i18n } from '@kbn/i18n'; +import { EuiPopover } from '@elastic/eui'; +import { StyledEuiButtonIcon } from './styles'; +import { useColors } from '../use_colors'; +import { Sourcerer } from '../../../common/components/sourcerer'; +import { SourcererScopeName } from '../../../common/store/sourcerer/model'; + +const nodeLegendButtonTitle = i18n.translate( + 'xpack.securitySolution.resolver.graphControls.sourcererButtonTitle', + { + defaultMessage: 'Data View Selection', + } +); + +export const SourcererButton = memo( + ({ + id, + closePopover, + setActivePopover, + isOpen, + }: { + id: string; + closePopover: () => void; + setActivePopover: (value: 'sourcererSelection') => void; + isOpen: boolean; + }) => { + const setAsActivePopover = useCallback( + () => setActivePopover('sourcererSelection'), + [setActivePopover] + ); + const colorMap = useColors(); + + return ( + + } + isOpen={isOpen} + closePopover={closePopover} + anchorPosition="leftCenter" + > + + + ); + } +); + +SourcererButton.displayName = 'SourcererButton'; diff --git a/x-pack/plugins/security_solution/public/resolver/view/controls/styles.tsx b/x-pack/plugins/security_solution/public/resolver/view/controls/styles.tsx new file mode 100644 index 0000000000000..5758297c644b0 --- /dev/null +++ b/x-pack/plugins/security_solution/public/resolver/view/controls/styles.tsx @@ -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 type { EuiRangeProps } from '@elastic/eui'; +import { + EuiRange, + EuiButtonIcon, + EuiDescriptionListTitle, + EuiDescriptionListDescription, +} from '@elastic/eui'; +import styled from 'styled-components'; + +export const COLUMN_WIDTH = ['fit-content(10em)', 'auto']; + +// EuiRange is currently only horizontally positioned. This reorients the track to a vertical position +export const StyledEuiRange = styled(EuiRange)` + & .euiRangeTrack:after { + left: -65px; + transform: rotate(90deg); + } +`; +export interface StyledGraphControlProps { + $backgroundColor: string; + $iconColor: string; + $borderColor: string; +} + +export const StyledGraphControlsColumn = styled.div` + display: flex; + flex-direction: column; + + &:not(last-of-type) { + margin-right: 5px; + } +`; + +export const StyledEuiDescriptionListTitle = styled(EuiDescriptionListTitle)` + text-transform: uppercase; +`; + +export const StyledEuiDescriptionListDescription = styled(EuiDescriptionListDescription)` + lineheight: '2.2em'; // lineHeight to align center vertically +`; + +export const StyledEuiButtonIcon = styled(EuiButtonIcon)` + background-color: ${(props) => props.$backgroundColor}; + color: ${(props) => props.$iconColor}; + border-color: ${(props) => props.$borderColor}; + border-width: 1px; + border-style: solid; + border-radius: 4px; + width: 40px; + height: 40px; + + &:not(last-of-type) { + margin-bottom: 7px; + } +`; + +export const StyledGraphControls = styled.div>` + display: flex; + flex-direction: row; + position: absolute; + top: 5px; + right: 5px; + background-color: transparent; + color: ${(props) => props.$iconColor}; + + .zoom-controls { + display: flex; + flex-direction: column; + align-items: center; + padding: 5px 0px; + + .zoom-slider { + width: 20px; + height: 150px; + margin: 5px 0px 2px 0px; + + input[type='range'] { + width: 150px; + height: 20px; + transform-origin: 75px 75px; + transform: rotate(-90deg); + } + } + } + .panning-controls { + text-align: center; + } +`; diff --git a/x-pack/plugins/security_solution/public/resolver/view/graph_controls.tsx b/x-pack/plugins/security_solution/public/resolver/view/graph_controls.tsx deleted file mode 100644 index ebd09f7839fb4..0000000000000 --- a/x-pack/plugins/security_solution/public/resolver/view/graph_controls.tsx +++ /dev/null @@ -1,558 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license 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, useContext, useState } from 'react'; -import styled from 'styled-components'; -import { i18n } from '@kbn/i18n'; -import type { EuiRangeProps } from '@elastic/eui'; -import { - EuiRange, - EuiPanel, - EuiIcon, - EuiButtonIcon, - EuiPopover, - EuiPopoverTitle, - EuiIconTip, - EuiDescriptionListTitle, - EuiDescriptionListDescription, -} from '@elastic/eui'; -import { useSelector, useDispatch } from 'react-redux'; -import { SideEffectContext } from './side_effect_context'; -import type { Vector2 } from '../types'; -import * as selectors from '../store/selectors'; -import { useColors } from './use_colors'; -import { StyledDescriptionList } from './panels/styles'; -import { CubeForProcess } from './panels/cube_for_process'; -import { GeneratedText } from './generated_text'; -import { - userClickedZoomIn, - userClickedZoomOut, - userSetZoomLevel, - userNudgedCamera, - userSetPositionOfCamera, -} from '../store/camera/action'; -import type { State } from '../../common/store/types'; - -// EuiRange is currently only horizontally positioned. This reorients the track to a vertical position -const StyledEuiRange = styled(EuiRange)` - & .euiRangeTrack:after { - left: -65px; - transform: rotate(90deg); - } -`; -interface StyledGraphControlProps { - $backgroundColor: string; - $iconColor: string; - $borderColor: string; -} - -const StyledGraphControlsColumn = styled.div` - display: flex; - flex-direction: column; - - &:not(last-of-type) { - margin-right: 5px; - } -`; - -const COLUMN_WIDTH = ['fit-content(10em)', 'auto']; - -const StyledEuiDescriptionListTitle = styled(EuiDescriptionListTitle)` - text-transform: uppercase; -`; - -const StyledEuiDescriptionListDescription = styled(EuiDescriptionListDescription)` - lineheight: '2.2em'; // lineHeight to align center vertically -`; - -const StyledEuiButtonIcon = styled(EuiButtonIcon)` - background-color: ${(props) => props.$backgroundColor}; - color: ${(props) => props.$iconColor}; - border-color: ${(props) => props.$borderColor}; - border-width: 1px; - border-style: solid; - border-radius: 4px; - width: 40px; - height: 40px; - - &:not(last-of-type) { - margin-bottom: 7px; - } -`; - -const StyledGraphControls = styled.div>` - display: flex; - flex-direction: row; - position: absolute; - top: 5px; - right: 5px; - background-color: transparent; - color: ${(props) => props.$iconColor}; - - .zoom-controls { - display: flex; - flex-direction: column; - align-items: center; - padding: 5px 0px; - - .zoom-slider { - width: 20px; - height: 150px; - margin: 5px 0px 2px 0px; - - input[type='range'] { - width: 150px; - height: 20px; - transform-origin: 75px 75px; - transform: rotate(-90deg); - } - } - } - .panning-controls { - text-align: center; - } -`; -/** - * Controls for zooming, panning, and centering in Resolver - */ - -// eslint-disable-next-line react/display-name -export const GraphControls = React.memo( - ({ - id, - className, - }: { - /** - * Id that identify the scope of analyzer - */ - id: string; - /** - * A className string provided by `styled` - */ - className?: string; - }) => { - const dispatch = useDispatch(); - const scalingFactor = useSelector((state: State) => - selectors.scalingFactor(state.analyzer[id]) - ); - const { timestamp } = useContext(SideEffectContext); - const [activePopover, setPopover] = useState(null); - const colorMap = useColors(); - - const setActivePopover = useCallback( - (value) => { - if (value === activePopover) { - setPopover(null); - } else { - setPopover(value); - } - }, - [setPopover, activePopover] - ); - - const closePopover = useCallback(() => setPopover(null), []); - - const handleZoomAmountChange: EuiRangeProps['onChange'] = useCallback( - (event) => { - const valueAsNumber = parseFloat( - (event as React.ChangeEvent).target.value - ); - if (isNaN(valueAsNumber) === false) { - dispatch( - userSetZoomLevel({ - id, - zoomLevel: valueAsNumber, - }) - ); - } - }, - [dispatch, id] - ); - - const handleCenterClick = useCallback(() => { - dispatch(userSetPositionOfCamera({ id, cameraView: [0, 0] })); - }, [dispatch, id]); - - const handleZoomOutClick = useCallback(() => { - dispatch(userClickedZoomOut({ id })); - }, [dispatch, id]); - - const handleZoomInClick = useCallback(() => { - dispatch(userClickedZoomIn({ id })); - }, [dispatch, id]); - - const [handleNorth, handleEast, handleSouth, handleWest] = useMemo(() => { - const directionVectors: readonly Vector2[] = [ - [0, 1], - [1, 0], - [0, -1], - [-1, 0], - ]; - return directionVectors.map((direction) => { - return () => { - dispatch(userNudgedCamera({ id, direction, time: timestamp() })); - }; - }); - }, [dispatch, timestamp, id]); - - /* eslint-disable react/button-has-type */ - return ( - - - - - - - -
- -
-
- - - -
-
- -
-
- - - - - -
-
- ); - /* eslint-enable react/button-has-type */ - } -); - -const SchemaInformation = ({ - id, - closePopover, - setActivePopover, - isOpen, -}: { - id: string; - closePopover: () => void; - setActivePopover: (value: 'schemaInfo' | null) => void; - isOpen: boolean; -}) => { - const colorMap = useColors(); - const sourceAndSchema = useSelector((state: State) => - selectors.resolverTreeSourceAndSchema(state.analyzer[id]) - ); - const setAsActivePopover = useCallback(() => setActivePopover('schemaInfo'), [setActivePopover]); - - const schemaInfoButtonTitle = i18n.translate( - 'xpack.securitySolution.resolver.graphControls.schemaInfoButtonTitle', - { - defaultMessage: 'Schema Information', - } - ); - - const unknownSchemaValue = i18n.translate( - 'xpack.securitySolution.resolver.graphControls.unknownSchemaValue', - { - defaultMessage: 'Unknown', - } - ); - - return ( - - } - isOpen={isOpen} - closePopover={closePopover} - anchorPosition="leftCenter" - > - - {i18n.translate('xpack.securitySolution.resolver.graphControls.schemaInfoTitle', { - defaultMessage: 'process tree', - })} - - -
- - <> - - {i18n.translate('xpack.securitySolution.resolver.graphControls.schemaSource', { - defaultMessage: 'source', - })} - - - {sourceAndSchema?.dataSource ?? unknownSchemaValue} - - - {i18n.translate('xpack.securitySolution.resolver.graphControls.schemaID', { - defaultMessage: 'id', - })} - - - {sourceAndSchema?.schema.id ?? unknownSchemaValue} - - - {i18n.translate('xpack.securitySolution.resolver.graphControls.schemaEdge', { - defaultMessage: 'edge', - })} - - - {sourceAndSchema?.schema.parent ?? unknownSchemaValue} - - - -
-
- ); -}; - -// This component defines the cube legend that allows users to identify the meaning of the cubes -// Should be updated to be dynamic if and when non process based resolvers are possible -const NodeLegend = ({ - id, - closePopover, - setActivePopover, - isOpen, -}: { - id: string; - closePopover: () => void; - setActivePopover: (value: 'nodeLegend') => void; - isOpen: boolean; -}) => { - const setAsActivePopover = useCallback(() => setActivePopover('nodeLegend'), [setActivePopover]); - const colorMap = useColors(); - - const nodeLegendButtonTitle = i18n.translate( - 'xpack.securitySolution.resolver.graphControls.nodeLegendButtonTitle', - { - defaultMessage: 'Node Legend', - } - ); - - return ( - - } - isOpen={isOpen} - closePopover={closePopover} - anchorPosition="leftCenter" - > - - {i18n.translate('xpack.securitySolution.resolver.graphControls.nodeLegend', { - defaultMessage: 'legend', - })} - -
- - <> - - - - - - {i18n.translate( - 'xpack.securitySolution.resolver.graphControls.runningProcessCube', - { - defaultMessage: 'Running Process', - } - )} - - - - - - - - {i18n.translate( - 'xpack.securitySolution.resolver.graphControls.terminatedProcessCube', - { - defaultMessage: 'Terminated Process', - } - )} - - - - - - - - {i18n.translate( - 'xpack.securitySolution.resolver.graphControls.currentlyLoadingCube', - { - defaultMessage: 'Loading Process', - } - )} - - - - - - - - {i18n.translate('xpack.securitySolution.resolver.graphControls.errorCube', { - defaultMessage: 'Error Process', - })} - - - - -
-
- ); -}; diff --git a/x-pack/plugins/security_solution/public/resolver/view/panels/node_list.tsx b/x-pack/plugins/security_solution/public/resolver/view/panels/node_list.tsx index 8dc5a1ce8db18..30d4d93820905 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/panels/node_list.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/panels/node_list.tsx @@ -46,7 +46,6 @@ interface ProcessTableView { /** * The "default" view for the panel: A list of all the processes currently in the graph. */ -// eslint-disable-next-line react/display-name export const NodeList = memo(({ id }: { id: string }) => { const columns = useMemo>>( () => [ @@ -85,6 +84,7 @@ export const NodeList = memo(({ id }: { id: string }) => { const processTableView: ProcessTableView[] = useSelector( useCallback( (state: State) => { + // console.log('lol WAT'); const { processNodePositions } = selectors.layout(state.analyzer[id]); const view: ProcessTableView[] = []; for (const treeNode of processNodePositions.keys()) { @@ -139,7 +139,8 @@ export const NodeList = memo(({ id }: { id: string }) => { ); }); -// eslint-disable-next-line react/display-name +NodeList.displayName = 'NodeList'; + const NodeDetailLink = memo( ({ id, name, nodeID }: { id: string; name?: string; nodeID: string }) => { const isOrigin = useSelector((state: State) => { @@ -211,7 +212,8 @@ const NodeDetailLink = memo( } ); -// eslint-disable-next-line react/display-name +NodeDetailLink.displayName = 'NodeDetailLink'; + const NodeDetailTimestamp = memo( ({ eventDate, id }: { eventDate: string | number | undefined; id: string }) => { const formattedDate = useFormattedDate(eventDate); @@ -235,3 +237,5 @@ const NodeDetailTimestamp = memo( ); } ); + +NodeDetailTimestamp.displayName = 'NodeDetailTimestamp'; diff --git a/x-pack/plugins/security_solution/public/resolver/view/resolver_without_providers.tsx b/x-pack/plugins/security_solution/public/resolver/view/resolver_without_providers.tsx index 62cc8b571f431..d9ec54cdd046d 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/resolver_without_providers.tsx +++ b/x-pack/plugins/security_solution/public/resolver/view/resolver_without_providers.tsx @@ -12,7 +12,7 @@ import { FormattedMessage } from '@kbn/i18n-react'; import { useResolverQueryParamCleaner } from './use_resolver_query_params_cleaner'; import * as selectors from '../store/selectors'; import { EdgeLine } from './edge_line'; -import { GraphControls } from './graph_controls'; +import { GraphControls } from './controls'; import { ProcessEventDot } from './process_event_dot'; import { useCamera } from './use_camera'; import { SymbolDefinitions } from './symbol_definitions'; diff --git a/x-pack/plugins/security_solution/public/resolver/view/use_resolver_query_params_cleaner.ts b/x-pack/plugins/security_solution/public/resolver/view/use_resolver_query_params_cleaner.ts index 21722c779d0fb..7719e599f9a1f 100644 --- a/x-pack/plugins/security_solution/public/resolver/view/use_resolver_query_params_cleaner.ts +++ b/x-pack/plugins/security_solution/public/resolver/view/use_resolver_query_params_cleaner.ts @@ -7,6 +7,8 @@ import { useRef, useEffect } from 'react'; import { useLocation, useHistory } from 'react-router-dom'; +import { useDispatch } from 'react-redux'; +import { clearResolver } from '../store/actions'; import { parameterName } from '../store/parameter_name'; /** * Cleanup any query string keys that were added by this Resolver instance. @@ -21,6 +23,7 @@ export function useResolverQueryParamCleaner(id: string) { */ const searchRef = useRef(); searchRef.current = useLocation().search; + const dispatch = useDispatch(); const history = useHistory(); @@ -46,6 +49,7 @@ export function useResolverQueryParamCleaner(id: string) { urlSearchParams.delete(oldResolverKey); const relativeURL = { search: urlSearchParams.toString() }; history.replace(relativeURL); + dispatch(clearResolver({ id })); }; - }, [resolverKey, history]); + }, [resolverKey, history, dispatch, id]); } diff --git a/x-pack/plugins/security_solution/public/timelines/components/graph_overlay/index.test.tsx b/x-pack/plugins/security_solution/public/timelines/components/graph_overlay/index.test.tsx index e381b01c1f0d6..2f76aeae8159e 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/graph_overlay/index.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/graph_overlay/index.test.tsx @@ -13,16 +13,10 @@ import { useGlobalFullScreen, useTimelineFullScreen, } from '../../../common/containers/use_full_screen'; -import { - createMockStore, - mockGlobalState, - mockIndexNames, - TestProviders, -} from '../../../common/mock'; +import { createMockStore, mockGlobalState, TestProviders } from '../../../common/mock'; import { TimelineId } from '../../../../common/types/timeline'; import { GraphOverlay } from '.'; import { useStateSyncingActions } from '../../../resolver/view/use_state_syncing_actions'; -import { SourcererScopeName } from '../../../common/store/sourcerer/model'; import { TableId } from '@kbn/securitysolution-data-table'; jest.mock('../../../common/containers/use_full_screen', () => ({ @@ -135,7 +129,7 @@ describe('GraphOverlay', () => { ); expect(useStateSyncingActionsMock.mock.calls[0][0].indices).toEqual( - mockGlobalState.sourcerer.defaultDataView.patternList + mockGlobalState.sourcerer.sourcererScopes.analyzer.selectedPatterns ); }); }); @@ -177,47 +171,6 @@ describe('GraphOverlay', () => { expect(overlayContainer).toHaveStyleRule('width', '100%'); }); - test('it gets index pattern from Timeline data view', () => { - const mockedDefaultDataViewPattern = 'default-dataview-pattern'; - render( - - } Navigation={
} scopeId={timelineId} /> - - ); - - expect(useStateSyncingActionsMock.mock.calls[0][0].indices).toEqual([ - ...mockIndexNames.sort(), - mockedDefaultDataViewPattern, - ]); - }); - test('it renders session view controls', () => { (useGlobalFullScreen as jest.Mock).mockReturnValue({ globalFullScreen: false, diff --git a/x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.test.tsx b/x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.test.tsx index 4926f69875be2..82c05eb2008b4 100644 --- a/x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.test.tsx +++ b/x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.test.tsx @@ -18,7 +18,6 @@ jest.mock('react-router-dom', () => { const defaultDataViewPattern = 'test-dataview-patterns'; const timelinePattern = 'test-timeline-patterns'; -const alertsPagePatterns = '.siem-signals-spacename'; const pathname = '/alerts'; const store = createMockStore({ ...mockGlobalState, @@ -30,12 +29,25 @@ const store = createMockStore({ }, sourcererScopes: { ...mockGlobalState.sourcerer.sourcererScopes, - [SourcererScopeName.timeline]: { + [SourcererScopeName.analyzer]: { ...mockGlobalState.sourcerer.sourcererScopes[SourcererScopeName.timeline], selectedPatterns: [timelinePattern], }, }, }, + inputs: { + ...mockGlobalState.inputs, + timeline: { + ...mockGlobalState.inputs.timeline, + timerange: { + kind: 'relative', + fromStr: 'now/d', + toStr: 'now/d', + from: '2024-01-07T08:20:18.966Z', + to: '2024-01-08T08:20:18.966Z', + }, + }, + }, }); const wrapper = ({ children }: { children: React.ReactNode }) => ( @@ -44,18 +56,23 @@ const wrapper = ({ children }: { children: React.ReactNode }) => ( describe('useTimelineDataFilters', () => { describe('on alerts page', () => { - it('returns default data view patterns and alerts page patterns when isActiveTimelines is falsy', () => { - const isActiveTimelines = false; - const { result } = renderHook(() => useTimelineDataFilters(isActiveTimelines), { wrapper }); + it('uses the same selected patterns throughout the app', () => { + const { result } = renderHook(() => useTimelineDataFilters(false), { wrapper }); + const { result: timelineResult } = renderHook(() => useTimelineDataFilters(true), { + wrapper, + }); - expect(result.current.selectedPatterns).toEqual([alertsPagePatterns, defaultDataViewPattern]); + expect(result.current.selectedPatterns).toEqual(timelineResult.current.selectedPatterns); }); - it('returns default data view patterns and timelinePatterns when isActiveTimelines is truthy', () => { - const isActiveTimelines = true; - const { result } = renderHook(() => useTimelineDataFilters(isActiveTimelines), { wrapper }); + it('allows the other parts of the query to remain unique', () => { + const { result } = renderHook(() => useTimelineDataFilters(false), { wrapper }); + const { result: timelineResult } = renderHook(() => useTimelineDataFilters(true), { + wrapper, + }); - expect(result.current.selectedPatterns).toEqual([timelinePattern, defaultDataViewPattern]); + expect(result.current.from !== timelineResult.current.from).toBeTruthy(); + expect(result.current.to !== timelineResult.current.to).toBeTruthy(); }); }); }); diff --git a/x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.ts b/x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.ts index 67e774b79bafe..da5b72f6845c8 100644 --- a/x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.ts +++ b/x-pack/plugins/security_solution/public/timelines/containers/use_timeline_data_filters.ts @@ -7,13 +7,13 @@ import { useMemo } from 'react'; import { useLocation } from 'react-router-dom'; - import { useDeepEqualSelector } from '../../common/hooks/use_selector'; import { isLoadingSelector, startSelector, endSelector, } from '../../common/components/super_date_picker/selectors'; +import { useIsExperimentalFeatureEnabled } from '../../common/hooks/use_experimental_features'; import { SourcererScopeName } from '../../common/store/sourcerer/model'; import { useSourcererDataView, getScopeFromPath } from '../../common/containers/sourcerer'; import { sourcererSelectors } from '../../common/store'; @@ -22,6 +22,9 @@ export function useTimelineDataFilters(isActiveTimelines: boolean) { const getStartSelector = useMemo(() => startSelector(), []); const getEndSelector = useMemo(() => endSelector(), []); const getIsLoadingSelector = useMemo(() => isLoadingSelector(), []); + const isDatePickerAndSourcererDisabled = useIsExperimentalFeatureEnabled( + 'analyzerDatePickersAndSourcererDisabled' + ); const shouldUpdate = useDeepEqualSelector((state) => { if (isActiveTimelines) { @@ -62,10 +65,21 @@ export function useTimelineDataFilters(isActiveTimelines: boolean) { : [...new Set([...nonTimelinePatterns, ...defaultDataView.patternList])]; }, [isActiveTimelines, timelinePatterns, nonTimelinePatterns, defaultDataView.patternList]); - return { + const { selectedPatterns: analyzerPatterns } = useSourcererDataView(SourcererScopeName.analyzer); + + return useMemo(() => { + return { + selectedPatterns: isDatePickerAndSourcererDisabled ? selectedPatterns : analyzerPatterns, + from, + to, + shouldUpdate, + }; + }, [ selectedPatterns, from, to, shouldUpdate, - }; + isDatePickerAndSourcererDisabled, + analyzerPatterns, + ]); } diff --git a/x-pack/plugins/security_solution/scripts/mappings/README.md b/x-pack/plugins/security_solution/scripts/mappings/README.md index a612785fadf2e..4c612c5efb13f 100644 --- a/x-pack/plugins/security_solution/scripts/mappings/README.md +++ b/x-pack/plugins/security_solution/scripts/mappings/README.md @@ -24,6 +24,7 @@ Available attributes: * `--unmappedRate` (*required*): the percentage of unmapped fields in each index (value ranges from 0.0 to 1.0) * `--buckets` (*optional, default value is 1*): it is possible to split the generated indices mappings into the smaller chunks * `--outputDirectory` (*required*): the output folder +* `--purgeOutputDirectory` (*optional, default value is false*): the flag indicating whether we should purge output folder before generating new mappings ### Load all generated buckets generated via previous command diff --git a/x-pack/plugins/security_solution/scripts/mappings/mappings_generator_script.ts b/x-pack/plugins/security_solution/scripts/mappings/mappings_generator_script.ts index 4e06b2e08ce4e..3c7199f763b54 100644 --- a/x-pack/plugins/security_solution/scripts/mappings/mappings_generator_script.ts +++ b/x-pack/plugins/security_solution/scripts/mappings/mappings_generator_script.ts @@ -64,14 +64,17 @@ const generateIndices = ( indexPrefix: string, fieldsCount: number, numberOfMappedFieldsPerIndex: number, - numberOfIndexBuckets: number + numberOfIndexBuckets: number, + purgeOutputDirectory: boolean ) => { const absoluteOutputDir = path.resolve(outputDirectory); - // Delete output directory if exists - console.log(`Deleting directory: ${absoluteOutputDir}`); - if (fs.existsSync(absoluteOutputDir)) { - fs.rmSync(absoluteOutputDir, { recursive: true, force: true }); + if (purgeOutputDirectory) { + // Delete output directory if exists + console.log(`Deleting directory: ${absoluteOutputDir}`); + if (fs.existsSync(absoluteOutputDir)) { + fs.rmSync(absoluteOutputDir, { recursive: true, force: true }); + } } // Create output directory if needed @@ -138,6 +141,15 @@ const main = () => { type: 'string', description: 'The name of the directory to save generated mappings to', }) + .option('purgeOutputDirectory', { + alias: 'p', + demandOption: false, + type: 'boolean', + default: false, + description: + 'Indicates whether we should purge existing output directory before running main script (default is false)', + }) + .check(({ unmappedRate }) => { if (unmappedRate < 0.0 || unmappedRate > 1.0) { throw new Error('--unmappedRate can only be in range [0.0, 1.0]'); @@ -147,7 +159,15 @@ const main = () => { }) .help(); - const { fieldsCount, indexCount, indexPrefix, unmappedRate, buckets, outputDirectory } = argv; + const { + fieldsCount, + indexCount, + indexPrefix, + unmappedRate, + buckets, + outputDirectory, + purgeOutputDirectory, + } = argv; const numberOfMappedFieldsPerIndex = Math.max(Math.floor(fieldsCount * (1.0 - unmappedRate)), 1); const numberOfIndexBuckets = Math.max(1, Math.min(buckets, indexCount)); @@ -157,7 +177,8 @@ const main = () => { indexPrefix, fieldsCount, numberOfMappedFieldsPerIndex, - numberOfIndexBuckets + numberOfIndexBuckets, + purgeOutputDirectory ); }; diff --git a/x-pack/plugins/security_solution/scripts/mappings/mappings_loader_script.ts b/x-pack/plugins/security_solution/scripts/mappings/mappings_loader_script.ts index 7997401f35e70..d8767d21a677c 100644 --- a/x-pack/plugins/security_solution/scripts/mappings/mappings_loader_script.ts +++ b/x-pack/plugins/security_solution/scripts/mappings/mappings_loader_script.ts @@ -11,7 +11,14 @@ import path from 'path'; import yargs from 'yargs'; import { execSync } from 'child_process'; -const CONFIG_PATH = '../../../../../test/functional/config.base.js'; +const requireMain = require.main; +let appDir = process.cwd(); +if (requireMain) { + appDir = path.dirname(requireMain.filename); +} + +const CONFIG_PATH = path.resolve(appDir, '../../../../../test/functional/config.base.js'); +const ES_ARCHIVER_PATH = path.resolve(appDir, '../../../../../scripts/es_archiver'); const loadAllIndices = (esUrl: string, kibanaUrl: string, mappingsDir: string) => { const exec = (cmd: string) => execSync(cmd, { stdio: 'inherit' }); @@ -40,7 +47,7 @@ const loadAllIndices = (esUrl: string, kibanaUrl: string, mappingsDir: string) = return; } exec( - `node ../../../../../scripts/es_archiver load ${fullPath} --config "${CONFIG_PATH}" --es-url=${esUrl} --kibana-url=${kibanaUrl}` + `node ${ES_ARCHIVER_PATH} load ${fullPath} --config "${CONFIG_PATH}" --es-url=${esUrl} --kibana-url=${kibanaUrl}` ); }); }); diff --git a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts b/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts index fa4cd259652db..28351ac762506 100644 --- a/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts +++ b/x-pack/plugins/security_solution/server/endpoint/endpoint_app_context_services.ts @@ -194,9 +194,17 @@ export class EndpointAppContextService { } public async getEndpointAuthz(request: KibanaRequest): Promise { + if (!this.startDependencies?.appFeaturesService) { + throw new EndpointAppContentServicesNotStartedError(); + } const fleetAuthz = await this.getFleetAuthzService().fromRequest(request); const userRoles = this.security?.authc.getCurrentUser(request)?.roles ?? []; - return calculateEndpointAuthz(this.getLicenseService(), fleetAuthz, userRoles); + return calculateEndpointAuthz( + this.getLicenseService(), + fleetAuthz, + userRoles, + this.startDependencies.appFeaturesService + ); } public getEndpointMetadataService(): EndpointMetadataService { diff --git a/x-pack/plugins/security_solution/server/lib/app_features_service/app_features.test.ts b/x-pack/plugins/security_solution/server/lib/app_features_service/app_features.test.ts index 8effe3837f76d..7e65c3d157f29 100644 --- a/x-pack/plugins/security_solution/server/lib/app_features_service/app_features.test.ts +++ b/x-pack/plugins/security_solution/server/lib/app_features_service/app_features.test.ts @@ -10,10 +10,10 @@ import { loggingSystemMock } from '@kbn/core-logging-server-mocks'; import { AppFeatures } from './app_features'; import type { AppFeatureKeyType, - AppFeaturesConfig, - AppSubFeaturesMap, + AppFeatureKibanaConfig, BaseKibanaFeatureConfig, } from '@kbn/security-solution-features'; +import type { SubFeatureConfig } from '@kbn/features-plugin/common'; const category = { id: 'security', @@ -51,135 +51,316 @@ const baseKibanaFeature: BaseKibanaFeatureConfig = { category, }; -const privileges = { - privileges: { - all: { - api: ['api-read', 'api-write', 'test-capability'], - app: ['FEATURE_ID', 'kibana'], - catalogue: ['APP_ID'], - savedObject: { - all: [], - read: [], - }, - ui: ['write', 'read', 'test-capability'], +// sub-features definition + +const SUB_FEATURE: SubFeatureConfig = { + name: 'subFeature1', + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'subFeature1', + name: 'subFeature1', + includeIn: 'all', + savedObject: { + all: [], + read: [], + }, + ui: ['subFeature1-action'], + api: ['subFeature1-action'], + }, + ], }, - read: { - api: ['api-read', 'test-capability'], - app: ['FEATURE_ID', 'kibana'], - catalogue: ['APP_ID'], - savedObject: { - all: [], - read: [], - }, - ui: ['read', 'test-capability'], + ], +}; +const SUB_FEATURE_2: SubFeatureConfig = { + name: 'subFeature2', + privilegeGroups: [ + { + groupType: 'independent', + privileges: [ + { + id: 'subFeature2', + name: 'subFeature2', + includeIn: 'all', + savedObject: { + all: [], + read: [], + }, + ui: ['subFeature2-action'], + api: ['subFeature2-action'], + }, + ], }, - }, + ], +}; + +const subFeaturesMap = new Map([ + [SUB_FEATURE.name, SUB_FEATURE], + [SUB_FEATURE_2.name, SUB_FEATURE_2], +]); + +// app features configs +const testSubFeaturePrivilegeConfig: AppFeatureKibanaConfig = { + subFeatureIds: [SUB_FEATURE.name], }; -const SECURITY_APP_FEATURE_CONFIG: AppFeaturesConfig = new Map(); -SECURITY_APP_FEATURE_CONFIG.set('test-base-feature' as AppFeatureKeyType, { +const testFeaturePrivilegeConfig: AppFeatureKibanaConfig = { privileges: { all: { - ui: ['test-capability'], - api: ['test-capability'], + ui: ['test-action'], + api: ['test-action'], }, read: { - ui: ['test-capability'], - api: ['test-capability'], + ui: ['test-action'], + api: ['test-action'], }, }, -}); +}; -const CASES_BASE_CONFIG = { +const expectedBaseWithTestConfigPrivileges = { privileges: { all: { - api: ['api-read', 'api-write', 'test-cases-capability'], + api: ['api-read', 'api-write', 'test-action'], app: ['FEATURE_ID', 'kibana'], catalogue: ['APP_ID'], savedObject: { all: [], read: [], }, - ui: ['write', 'read', 'test-cases-capability'], + ui: ['write', 'read', 'test-action'], }, read: { - api: ['api-read', 'test-cases-capability'], + api: ['api-read', 'test-action'], app: ['FEATURE_ID', 'kibana'], catalogue: ['APP_ID'], savedObject: { all: [], read: [], }, - ui: ['read', 'test-cases-capability'], + ui: ['read', 'test-action'], }, }, }; -const CASES_APP_FEATURE_CONFIG: AppFeaturesConfig = new Map(); -CASES_APP_FEATURE_CONFIG.set('test-cases-feature' as AppFeatureKeyType, { - privileges: { - all: { - ui: ['test-cases-capability'], - api: ['test-cases-capability'], - }, - read: { - ui: ['test-cases-capability'], - api: ['test-cases-capability'], - }, - }, -}); +describe('AppFeatures', () => { + describe('setConfig', () => { + it('should register base kibana features', () => { + const featuresSetup = { + registerKibanaFeature: jest.fn(), + getKibanaFeatures: jest.fn(), + } as unknown as PluginSetupContract; -const securityKibanaSubFeatures = { - securitySubFeaturesMap: new Map([['subFeature1', { baz: 'baz' }]]), -}; + const appFeatures = new AppFeatures( + loggingSystemMock.create().get('mock'), + subFeaturesMap, + baseKibanaFeature, + [] + ); + appFeatures.init(featuresSetup); + appFeatures.setConfig(new Map()); -const securityCasesKibanaSubFeatures = { - casesSubFeaturesMap: new Map([['subFeature1', { baz: 'baz' }]]), -}; + expect(featuresSetup.registerKibanaFeature).toHaveBeenCalledWith({ + ...baseKibanaFeature, + subFeatures: [], + }); + }); -describe('AppFeatures', () => { - it('should register enabled kibana features', () => { - const featuresSetup = { - registerKibanaFeature: jest.fn(), - getKibanaFeatures: jest.fn(), - } as unknown as PluginSetupContract; - - const appFeatures = new AppFeatures( - loggingSystemMock.create().get('mock'), - securityKibanaSubFeatures.securitySubFeaturesMap as unknown as AppSubFeaturesMap, - baseKibanaFeature, - ['subFeature1'] - ); - appFeatures.init(featuresSetup); - appFeatures.setConfig(SECURITY_APP_FEATURE_CONFIG); - - expect(featuresSetup.registerKibanaFeature).toHaveBeenCalledWith({ - ...baseKibanaFeature, - ...SECURITY_APP_FEATURE_CONFIG.get('test-base-feature' as AppFeatureKeyType), - ...privileges, - subFeatures: [{ baz: 'baz' }], + it('should register enabled kibana features', () => { + const featuresSetup = { + registerKibanaFeature: jest.fn(), + getKibanaFeatures: jest.fn(), + } as unknown as PluginSetupContract; + + const appFeatures = new AppFeatures( + loggingSystemMock.create().get('mock'), + subFeaturesMap, + baseKibanaFeature, + [] + ); + appFeatures.init(featuresSetup); + appFeatures.setConfig( + new Map([['test-feature' as AppFeatureKeyType, testFeaturePrivilegeConfig]]) + ); + + expect(featuresSetup.registerKibanaFeature).toHaveBeenCalledWith({ + ...baseKibanaFeature, + ...expectedBaseWithTestConfigPrivileges, + subFeatures: [], + }); + }); + + it('should register enabled kibana features and sub features', () => { + const featuresSetup = { + registerKibanaFeature: jest.fn(), + getKibanaFeatures: jest.fn(), + } as unknown as PluginSetupContract; + + const appFeatures = new AppFeatures( + loggingSystemMock.create().get('mock'), + subFeaturesMap, + baseKibanaFeature, + [] + ); + appFeatures.init(featuresSetup); + appFeatures.setConfig( + new Map([ + ['test-feature' as AppFeatureKeyType, testFeaturePrivilegeConfig], + ['test-sub-feature' as AppFeatureKeyType, testSubFeaturePrivilegeConfig], + ]) + ); + + expect(featuresSetup.registerKibanaFeature).toHaveBeenCalledWith({ + ...baseKibanaFeature, + ...expectedBaseWithTestConfigPrivileges, + subFeatures: [SUB_FEATURE], + }); + }); + + it('should register enabled kibana features and default sub features', () => { + const featuresSetup = { + registerKibanaFeature: jest.fn(), + getKibanaFeatures: jest.fn(), + } as unknown as PluginSetupContract; + + const appFeatures = new AppFeatures( + loggingSystemMock.create().get('mock'), + subFeaturesMap, + baseKibanaFeature, + [SUB_FEATURE_2.name] + ); + appFeatures.init(featuresSetup); + appFeatures.setConfig( + new Map([ + ['test-feature' as AppFeatureKeyType, testFeaturePrivilegeConfig], + ['test-sub-feature' as AppFeatureKeyType, testSubFeaturePrivilegeConfig], + ]) + ); + + expect(featuresSetup.registerKibanaFeature).toHaveBeenCalledWith({ + ...baseKibanaFeature, + ...expectedBaseWithTestConfigPrivileges, + subFeatures: [SUB_FEATURE, SUB_FEATURE_2], + }); }); }); - it('should register enabled cases features', () => { - const featuresSetup = { - registerKibanaFeature: jest.fn(), - } as unknown as PluginSetupContract; - - const appFeatures = new AppFeatures( - loggingSystemMock.create().get('mock'), - securityCasesKibanaSubFeatures.casesSubFeaturesMap as unknown as AppSubFeaturesMap, - baseKibanaFeature, - ['subFeature1'] - ); - appFeatures.init(featuresSetup); - appFeatures.setConfig(CASES_APP_FEATURE_CONFIG); - - expect(featuresSetup.registerKibanaFeature).toHaveBeenCalledWith({ - ...baseKibanaFeature, - ...CASES_APP_FEATURE_CONFIG.get('test-cases-feature' as AppFeatureKeyType), - subFeatures: [{ baz: 'baz' }], - ...CASES_BASE_CONFIG, + describe('isActionRegistered', () => { + it('should register base privilege actions', () => { + const featuresSetup = { + registerKibanaFeature: jest.fn(), + } as unknown as PluginSetupContract; + + const appFeatures = new AppFeatures( + loggingSystemMock.create().get('mock'), + subFeaturesMap, + baseKibanaFeature, + [] + ); + appFeatures.init(featuresSetup); + appFeatures.setConfig(new Map()); + + expect(appFeatures.isActionRegistered('api:api-read')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:read')).toEqual(true); + expect(appFeatures.isActionRegistered('api:api-write')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:write')).toEqual(true); + expect(appFeatures.isActionRegistered('api:test-action')).toEqual(false); + expect(appFeatures.isActionRegistered('ui:test-action')).toEqual(false); + expect(appFeatures.isActionRegistered('api:subFeature1-action')).toEqual(false); + expect(appFeatures.isActionRegistered('ui:subFeature1-action')).toEqual(false); + expect(appFeatures.isActionRegistered('api:subFeature2-action')).toEqual(false); + expect(appFeatures.isActionRegistered('ui:subFeature2-action')).toEqual(false); + }); + + it('should register config privilege actions', () => { + const featuresSetup = { + registerKibanaFeature: jest.fn(), + } as unknown as PluginSetupContract; + + const appFeatures = new AppFeatures( + loggingSystemMock.create().get('mock'), + subFeaturesMap, + baseKibanaFeature, + [] + ); + appFeatures.init(featuresSetup); + appFeatures.setConfig( + new Map([['test-feature' as AppFeatureKeyType, testFeaturePrivilegeConfig]]) + ); + + expect(appFeatures.isActionRegistered('api:api-read')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:read')).toEqual(true); + expect(appFeatures.isActionRegistered('api:api-write')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:write')).toEqual(true); + expect(appFeatures.isActionRegistered('api:test-action')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:test-action')).toEqual(true); + expect(appFeatures.isActionRegistered('api:subFeature1-action')).toEqual(false); + expect(appFeatures.isActionRegistered('ui:subFeature1-action')).toEqual(false); + expect(appFeatures.isActionRegistered('api:subFeature2-action')).toEqual(false); + expect(appFeatures.isActionRegistered('ui:subFeature2-action')).toEqual(false); + }); + + it('should register config sub-feature privilege actions', () => { + const featuresSetup = { + registerKibanaFeature: jest.fn(), + } as unknown as PluginSetupContract; + + const appFeatures = new AppFeatures( + loggingSystemMock.create().get('mock'), + subFeaturesMap, + baseKibanaFeature, + [] + ); + appFeatures.init(featuresSetup); + appFeatures.setConfig( + new Map([ + ['test-feature' as AppFeatureKeyType, testFeaturePrivilegeConfig], + ['test-sub-feature' as AppFeatureKeyType, testSubFeaturePrivilegeConfig], + ]) + ); + + expect(appFeatures.isActionRegistered('api:api-read')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:read')).toEqual(true); + expect(appFeatures.isActionRegistered('api:api-write')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:write')).toEqual(true); + expect(appFeatures.isActionRegistered('api:test-action')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:test-action')).toEqual(true); + expect(appFeatures.isActionRegistered('api:subFeature1-action')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:subFeature1-action')).toEqual(true); + expect(appFeatures.isActionRegistered('api:subFeature2-action')).toEqual(false); + expect(appFeatures.isActionRegistered('ui:subFeature2-action')).toEqual(false); + }); + + it('should register default and config sub-feature privilege actions', () => { + const featuresSetup = { + registerKibanaFeature: jest.fn(), + } as unknown as PluginSetupContract; + + const appFeatures = new AppFeatures( + loggingSystemMock.create().get('mock'), + subFeaturesMap, + baseKibanaFeature, + [SUB_FEATURE_2.name] + ); + appFeatures.init(featuresSetup); + appFeatures.setConfig( + new Map([ + ['test-feature' as AppFeatureKeyType, testFeaturePrivilegeConfig], + ['test-sub-feature' as AppFeatureKeyType, testSubFeaturePrivilegeConfig], + ]) + ); + + expect(appFeatures.isActionRegistered('api:api-read')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:read')).toEqual(true); + expect(appFeatures.isActionRegistered('api:api-write')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:write')).toEqual(true); + expect(appFeatures.isActionRegistered('api:test-action')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:test-action')).toEqual(true); + expect(appFeatures.isActionRegistered('api:subFeature1-action')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:subFeature1-action')).toEqual(true); + expect(appFeatures.isActionRegistered('api:subFeature2-action')).toEqual(true); + expect(appFeatures.isActionRegistered('ui:subFeature2-action')).toEqual(true); }); }); }); diff --git a/x-pack/plugins/security_solution/server/lib/app_features_service/app_features.ts b/x-pack/plugins/security_solution/server/lib/app_features_service/app_features.ts index 7b264f49faa50..88ed9efd536a7 100644 --- a/x-pack/plugins/security_solution/server/lib/app_features_service/app_features.ts +++ b/x-pack/plugins/security_solution/server/lib/app_features_service/app_features.ts @@ -6,9 +6,12 @@ */ import type { Logger } from '@kbn/core/server'; -import type { PluginSetupContract as FeaturesPluginSetup } from '@kbn/features-plugin/server'; import type { - AppFeatureKeyType, + FeatureKibanaPrivileges, + KibanaFeatureConfig, + PluginSetupContract as FeaturesPluginSetup, +} from '@kbn/features-plugin/server'; +import type { AppFeaturesConfig, AppSubFeaturesMap, BaseKibanaFeatureConfig, @@ -17,8 +20,8 @@ import { AppFeaturesConfigMerger } from './app_features_config_merger'; export class AppFeatures { private featureConfigMerger: AppFeaturesConfigMerger; - private appFeatures?: Set; private featuresSetup?: FeaturesPluginSetup; + private readonly registeredActions: Set; constructor( private readonly logger: Logger, @@ -27,20 +30,14 @@ export class AppFeatures { private readonly baseKibanaSubFeatureIds: T[] ) { this.featureConfigMerger = new AppFeaturesConfigMerger(this.logger, subFeaturesMap); + this.registeredActions = new Set(); } public init(featuresSetup: FeaturesPluginSetup) { this.featuresSetup = featuresSetup; } - public setConfig(config: AppFeaturesConfig) { - if (this.appFeatures) { - throw new Error('AppFeatures has already been registered'); - } - this.registerEnabledKibanaFeatures(config); - } - - private registerEnabledKibanaFeatures(appFeatureConfig: AppFeaturesConfig) { + public setConfig(appFeatureConfig: AppFeaturesConfig) { if (this.featuresSetup == null) { throw new Error( 'Cannot sync kibana features as featuresSetup is not present. Did you call init?' @@ -54,7 +51,42 @@ export class AppFeatures { ); this.logger.debug(JSON.stringify(completeAppFeatureConfig)); - this.featuresSetup.registerKibanaFeature(completeAppFeatureConfig); + this.addRegisteredActions(completeAppFeatureConfig); + } + + private addRegisteredActions(config: KibanaFeatureConfig) { + const privileges: FeatureKibanaPrivileges[] = []; + + // get main privileges + if (config.privileges?.all) { + privileges.push(config.privileges?.all); + } + if (config.privileges?.read) { + privileges.push(config.privileges?.read); + } + + // get sub features privileges + config.subFeatures?.forEach((subFeature) => { + subFeature.privilegeGroups.forEach((privilegeGroup) => { + privilegeGroup.privileges.forEach((privilege) => { + privileges.push(privilege); + }); + }); + }); + + // add the actions from all the registered privileges + privileges.forEach((privilege) => { + privilege.api?.forEach((apiAction) => { + this.registeredActions.add(`api:${apiAction}`); + }); + privilege.ui?.forEach((uiAction) => { + this.registeredActions.add(`ui:${uiAction}`); + }); + }); + } + + public isActionRegistered(action: string) { + return this.registeredActions.has(action); } } diff --git a/x-pack/plugins/security_solution/server/lib/app_features_service/app_features_service.test.ts b/x-pack/plugins/security_solution/server/lib/app_features_service/app_features_service.test.ts new file mode 100644 index 0000000000000..ce346afe426c3 --- /dev/null +++ b/x-pack/plugins/security_solution/server/lib/app_features_service/app_features_service.test.ts @@ -0,0 +1,245 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { AppFeaturesService } from './app_features_service'; +import { AppFeatures } from './app_features'; +import type { AppFeaturesConfig, BaseKibanaFeatureConfig } from '@kbn/security-solution-features'; +import { loggerMock } from '@kbn/logging-mocks'; +import type { ExperimentalFeatures } from '../../../common'; +import { featuresPluginMock } from '@kbn/features-plugin/server/mocks'; +import type { AppFeaturesConfigurator } from './types'; +import type { + AssistantSubFeatureId, + CasesSubFeatureId, + SecuritySubFeatureId, +} from '@kbn/security-solution-features/keys'; +import { AppFeatureKey } from '@kbn/security-solution-features/keys'; +import { httpServiceMock } from '@kbn/core-http-server-mocks'; +import type { + KibanaRequest, + LifecycleResponseFactory, + OnPostAuthHandler, +} from '@kbn/core-http-server'; + +jest.mock('./app_features'); +const MockedAppFeatures = AppFeatures as unknown as jest.MockedClass; + +const appFeature = { + subFeaturesMap: new Map(), + baseKibanaFeature: {} as BaseKibanaFeatureConfig, + baseKibanaSubFeatureIds: [], +}; +const mockGetFeature = jest.fn().mockReturnValue(appFeature); +jest.mock('@kbn/security-solution-features/app_features', () => ({ + getAssistantFeature: () => mockGetFeature(), + getCasesFeature: () => mockGetFeature(), + getSecurityFeature: () => mockGetFeature(), +})); + +describe('AppFeaturesService', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should create AppFeatureService instance', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + new AppFeaturesService(loggerMock.create(), experimentalFeatures); + + expect(mockGetFeature).toHaveBeenCalledTimes(3); + expect(MockedAppFeatures).toHaveBeenCalledTimes(3); + }); + + it('should init all AppFeatures when initialized', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + const appFeaturesService = new AppFeaturesService(loggerMock.create(), experimentalFeatures); + + const featuresSetup = featuresPluginMock.createSetup(); + appFeaturesService.init(featuresSetup); + + expect(MockedAppFeatures.mock.instances[0].init).toHaveBeenCalledWith(featuresSetup); + expect(MockedAppFeatures.mock.instances[1].init).toHaveBeenCalledWith(featuresSetup); + expect(MockedAppFeatures.mock.instances[2].init).toHaveBeenCalledWith(featuresSetup); + }); + + it('should configure AppFeatures', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + const appFeaturesService = new AppFeaturesService(loggerMock.create(), experimentalFeatures); + + const featuresSetup = featuresPluginMock.createSetup(); + appFeaturesService.init(featuresSetup); + + const mockSecurityConfig = new Map() as AppFeaturesConfig; + const mockCasesConfig = new Map() as AppFeaturesConfig; + const mockAssistantConfig = new Map() as AppFeaturesConfig; + + const configurator: AppFeaturesConfigurator = { + security: jest.fn(() => mockSecurityConfig), + cases: jest.fn(() => mockCasesConfig), + securityAssistant: jest.fn(() => mockAssistantConfig), + }; + appFeaturesService.setAppFeaturesConfigurator(configurator); + + expect(configurator.security).toHaveBeenCalled(); + expect(configurator.cases).toHaveBeenCalled(); + expect(configurator.securityAssistant).toHaveBeenCalled(); + + expect(MockedAppFeatures.mock.instances[0].setConfig).toHaveBeenCalledWith(mockSecurityConfig); + expect(MockedAppFeatures.mock.instances[1].setConfig).toHaveBeenCalledWith(mockCasesConfig); + expect(MockedAppFeatures.mock.instances[2].setConfig).toHaveBeenCalledWith(mockAssistantConfig); + }); + + it('should return isEnabled for enabled features', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + const appFeaturesService = new AppFeaturesService(loggerMock.create(), experimentalFeatures); + + const featuresSetup = featuresPluginMock.createSetup(); + appFeaturesService.init(featuresSetup); + + const mockSecurityConfig = new Map([ + [AppFeatureKey.advancedInsights, {}], + [AppFeatureKey.endpointExceptions, {}], + ]) as AppFeaturesConfig; + const mockCasesConfig = new Map([ + [AppFeatureKey.casesConnectors, {}], + ]) as AppFeaturesConfig; + const mockAssistantConfig = new Map([ + [AppFeatureKey.assistant, {}], + ]) as AppFeaturesConfig; + + const configurator: AppFeaturesConfigurator = { + security: jest.fn(() => mockSecurityConfig), + cases: jest.fn(() => mockCasesConfig), + securityAssistant: jest.fn(() => mockAssistantConfig), + }; + appFeaturesService.setAppFeaturesConfigurator(configurator); + + expect(appFeaturesService.isEnabled(AppFeatureKey.advancedInsights)).toEqual(true); + expect(appFeaturesService.isEnabled(AppFeatureKey.endpointExceptions)).toEqual(true); + expect(appFeaturesService.isEnabled(AppFeatureKey.casesConnectors)).toEqual(true); + expect(appFeaturesService.isEnabled(AppFeatureKey.assistant)).toEqual(true); + expect(appFeaturesService.isEnabled(AppFeatureKey.externalRuleActions)).toEqual(false); + }); + + it('should call isApiPrivilegeEnabled for api actions', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + const appFeaturesService = new AppFeaturesService(loggerMock.create(), experimentalFeatures); + + appFeaturesService.isApiPrivilegeEnabled('writeEndpointExceptions'); + + expect(MockedAppFeatures.mock.instances[0].isActionRegistered).toHaveBeenCalledWith( + 'api:securitySolution-writeEndpointExceptions' + ); + expect(MockedAppFeatures.mock.instances[1].isActionRegistered).toHaveBeenCalledWith( + 'api:securitySolution-writeEndpointExceptions' + ); + expect(MockedAppFeatures.mock.instances[2].isActionRegistered).toHaveBeenCalledWith( + 'api:securitySolution-writeEndpointExceptions' + ); + }); + + describe('registerApiAccessControl', () => { + const mockHttpSetup = httpServiceMock.createSetupContract(); + let lastRegisteredFn: OnPostAuthHandler; + mockHttpSetup.registerOnPostAuth.mockImplementation((fn) => { + lastRegisteredFn = fn; + }); + + const getReq = (tags: string[] = []) => + ({ + route: { options: { tags } }, + url: { pathname: '', search: '' }, + } as unknown as KibanaRequest); + const res = { notFound: jest.fn() } as unknown as LifecycleResponseFactory; + const toolkit = { next: jest.fn() }; + + beforeEach(() => { + jest.clearAllMocks(); + }); + + it('should register api authorization http route interceptor', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + const appFeaturesService = new AppFeaturesService(loggerMock.create(), experimentalFeatures); + appFeaturesService.registerApiAccessControl(mockHttpSetup); + + expect(mockHttpSetup.registerOnPostAuth).toHaveBeenCalledTimes(1); + }); + + it('should authorize when no tag matches', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + const appFeaturesService = new AppFeaturesService(loggerMock.create(), experimentalFeatures); + appFeaturesService.registerApiAccessControl(mockHttpSetup); + + lastRegisteredFn(getReq(['access:something', 'access:securitySolution']), res, toolkit); + + expect(MockedAppFeatures.mock.instances[0].isActionRegistered).not.toHaveBeenCalled(); + expect(res.notFound).not.toHaveBeenCalled(); + expect(toolkit.next).toHaveBeenCalledTimes(1); + }); + + it('should check when tag matches and return not found when not action registered', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + const appFeaturesService = new AppFeaturesService(loggerMock.create(), experimentalFeatures); + appFeaturesService.registerApiAccessControl(mockHttpSetup); + + (MockedAppFeatures.mock.instances[0].isActionRegistered as jest.Mock).mockReturnValueOnce( + false + ); + lastRegisteredFn(getReq(['access:securitySolution-foo']), res, toolkit); + + expect(MockedAppFeatures.mock.instances[0].isActionRegistered).toHaveBeenCalledWith( + 'api:securitySolution-foo' + ); + expect(res.notFound).toHaveBeenCalledTimes(1); + expect(toolkit.next).not.toHaveBeenCalled(); + }); + + it('should check when tag matches and continue when action registered', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + const appFeaturesService = new AppFeaturesService(loggerMock.create(), experimentalFeatures); + appFeaturesService.registerApiAccessControl(mockHttpSetup); + + (MockedAppFeatures.mock.instances[0].isActionRegistered as jest.Mock).mockReturnValueOnce( + true + ); + lastRegisteredFn(getReq(['access:securitySolution-foo']), res, toolkit); + + expect(MockedAppFeatures.mock.instances[0].isActionRegistered).toHaveBeenCalledWith( + 'api:securitySolution-foo' + ); + expect(res.notFound).not.toHaveBeenCalled(); + expect(toolkit.next).toHaveBeenCalledTimes(1); + }); + + it('should check when appFeature tag when it matches and return not found when not enabled', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + const appFeaturesService = new AppFeaturesService(loggerMock.create(), experimentalFeatures); + appFeaturesService.registerApiAccessControl(mockHttpSetup); + + appFeaturesService.isEnabled = jest.fn().mockReturnValueOnce(false); + + lastRegisteredFn(getReq(['securitySolutionAppFeature:foo']), res, toolkit); + + expect(appFeaturesService.isEnabled).toHaveBeenCalledWith('foo'); + expect(res.notFound).toHaveBeenCalledTimes(1); + expect(toolkit.next).not.toHaveBeenCalled(); + }); + + it('should check when appFeature tag when it matches and continue when enabled', () => { + const experimentalFeatures = {} as ExperimentalFeatures; + const appFeaturesService = new AppFeaturesService(loggerMock.create(), experimentalFeatures); + appFeaturesService.registerApiAccessControl(mockHttpSetup); + + appFeaturesService.isEnabled = jest.fn().mockReturnValueOnce(true); + + lastRegisteredFn(getReq(['securitySolutionAppFeature:foo']), res, toolkit); + + expect(appFeaturesService.isEnabled).toHaveBeenCalledWith('foo'); + expect(res.notFound).not.toHaveBeenCalled(); + expect(toolkit.next).toHaveBeenCalledTimes(1); + }); + }); +}); diff --git a/x-pack/plugins/security_solution/server/lib/app_features_service/app_features_service.ts b/x-pack/plugins/security_solution/server/lib/app_features_service/app_features_service.ts index fb8947f5cc47b..94a30618d42ae 100644 --- a/x-pack/plugins/security_solution/server/lib/app_features_service/app_features_service.ts +++ b/x-pack/plugins/security_solution/server/lib/app_features_service/app_features_service.ts @@ -11,7 +11,7 @@ * 2.0. */ -import type { Logger } from '@kbn/core/server'; +import type { HttpServiceSetup, Logger } from '@kbn/core/server'; import { hiddenTypes as filesSavedObjectTypes } from '@kbn/files-plugin/server/saved_objects'; import type { PluginSetupContract as FeaturesPluginSetup } from '@kbn/features-plugin/server'; import type { AppFeatureKeyType } from '@kbn/security-solution-features'; @@ -21,6 +21,7 @@ import { getSecurityFeature, } from '@kbn/security-solution-features/app_features'; import type { ExperimentalFeatures } from '../../../common'; +import { APP_ID } from '../../../common'; import { AppFeatures } from './app_features'; import type { AppFeaturesConfigurator } from './types'; import { securityDefaultSavedObjects } from './security_saved_objects'; @@ -99,4 +100,50 @@ export class AppFeaturesService { } return this.appFeatures.has(appFeatureKey); } + + public getApiActionName = (apiPrivilege: string) => `api:${APP_ID}-${apiPrivilege}`; + + public isActionRegistered(action: string) { + return ( + this.securityAppFeatures.isActionRegistered(action) || + this.casesAppFeatures.isActionRegistered(action) || + this.securityAssistantAppFeatures.isActionRegistered(action) + ); + } + + public isApiPrivilegeEnabled(apiPrivilege: string) { + return this.isActionRegistered(this.getApiActionName(apiPrivilege)); + } + + public registerApiAccessControl(http: HttpServiceSetup) { + // The `securitySolutionAppFeature:` prefix is used for AppFeature based control. + // Should be used only by routes that do not need RBAC, only direct appFeature control. + const APP_FEATURE_TAG_PREFIX = 'securitySolutionAppFeature:'; + // The "access:securitySolution-" prefix is used for API action based control. + // Should be used by routes that need RBAC, extending the `access:` role privilege check from the security plugin. + // An additional check is performed to ensure the privilege has been registered by the appFeature service, + // preventing full access (`*`) roles, such as superuser, from bypassing appFeature controls. + const API_ACTION_TAG_PREFIX = `access:${APP_ID}-`; + + http.registerOnPostAuth((request, response, toolkit) => { + for (const tag of request.route.options.tags) { + let isEnabled = true; + if (tag.startsWith(APP_FEATURE_TAG_PREFIX)) { + isEnabled = this.isEnabled( + tag.substring(APP_FEATURE_TAG_PREFIX.length) as AppFeatureKeyType + ); + } else if (tag.startsWith(API_ACTION_TAG_PREFIX)) { + isEnabled = this.isApiPrivilegeEnabled(tag.substring(API_ACTION_TAG_PREFIX.length)); + } + + if (!isEnabled) { + this.logger.warn( + `Accessing disabled route "${request.url.pathname}${request.url.search}": responding with 404` + ); + return response.notFound(); + } + } + return toolkit.next(); + }); + } } diff --git a/x-pack/plugins/security_solution/server/lib/app_features_service/mocks.ts b/x-pack/plugins/security_solution/server/lib/app_features_service/mocks.ts index 4f47befce92b9..36bf3bb96a12f 100644 --- a/x-pack/plugins/security_solution/server/lib/app_features_service/mocks.ts +++ b/x-pack/plugins/security_solution/server/lib/app_features_service/mocks.ts @@ -15,33 +15,21 @@ import { ALL_APP_FEATURE_KEYS } from '@kbn/security-solution-features/keys'; import { allowedExperimentalValues, type ExperimentalFeatures } from '../../../common'; import { AppFeaturesService } from './app_features_service'; -const SECURITY_BASE_CONFIG = { - foo: 'foo', -}; - -const CASES_BASE_CONFIG = { - bar: 'bar', -}; - -const ASSISTANT_BASE_CONFIG = { - bar: 'bar', -}; - jest.mock('@kbn/security-solution-features/app_features', () => ({ getSecurityFeature: jest.fn(() => ({ - baseKibanaFeature: SECURITY_BASE_CONFIG, - baseKibanaSubFeatureIds: ['subFeature1'], - subFeaturesMap: new Map([['subFeature1', { baz: 'baz' }]]), + baseKibanaFeature: {}, + baseKibanaSubFeatureIds: [], + subFeaturesMap: new Map(), })), getCasesFeature: jest.fn(() => ({ - baseKibanaFeature: CASES_BASE_CONFIG, - baseKibanaSubFeatureIds: ['subFeature1'], - subFeaturesMap: new Map([['subFeature1', { baz: 'baz' }]]), + baseKibanaFeature: {}, + baseKibanaSubFeatureIds: [], + subFeaturesMap: new Map(), })), getAssistantFeature: jest.fn(() => ({ - baseKibanaFeature: ASSISTANT_BASE_CONFIG, + baseKibanaFeature: {}, baseKibanaSubFeatureIds: [], - subFeaturesMap: new Map([]), + subFeaturesMap: new Map(), })), })); diff --git a/x-pack/plugins/security_solution/server/plugin.ts b/x-pack/plugins/security_solution/server/plugin.ts index f567ff8a59648..9f58d27875f66 100644 --- a/x-pack/plugins/security_solution/server/plugin.ts +++ b/x-pack/plugins/security_solution/server/plugin.ts @@ -220,6 +220,7 @@ export class Plugin implements ISecuritySolutionPlugin { kibanaBranch: pluginContext.env.packageInfo.branch, }); + appFeaturesService.registerApiAccessControl(core.http); const router = core.http.createRouter(); core.http.registerRouteHandlerContext( APP_ID, diff --git a/x-pack/plugins/security_solution/tsconfig.json b/x-pack/plugins/security_solution/tsconfig.json index ced7846118a0f..cce960b04dc43 100644 --- a/x-pack/plugins/security_solution/tsconfig.json +++ b/x-pack/plugins/security_solution/tsconfig.json @@ -186,6 +186,7 @@ "@kbn/esql-utils", "@kbn/core-test-helpers-kbn-server", "@kbn/core-ui-settings-server", - "@kbn/core-http-request-handler-context-server" + "@kbn/core-http-request-handler-context-server", + "@kbn/core-http-server-mocks" ] } diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.test.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.test.ts index a753c34908a20..ae12f8079a876 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.test.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.test.ts @@ -7,14 +7,22 @@ import { OnlySearchSourceRuleParams } from '../types'; import { createSearchSourceMock } from '@kbn/data-plugin/common/search/search_source/mocks'; -import { updateSearchSource, getSmallerDataViewSpec } from './fetch_search_source_query'; +import { + updateSearchSource, + generateLink, + updateFilterReferences, + getSmallerDataViewSpec, +} from './fetch_search_source_query'; import { createStubDataView, stubbedSavedObjectIndexPattern, } from '@kbn/data-views-plugin/common/data_view.stub'; -import { DataView } from '@kbn/data-views-plugin/common'; +import { DataView, DataViewSpec } from '@kbn/data-views-plugin/common'; import { fieldFormatsMock } from '@kbn/field-formats-plugin/common/mocks'; import { Comparator } from '../../../../common/comparator_types'; +import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; +import { DiscoverAppLocatorParams } from '@kbn/discover-plugin/common'; +import { LocatorPublic } from '@kbn/share-plugin/common'; const createDataView = () => { const id = 'test-id'; @@ -55,26 +63,27 @@ const defaultParams: OnlySearchSourceRuleParams = { }; describe('fetchSearchSourceQuery', () => { - describe('updateSearchSource', () => { - const dataViewMock = createDataView(); - afterAll(() => { - jest.resetAllMocks(); - }); + const dataViewMock = createDataView(); - const fakeNow = new Date('2020-02-09T23:15:41.941Z'); + afterAll(() => { + jest.resetAllMocks(); + }); - beforeAll(() => { - jest.resetAllMocks(); - global.Date.now = jest.fn(() => fakeNow.getTime()); - }); + const fakeNow = new Date('2020-02-09T23:15:41.941Z'); + + beforeAll(() => { + jest.resetAllMocks(); + global.Date.now = jest.fn(() => fakeNow.getTime()); + }); + describe('updateSearchSource', () => { it('without latest timestamp', async () => { const params = { ...defaultParams, thresholdComparator: Comparator.GT_OR_EQ, threshold: [3] }; const searchSourceInstance = createSearchSourceMock({ index: dataViewMock }); const { dateStart, dateEnd } = getTimeRange(); - const searchSource = updateSearchSource( + const { searchSource, filterToExcludeHitsFromPreviousRun } = updateSearchSource( searchSourceInstance, dataViewMock, params, @@ -83,6 +92,7 @@ describe('fetchSearchSourceQuery', () => { dateEnd ); const searchRequest = searchSource.getSearchRequestBody(); + expect(filterToExcludeHitsFromPreviousRun).toBe(null); expect(searchRequest.size).toMatchInlineSnapshot(`100`); expect(searchRequest.query).toMatchInlineSnapshot(` Object { @@ -113,7 +123,7 @@ describe('fetchSearchSourceQuery', () => { const searchSourceInstance = createSearchSourceMock({ index: dataViewMock }); const { dateStart, dateEnd } = getTimeRange(); - const searchSource = updateSearchSource( + const { searchSource, filterToExcludeHitsFromPreviousRun } = updateSearchSource( searchSourceInstance, dataViewMock, params, @@ -122,6 +132,24 @@ describe('fetchSearchSourceQuery', () => { dateEnd ); const searchRequest = searchSource.getSearchRequestBody(); + expect(searchRequest.track_total_hits).toBe(true); + expect(filterToExcludeHitsFromPreviousRun).toMatchInlineSnapshot(` + Object { + "meta": Object { + "field": "time", + "index": "test-id", + "params": Object {}, + }, + "query": Object { + "range": Object { + "time": Object { + "format": "strict_date_optional_time", + "gt": "2020-02-09T23:12:41.941Z", + }, + }, + }, + } + `); expect(searchRequest.size).toMatchInlineSnapshot(`100`); expect(searchRequest.query).toMatchInlineSnapshot(` Object { @@ -160,7 +188,7 @@ describe('fetchSearchSourceQuery', () => { const searchSourceInstance = createSearchSourceMock({ index: dataViewMock }); const { dateStart, dateEnd } = getTimeRange(); - const searchSource = updateSearchSource( + const { searchSource, filterToExcludeHitsFromPreviousRun } = updateSearchSource( searchSourceInstance, dataViewMock, params, @@ -169,6 +197,7 @@ describe('fetchSearchSourceQuery', () => { dateEnd ); const searchRequest = searchSource.getSearchRequestBody(); + expect(filterToExcludeHitsFromPreviousRun).toBe(null); expect(searchRequest.size).toMatchInlineSnapshot(`100`); expect(searchRequest.query).toMatchInlineSnapshot(` Object { @@ -199,7 +228,7 @@ describe('fetchSearchSourceQuery', () => { const searchSourceInstance = createSearchSourceMock({ index: dataViewMock }); const { dateStart, dateEnd } = getTimeRange(); - const searchSource = updateSearchSource( + const { searchSource, filterToExcludeHitsFromPreviousRun } = updateSearchSource( searchSourceInstance, dataViewMock, params, @@ -208,6 +237,7 @@ describe('fetchSearchSourceQuery', () => { dateEnd ); const searchRequest = searchSource.getSearchRequestBody(); + expect(filterToExcludeHitsFromPreviousRun).toBe(null); expect(searchRequest.size).toMatchInlineSnapshot(`100`); expect(searchRequest.query).toMatchInlineSnapshot(` Object { @@ -244,7 +274,7 @@ describe('fetchSearchSourceQuery', () => { const searchSourceInstance = createSearchSourceMock({ index: dataViewMock }); const { dateStart, dateEnd } = getTimeRange(); - const searchSource = updateSearchSource( + const { searchSource } = updateSearchSource( searchSourceInstance, dataViewMock, params, @@ -253,6 +283,7 @@ describe('fetchSearchSourceQuery', () => { dateEnd ); const searchRequest = searchSource.getSearchRequestBody(); + expect(searchRequest.track_total_hits).toBeUndefined(); expect(searchRequest.size).toMatchInlineSnapshot(`0`); expect(searchRequest.query).toMatchInlineSnapshot(` Object { @@ -307,6 +338,95 @@ describe('fetchSearchSourceQuery', () => { }); }); + describe('generateLink', () => { + it('should include additional time filter', async () => { + const params = { ...defaultParams, thresholdComparator: Comparator.GT_OR_EQ, threshold: [3] }; + + const searchSourceInstance = createSearchSourceMock({ index: dataViewMock }); + + const { dateStart, dateEnd } = getTimeRange(); + const { filterToExcludeHitsFromPreviousRun } = updateSearchSource( + searchSourceInstance, + dataViewMock, + params, + '2020-02-09T23:12:41.941Z', + dateStart, + dateEnd + ); + + expect(filterToExcludeHitsFromPreviousRun).toMatchInlineSnapshot(` + Object { + "meta": Object { + "field": "time", + "index": "test-id", + "params": Object {}, + }, + "query": Object { + "range": Object { + "time": Object { + "format": "strict_date_optional_time", + "gt": "2020-02-09T23:12:41.941Z", + }, + }, + }, + } + `); + + const locatorMock = { + getRedirectUrl: jest.fn(() => '/app/r?l=DISCOVER_APP_LOCATOR'), + } as unknown as LocatorPublic; + + const dataViews = { + ...dataViewPluginMocks.createStartContract(), + create: async (spec: DataViewSpec) => + new DataView({ spec, fieldFormats: fieldFormatsMock }), + }; + + const linkWithoutExcludedRuns = await generateLink( + searchSourceInstance, + locatorMock, + dataViews, + dataViewMock, + dateStart, + dateEnd, + 'test1', + null + ); + + expect(linkWithoutExcludedRuns).toBe('test1/app/r?l=DISCOVER_APP_LOCATOR'); + expect(locatorMock.getRedirectUrl).toHaveBeenCalledWith( + expect.objectContaining({ + filters: [], + }) + ); + + const linkWithExcludedRuns = await generateLink( + searchSourceInstance, + locatorMock, + dataViews, + dataViewMock, + dateStart, + dateEnd, + 'test2', + filterToExcludeHitsFromPreviousRun + ); + + expect(linkWithExcludedRuns).toBe('test2/app/r?l=DISCOVER_APP_LOCATOR'); + expect(locatorMock.getRedirectUrl).toHaveBeenNthCalledWith( + 2, + expect.objectContaining({ + filters: expect.arrayContaining( + updateFilterReferences( + [filterToExcludeHitsFromPreviousRun!], + dataViewMock.id!, + undefined + ) + ), + }) + ); + }); + }); + describe('getSmallerDataViewSpec', () => { it('should remove "count"s but keep other props like "customLabel"', async () => { const fieldsMap = { diff --git a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.ts b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.ts index 51773ec3d5134..0ed3e146e43be 100644 --- a/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.ts +++ b/x-pack/plugins/stack_alerts/server/rule_types/es_query/lib/fetch_search_source_query.ts @@ -60,7 +60,7 @@ export async function fetchSearchSourceQuery({ const initialSearchSource = await searchSourceClient.create(params.searchConfiguration); const index = initialSearchSource.getField('index') as DataView; - const searchSource = updateSearchSource( + const { searchSource, filterToExcludeHitsFromPreviousRun } = updateSearchSource( initialSearchSource, index, params, @@ -85,7 +85,8 @@ export async function fetchSearchSourceQuery({ index, dateStart, dateEnd, - spacePrefix + spacePrefix, + filterToExcludeHitsFromPreviousRun ); return { link, @@ -109,7 +110,7 @@ export function updateSearchSource( dateStart: string, dateEnd: string, alertLimit?: number -) { +): { searchSource: ISearchSource; filterToExcludeHitsFromPreviousRun: Filter | null } { const isGroupAgg = isGroupAggregation(params.termField); const timeFieldName = params.timeField || index.timeFieldName; @@ -128,20 +129,24 @@ export function updateSearchSource( ), ]; + let filterToExcludeHitsFromPreviousRun = null; if (params.excludeHitsFromPreviousRun) { if (latestTimestamp && latestTimestamp > dateStart) { - // add additional filter for documents with a timestamp greater then + // add additional filter for documents with a timestamp greater than // the timestamp of the previous run, so that those documents are not counted twice - const addTimeRangeField = buildRangeFilter( + filterToExcludeHitsFromPreviousRun = buildRangeFilter( field!, { gt: latestTimestamp, format: 'strict_date_optional_time' }, index ); - filters.push(addTimeRangeField); + filters.push(filterToExcludeHitsFromPreviousRun); } } const searchSourceChild = searchSource.createChild(); + if (!isGroupAgg) { + searchSourceChild.setField('trackTotalHits', true); + } searchSourceChild.setField('filter', filters as Filter[]); searchSourceChild.setField('sort', [ { @@ -170,19 +175,31 @@ export function updateSearchSource( ...(isGroupAgg ? { topHitsSize: params.size } : {}), }) ); - return searchSourceChild; + return { + searchSource: searchSourceChild, + filterToExcludeHitsFromPreviousRun, + }; } -async function generateLink( +export async function generateLink( searchSource: ISearchSource, discoverLocator: LocatorPublic, dataViews: DataViewsContract, dataViewToUpdate: DataView, dateStart: string, dateEnd: string, - spacePrefix: string + spacePrefix: string, + filterToExcludeHitsFromPreviousRun: Filter | null ) { - const prevFilters = searchSource.getField('filter') as Filter[]; + const prevFilters = [...((searchSource.getField('filter') as Filter[]) || [])]; + + if (filterToExcludeHitsFromPreviousRun) { + // Using the same additional filter as in the alert check above. + // We cannot simply pass `latestTimestamp` to `timeRange.from` Discover locator params + // as that would include `latestTimestamp` itself in the Discover results which would be wrong. + // Results should be after `latestTimestamp` and within `dateStart` and `dateEnd`. + prevFilters.push(filterToExcludeHitsFromPreviousRun); + } // make new adhoc data view const newDataView = await dataViews.create({ @@ -208,7 +225,11 @@ async function generateLink( return start + spacePrefix + '/app' + end; } -function updateFilterReferences(filters: Filter[], fromDataView: string, toDataView: string) { +export function updateFilterReferences( + filters: Filter[], + fromDataView: string, + toDataView: string | undefined +) { return (filters || []).map((filter) => { if (filter.meta.index === fromDataView) { return { diff --git a/x-pack/plugins/task_manager/server/index.ts b/x-pack/plugins/task_manager/server/index.ts index a7555b3316a8e..92153a4878d76 100644 --- a/x-pack/plugins/task_manager/server/index.ts +++ b/x-pack/plugins/task_manager/server/index.ts @@ -24,7 +24,7 @@ export type { LoadIndirectParamsResult, } from './task'; -export { TaskStatus } from './task'; +export { TaskStatus, TaskPriority } from './task'; export type { TaskRegisterDefinition, TaskDefinitionRegistry } from './task_type_dictionary'; diff --git a/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_priority_check.test.ts.snap b/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_priority_check.test.ts.snap new file mode 100644 index 0000000000000..75726039709fa --- /dev/null +++ b/x-pack/plugins/task_manager/server/integration_tests/__snapshots__/task_priority_check.test.ts.snap @@ -0,0 +1,3 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Task priority checks detects tasks with priority definitions 1`] = `Array []`; diff --git a/x-pack/plugins/task_manager/server/integration_tests/task_priority_check.test.ts b/x-pack/plugins/task_manager/server/integration_tests/task_priority_check.test.ts new file mode 100644 index 0000000000000..ebbea6f1e8a07 --- /dev/null +++ b/x-pack/plugins/task_manager/server/integration_tests/task_priority_check.test.ts @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + type TestElasticsearchUtils, + type TestKibanaUtils, +} from '@kbn/core-test-helpers-kbn-server'; +import { TaskDefinition, TaskPriority } from '../task'; +import { setupTestServers } from './lib'; +import { TaskTypeDictionary } from '../task_type_dictionary'; + +jest.mock('../task_type_dictionary', () => { + const actual = jest.requireActual('../task_type_dictionary'); + return { + ...actual, + TaskTypeDictionary: jest.fn().mockImplementation((opts) => { + return new actual.TaskTypeDictionary(opts); + }), + }; +}); + +// Notify response-ops if a task sets a priority to something other than `Normal` +describe('Task priority checks', () => { + let esServer: TestElasticsearchUtils; + let kibanaServer: TestKibanaUtils; + let taskTypeDictionary: TaskTypeDictionary; + + beforeAll(async () => { + const setupResult = await setupTestServers(); + esServer = setupResult.esServer; + kibanaServer = setupResult.kibanaServer; + + const mockedTaskTypeDictionary = jest.requireMock('../task_type_dictionary'); + expect(mockedTaskTypeDictionary.TaskTypeDictionary).toHaveBeenCalledTimes(1); + taskTypeDictionary = mockedTaskTypeDictionary.TaskTypeDictionary.mock.results[0].value; + }); + + afterAll(async () => { + if (kibanaServer) { + await kibanaServer.stop(); + } + if (esServer) { + await esServer.stop(); + } + }); + + it('detects tasks with priority definitions', async () => { + const taskTypes = taskTypeDictionary.getAllDefinitions(); + const taskTypesWithPriority = taskTypes + .map((taskType: TaskDefinition) => + !!taskType.priority ? { taskType: taskType.type, priority: taskType.priority } : null + ) + .filter((tt: { taskType: string; priority: TaskPriority } | null) => null != tt); + expect(taskTypesWithPriority).toMatchSnapshot(); + }); +}); diff --git a/x-pack/plugins/task_manager/server/task.ts b/x-pack/plugins/task_manager/server/task.ts index 0d064153859a5..728d175e8b98f 100644 --- a/x-pack/plugins/task_manager/server/task.ts +++ b/x-pack/plugins/task_manager/server/task.ts @@ -6,10 +6,16 @@ */ import { ObjectType, schema, TypeOf } from '@kbn/config-schema'; +import { isNumber } from 'lodash'; import { isErr, tryAsResult } from './lib/result_type'; import { Interval, isInterval, parseIntervalAsMillisecond } from './lib/intervals'; import { DecoratedError } from './task_running'; +export enum TaskPriority { + Low = 1, + Normal = 50, +} + /* * Type definitions and validations for tasks. */ @@ -132,6 +138,10 @@ export const taskDefinitionSchema = schema.object( * A brief, human-friendly title for this task. */ title: schema.maybe(schema.string()), + /** + * Priority of this task type. Defaults to "NORMAL" if not defined + */ + priority: schema.maybe(schema.number()), /** * An optional more detailed description of what this task does. */ @@ -179,10 +189,16 @@ export const taskDefinitionSchema = schema.object( indirectParamsSchema: schema.maybe(schema.any()), }, { - validate({ timeout }) { + validate({ timeout, priority }) { if (!isInterval(timeout) || isErr(tryAsResult(() => parseIntervalAsMillisecond(timeout)))) { return `Invalid timeout "${timeout}". Timeout must be of the form "{number}{cadance}" where number is an integer. Example: 5m.`; } + + if (priority && (!isNumber(priority) || !(priority in TaskPriority))) { + return `Invalid priority "${priority}". Priority must be one of ${Object.keys(TaskPriority) + .filter((key) => isNaN(Number(key))) + .map((key) => `${key} => ${TaskPriority[key as keyof typeof TaskPriority]}`)}`; + } }, } ); @@ -329,6 +345,11 @@ export interface TaskInstance { * Indicates the number of skipped executions. */ numSkippedRuns?: number; + + /* + * Optionally override the timeout defined in the task type for this specific task instance + */ + timeoutOverride?: string; } /** diff --git a/x-pack/plugins/task_manager/server/task_claimers/strategy_default.test.ts b/x-pack/plugins/task_manager/server/task_claimers/strategy_default.test.ts index c89ecdf669218..d6911b1b67e20 100644 --- a/x-pack/plugins/task_manager/server/task_claimers/strategy_default.test.ts +++ b/x-pack/plugins/task_manager/server/task_claimers/strategy_default.test.ts @@ -9,7 +9,7 @@ import _ from 'lodash'; import { v1 as uuidv1, v4 as uuidv4 } from 'uuid'; import { filter, take, toArray } from 'rxjs/operators'; -import { TaskStatus, ConcreteTaskInstance } from '../task'; +import { TaskStatus, ConcreteTaskInstance, TaskPriority } from '../task'; import { SearchOpts, StoreOpts, UpdateByQueryOpts, UpdateByQuerySearchOpts } from '../task_store'; import { asTaskClaimEvent, TaskEvent } from '../task_events'; import { asOk, isOk, unwrap } from '../lib/result_type'; @@ -255,6 +255,7 @@ describe('TaskClaiming', () => { definitions.registerTaskDefinitions({ foo: { title: 'foo', + priority: TaskPriority.Low, createTaskRunner: jest.fn(), }, bar: { @@ -351,6 +352,28 @@ describe('TaskClaiming', () => { }, }); expect(sort).toMatchObject([ + { + _script: { + type: 'number', + order: 'desc', + script: { + lang: 'painless', + params: { + priority_map: { + foo: 1, + }, + }, + source: ` + String taskType = doc['task.taskType'].value; + if (params.priority_map.containsKey(taskType)) { + return params.priority_map[taskType]; + } else { + return 50; + } + `, + }, + }, + }, { _script: { type: 'number', diff --git a/x-pack/plugins/task_manager/server/task_claimers/strategy_default.ts b/x-pack/plugins/task_manager/server/task_claimers/strategy_default.ts index 0d9ccb2ef723d..93101b19cd77f 100644 --- a/x-pack/plugins/task_manager/server/task_claimers/strategy_default.ts +++ b/x-pack/plugins/task_manager/server/task_claimers/strategy_default.ts @@ -8,6 +8,7 @@ /* * This module contains helpers for managing the task manager storage layer. */ +import type { estypes } from '@elastic/elasticsearch'; import apm from 'elastic-apm-node'; import minimatch from 'minimatch'; import { Subject, Observable, from, of } from 'rxjs'; @@ -17,7 +18,7 @@ import { groupBy, pick } from 'lodash'; import { asOk } from '../lib/result_type'; import { TaskTypeDictionary } from '../task_type_dictionary'; import { TaskClaimerOpts, ClaimOwnershipResult } from '.'; -import { ConcreteTaskInstance } from '../task'; +import { ConcreteTaskInstance, TaskPriority } from '../task'; import { TASK_MANAGER_TRANSACTION_TYPE } from '../task_running'; import { isLimited, TASK_MANAGER_MARK_AS_CLAIMED } from '../queries/task_claiming'; import { TaskClaim, asTaskClaimEvent, startTaskTimer } from '../task_events'; @@ -104,11 +105,12 @@ export function claimAvailableTasksDefault( async function executeClaimAvailableTasks( opts: OwnershipClaimingOpts ): Promise { - const { taskStore, size, taskTypes, events$ } = opts; + const { taskStore, size, taskTypes, events$, definitions } = opts; const { updated: tasksUpdated, version_conflicts: tasksConflicted } = await markAvailableTasksAsClaimed(opts); - const docs = tasksUpdated > 0 ? await sweepForClaimedTasks(taskStore, taskTypes, size) : []; + const docs = + tasksUpdated > 0 ? await sweepForClaimedTasks(taskStore, taskTypes, size, definitions) : []; emitEvents( events$, @@ -166,7 +168,7 @@ async function markAvailableTasksAsClaimed({ shouldBeOneOf(IdleTaskWithExpiredRunAt, RunningOrClaimingTaskWithExpiredRetryAt) ); - const sort: NonNullable = [SortByRunAtAndRetryAt]; + const sort: NonNullable = getClaimSort(definitions); const query = matchesClauses(queryForScheduledTasks, filterDownBy(InactiveTasks)); const script = updateFieldsAndMarkAsFailed({ fieldUpdates: { @@ -206,7 +208,8 @@ async function markAvailableTasksAsClaimed({ async function sweepForClaimedTasks( taskStore: TaskStore, taskTypes: Set, - size: number + size: number, + definitions: TaskTypeDictionary ): Promise { const claimedTasksQuery = tasksClaimedByOwner( taskStore.taskManagerId, @@ -215,7 +218,7 @@ async function sweepForClaimedTasks( const { docs } = await taskStore.fetch({ query: claimedTasksQuery, size, - sort: SortByRunAtAndRetryAt, + sort: getClaimSort(definitions), seq_no_primary_term: true, }); @@ -253,3 +256,38 @@ function accumulateClaimOwnershipResults( } return prev; } + +function getClaimSort(definitions: TaskTypeDictionary): estypes.SortCombinations[] { + // Sort by descending priority, then by ascending runAt/retryAt time + return [ + { + _script: { + type: 'number', + order: 'desc', + script: { + lang: 'painless', + // Use priority if explicitly specified in task definition, otherwise default to 50 (Normal) + source: ` + String taskType = doc['task.taskType'].value; + if (params.priority_map.containsKey(taskType)) { + return params.priority_map[taskType]; + } else { + return ${TaskPriority.Normal}; + } + `, + params: { + priority_map: definitions + .getAllDefinitions() + .reduce>((acc, taskDefinition) => { + if (taskDefinition.priority) { + acc[taskDefinition.type] = taskDefinition.priority; + } + return acc; + }, {}), + }, + }, + }, + }, + SortByRunAtAndRetryAt, + ]; +} diff --git a/x-pack/plugins/task_manager/server/task_running/task_runner.test.ts b/x-pack/plugins/task_manager/server/task_running/task_runner.test.ts index 6735b3c0602b8..1e22e15a7f1e4 100644 --- a/x-pack/plugins/task_manager/server/task_running/task_runner.test.ts +++ b/x-pack/plugins/task_manager/server/task_running/task_runner.test.ts @@ -250,7 +250,7 @@ describe('TaskManagerRunner', () => { expect(instance.enabled).not.toBeDefined(); }); - test('calculates retryAt by timeout if it exceeds the schedule when running a recurring task', async () => { + test('calculates retryAt by task type timeout if it exceeds the schedule when running a recurring task', async () => { const timeoutMinutes = 1; const intervalSeconds = 20; const id = _.random(1, 20).toString(); @@ -286,6 +286,44 @@ describe('TaskManagerRunner', () => { expect(instance.enabled).not.toBeDefined(); }); + test('does not calculate retryAt by task instance timeout if defined for a recurring task', async () => { + const timeoutMinutes = 1; + const timeoutOverrideSeconds = 90; + const intervalSeconds = 20; + const id = _.random(1, 20).toString(); + const initialAttempts = _.random(0, 2); + const { runner, store } = await pendingStageSetup({ + instance: { + id, + attempts: initialAttempts, + schedule: { + interval: `${intervalSeconds}s`, + }, + timeoutOverride: `${timeoutOverrideSeconds}s`, + enabled: true, + }, + definitions: { + bar: { + title: 'Bar!', + timeout: `${timeoutMinutes}m`, + createTaskRunner: () => ({ + run: async () => undefined, + }), + }, + }, + }); + + await runner.markTaskAsRunning(); + + expect(store.update).toHaveBeenCalledTimes(1); + const instance = store.update.mock.calls[0][0]; + + expect(instance.retryAt!.getTime()).toEqual( + instance.startedAt!.getTime() + timeoutMinutes * 60 * 1000 + ); + expect(instance.enabled).not.toBeDefined(); + }); + test('sets startedAt, status, attempts and retryAt when claiming a task', async () => { const timeoutMinutes = 1; const id = _.random(1, 20).toString(); @@ -329,6 +367,51 @@ describe('TaskManagerRunner', () => { expect(instance.enabled).not.toBeDefined(); }); + test('test sets retryAt to task instance timeout override when defined when claiming an ad hoc task', async () => { + const timeoutSeconds = 60; + const timeoutOverrideSeconds = 90; + const id = _.random(1, 20).toString(); + const initialAttempts = _.random(0, 2); + const { runner, store } = await pendingStageSetup({ + instance: { + id, + enabled: true, + attempts: initialAttempts, + timeoutOverride: `${timeoutOverrideSeconds}s`, + schedule: undefined, + }, + definitions: { + bar: { + title: 'Bar!', + timeout: `${timeoutSeconds}s`, + createTaskRunner: () => ({ + run: async () => undefined, + }), + }, + }, + }); + + await runner.markTaskAsRunning(); + + expect(store.update).toHaveBeenCalledTimes(1); + const instance = store.update.mock.calls[0][0]; + + expect(instance.attempts).toEqual(initialAttempts + 1); + expect(instance.status).toBe('running'); + expect(instance.startedAt!.getTime()).toEqual(Date.now()); + + const minRunAt = Date.now(); + const maxRunAt = minRunAt + baseDelay * Math.pow(2, initialAttempts - 1); + expect(instance.retryAt!.getTime()).toBeGreaterThanOrEqual( + minRunAt + timeoutOverrideSeconds * 1000 + ); + expect(instance.retryAt!.getTime()).toBeLessThanOrEqual( + maxRunAt + timeoutOverrideSeconds * 1000 + ); + + expect(instance.enabled).not.toBeDefined(); + }); + test('sets retryAt when there is an error', async () => { const id = _.random(1, 20).toString(); const initialAttempts = _.random(1, 3); diff --git a/x-pack/plugins/task_manager/server/task_running/task_runner.ts b/x-pack/plugins/task_manager/server/task_running/task_runner.ts index faea2bfb7e446..2c1242629952c 100644 --- a/x-pack/plugins/task_manager/server/task_running/task_runner.ts +++ b/x-pack/plugins/task_manager/server/task_running/task_runner.ts @@ -260,10 +260,25 @@ export class TaskManagerRunner implements TaskRunner { // this allows us to catch tasks that remain in Pending/Finalizing without being // cleaned up isReadyToRun(this.instance) ? this.instance.task.startedAt : this.instance.timestamp, - this.definition.timeout + this.timeout )!; } + /* + * Gets the timeout of the current task. Uses the timeout + * defined by the task type unless this is an ad-hoc task that specifies an override + */ + public get timeout() { + if (this.instance.task.schedule) { + // recurring tasks should use timeout in task type + return this.definition.timeout; + } + + return this.instance.task.timeoutOverride + ? this.instance.task.timeoutOverride + : this.definition.timeout; + } + /** * Gets the duration of the current task run */ @@ -521,17 +536,13 @@ export class TaskManagerRunner implements TaskRunner { attempts, retryAt: (this.instance.task.schedule - ? maxIntervalFromDate( - now, - this.instance.task.schedule.interval, - this.definition.timeout - ) + ? maxIntervalFromDate(now, this.instance.task.schedule.interval, this.timeout) : this.getRetryDelay({ attempts, // Fake an error. This allows retry logic when tasks keep timing out // and lets us set a proper "retryAt" value each time. error: new Error('Task timeout'), - addDuration: this.definition.timeout, + addDuration: this.timeout, })) ?? null, // This is a safe conversion as we're setting the startAt above }, diff --git a/x-pack/plugins/task_manager/server/task_type_dictionary.test.ts b/x-pack/plugins/task_manager/server/task_type_dictionary.test.ts index 039403816da5e..d1b44a7577025 100644 --- a/x-pack/plugins/task_manager/server/task_type_dictionary.test.ts +++ b/x-pack/plugins/task_manager/server/task_type_dictionary.test.ts @@ -6,7 +6,7 @@ */ import { get } from 'lodash'; -import { RunContext, TaskDefinition } from './task'; +import { RunContext, TaskDefinition, TaskPriority } from './task'; import { mockLogger } from './test_utils'; import { sanitizeTaskDefinitions, @@ -50,17 +50,18 @@ const getMockTaskDefinitions = (opts: Opts) => { describe('taskTypeDictionary', () => { let definitions: TaskTypeDictionary; + const logger = mockLogger(); beforeEach(() => { - definitions = new TaskTypeDictionary(mockLogger()); + definitions = new TaskTypeDictionary(logger); }); - describe('sanitizeTaskDefinitions', () => {}); - it('provides tasks with defaults', () => { - const taskDefinitions = getMockTaskDefinitions({ numTasks: 3 }); - const result = sanitizeTaskDefinitions(taskDefinitions); + describe('sanitizeTaskDefinitions', () => { + it('provides tasks with defaults', () => { + const taskDefinitions = getMockTaskDefinitions({ numTasks: 3 }); + const result = sanitizeTaskDefinitions(taskDefinitions); - expect(result).toMatchInlineSnapshot(` + expect(result).toMatchInlineSnapshot(` Array [ Object { "createTaskRunner": [Function], @@ -85,89 +86,117 @@ describe('taskTypeDictionary', () => { }, ] `); - }); + }); - it('throws a validation exception for invalid task definition', () => { - const runsanitize = () => { - const taskDefinitions: TaskDefinitionRegistry = { - some_kind_of_task: { - // @ts-ignore - fail: 'extremely', // cause a validation failure - type: 'breaky_task', - title: 'Test XYZ', - description: `Actually this won't work`, - createTaskRunner() { - return { - async run() { - return { - state: {}, - }; - }, - }; + it('throws a validation exception for invalid task definition', () => { + const runsanitize = () => { + const taskDefinitions: TaskDefinitionRegistry = { + some_kind_of_task: { + // @ts-ignore + fail: 'extremely', // cause a validation failure + type: 'breaky_task', + title: 'Test XYZ', + description: `Actually this won't work`, + createTaskRunner() { + return { + async run() { + return { + state: {}, + }; + }, + }; + }, }, - }, - }; + }; - return sanitizeTaskDefinitions(taskDefinitions); - }; + return sanitizeTaskDefinitions(taskDefinitions); + }; - expect(runsanitize).toThrowErrorMatchingInlineSnapshot( - `"[fail]: definition for this key is missing"` - ); - }); + expect(runsanitize).toThrowErrorMatchingInlineSnapshot( + `"[fail]: definition for this key is missing"` + ); + }); - it('throws a validation exception for invalid timeout on task definition', () => { - const runsanitize = () => { - const taskDefinitions: TaskDefinitionRegistry = { - some_kind_of_task: { - title: 'Test XYZ', - timeout: '15 days', - description: `Actually this won't work`, - createTaskRunner() { - return { - async run() { - return { - state: {}, - }; - }, - }; + it('throws a validation exception for invalid timeout on task definition', () => { + const runsanitize = () => { + const taskDefinitions: TaskDefinitionRegistry = { + some_kind_of_task: { + title: 'Test XYZ', + timeout: '15 days', + description: `Actually this won't work`, + createTaskRunner() { + return { + async run() { + return { + state: {}, + }; + }, + }; + }, }, - }, - }; + }; - return sanitizeTaskDefinitions(taskDefinitions); - }; + return sanitizeTaskDefinitions(taskDefinitions); + }; - expect(runsanitize).toThrowErrorMatchingInlineSnapshot( - `"Invalid timeout \\"15 days\\". Timeout must be of the form \\"{number}{cadance}\\" where number is an integer. Example: 5m."` - ); - }); + expect(runsanitize).toThrowErrorMatchingInlineSnapshot( + `"Invalid timeout \\"15 days\\". Timeout must be of the form \\"{number}{cadance}\\" where number is an integer. Example: 5m."` + ); + }); - it('throws a validation exception for invalid floating point timeout on task definition', () => { - const runsanitize = () => { - const taskDefinitions: TaskDefinitionRegistry = { - some_kind_of_task: { - title: 'Test XYZ', - timeout: '1.5h', - description: `Actually this won't work`, - createTaskRunner() { - return { - async run() { - return { - state: {}, - }; - }, - }; + it('throws a validation exception for invalid floating point timeout on task definition', () => { + const runsanitize = () => { + const taskDefinitions: TaskDefinitionRegistry = { + some_kind_of_task: { + title: 'Test XYZ', + timeout: '1.5h', + description: `Actually this won't work`, + createTaskRunner() { + return { + async run() { + return { + state: {}, + }; + }, + }; + }, }, - }, + }; + + return sanitizeTaskDefinitions(taskDefinitions); }; - return sanitizeTaskDefinitions(taskDefinitions); - }; + expect(runsanitize).toThrowErrorMatchingInlineSnapshot( + `"Invalid timeout \\"1.5h\\". Timeout must be of the form \\"{number}{cadance}\\" where number is an integer. Example: 5m."` + ); + }); + + it('throws a validation exception for invalid priority on task definition', () => { + const runsanitize = () => { + const taskDefinitions: TaskDefinitionRegistry = { + some_kind_of_task: { + title: 'Test XYZ', + priority: 23, + description: `Actually this won't work`, + createTaskRunner() { + return { + async run() { + return { + state: {}, + }; + }, + }; + }, + }, + }; + + return sanitizeTaskDefinitions(taskDefinitions); + }; - expect(runsanitize).toThrowErrorMatchingInlineSnapshot( - `"Invalid timeout \\"1.5h\\". Timeout must be of the form \\"{number}{cadance}\\" where number is an integer. Example: 5m."` - ); + expect(runsanitize).toThrowErrorMatchingInlineSnapshot( + `"Invalid priority \\"23\\". Priority must be one of Low => 1,Normal => 50"` + ); + }); }); describe('registerTaskDefinitions', () => { @@ -182,6 +211,44 @@ describe('taskTypeDictionary', () => { expect(definitions.has('foo')).toBe(true); }); + it('uses task priority if specified', () => { + definitions.registerTaskDefinitions({ + foo: { + title: 'foo', + maxConcurrency: 2, + priority: TaskPriority.Low, + createTaskRunner: jest.fn(), + }, + }); + expect(definitions.get('foo')).toEqual({ + createTaskRunner: expect.any(Function), + maxConcurrency: 2, + priority: 1, + timeout: '5m', + title: 'foo', + type: 'foo', + }); + }); + + it('does not register task with invalid priority schema', () => { + definitions.registerTaskDefinitions({ + foo: { + title: 'foo', + maxConcurrency: 2, + priority: 23, + createTaskRunner: jest.fn(), + }, + }); + expect(logger.error).toHaveBeenCalledWith( + `Could not sanitize task definitions: Invalid priority \"23\". Priority must be one of Low => 1,Normal => 50` + ); + expect(() => { + definitions.get('foo'); + }).toThrowErrorMatchingInlineSnapshot( + `"Unsupported task type \\"foo\\". Supported types are "` + ); + }); + it('throws error when registering duplicate task type', () => { definitions.registerTaskDefinitions({ foo: { diff --git a/x-pack/plugins/task_manager/server/task_type_dictionary.ts b/x-pack/plugins/task_manager/server/task_type_dictionary.ts index 84df658f36179..a29504f04f303 100644 --- a/x-pack/plugins/task_manager/server/task_type_dictionary.ts +++ b/x-pack/plugins/task_manager/server/task_type_dictionary.ts @@ -7,7 +7,7 @@ import { ObjectType } from '@kbn/config-schema'; import { Logger } from '@kbn/core/server'; -import { TaskDefinition, taskDefinitionSchema, TaskRunCreatorFunction } from './task'; +import { TaskDefinition, taskDefinitionSchema, TaskRunCreatorFunction, TaskPriority } from './task'; import { CONCURRENCY_ALLOW_LIST_BY_TASK_TYPE } from './constants'; /** @@ -44,6 +44,12 @@ export interface TaskRegisterDefinition { * the task will be re-attempted. */ timeout?: string; + /** + * An optional definition of task priority. Tasks will be sorted by priority prior to claiming + * so high priority tasks will always be claimed before normal priority, which will always be + * claimed before low priority + */ + priority?: TaskPriority; /** * An optional more detailed description of what this task does. */ diff --git a/x-pack/plugins/task_manager/server/task_validator.test.ts b/x-pack/plugins/task_manager/server/task_validator.test.ts index 52822adf6f49f..01eb7097d15c2 100644 --- a/x-pack/plugins/task_manager/server/task_validator.test.ts +++ b/x-pack/plugins/task_manager/server/task_validator.test.ts @@ -322,6 +322,49 @@ describe('TaskValidator', () => { expect(result).toEqual(task); }); + it(`should return the task with timeoutOverride as-is whenever schedule is not defined and override is valid`, () => { + const definitions = new TaskTypeDictionary(mockLogger()); + const taskValidator = new TaskValidator({ + logger: mockLogger(), + definitions, + allowReadingInvalidState: false, + }); + const task = taskManagerMock.createTask({ timeoutOverride: '1s' }); + const result = taskValidator.getValidatedTaskInstanceForUpdating(task); + expect(result).toEqual(task); + }); + + it(`should return the task with timeoutOverride stripped whenever schedule and override are defined`, () => { + const definitions = new TaskTypeDictionary(mockLogger()); + const taskValidator = new TaskValidator({ + logger: mockLogger(), + definitions, + allowReadingInvalidState: false, + }); + const task = taskManagerMock.createTask({ + schedule: { interval: '1d' }, + timeoutOverride: '1s', + }); + const { timeoutOverride, ...taskWithoutOverride } = task; + const result = taskValidator.getValidatedTaskInstanceForUpdating(task); + expect(result).toEqual(taskWithoutOverride); + }); + + it(`should return the task with timeoutOverride stripped whenever override is invalid`, () => { + const definitions = new TaskTypeDictionary(mockLogger()); + const taskValidator = new TaskValidator({ + logger: mockLogger(), + definitions, + allowReadingInvalidState: false, + }); + const task = taskManagerMock.createTask({ + timeoutOverride: 'foo', + }); + const { timeoutOverride, ...taskWithoutOverride } = task; + const result = taskValidator.getValidatedTaskInstanceForUpdating(task); + expect(result).toEqual(taskWithoutOverride); + }); + // TODO: Remove skip once all task types have defined their state schema. // https://github.com/elastic/kibana/issues/159347 it.skip(`should fail to validate the state schema when the task type doesn't have stateSchemaByVersion defined`, () => { @@ -394,4 +437,74 @@ describe('TaskValidator', () => { ).toThrowErrorMatchingInlineSnapshot(`"[bar]: definition for this key is missing"`); }); }); + + describe('validateTimeoutOverride()', () => { + it(`should validate when specifying a valid timeout override field with no schedule`, () => { + const definitions = new TaskTypeDictionary(mockLogger()); + const taskValidator = new TaskValidator({ + logger: mockLogger(), + definitions, + allowReadingInvalidState: false, + }); + const task = taskManagerMock.createTask({ + timeoutOverride: '1s', + state: { foo: 'foo' }, + }); + expect(taskValidator.validateTimeoutOverride(task)).toEqual(task); + }); + + it(`should validate when specifying a schedule and no timeout override`, () => { + const definitions = new TaskTypeDictionary(mockLogger()); + const taskValidator = new TaskValidator({ + logger: mockLogger(), + definitions, + allowReadingInvalidState: false, + }); + const task = taskManagerMock.createTask({ + schedule: { interval: '1d' }, + state: { foo: 'foo' }, + }); + expect(taskValidator.validateTimeoutOverride(task)).toEqual(task); + }); + + it(`should fail to validate when specifying a valid timeout override field and recurring schedule`, () => { + const definitions = new TaskTypeDictionary(mockLogger()); + const logger = mockLogger(); + const taskValidator = new TaskValidator({ + logger, + definitions, + allowReadingInvalidState: false, + }); + const task = taskManagerMock.createTask({ + timeoutOverride: '1s', + schedule: { interval: '1d' }, + state: { foo: 'foo' }, + }); + + const { timeoutOverride, ...taskWithoutOverride } = task; + expect(taskValidator.validateTimeoutOverride(task)).toEqual(taskWithoutOverride); + expect(logger.warn).toHaveBeenCalledWith( + `[TaskValidator] cannot specify timeout override 1s when scheduling a recurring task` + ); + }); + + it(`should fail to validate when specifying an invalid timeout override field`, () => { + const definitions = new TaskTypeDictionary(mockLogger()); + const logger = mockLogger(); + const taskValidator = new TaskValidator({ + logger, + definitions, + allowReadingInvalidState: false, + }); + const task = taskManagerMock.createTask({ + timeoutOverride: 'foo', + state: { foo: 'foo' }, + }); + const { timeoutOverride, ...taskWithoutOverride } = task; + expect(taskValidator.validateTimeoutOverride(task)).toEqual(taskWithoutOverride); + expect(logger.warn).toHaveBeenCalledWith( + `[TaskValidator] Invalid timeout override "foo". Timeout must be of the form "{number}{cadence}" where number is an integer. Example: 5m. This timeout override will be ignored.` + ); + }); + }); }); diff --git a/x-pack/plugins/task_manager/server/task_validator.ts b/x-pack/plugins/task_manager/server/task_validator.ts index 61d9a903dd5b4..ddc7304e4e31e 100644 --- a/x-pack/plugins/task_manager/server/task_validator.ts +++ b/x-pack/plugins/task_manager/server/task_validator.ts @@ -5,11 +5,13 @@ * 2.0. */ -import { max, memoize } from 'lodash'; +import { max, memoize, omit } from 'lodash'; import type { Logger } from '@kbn/core/server'; import type { ObjectType } from '@kbn/config-schema'; import { TaskTypeDictionary } from './task_type_dictionary'; import type { TaskInstance, ConcreteTaskInstance, TaskDefinition } from './task'; +import { isInterval, parseIntervalAsMillisecond } from './lib/intervals'; +import { isErr, tryAsResult } from './lib/result_type'; interface TaskValidatorOpts { allowReadingInvalidState: boolean; @@ -98,34 +100,67 @@ export class TaskValidator { task: T, options: { validate: boolean } = { validate: true } ): T { + const taskWithValidatedTimeout = this.validateTimeoutOverride(task); + if (!options.validate) { - return task; + return taskWithValidatedTimeout; } // In the scenario the task is unused / deprecated and Kibana needs to manipulate the task, // we'll do a pass-through for those - if (!this.definitions.has(task.taskType)) { - return task; + if (!this.definitions.has(taskWithValidatedTimeout.taskType)) { + return taskWithValidatedTimeout; } - const taskTypeDef = this.definitions.get(task.taskType); + const taskTypeDef = this.definitions.get(taskWithValidatedTimeout.taskType); const latestStateSchema = this.cachedGetLatestStateSchema(taskTypeDef); // TODO: Remove once all task types have defined their state schema. // https://github.com/elastic/kibana/issues/159347 // Otherwise, failures on read / write would occur. (don't forget to unskip test) if (!latestStateSchema) { - return task; + return taskWithValidatedTimeout; } // We are doing a write operation which must validate against the latest state schema return { - ...task, - state: this.getValidatedStateSchema(task.state, task.taskType, latestStateSchema, 'forbid'), + ...taskWithValidatedTimeout, + state: this.getValidatedStateSchema( + taskWithValidatedTimeout.state, + taskWithValidatedTimeout.taskType, + latestStateSchema, + 'forbid' + ), stateVersion: latestStateSchema?.version, }; } + public validateTimeoutOverride(task: T): T { + if (task.timeoutOverride) { + if ( + !isInterval(task.timeoutOverride) || + isErr(tryAsResult(() => parseIntervalAsMillisecond(task.timeoutOverride!))) + ) { + this.logger.warn( + `[TaskValidator] Invalid timeout override "${task.timeoutOverride}". Timeout must be of the form "{number}{cadence}" where number is an integer. Example: 5m. This timeout override will be ignored.` + ); + + return omit(task, 'timeoutOverride') as T; + } + } + + // Only allow timeoutOverride if schedule is not defined + if (!!task.timeoutOverride && !!task.schedule) { + this.logger.warn( + `[TaskValidator] cannot specify timeout override ${task.timeoutOverride} when scheduling a recurring task` + ); + + return omit(task, 'timeoutOverride') as T; + } + + return task; + } + private migrateTaskState( state: ConcreteTaskInstance['state'], currentVersion: number | undefined, diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts b/x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts new file mode 100644 index 0000000000000..914bb685cd5f2 --- /dev/null +++ b/x-pack/plugins/timelines/common/api/search_strategy/timeline/eql.test.ts @@ -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 { timelineEqlRequestOptionsSchema } from './eql'; +import { mockBaseTimelineRequest } from './mocks/base_timeline_request'; + +const mockEqlRequestOptions = { + ...mockBaseTimelineRequest, + filterQuery: 'sequence\n[any where true]\n[any where true]', + eventCategoryField: 'event.category', + tiebreakerField: '', + fieldRequested: [ + '@timestamp', + 'message', + 'event.category', + 'event.action', + 'host.name', + 'source.ip', + 'destination.ip', + 'user.name', + '@timestamp', + 'kibana.alert.workflow_status', + 'kibana.alert.workflow_tags', + 'kibana.alert.workflow_assignee_ids', + 'kibana.alert.group.id', + 'kibana.alert.original_time', + 'kibana.alert.building_block_type', + 'kibana.alert.rule.from', + 'kibana.alert.rule.name', + 'kibana.alert.rule.to', + 'kibana.alert.rule.uuid', + 'kibana.alert.rule.rule_id', + 'kibana.alert.rule.type', + 'kibana.alert.suppression.docs_count', + 'kibana.alert.original_event.kind', + 'kibana.alert.original_event.module', + 'file.path', + 'file.Ext.code_signature.subject_name', + 'file.Ext.code_signature.trusted', + 'file.hash.sha256', + 'host.os.family', + 'event.code', + 'process.entry_leader.entity_id', + ], + language: 'eql', + pagination: { + activePage: 0, + querySize: 25, + }, + runtimeMappings: {}, + size: 100, + sort: [ + { + direction: 'asc', + esTypes: ['date'], + field: '@timestamp', + type: 'date', + }, + ], + timerange: { + from: '2018-02-12T20:39:22.229Z', + interval: '12h', + to: '2024-02-13T20:39:22.229Z', + }, + timestampField: '@timestamp', +}; + +describe('timelineEqlRequestOptionsSchema', () => { + it('should correctly parse the last eql request object without unknown fields', () => { + expect(timelineEqlRequestOptionsSchema.parse(mockEqlRequestOptions)).toEqual( + mockEqlRequestOptions + ); + }); + + it('should correctly parse the last eql request object and remove unknown fields', () => { + const invalidEqlRequest = { + ...mockEqlRequestOptions, + unknownField: 'should-be-removed', + }; + expect(timelineEqlRequestOptionsSchema.parse(invalidEqlRequest)).toEqual(mockEqlRequestOptions); + }); + + it('should correctly error if an incorrect field type is provided for a schema key', () => { + const invalidEqlRequest = { + ...mockEqlRequestOptions, + fieldRequested: 123, + }; + + expect(() => { + timelineEqlRequestOptionsSchema.parse(invalidEqlRequest); + }).toThrowErrorMatchingInlineSnapshot(` + "[ + { + \\"code\\": \\"invalid_type\\", + \\"expected\\": \\"array\\", + \\"received\\": \\"number\\", + \\"path\\": [ + \\"fieldRequested\\" + ], + \\"message\\": \\"Expected array, received number\\" + } + ]" + `); + }); +}); diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts b/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts new file mode 100644 index 0000000000000..1c69e529c66f7 --- /dev/null +++ b/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_all.test.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { timelineEventsAllSchema } from './events_all'; +import { mockBaseTimelineRequest } from './mocks/base_timeline_request'; + +const mockEventsAllRequest = { + ...mockBaseTimelineRequest, + factoryQueryType: 'eventsAll', + excludeEcsData: false, + pagination: { activePage: 0, querySize: 25 }, + fieldRequested: [ + '@timestamp', + '_index', + 'message', + 'host.name', + 'event.module', + 'agent.type', + 'event.dataset', + 'event.action', + 'user.name', + 'source.ip', + 'destination.ip', + ], + sort: [ + { + field: '@timestamp', + type: 'date', + direction: 'desc', + esTypes: [], + }, + ], + fields: [], + language: 'kuery', +}; + +describe('timelineEventsAllSchema', () => { + it('should correctly parse the events request object', () => { + expect(timelineEventsAllSchema.parse(mockEventsAllRequest)).toEqual(mockEventsAllRequest); + }); + + it('should correctly parse the events request object and remove unknown fields', () => { + const invalidEventsRequest = { + ...mockEventsAllRequest, + unknownField: 'shouldBeRemoved', + }; + expect(timelineEventsAllSchema.parse(invalidEventsRequest)).toEqual(mockEventsAllRequest); + }); + + it('should correctly error if an incorrect field type is provided for a schema key', () => { + const invalidEventsRequest = { + ...mockEventsAllRequest, + excludeEcsData: 'notABoolean', + }; + + expect(() => { + timelineEventsAllSchema.parse(invalidEventsRequest); + }).toThrowErrorMatchingInlineSnapshot(` + "[ + { + \\"code\\": \\"invalid_type\\", + \\"expected\\": \\"boolean\\", + \\"received\\": \\"string\\", + \\"path\\": [ + \\"excludeEcsData\\" + ], + \\"message\\": \\"Expected boolean, received string\\" + } + ]" + `); + }); +}); diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts b/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts new file mode 100644 index 0000000000000..57adc28cf8434 --- /dev/null +++ b/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_details.test.ts @@ -0,0 +1,55 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { timelineEventsDetailsSchema } from './events_details'; + +const mockEventsDetails = { + entityType: 'events', + indexName: 'test-large-index', + eventId: 'enfXnY0Byt9Ce9tO1aWh', + factoryQueryType: 'eventsDetails', + runtimeMappings: {}, +}; + +describe('timelineEventsDetailsSchema', () => { + it('should correctly parse the event details request schema', () => { + expect(timelineEventsDetailsSchema.parse(mockEventsDetails)).toEqual(mockEventsDetails); + }); + + it('should correctly parse the event details request schema and remove unknown fields', () => { + const invalidEventsDetailsRequest = { + ...mockEventsDetails, + unknownField: 'should-be-removed', + }; + expect(timelineEventsDetailsSchema.parse(invalidEventsDetailsRequest)).toEqual( + mockEventsDetails + ); + }); + + it('should correctly error if an incorrect field type is provided for a schema key', () => { + const invalidEventsDetailsRequest = { + ...mockEventsDetails, + indexName: 123, + }; + + expect(() => { + timelineEventsDetailsSchema.parse(invalidEventsDetailsRequest); + }).toThrowErrorMatchingInlineSnapshot(` + "[ + { + \\"code\\": \\"invalid_type\\", + \\"expected\\": \\"string\\", + \\"received\\": \\"number\\", + \\"path\\": [ + \\"indexName\\" + ], + \\"message\\": \\"Expected string, received number\\" + } + ]" + `); + }); +}); diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts b/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts new file mode 100644 index 0000000000000..1ccacb265416e --- /dev/null +++ b/x-pack/plugins/timelines/common/api/search_strategy/timeline/events_last_event_time.test.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { timelineEventsLastEventTimeRequestSchema } from './events_last_event_time'; +import { mockBaseTimelineRequest } from './mocks/base_timeline_request'; + +const mockEventsLastEventTimeRequest = { + ...mockBaseTimelineRequest, + // Remove fields that are omitted in the schema + runtimeMappings: undefined, + filterQuery: undefined, + timerange: undefined, + // Add eventsLastEventTime specific fields + factoryQueryType: 'eventsLastEventTime', + indexKey: 'hosts', + details: {}, +}; + +describe('timelineEventsLastEventTimeRequestSchema', () => { + it('should correctly parse the last event time request object without unknown fields', () => { + expect(timelineEventsLastEventTimeRequestSchema.parse(mockEventsLastEventTimeRequest)).toEqual( + mockEventsLastEventTimeRequest + ); + }); + + it('should correctly parse the last event time request object and remove unknown fields', () => { + const invalidEventsDetailsRequest = { + ...mockEventsLastEventTimeRequest, + unknownField: 'should-be-removed', + }; + expect(timelineEventsLastEventTimeRequestSchema.parse(invalidEventsDetailsRequest)).toEqual( + mockEventsLastEventTimeRequest + ); + }); + + it('should correctly error if an incorrect field type is provided for a schema key', () => { + const invalidEventsDetailsRequest = { + ...mockEventsLastEventTimeRequest, + indexKey: 'unknown-key', + }; + + expect(() => { + timelineEventsLastEventTimeRequestSchema.parse(invalidEventsDetailsRequest); + }).toThrowErrorMatchingInlineSnapshot(` + "[ + { + \\"received\\": \\"unknown-key\\", + \\"code\\": \\"invalid_enum_value\\", + \\"options\\": [ + \\"hostDetails\\", + \\"hosts\\", + \\"users\\", + \\"userDetails\\", + \\"ipDetails\\", + \\"network\\" + ], + \\"path\\": [ + \\"indexKey\\" + ], + \\"message\\": \\"Invalid enum value. Expected 'hostDetails' | 'hosts' | 'users' | 'userDetails' | 'ipDetails' | 'network', received 'unknown-key'\\" + } + ]" + `); + }); +}); diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts b/x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts new file mode 100644 index 0000000000000..ade3b954e9210 --- /dev/null +++ b/x-pack/plugins/timelines/common/api/search_strategy/timeline/kpi.test.ts @@ -0,0 +1,51 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { timelineKpiRequestOptionsSchema } from './kpi'; +import { mockBaseTimelineRequest } from './mocks/base_timeline_request'; + +const mockKpiRequest = { + ...mockBaseTimelineRequest, + factoryQueryType: 'eventsKpi', +}; + +describe('timelineKpiRequestOptionsSchema', () => { + it('should correctly parse the events kpi request object', () => { + expect(timelineKpiRequestOptionsSchema.parse(mockKpiRequest)).toEqual(mockKpiRequest); + }); + + it('should correctly parse the events kpi request object and remove unknown fields', () => { + const invalidKpiRequest = { + ...mockKpiRequest, + unknownField: 'shouldBeRemoved', + }; + expect(timelineKpiRequestOptionsSchema.parse(invalidKpiRequest)).toEqual(mockKpiRequest); + }); + + it('should correctly error if an incorrect field type is provided for a schema key', () => { + const invalidKpiRequest = { + ...mockKpiRequest, + factoryQueryType: 'someOtherType', + }; + + expect(() => { + timelineKpiRequestOptionsSchema.parse(invalidKpiRequest); + }).toThrowErrorMatchingInlineSnapshot(` + "[ + { + \\"received\\": \\"someOtherType\\", + \\"code\\": \\"invalid_literal\\", + \\"expected\\": \\"eventsKpi\\", + \\"path\\": [ + \\"factoryQueryType\\" + ], + \\"message\\": \\"Invalid literal value, expected \\\\\\"eventsKpi\\\\\\"\\" + } + ]" + `); + }); +}); diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts b/x-pack/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts new file mode 100644 index 0000000000000..c1ab5fc35b641 --- /dev/null +++ b/x-pack/plugins/timelines/common/api/search_strategy/timeline/mocks/base_timeline_request.ts @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const mockBaseTimelineRequest = { + id: 'Fnh1dVQ4SDRTUldtRXpUcDEwZXliWHcdZXdlWVBFWkVSWHVIdzY4a19JbFRvUTozMzgzNzk=', + defaultIndex: ['*-large-index'], + filterQuery: + '{"bool":{"must":[],"filter":[{"bool":{"should":[{"exists":{"field":"host.name"}}],"minimum_should_match":1}},{"range":{"@timestamp":{"gte":"2019-02-13T15:39:10.392Z","lt":"2024-02-14T04:59:59.999Z","format":"strict_date_optional_time"}}}],"should":[],"must_not":[]}}', + runtimeMappings: {}, + timerange: { + interval: '12h', + from: '2019-02-13T15:39:10.392Z', + to: '2024-02-14T04:59:59.999Z', + }, + entityType: 'events', +}; diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts b/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts new file mode 100644 index 0000000000000..2a6b4c59f95e6 --- /dev/null +++ b/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.test.ts @@ -0,0 +1,53 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { timelineRequestBasicOptionsSchema } from './request_basic'; +import { mockBaseTimelineRequest } from './mocks/base_timeline_request'; + +describe('timelineRequestBasicOptionsSchema', () => { + it('should correctly parse the base timeline request object', () => { + expect(timelineRequestBasicOptionsSchema.parse(mockBaseTimelineRequest)).toEqual( + mockBaseTimelineRequest + ); + }); + + it('should correctly parse the base timeline request object and remove unknown fields', () => { + const invalidBaseTimelineRequest = { + ...mockBaseTimelineRequest, + iAmNotAllowed: 'butWhy?', + }; + expect(timelineRequestBasicOptionsSchema.parse(invalidBaseTimelineRequest)).toEqual( + mockBaseTimelineRequest + ); + }); + + it('should correctly error if an incorrect field type is provided for a schema key', () => { + const invalidBaseTimelineRequest = { + ...mockBaseTimelineRequest, + entityType: 'notAValidEntityType', + }; + + expect(() => { + timelineRequestBasicOptionsSchema.parse(invalidBaseTimelineRequest); + }).toThrowErrorMatchingInlineSnapshot(` + "[ + { + \\"received\\": \\"notAValidEntityType\\", + \\"code\\": \\"invalid_enum_value\\", + \\"options\\": [ + \\"events\\", + \\"sessions\\" + ], + \\"path\\": [ + \\"entityType\\" + ], + \\"message\\": \\"Invalid enum value. Expected 'events' | 'sessions', received 'notAValidEntityType'\\" + } + ]" + `); + }); +}); diff --git a/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts b/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts index 5e8ea1caaa0fb..c9c3145833572 100644 --- a/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts +++ b/x-pack/plugins/timelines/common/api/search_strategy/timeline/request_basic.ts @@ -12,6 +12,7 @@ import { timerange } from '../model/timerange'; export const timelineRequestBasicOptionsSchema = z.object({ indexType: z.string().optional(), + id: z.string().optional(), timerange: timerange.optional(), filterQuery, defaultIndex: z.array(z.string()).optional(), diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index c0b43ad512382..05aff9e3894de 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -29666,7 +29666,6 @@ "xpack.remoteClusters.detailPanel.deprecatedSettingsMessage": "{editLink} pour mettre à jour les paramètres.", "xpack.remoteClusters.editAction.failedDefaultErrorMessage": "La requête a échoué avec une erreur {statusCode}. {message}", "xpack.remoteClusters.form.errors.illegalCharacters": "Supprimez {characterListLength, plural, one {le caractère} many {les caractères} other {les caractères}} {characterList} du nom.", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelp.stepOneText": "Ouvrez le {deploymentsLink}, sélectionnez le déploiement distant et copiez l'URL de point de terminaison {elasticsearch}.", "xpack.remoteClusters.remoteClusterForm.fieldSeedsHelpText": "Adresse IP ou nom d'hôte, suivi du {transportPort} du cluster distant. Spécifiez les différents nœuds initiaux afin que la découverte n'échoue pas si un nœud n'est pas disponible.", "xpack.remoteClusters.remoteClusterForm.fieldServerNameHelpText": "Chaîne envoyée dans le champ server_name de l'extension d'indication de nom du serveur TLS si TLS est activé. {learnMoreLink}", "xpack.remoteClusters.remoteClusterForm.nextButtonLabel": "{isEditMode, select, true {Enregistrer} other {Suivant}}", @@ -29684,8 +29683,6 @@ "xpack.remoteClusters.addTitle": "Ajouter un cluster distant", "xpack.remoteClusters.appName": "Clusters distants", "xpack.remoteClusters.appTitle": "Clusters distants", - "xpack.remoteClusters.cloudDeploymentForm.urlInvalidError": "L'URL n'est pas valide", - "xpack.remoteClusters.cloudDeploymentForm.urlRequiredError": "Une URL est requise.", "xpack.remoteClusters.clusterWizard.addConnectionInfoLabel": "Ajouter des informations de connexion", "xpack.remoteClusters.clusterWizard.setupTrustLabel": "Établir la confiance", "xpack.remoteClusters.clusterWizard.trustStep.backButtonLabel": "Retour", @@ -29749,19 +29746,13 @@ "xpack.remoteClusters.form.errors.illegalSpace": "Les espaces ne sont pas autorisés dans le nom.", "xpack.remoteClusters.form.errors.nameMissing": "Le nom est requis.", "xpack.remoteClusters.form.errors.seedMissing": "Au moins un nœud initial est requis.", - "xpack.remoteClusters.form.errors.serverNameMissing": "Un nom de serveur est requis.", "xpack.remoteClusters.licenseCheckErrorMessage": "La vérification de la licence a échoué", "xpack.remoteClusters.listBreadcrumbTitle": "Clusters distants", "xpack.remoteClusters.readDocsButtonLabel": "Documents du cluster distant", "xpack.remoteClusters.refreshAction.errorTitle": "Erreur lors de l'actualisation des clusters distants", "xpack.remoteClusters.remoteClusterForm.addressError.invalidPortMessage": "Un port est requis.", "xpack.remoteClusters.remoteClusterForm.cancelButtonLabel": "Annuler", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelp.buttonLabel": "Besoin d'aide ?", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelp.popoverTitle": "Comment trouver votre URL de point de terminaison Elasticsearch", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelpModal.deploymentsLink": "page des déploiements", "xpack.remoteClusters.remoteClusterForm.errorTitle": "Il vous faut inspecter certains champs.", - "xpack.remoteClusters.remoteClusterForm.fieldCloudUrlHelpText": "Les valeurs de protocole (https://) et de port sont facultatives.", - "xpack.remoteClusters.remoteClusterForm.fieldCloudUrlLabel": "URL de point de terminaison Elasticsearch", "xpack.remoteClusters.remoteClusterForm.fieldModeLabel": "Utiliser le mode proxy", "xpack.remoteClusters.remoteClusterForm.fieldNameLabel": "Nom", "xpack.remoteClusters.remoteClusterForm.fieldNameLabelHelpText": "Doit contenir uniquement des lettres, chiffres, traits de soulignement et tirets.", @@ -29775,18 +29766,14 @@ "xpack.remoteClusters.remoteClusterForm.fieldSeedsPlaceholder": "host:port", "xpack.remoteClusters.remoteClusterForm.fieldServerNameHelpText.learnMoreLinkLabel": "En savoir plus.", "xpack.remoteClusters.remoteClusterForm.fieldServerNameOptionalLabel": "Nom du serveur (facultatif)", - "xpack.remoteClusters.remoteClusterForm.fieldServerNameRequiredLabel": "Nom du serveur", "xpack.remoteClusters.remoteClusterForm.fieldSocketConnectionsHelpText": "Nombre de connexions à ouvrir par cluster distant.", "xpack.remoteClusters.remoteClusterForm.hideRequestButtonLabel": "Masquer la requête", - "xpack.remoteClusters.remoteClusterForm.inputcloudUrlErrorMessage": "Le champ \"URL de point de terminaison Elasticsearch\" n'est pas valide.", "xpack.remoteClusters.remoteClusterForm.inputNameErrorMessage": "Le champ \"Nom\" n'est pas valide.", "xpack.remoteClusters.remoteClusterForm.inputProxyErrorMessage": "Le champ \"Adresse proxy\" n'est pas valide.", "xpack.remoteClusters.remoteClusterForm.inputSeedsErrorMessage": "Le champ \"Nœuds initiaux\" n'est pas valide.", - "xpack.remoteClusters.remoteClusterForm.inputServerNameErrorMessage": "Le champ \"Nom du serveur\" n'est pas valide.", "xpack.remoteClusters.remoteClusterForm.localSeedError.duplicateMessage": "Les nœuds initiaux en double ne sont pas autorisés.\"", "xpack.remoteClusters.remoteClusterForm.localSeedError.invalidCharactersMessage": "Le nœud initial doit utiliser le format host:port. Exemple : 127.0.0.1:9400, localhost:9400. Les hôtes ne peuvent comprendre que des lettres, des chiffres et des tirets.", "xpack.remoteClusters.remoteClusterForm.localSeedError.invalidPortMessage": "Un port est requis.", - "xpack.remoteClusters.remoteClusterForm.manualModeFieldLabel": "Entrer manuellement l'adresse proxy et le nom du serveur", "xpack.remoteClusters.remoteClusterForm.proxyError.invalidCharactersMessage": "L'adresse doit utiliser le format host:port. Exemple : 127.0.0.1:9400, localhost:9400. Les hôtes ne peuvent comprendre que des lettres, des chiffres et des tirets.", "xpack.remoteClusters.remoteClusterForm.proxyError.missingProxyMessage": "Une adresse proxy est requise.", "xpack.remoteClusters.remoteClusterForm.sectionModeCloudDescription": "Configurez automatiquement le cluster distant à l'aide de l'URL de point de terminaison Elasticsearch du déploiement distant ou entrez l'adresse proxy et le nom du serveur manuellement.", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index de53645abf2c9..ae652805fe475 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -29667,7 +29667,6 @@ "xpack.remoteClusters.detailPanel.deprecatedSettingsMessage": "設定を更新するための{editLink}。", "xpack.remoteClusters.editAction.failedDefaultErrorMessage": "{statusCode}エラーでリクエストが失敗しました。{message}", "xpack.remoteClusters.form.errors.illegalCharacters": "名前から{characterListLength, plural, other {文字}}{characterList}を削除します。", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelp.stepOneText": "{deploymentsLink}を開き、リモート配置を選択し、{elasticsearch}のエンドポイントURLをコピーします。", "xpack.remoteClusters.remoteClusterForm.fieldSeedsHelpText": "リモートクラスターの{transportPort}の前にくるIPアドレスまたはホスト名です。ノードが利用不能な場合に発見が失敗しないように複数のシードノードを指定します。", "xpack.remoteClusters.remoteClusterForm.fieldServerNameHelpText": "TLSが有効な場合にTLSサーバー名表示拡張のserver_nameフィールドで送信される文字列。{learnMoreLink}", "xpack.remoteClusters.remoteClusterForm.nextButtonLabel": "{isEditMode, select, true {保存} other {次へ}}", @@ -29685,8 +29684,6 @@ "xpack.remoteClusters.addTitle": "リモートクラスターを追加", "xpack.remoteClusters.appName": "リモートクラスター", "xpack.remoteClusters.appTitle": "リモートクラスター", - "xpack.remoteClusters.cloudDeploymentForm.urlInvalidError": "URLが無効です", - "xpack.remoteClusters.cloudDeploymentForm.urlRequiredError": "URLは必須です。", "xpack.remoteClusters.clusterWizard.addConnectionInfoLabel": "接続情報を追加", "xpack.remoteClusters.clusterWizard.setupTrustLabel": "信頼を確立", "xpack.remoteClusters.clusterWizard.trustStep.backButtonLabel": "戻る", @@ -29750,19 +29747,13 @@ "xpack.remoteClusters.form.errors.illegalSpace": "名前にスペースは使用できません。", "xpack.remoteClusters.form.errors.nameMissing": "名前が必要です。", "xpack.remoteClusters.form.errors.seedMissing": "シードノードが最低 1 つ必要です。", - "xpack.remoteClusters.form.errors.serverNameMissing": "サーバー名が必要です。", "xpack.remoteClusters.licenseCheckErrorMessage": "ライセンス確認失敗", "xpack.remoteClusters.listBreadcrumbTitle": "リモートクラスター", "xpack.remoteClusters.readDocsButtonLabel": "リモートクラスタードキュメント", "xpack.remoteClusters.refreshAction.errorTitle": "リモートクラスターの更新中にエラーが発生", "xpack.remoteClusters.remoteClusterForm.addressError.invalidPortMessage": "ポートが必要です。", "xpack.remoteClusters.remoteClusterForm.cancelButtonLabel": "キャンセル", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelp.buttonLabel": "ヘルプが必要な場合", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelp.popoverTitle": "ElasticsearchエンドポイントURLを見つける方法", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelpModal.deploymentsLink": "デプロイページ", "xpack.remoteClusters.remoteClusterForm.errorTitle": "一部のフィールドでは注意が必要です。", - "xpack.remoteClusters.remoteClusterForm.fieldCloudUrlHelpText": "プロトコル(https://)とポート値は任意です。", - "xpack.remoteClusters.remoteClusterForm.fieldCloudUrlLabel": "ElasticsearchエンドポイントURL", "xpack.remoteClusters.remoteClusterForm.fieldModeLabel": "プロキシモードを使用", "xpack.remoteClusters.remoteClusterForm.fieldNameLabel": "名前", "xpack.remoteClusters.remoteClusterForm.fieldNameLabelHelpText": "文字、数字、アンダースコア、ハイフンのみ使用できます。", @@ -29776,18 +29767,14 @@ "xpack.remoteClusters.remoteClusterForm.fieldSeedsPlaceholder": "ホスト:ポート", "xpack.remoteClusters.remoteClusterForm.fieldServerNameHelpText.learnMoreLinkLabel": "詳細情報", "xpack.remoteClusters.remoteClusterForm.fieldServerNameOptionalLabel": "サーバー名(任意)", - "xpack.remoteClusters.remoteClusterForm.fieldServerNameRequiredLabel": "サーバー名", "xpack.remoteClusters.remoteClusterForm.fieldSocketConnectionsHelpText": "リモートクラスターごとに開く接続の数。", "xpack.remoteClusters.remoteClusterForm.hideRequestButtonLabel": "リクエストを非表示", - "xpack.remoteClusters.remoteClusterForm.inputcloudUrlErrorMessage": "「ElasticsearchエンドポイントURL」フィールドが無効です。", "xpack.remoteClusters.remoteClusterForm.inputNameErrorMessage": "「名前」フィールドが無効です。", "xpack.remoteClusters.remoteClusterForm.inputProxyErrorMessage": "「プロキシアドレス」フィールドが無効です。", "xpack.remoteClusters.remoteClusterForm.inputSeedsErrorMessage": "「シードノード」フィールドが無効です。", - "xpack.remoteClusters.remoteClusterForm.inputServerNameErrorMessage": "「サーバー名」フィールドが無効です。", "xpack.remoteClusters.remoteClusterForm.localSeedError.duplicateMessage": "重複シードノードは使用できません。`", "xpack.remoteClusters.remoteClusterForm.localSeedError.invalidCharactersMessage": "シードノードはホストポートのフォーマットを使用する必要があります。例:127.0.0.1:9400、localhost:9400ホストには文字、数字、ハイフンのみが使用できます。", "xpack.remoteClusters.remoteClusterForm.localSeedError.invalidPortMessage": "ポートが必要です。", - "xpack.remoteClusters.remoteClusterForm.manualModeFieldLabel": "手動でプロキシアドレスとサーバー名を入力", "xpack.remoteClusters.remoteClusterForm.proxyError.invalidCharactersMessage": "アドレスはホスト:ポートの形式にする必要があります。例:127.0.0.1:9400、localhost:9400ホストには文字、数字、ハイフンのみが使用できます。", "xpack.remoteClusters.remoteClusterForm.proxyError.missingProxyMessage": "プロキシアドレスが必要です。", "xpack.remoteClusters.remoteClusterForm.sectionModeCloudDescription": "リモートデプロイのElasticsearchエンドポイントURLを使用して、リモートクラスターを自動的に構成するか、プロキシアドレスとサーバー名を手動で入力します。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index d155530f9d158..f51c0039ff8c9 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -29651,7 +29651,6 @@ "xpack.remoteClusters.detailPanel.deprecatedSettingsMessage": "{editLink}以更新设置。", "xpack.remoteClusters.editAction.failedDefaultErrorMessage": "请求失败,显示 {statusCode} 错误。{message}", "xpack.remoteClusters.form.errors.illegalCharacters": "从名称中删除{characterListLength, plural, other {字符}} {characterList}。", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelp.stepOneText": "打开 {deploymentsLink},选择远程部署并复制 {elasticsearch} 终端 URL。", "xpack.remoteClusters.remoteClusterForm.fieldSeedsHelpText": "IP 地址或主机名,后跟远程集群的 {transportPort}。指定多个种子节点,以便在节点不可用时发现不会失败。", "xpack.remoteClusters.remoteClusterForm.fieldServerNameHelpText": "启用 TLS 时在 TLS 服务器名称指示扩展的 server_name 字段中发送的字符串。{learnMoreLink}", "xpack.remoteClusters.remoteClusterForm.nextButtonLabel": "{isEditMode, select, true {保存} other {下一步}}", @@ -29669,8 +29668,6 @@ "xpack.remoteClusters.addTitle": "添加远程集群", "xpack.remoteClusters.appName": "远程集群", "xpack.remoteClusters.appTitle": "远程集群", - "xpack.remoteClusters.cloudDeploymentForm.urlInvalidError": "URL 无效", - "xpack.remoteClusters.cloudDeploymentForm.urlRequiredError": "URL 必填。", "xpack.remoteClusters.clusterWizard.addConnectionInfoLabel": "添加连接信息", "xpack.remoteClusters.clusterWizard.setupTrustLabel": "建立信任", "xpack.remoteClusters.clusterWizard.trustStep.backButtonLabel": "返回", @@ -29734,19 +29731,13 @@ "xpack.remoteClusters.form.errors.illegalSpace": "名称中不允许使用空格。", "xpack.remoteClusters.form.errors.nameMissing": "“名称”必填。", "xpack.remoteClusters.form.errors.seedMissing": "至少需要一个种子节点。", - "xpack.remoteClusters.form.errors.serverNameMissing": "服务器名必填。", "xpack.remoteClusters.licenseCheckErrorMessage": "许可证检查失败", "xpack.remoteClusters.listBreadcrumbTitle": "远程集群", "xpack.remoteClusters.readDocsButtonLabel": "远程集群文档", "xpack.remoteClusters.refreshAction.errorTitle": "刷新远程集群时出错", "xpack.remoteClusters.remoteClusterForm.addressError.invalidPortMessage": "端口必填。", "xpack.remoteClusters.remoteClusterForm.cancelButtonLabel": "取消", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelp.buttonLabel": "需要帮助?", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelp.popoverTitle": "如何查找 Elasticsearch 终端 URL", - "xpack.remoteClusters.remoteClusterForm.cloudUrlHelpModal.deploymentsLink": "部署页面", "xpack.remoteClusters.remoteClusterForm.errorTitle": "某些字段需要您的关注。", - "xpack.remoteClusters.remoteClusterForm.fieldCloudUrlHelpText": "协议 (https://) 和端口值可选。", - "xpack.remoteClusters.remoteClusterForm.fieldCloudUrlLabel": "Elasticsearch 终端 URL", "xpack.remoteClusters.remoteClusterForm.fieldModeLabel": "使用代理模式", "xpack.remoteClusters.remoteClusterForm.fieldNameLabel": "名称", "xpack.remoteClusters.remoteClusterForm.fieldNameLabelHelpText": "只能包含字母、数字、下划线和短划线。", @@ -29760,18 +29751,14 @@ "xpack.remoteClusters.remoteClusterForm.fieldSeedsPlaceholder": "host:port", "xpack.remoteClusters.remoteClusterForm.fieldServerNameHelpText.learnMoreLinkLabel": "了解详情。", "xpack.remoteClusters.remoteClusterForm.fieldServerNameOptionalLabel": "服务器名(可选)", - "xpack.remoteClusters.remoteClusterForm.fieldServerNameRequiredLabel": "服务器名", "xpack.remoteClusters.remoteClusterForm.fieldSocketConnectionsHelpText": "每个远程集群要打开的连接数目。", "xpack.remoteClusters.remoteClusterForm.hideRequestButtonLabel": "隐藏请求", - "xpack.remoteClusters.remoteClusterForm.inputcloudUrlErrorMessage": "“Elasticsearch 终端 URL”字段无效。", "xpack.remoteClusters.remoteClusterForm.inputNameErrorMessage": "“名称”字段无效。", "xpack.remoteClusters.remoteClusterForm.inputProxyErrorMessage": "“代理地址”字段无效。", "xpack.remoteClusters.remoteClusterForm.inputSeedsErrorMessage": "“种子节点”字段无效。", - "xpack.remoteClusters.remoteClusterForm.inputServerNameErrorMessage": "“服务器名称”字段无效。", "xpack.remoteClusters.remoteClusterForm.localSeedError.duplicateMessage": "不允许重复的种子节点。`", "xpack.remoteClusters.remoteClusterForm.localSeedError.invalidCharactersMessage": "种子节点必须使用 host:port 格式。例如:127.0.0.1:9400、localhost:9400。主机只能由字母、数字和短划线构成。", "xpack.remoteClusters.remoteClusterForm.localSeedError.invalidPortMessage": "端口必填。", - "xpack.remoteClusters.remoteClusterForm.manualModeFieldLabel": "手动输入代理地址和服务器名称", "xpack.remoteClusters.remoteClusterForm.proxyError.invalidCharactersMessage": "地址必须使用 host:port 格式。例如:127.0.0.1:9400、localhost:9400。主机只能由字母、数字和短划线构成。", "xpack.remoteClusters.remoteClusterForm.proxyError.missingProxyMessage": "必须指定代理地址。", "xpack.remoteClusters.remoteClusterForm.sectionModeCloudDescription": "通过使用远程部署的 Elasticsearch 终端 URL 自动配置运程集群或手动输入代理地址和服务器名称。", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_select.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_select.test.tsx index 07bf3516fbdef..1a5e3f278eb5e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_select.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_select.test.tsx @@ -45,8 +45,7 @@ describe('useBulkEditSelectTest', () => { useBulkEditSelect({ items, totalItemCount: 4, - tagsFilter: ['test: 123'], - searchText: 'rules*', + filters: { tags: ['test: 123'], searchText: 'rules*' }, }) ); @@ -58,8 +57,7 @@ describe('useBulkEditSelectTest', () => { useBulkEditSelect({ items, totalItemCount: 4, - tagsFilter: ['test: 123'], - searchText: 'rules*', + filters: { tags: ['test: 123'], searchText: 'rules*' }, }) ); @@ -107,8 +105,7 @@ describe('useBulkEditSelectTest', () => { useBulkEditSelect({ items, totalItemCount: 4, - tagsFilter: ['test: 123'], - searchText: 'rules*', + filters: { tags: ['test: 123'], searchText: 'rules*' }, }) ); @@ -124,8 +121,10 @@ describe('useBulkEditSelectTest', () => { useBulkEditSelect({ items, totalItemCount: 4, - tagsFilter: ['test: 123'], - searchText: 'rules*', + filters: { + tags: ['test: 123'], + searchText: 'rules*', + }, }) ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_select.tsx b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_select.tsx index 84e762cbe93f8..fe70b4fa0e3bc 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_select.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_select.tsx @@ -7,7 +7,7 @@ import { useReducer, useMemo, useCallback } from 'react'; import { fromKueryExpression, nodeBuilder } from '@kbn/es-query'; import { mapFiltersToKueryNode } from '../lib/rule_api/map_filters_to_kuery_node'; -import { RuleTableItem, RuleStatus } from '../../types'; +import { RuleTableItem, RulesListFilters } from '../../types'; interface BulkEditSelectionState { selectedIds: Set; @@ -73,27 +73,11 @@ const reducer = (state: BulkEditSelectionState, action: Action) => { interface UseBulkEditSelectProps { totalItemCount: number; items: RuleTableItem[]; - typesFilter?: string[]; - actionTypesFilter?: string[]; - tagsFilter?: string[]; - ruleExecutionStatusesFilter?: string[]; - ruleLastRunOutcomesFilter?: string[]; - ruleStatusesFilter?: RuleStatus[]; - searchText?: string; + filters?: RulesListFilters; } export function useBulkEditSelect(props: UseBulkEditSelectProps) { - const { - totalItemCount = 0, - items = [], - typesFilter, - actionTypesFilter, - tagsFilter, - ruleExecutionStatusesFilter, - ruleLastRunOutcomesFilter, - ruleStatusesFilter, - searchText, - } = props; + const { totalItemCount = 0, items = [], filters } = props; const [state, dispatch] = useReducer(reducer, { ...initialState, @@ -187,15 +171,20 @@ export function useBulkEditSelect(props: UseBulkEditSelectProps) { const getFilterKueryNode = useCallback( (idsToExclude?: string[]) => { - const ruleFilterKueryNode = mapFiltersToKueryNode({ - typesFilter, - actionTypesFilter, - tagsFilter, - ruleExecutionStatusesFilter, - ruleLastRunOutcomesFilter, - ruleStatusesFilter, - searchText, - }); + const ruleFilterKueryNode = mapFiltersToKueryNode( + filters + ? { + typesFilter: filters.types, + actionTypesFilter: filters.actionTypes, + tagsFilter: filters.tags, + ruleExecutionStatusesFilter: filters.ruleExecutionStatuses, + ruleLastRunOutcomesFilter: filters.ruleLastRunOutcomes, + ruleParamsFilter: filters.ruleParams, + ruleStatusesFilter: filters.ruleStatuses, + searchText: filters.searchText, + } + : {} + ); if (idsToExclude && idsToExclude.length) { const excludeFilter = fromKueryExpression( @@ -209,15 +198,7 @@ export function useBulkEditSelect(props: UseBulkEditSelectProps) { return ruleFilterKueryNode; }, - [ - typesFilter, - actionTypesFilter, - tagsFilter, - ruleExecutionStatusesFilter, - ruleLastRunOutcomesFilter, - ruleStatusesFilter, - searchText, - ] + [filters] ); const getFilter = useCallback(() => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/common_transformations.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/common_transformations.ts index 64949d9014c50..b00b874b079ef 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/common_transformations.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/common_transformations.ts @@ -77,6 +77,7 @@ export const transformRule: RewriteRequestCase = ({ active_snoozes: activeSnoozes, last_run: lastRun, next_run: nextRun, + alert_delay: alertDelay, ...rest }: any) => ({ ruleTypeId, @@ -99,6 +100,7 @@ export const transformRule: RewriteRequestCase = ({ ...(lastRun ? { lastRun: transformLastRun(lastRun) } : {}), ...(nextRun ? { nextRun } : {}), ...(apiKeyCreatedByUser !== undefined ? { apiKeyCreatedByUser } : {}), + ...(alertDelay ? { alertDelay } : {}), ...rest, }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.test.ts index 76e5fd7f09207..b27d9cad0c056 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.test.ts @@ -52,6 +52,9 @@ describe('createRule', () => { execution_status: { status: 'pending', last_execution_date: '2021-04-01T21:33:13.250Z' }, create_at: '2021-04-01T21:33:13.247Z', updated_at: '2021-04-01T21:33:13.247Z', + alert_delay: { + active: 10, + }, }; const ruleToCreate: Omit< RuleUpdates, @@ -96,6 +99,9 @@ describe('createRule', () => { updatedAt: new Date('2021-04-01T21:33:13.247Z'), apiKeyOwner: '', revision: 0, + alertDelay: { + active: 10, + }, }; http.post.mockResolvedValueOnce(resolvedValue); @@ -148,6 +154,9 @@ describe('createRule', () => { tags: [], updatedAt: '2021-04-01T21:33:13.247Z', updatedBy: undefined, + alertDelay: { + active: 10, + }, }); }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.ts index 2304ee8c48930..48fa1783f3c1f 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/create.ts @@ -23,6 +23,7 @@ type RuleCreateBody = Omit< const rewriteBodyRequest: RewriteResponseCase = ({ ruleTypeId, actions, + alertDelay, ...res }): any => ({ ...res, @@ -43,6 +44,7 @@ const rewriteBodyRequest: RewriteResponseCase = ({ : {}), }) ), + ...(alertDelay ? { alert_delay: alertDelay } : {}), }); export async function createRule({ diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/update.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/update.test.ts index 8b3ebc3f96e52..591cdc83e86cf 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/update.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/update.test.ts @@ -27,6 +27,9 @@ describe('updateRule', () => { apiKey: null, apiKeyOwner: null, revision: 0, + alertDelay: { + active: 10, + }, }; const resolvedValue: Rule = { ...ruleToUpdate, @@ -51,7 +54,7 @@ describe('updateRule', () => { Array [ "/api/alerting/rule/12%2F3", Object { - "body": "{\\"name\\":\\"test\\",\\"tags\\":[\\"foo\\"],\\"schedule\\":{\\"interval\\":\\"1m\\"},\\"params\\":{},\\"actions\\":[]}", + "body": "{\\"name\\":\\"test\\",\\"tags\\":[\\"foo\\"],\\"schedule\\":{\\"interval\\":\\"1m\\"},\\"params\\":{},\\"actions\\":[],\\"alert_delay\\":{\\"active\\":10}}", }, ] `); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/update.ts b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/update.ts index 52158bfa2f034..80346ff2f65da 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/update.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/lib/rule_api/update.ts @@ -13,9 +13,13 @@ import { transformRule } from './common_transformations'; type RuleUpdatesBody = Pick< RuleUpdates, - 'name' | 'tags' | 'schedule' | 'actions' | 'params' | 'throttle' | 'notifyWhen' + 'name' | 'tags' | 'schedule' | 'actions' | 'params' | 'throttle' | 'notifyWhen' | 'alertDelay' >; -const rewriteBodyRequest: RewriteResponseCase = ({ actions, ...res }): any => ({ +const rewriteBodyRequest: RewriteResponseCase = ({ + actions, + alertDelay, + ...res +}): any => ({ ...res, actions: actions.map( ({ group, id, params, frequency, uuid, alertsFilter, useAlertDataForTemplate }) => ({ @@ -34,6 +38,7 @@ const rewriteBodyRequest: RewriteResponseCase = ({ actions, ... ...(uuid && { uuid }), }) ), + ...(alertDelay ? { alert_delay: alertDelay } : {}), }); export async function updateRule({ @@ -42,14 +47,16 @@ export async function updateRule({ id, }: { http: HttpSetup; - rule: Pick; + rule: Pick; id: string; }): Promise { const res = await http.put>( `${BASE_ALERTING_API_PATH}/rule/${encodeURIComponent(id)}`, { body: JSON.stringify( - rewriteBodyRequest(pick(rule, ['name', 'tags', 'schedule', 'params', 'actions'])) + rewriteBodyRequest( + pick(rule, ['name', 'tags', 'schedule', 'params', 'actions', 'alertDelay']) + ) ), } ); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx index 001cab3fc0720..3bdeb84e4bc19 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/action_connector_form/edit_connector_flyout/index.test.tsx @@ -12,7 +12,7 @@ import userEvent from '@testing-library/user-event'; import { act, waitFor } from '@testing-library/react'; import EditConnectorFlyout from '.'; import { ActionConnector, EditConnectorTabs, GenericValidationResult } from '../../../../types'; -import { technicalPreviewBadgeProps } from '../beta_badge_props'; +import { betaBadgeProps, technicalPreviewBadgeProps } from '../beta_badge_props'; import { AppMockRenderer, createAppMockRenderer } from '../../test_utils'; const updateConnectorResponse = { @@ -311,7 +311,7 @@ describe('EditConnectorFlyout', () => { expect(getByTestId('preconfiguredBadge')).toBeInTheDocument(); }); - it('does not show tech preview badge when isExperimental is false', async () => { + it('does not show `tech preview` badge when isExperimental is false', async () => { const { queryByText } = appMockRenderer.render( { expect(queryByText(technicalPreviewBadgeProps.label)).not.toBeInTheDocument(); }); - it('shows tech preview badge when isExperimental is true', async () => { + it('shows `tech preview` badge when isExperimental is true', async () => { actionTypeRegistry.get.mockReturnValue({ ...actionTypeModel, isExperimental: true }); const { getByText } = appMockRenderer.render( { await act(() => Promise.resolve()); expect(getByText(technicalPreviewBadgeProps.label)).toBeInTheDocument(); }); + + it('does not show `beta` badge when `isBeta` is `false`', async () => { + actionTypeRegistry.get.mockReturnValue({ ...actionTypeModel, isBeta: false }); + const { queryByText } = appMockRenderer.render( + + ); + await act(() => Promise.resolve()); + expect(queryByText(betaBadgeProps.label)).not.toBeInTheDocument(); + }); + + it('shows `beta` badge when `isBeta` is `true`', async () => { + actionTypeRegistry.get.mockReturnValue({ ...actionTypeModel, isBeta: true }); + const { getByText } = appMockRenderer.render( + + ); + await act(() => Promise.resolve()); + expect(getByText(betaBadgeProps.label)).toBeInTheDocument(); + }); }); describe('Tabs', () => { diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.test.tsx b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.test.tsx index 24592566d5465..8902b4d472ad2 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.test.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_form.test.tsx @@ -375,6 +375,9 @@ describe('rule_form', () => { enabled: false, mutedInstanceIds: [], ...(!showRulesList ? { ruleTypeId: ruleType.id } : {}), + alertDelay: { + active: 1, + }, } as unknown as Rule; wrapper = mountWithIntl( @@ -1034,6 +1037,24 @@ describe('rule_form', () => { expect(wrapper.find(ActionForm).props().hasFieldsForAAD).toEqual(true); }); + + it('renders rule alert delay', async () => { + const getAlertDelayInput = () => { + return wrapper.find('[data-test-subj="alertDelayInput"] input').first(); + }; + + await setup(); + expect(getAlertDelayInput().props().value).toEqual(1); + + getAlertDelayInput().simulate('change', { target: { value: '2' } }); + expect(getAlertDelayInput().props().value).toEqual(2); + + getAlertDelayInput().simulate('change', { target: { value: '20' } }); + expect(getAlertDelayInput().props().value).toEqual(20); + + getAlertDelayInput().simulate('change', { target: { value: '999' } }); + expect(getAlertDelayInput().props().value).toEqual(999); + }); }); describe('rule_form create rule non ruleing consumer and producer', () => { 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 98e2547dabdd3..b0b052544b625 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 @@ -215,6 +215,7 @@ export const RuleForm = ({ ? getDurationUnitValue(rule.schedule.interval) : defaultScheduleIntervalUnit ); + const [alertDelay, setAlertDelay] = useState(rule.alertDelay?.active ?? 1); const [defaultActionGroupId, setDefaultActionGroupId] = useState(undefined); const [availableRuleTypes, setAvailableRuleTypes] = useState([]); @@ -328,6 +329,12 @@ export const RuleForm = ({ } }, [rule.schedule.interval, defaultScheduleInterval, defaultScheduleIntervalUnit]); + useEffect(() => { + if (rule.alertDelay) { + setAlertDelay(rule.alertDelay.active); + } + }, [rule.alertDelay]); + useEffect(() => { if (!flyoutBodyOverflowRef.current) { // We're using this as a reliable way to reset the scroll position @@ -393,6 +400,10 @@ export const RuleForm = ({ [dispatch] ); + const setAlertDelayProperty = (key: string, value: any) => { + dispatch({ command: { type: 'setAlertDelayProperty' }, payload: { key, value } }); + }; + useEffect(() => { const searchValue = searchText ? searchText.trim().toLocaleLowerCase() : null; setFilteredRuleTypes( @@ -766,51 +777,95 @@ export const RuleForm = ({ ) : null} {hideInterval !== true && ( - - 0} - error={errors['schedule.interval']} - > - - - 0} - value={ruleInterval || ''} - name="interval" - data-test-subj="intervalInput" - onChange={(e) => { - const value = e.target.value; - if (value === '' || INTEGER_REGEX.test(value)) { - const parsedValue = value === '' ? '' : parseInt(value, 10); - setRuleInterval(parsedValue || undefined); - setScheduleProperty('interval', `${parsedValue}${ruleIntervalUnit}`); - } - }} - /> - - - { - setRuleIntervalUnit(e.target.value); - setScheduleProperty('interval', `${ruleInterval}${e.target.value}`); - }} - data-test-subj="intervalInputUnit" - /> - - - - + <> + + 0} + error={errors['schedule.interval']} + > + + + 0} + value={ruleInterval || ''} + name="interval" + data-test-subj="intervalInput" + onChange={(e) => { + const value = e.target.value; + if (value === '' || INTEGER_REGEX.test(value)) { + const parsedValue = value === '' ? '' : parseInt(value, 10); + setRuleInterval(parsedValue || undefined); + setScheduleProperty('interval', `${parsedValue}${ruleIntervalUnit}`); + } + }} + /> + + + { + setRuleIntervalUnit(e.target.value); + setScheduleProperty('interval', `${ruleInterval}${e.target.value}`); + }} + data-test-subj="intervalInputUnit" + /> + + + + + + )} + + + + + } + />, + ]} + append={i18n.translate( + 'xpack.triggersActionsUI.sections.ruleForm.alertDelayFieldAppendLabel', + { + defaultMessage: 'consecutive matches', + } + )} + onChange={(e) => { + const value = e.target.value; + if (value === '' || INTEGER_REGEX.test(value)) { + const parsedValue = value === '' ? '' : parseInt(value, 10); + setAlertDelayProperty('active', parsedValue || 1); + setAlertDelay(parsedValue || undefined); + } + }} + /> + + {shouldShowConsumerSelect && ( <> diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.test.ts b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.test.ts index 996676b73d59e..6eadf1fce5ff4 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.test.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.test.ts @@ -21,6 +21,9 @@ describe('rule reducer', () => { actions: [], tags: [], notifyWhen: 'onActionGroupChange', + alertDelay: { + active: 5, + }, } as unknown as Rule; }); @@ -211,4 +214,18 @@ describe('rule reducer', () => { ); expect(updatedRule.rule.actions[0].frequency?.notifyWhen).toBe('onThrottleInterval'); }); + + test('if initial alert delay property was updated', () => { + const updatedRule = ruleReducer( + { rule: initialRule }, + { + command: { type: 'setAlertDelayProperty' }, + payload: { + key: 'active', + value: 10, + }, + } + ); + expect(updatedRule.rule.alertDelay?.active).toBe(10); + }); }); diff --git a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts index 54f3871928fb3..257df764ebc1e 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts +++ b/x-pack/plugins/triggers_actions_ui/public/application/sections/rule_form/rule_reducer.ts @@ -12,6 +12,7 @@ import { RuleActionParam, IntervalSchedule, RuleActionAlertsFilterProperty, + AlertDelay, } from '@kbn/alerting-plugin/common'; import { isEmpty } from 'lodash/fp'; import { Rule, RuleAction } from '../../../types'; @@ -30,6 +31,7 @@ interface CommandType< | 'setRuleActionProperty' | 'setRuleActionFrequency' | 'setRuleActionAlertsFilter' + | 'setAlertDelayProperty' > { type: T; } @@ -62,6 +64,12 @@ interface RuleSchedulePayload { index?: number; } +interface AlertDelayPayload { + key: Key; + value: AlertDelay[Key] | null; + index?: number; +} + export type RuleReducerAction = | { command: CommandType<'setRule'>; @@ -94,6 +102,10 @@ export type RuleReducerAction = | { command: CommandType<'setRuleActionAlertsFilter'>; payload: Payload; + } + | { + command: CommandType<'setAlertDelayProperty'>; + payload: AlertDelayPayload; }; export type InitialRuleReducer = Reducer<{ rule: InitialRule }, RuleReducerAction>; @@ -281,5 +293,22 @@ export const ruleReducer = ( }; } } + case 'setAlertDelayProperty': { + const { key, value } = action.payload as Payload; + if (rule.alertDelay && isEqual(rule.alertDelay[key], value)) { + return state; + } else { + return { + ...state, + rule: { + ...rule, + alertDelay: { + ...rule.alertDelay, + [key]: value, + }, + }, + }; + } + } } }; 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 9b66a65949674..b381035fbfc61 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 @@ -363,8 +363,7 @@ export const RulesList = ({ } = useBulkEditSelect({ totalItemCount: rulesState.totalItemCount, items: tableItems, - ...filters, - typesFilter: rulesTypesFilter, + filters: { ...filters, types: rulesTypesFilter }, }); const handleUpdateFiltersEffect = useCallback( diff --git a/x-pack/test/accessibility/apps/group1/advanced_settings.ts b/x-pack/test/accessibility/apps/group1/advanced_settings.ts index 4515105d7557c..3d3a513daed35 100644 --- a/x-pack/test/accessibility/apps/group1/advanced_settings.ts +++ b/x-pack/test/accessibility/apps/group1/advanced_settings.ts @@ -20,42 +20,42 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { shouldUseHashForSubUrl: false, }); await testSubjects.click('settings'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await a11y.testAppSnapshot(); }); // clicking on the top search bar it('adv settings - search ', async () => { await testSubjects.click('settingsSearchBar'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await a11y.testAppSnapshot(); }); // clicking on the category dropdown it('adv settings - category -dropdown ', async () => { await testSubjects.click('settingsSearchBar'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await a11y.testAppSnapshot(); }); // clicking on the toggle button it('adv settings - toggle ', async () => { await testSubjects.click('management-settings-editField-csv:quoteValues'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await a11y.testAppSnapshot(); }); // clicking on editor panel it('adv settings - edit ', async () => { await testSubjects.click('management-settings-editField-csv:separator'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await a11y.testAppSnapshot(); }); // clicking on save button it('adv settings - save', async () => { await testSubjects.click('settings-save-button'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await a11y.testAppSnapshot(); }); }); diff --git a/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts b/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts index a5182a8d2ca03..f9909809e490a 100644 --- a/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts +++ b/x-pack/test/accessibility/apps/group1/dashboard_panel_options.ts @@ -105,7 +105,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.click('dashboardEditMode'); await dashboardPanelActions.toggleContextMenu(header); await testSubjects.click('embeddablePanelAction-clonePanel'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await a11y.testAppSnapshot(); }); diff --git a/x-pack/test/accessibility/apps/group1/spaces.ts b/x-pack/test/accessibility/apps/group1/spaces.ts index 33616c3576b1d..5ec4b7c1ee644 100644 --- a/x-pack/test/accessibility/apps/group1/spaces.ts +++ b/x-pack/test/accessibility/apps/group1/spaces.ts @@ -42,7 +42,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('a11y test for manage spaces page', async () => { await PageObjects.spaceSelector.clickManageSpaces(); await PageObjects.header.waitUntilLoadingHasFinished(); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await retry.waitFor( 'Manage spaces page visible', async () => await testSubjects.exists('createSpace') diff --git a/x-pack/test/accessibility/apps/group1/uptime.ts b/x-pack/test/accessibility/apps/group1/uptime.ts index 3818ddb1061a2..03a38447ed845 100644 --- a/x-pack/test/accessibility/apps/group1/uptime.ts +++ b/x-pack/test/accessibility/apps/group1/uptime.ts @@ -61,7 +61,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('overview alert popover controls', async () => { await uptimeService.overview.openAlertsPopover(); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await a11y.testAppSnapshot(); }); diff --git a/x-pack/test/accessibility/apps/group3/rules_connectors.ts b/x-pack/test/accessibility/apps/group3/rules_connectors.ts index bf46735a84fde..019a23c8fc49d 100644 --- a/x-pack/test/accessibility/apps/group3/rules_connectors.ts +++ b/x-pack/test/accessibility/apps/group3/rules_connectors.ts @@ -52,7 +52,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); // https://github.com/elastic/kibana/issues/144953 it.skip('a11y test on save rule without connectors panel', async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await testSubjects.click('saveRuleButton'); await a11y.testAppSnapshot(); }); diff --git a/x-pack/test/accessibility/apps/group3/security_solution.ts b/x-pack/test/accessibility/apps/group3/security_solution.ts index 7257f88be8a74..af62d92b345e1 100644 --- a/x-pack/test/accessibility/apps/group3/security_solution.ts +++ b/x-pack/test/accessibility/apps/group3/security_solution.ts @@ -33,7 +33,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('Custom Query Rule', () => { describe('Define Step', () => { it('default view meets a11y requirements', async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await testSubjects.click('customRuleType'); await a11y.testAppSnapshot(); }); diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/assets.ts b/x-pack/test/api_integration/apis/asset_manager/tests/assets.ts index dc140d3cea763..35a3274ef5418 100644 --- a/x-pack/test/api_integration/apis/asset_manager/tests/assets.ts +++ b/x-pack/test/api_integration/apis/asset_manager/tests/assets.ts @@ -15,7 +15,8 @@ export default function ({ getService }: FtrProviderContext) { const synthtraceApm = getService('apmSynthtraceEsClient'); const synthtraceInfra = getService('infraSynthtraceEsClient'); - describe('GET /assets', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176968 + describe.skip('GET /assets', () => { const from = new Date(Date.now() - 1000 * 60 * 2).toISOString(); const to = new Date().toISOString(); diff --git a/x-pack/test/api_integration/apis/asset_manager/tests/services.ts b/x-pack/test/api_integration/apis/asset_manager/tests/services.ts index ae92a646b3b2a..dbfc0f0356654 100644 --- a/x-pack/test/api_integration/apis/asset_manager/tests/services.ts +++ b/x-pack/test/api_integration/apis/asset_manager/tests/services.ts @@ -17,7 +17,8 @@ export default function ({ getService }: FtrProviderContext) { const supertest = getService('supertest'); const synthtrace = getService('apmSynthtraceEsClient'); - describe('GET /assets/services', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176952 + describe.skip('GET /assets/services', () => { beforeEach(async () => { await synthtrace.clean(); }); diff --git a/x-pack/test/api_integration/apis/metrics_ui/infra.ts b/x-pack/test/api_integration/apis/metrics_ui/infra.ts index baa907c25575f..c3465c68ae7fe 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/infra.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/infra.ts @@ -165,8 +165,8 @@ export default function ({ getService }: FtrProviderContext) { const names = (response.body as GetInfraMetricsResponsePayload).nodes.map((p) => p.name); expect(names).eql([ - 'gke-observability-8--observability-8--bc1afd95-f0zc', 'gke-observability-8--observability-8--bc1afd95-ngmh', + 'gke-observability-8--observability-8--bc1afd95-f0zc', 'gke-observability-8--observability-8--bc1afd95-nhhw', ]); }); @@ -208,8 +208,9 @@ export default function ({ getService }: FtrProviderContext) { const names = (response.body as GetInfraMetricsResponsePayload).nodes.map((p) => p.name); expect(names).eql([ - 'gke-observability-8--observability-8--bc1afd95-f0zc', 'gke-observability-8--observability-8--bc1afd95-ngmh', + 'gke-observability-8--observability-8--bc1afd95-f0zc', + , ]); }); @@ -269,5 +270,38 @@ export default function ({ getService }: FtrProviderContext) { ); }); }); + + describe('Host with active alerts', () => { + before(async () => { + await Promise.all([ + esArchiver.load('x-pack/test/functional/es_archives/infra/alerts'), + esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'), + ]); + }); + + after(async () => { + await Promise.all([ + esArchiver.unload('x-pack/test/functional/es_archives/infra/alerts'), + esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs'), + ]); + }); + + describe('fetch hosts', () => { + it('should return metrics for a host with alert count', async () => { + const body: GetInfraMetricsRequestBodyPayload = { + ...basePayload, + range: { + from: '2018-10-17T19:42:21.208Z', + to: '2018-10-17T19:58:03.952Z', + }, + limit: 1, + }; + const response = await makeRequest({ body, expectedHTTPCode: 200 }); + + expect(response.body.nodes).length(1); + expect(response.body.nodes[0].alertsCount).eql(2); + }); + }); + }); }); } diff --git a/x-pack/test/api_integration/apis/metrics_ui/services.ts b/x-pack/test/api_integration/apis/metrics_ui/services.ts index c738ecfed673c..d811c02a0d41a 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/services.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/services.ts @@ -19,7 +19,8 @@ export default function ({ getService }: FtrProviderContext) { describe('GET /infra/services', () => { const from = new Date(Date.now() - 1000 * 60 * 2).toISOString(); const to = new Date().toISOString(); - describe('with transactions', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176950 + describe.skip('with transactions', () => { before(async () => { await synthtrace.index( generateServicesData({ from, to, instanceCount: 3, servicesPerHost: 3 }) @@ -81,7 +82,8 @@ export default function ({ getService }: FtrProviderContext) { .expect(400); }); }); - describe('with logs only', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176967 + describe.skip('with logs only', () => { before(async () => { await synthtrace.index( generateServicesLogsOnlyData({ from, to, instanceCount: 1, servicesPerHost: 2 }) diff --git a/x-pack/test/apm_api_integration/tests/alerts/anomaly_alert.spec.ts b/x-pack/test/apm_api_integration/tests/alerts/anomaly_alert.spec.ts index f98a82a6cd30c..6bf2172a5a4bc 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/anomaly_alert.spec.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/anomaly_alert.spec.ts @@ -27,7 +27,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { const logger = getService('log'); const synthtraceEsClient = getService('synthtraceEsClient'); - registry.when( + // FLAKY: https://github.com/elastic/kibana/issues/176949 + registry.when.skip( 'fetching service anomalies with a trial license', { config: 'trial', archives: [] }, () => { diff --git a/x-pack/test/apm_api_integration/tests/alerts/error_count_threshold.spec.ts b/x-pack/test/apm_api_integration/tests/alerts/error_count_threshold.spec.ts index ea01c7c28c801..5e0318b50d366 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/error_count_threshold.spec.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/error_count_threshold.spec.ts @@ -101,7 +101,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { after(() => synthtraceEsClient.clean()); - describe('create rule without kql filter', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176948 + describe.skip('create rule without kql filter', () => { let ruleId: string; let alerts: ApmAlertFields[]; let actionId: string; @@ -249,7 +250,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - describe('create rule with kql filter for opbeans-php', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176964 + describe.skip('create rule with kql filter for opbeans-php', () => { let ruleId: string; before(async () => { diff --git a/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_count.spec.ts b/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_count.spec.ts index 0ba6426045492..52baa4c25eb01 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_count.spec.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_count.spec.ts @@ -69,7 +69,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); registry.when(`with data loaded`, { config: 'basic', archives: [] }, () => { - describe('error_count', () => { + // FLAKY: https://github.com/elastic/kibana/issues/172769 + describe.skip('error_count', () => { beforeEach(async () => { await generateErrorData({ serviceName: 'synth-go', start, end, synthtraceEsClient }); await generateErrorData({ serviceName: 'synth-java', start, end, synthtraceEsClient }); @@ -304,7 +305,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); registry.when(`with data loaded and using KQL filter`, { config: 'basic', archives: [] }, () => { - describe('error_count', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176975 + describe.skip('error_count', () => { before(async () => { await generateErrorData({ serviceName: 'synth-go', start, end, synthtraceEsClient }); await generateErrorData({ serviceName: 'synth-java', start, end, synthtraceEsClient }); diff --git a/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_rate.spec.ts b/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_rate.spec.ts index 5175b9eb83044..99ebdc2bd7e0d 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_rate.spec.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/preview_chart_error_rate.spec.ts @@ -70,7 +70,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); registry.when(`with data loaded`, { config: 'basic', archives: [] }, () => { - describe('transaction_error_rate', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176977 + describe.skip('transaction_error_rate', () => { before(async () => { await generateErrorData({ serviceName: 'synth-go', start, end, synthtraceEsClient }); await generateErrorData({ serviceName: 'synth-java', start, end, synthtraceEsClient }); @@ -328,7 +329,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); registry.when(`with data loaded and using KQL filter`, { config: 'basic', archives: [] }, () => { - describe('transaction_error_rate', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176983 + describe.skip('transaction_error_rate', () => { before(async () => { await generateErrorData({ serviceName: 'synth-go', start, end, synthtraceEsClient }); await generateErrorData({ serviceName: 'synth-java', start, end, synthtraceEsClient }); diff --git a/x-pack/test/apm_api_integration/tests/alerts/preview_chart_transaction_duration.spec.ts b/x-pack/test/apm_api_integration/tests/alerts/preview_chart_transaction_duration.spec.ts index d7408e9232560..8a01af50baadf 100644 --- a/x-pack/test/apm_api_integration/tests/alerts/preview_chart_transaction_duration.spec.ts +++ b/x-pack/test/apm_api_integration/tests/alerts/preview_chart_transaction_duration.spec.ts @@ -70,8 +70,11 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - registry.when(`with data loaded`, { config: 'basic', archives: [] }, () => { - describe('transaction_duration', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176989 + registry.when.skip(`with data loaded`, { config: 'basic', archives: [] }, () => { + // FLAKY: https://github.com/elastic/kibana/issues/176986 + // Failing: See https://github.com/elastic/kibana/issues/176989 + describe.skip('transaction_duration', () => { before(async () => { await generateLatencyData({ serviceName: 'synth-go', start, end, synthtraceEsClient }); await generateLatencyData({ serviceName: 'synth-java', start, end, synthtraceEsClient }); @@ -297,256 +300,261 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - registry.when(`with data loaded and using KQL filter`, { config: 'basic', archives: [] }, () => { - describe('transaction_duration', () => { - before(async () => { - await generateLatencyData({ serviceName: 'synth-go', start, end, synthtraceEsClient }); - await generateLatencyData({ serviceName: 'synth-java', start, end, synthtraceEsClient }); - }); - - after(() => synthtraceEsClient.clean()); - - it('with data', async () => { - const options = getOptionsWithFilterQuery(); - const response = await apmApiClient.readUser({ - ...options, - endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + // FLAKY: https://github.com/elastic/kibana/issues/176989 + registry.when.skip( + `with data loaded and using KQL filter`, + { config: 'basic', archives: [] }, + () => { + describe('transaction_duration', () => { + before(async () => { + await generateLatencyData({ serviceName: 'synth-go', start, end, synthtraceEsClient }); + await generateLatencyData({ serviceName: 'synth-java', start, end, synthtraceEsClient }); }); - expect(response.status).to.be(200); - expect( - response.body.latencyChartPreview.series.some((item: PreviewChartResponseItem) => - item.data.some((coordinate) => coordinate.x && coordinate.y) - ) - ).to.equal(true); - }); + after(() => synthtraceEsClient.clean()); + + it('with data', async () => { + const options = getOptionsWithFilterQuery(); + const response = await apmApiClient.readUser({ + ...options, + endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }); + + expect(response.status).to.be(200); + expect( + response.body.latencyChartPreview.series.some((item: PreviewChartResponseItem) => + item.data.some((coordinate) => coordinate.x && coordinate.y) + ) + ).to.equal(true); + }); - it('with transaction name in filter query', async () => { - const options = { - params: { - query: { - ...getOptionsWithFilterQuery().params.query, - searchConfiguration: JSON.stringify({ - query: { - query: - 'service.name: synth-go and transaction.type: request and transaction.name: GET /banana', - language: 'kuery', - }, - }), - groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE], + it('with transaction name in filter query', async () => { + const options = { + params: { + query: { + ...getOptionsWithFilterQuery().params.query, + searchConfiguration: JSON.stringify({ + query: { + query: + 'service.name: synth-go and transaction.type: request and transaction.name: GET /banana', + language: 'kuery', + }, + }), + groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE], + }, }, - }, - }; - - const response = await apmApiClient.readUser({ - ...options, - endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }; + + const response = await apmApiClient.readUser({ + ...options, + endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }); + + expect(response.status).to.be(200); + expect( + response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ + name: item.name, + y: item.data[0].y, + })) + ).to.eql([{ name: 'synth-go_production_request', y: 5000 }]); }); - expect(response.status).to.be(200); - expect( - response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ - name: item.name, - y: item.data[0].y, - })) - ).to.eql([{ name: 'synth-go_production_request', y: 5000 }]); - }); - - it('with nonexistent transaction name', async () => { - const options = { - params: { - query: { - ...getOptionsWithFilterQuery().params.query, - searchConfiguration: JSON.stringify({ - query: { - query: - 'service.name: synth-go and transaction.type: request and transaction.name: foo', - language: 'kuery', - }, - }), - groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE], + it('with nonexistent transaction name', async () => { + const options = { + params: { + query: { + ...getOptionsWithFilterQuery().params.query, + searchConfiguration: JSON.stringify({ + query: { + query: + 'service.name: synth-go and transaction.type: request and transaction.name: foo', + language: 'kuery', + }, + }), + groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE], + }, }, - }, - }; + }; - const response = await apmApiClient.readUser({ - ...options, - endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', - }); - - expect(response.status).to.be(200); - expect(response.body.latencyChartPreview.series).to.eql([]); - }); + const response = await apmApiClient.readUser({ + ...options, + endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }); - it('with no group by parameter', async () => { - const options = getOptionsWithFilterQuery(); - const response = await apmApiClient.readUser({ - ...options, - endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + expect(response.status).to.be(200); + expect(response.body.latencyChartPreview.series).to.eql([]); }); - expect(response.status).to.be(200); - expect(response.body.latencyChartPreview.series.length).to.equal(1); - expect( - response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ - name: item.name, - y: item.data[0].y, - })) - ).to.eql([{ name: 'synth-go_production_request', y: 7500 }]); - }); + it('with no group by parameter', async () => { + const options = getOptionsWithFilterQuery(); + const response = await apmApiClient.readUser({ + ...options, + endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }); + + expect(response.status).to.be(200); + expect(response.body.latencyChartPreview.series.length).to.equal(1); + expect( + response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ + name: item.name, + y: item.data[0].y, + })) + ).to.eql([{ name: 'synth-go_production_request', y: 7500 }]); + }); - it('with default group by fields', async () => { - const options = { - params: { - query: { - ...getOptionsWithFilterQuery().params.query, - groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE], + it('with default group by fields', async () => { + const options = { + params: { + query: { + ...getOptionsWithFilterQuery().params.query, + groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE], + }, }, - }, - }; - - const response = await apmApiClient.readUser({ - ...options, - endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }; + + const response = await apmApiClient.readUser({ + ...options, + endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }); + + expect(response.status).to.be(200); + expect(response.body.latencyChartPreview.series.length).to.equal(1); + expect( + response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ + name: item.name, + y: item.data[0].y, + })) + ).to.eql([{ name: 'synth-go_production_request', y: 7500 }]); }); - expect(response.status).to.be(200); - expect(response.body.latencyChartPreview.series.length).to.equal(1); - expect( - response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ - name: item.name, - y: item.data[0].y, - })) - ).to.eql([{ name: 'synth-go_production_request', y: 7500 }]); - }); - - it('with group by on transaction name', async () => { - const options = { - params: { - query: { - ...getOptionsWithFilterQuery().params.query, - groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE, TRANSACTION_NAME], + it('with group by on transaction name', async () => { + const options = { + params: { + query: { + ...getOptionsWithFilterQuery().params.query, + groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE, TRANSACTION_NAME], + }, }, - }, - }; - - const response = await apmApiClient.readUser({ - ...options, - endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }; + + const response = await apmApiClient.readUser({ + ...options, + endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }); + + expect(response.status).to.be(200); + expect(response.body.latencyChartPreview.series.length).to.equal(2); + expect( + response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ + name: item.name, + y: item.data[0].y, + })) + ).to.eql([ + { name: 'synth-go_production_request_GET /apple', y: 10000 }, + { name: 'synth-go_production_request_GET /banana', y: 5000 }, + ]); }); - expect(response.status).to.be(200); - expect(response.body.latencyChartPreview.series.length).to.equal(2); - expect( - response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ - name: item.name, - y: item.data[0].y, - })) - ).to.eql([ - { name: 'synth-go_production_request_GET /apple', y: 10000 }, - { name: 'synth-go_production_request_GET /banana', y: 5000 }, - ]); - }); - - it('with group by on transaction name and filter on transaction name', async () => { - const options = { - params: { - query: { - ...getOptionsWithFilterQuery().params.query, - searchConfiguration: JSON.stringify({ - query: { - query: - 'service.name: synth-go and transaction.type: request and transaction.name: GET /apple', - language: 'kuery', - }, - }), - groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE, TRANSACTION_NAME], + it('with group by on transaction name and filter on transaction name', async () => { + const options = { + params: { + query: { + ...getOptionsWithFilterQuery().params.query, + searchConfiguration: JSON.stringify({ + query: { + query: + 'service.name: synth-go and transaction.type: request and transaction.name: GET /apple', + language: 'kuery', + }, + }), + groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE, TRANSACTION_NAME], + }, }, - }, - }; - - const response = await apmApiClient.readUser({ - ...options, - endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }; + + const response = await apmApiClient.readUser({ + ...options, + endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }); + + expect(response.status).to.be(200); + expect(response.body.latencyChartPreview.series.length).to.equal(1); + expect( + response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ + name: item.name, + y: item.data[0].y, + })) + ).to.eql([{ name: 'synth-go_production_request_GET /apple', y: 10000 }]); }); - expect(response.status).to.be(200); - expect(response.body.latencyChartPreview.series.length).to.equal(1); - expect( - response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ - name: item.name, - y: item.data[0].y, - })) - ).to.eql([{ name: 'synth-go_production_request_GET /apple', y: 10000 }]); - }); - - it('with empty filter query', async () => { - const options = { - params: { - query: { - ...getOptionsWithFilterQuery().params.query, - searchConfiguration: JSON.stringify({ - query: { - query: '', - language: 'kuery', - }, - }), + it('with empty filter query', async () => { + const options = { + params: { + query: { + ...getOptionsWithFilterQuery().params.query, + searchConfiguration: JSON.stringify({ + query: { + query: '', + language: 'kuery', + }, + }), + }, }, - }, - }; - - const response = await apmApiClient.readUser({ - ...options, - endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }; + + const response = await apmApiClient.readUser({ + ...options, + endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }); + + expect(response.status).to.be(200); + expect( + response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ + name: item.name, + y: item.data[0].y, + })) + ).to.eql([ + { name: 'synth-go_production_request', y: 7500 }, + { name: 'synth-java_production_request', y: 7500 }, + ]); }); - expect(response.status).to.be(200); - expect( - response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ - name: item.name, - y: item.data[0].y, - })) - ).to.eql([ - { name: 'synth-go_production_request', y: 7500 }, - { name: 'synth-java_production_request', y: 7500 }, - ]); - }); - - it('with empty filter query and group by on transaction name', async () => { - const options = { - params: { - query: { - ...getOptionsWithFilterQuery().params.query, - searchConfiguration: JSON.stringify({ - query: { - query: '', - language: 'kuery', - }, - }), - groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE, TRANSACTION_NAME], + it('with empty filter query and group by on transaction name', async () => { + const options = { + params: { + query: { + ...getOptionsWithFilterQuery().params.query, + searchConfiguration: JSON.stringify({ + query: { + query: '', + language: 'kuery', + }, + }), + groupBy: [SERVICE_NAME, SERVICE_ENVIRONMENT, TRANSACTION_TYPE, TRANSACTION_NAME], + }, }, - }, - }; - - const response = await apmApiClient.readUser({ - ...options, - endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }; + + const response = await apmApiClient.readUser({ + ...options, + endpoint: 'GET /internal/apm/rule_types/transaction_duration/chart_preview', + }); + + expect(response.status).to.be(200); + expect(response.body.latencyChartPreview.series.length).to.equal(4); + expect( + response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ + name: item.name, + y: item.data[0].y, + })) + ).to.eql([ + { name: 'synth-go_production_request_GET /apple', y: 10000 }, + { name: 'synth-java_production_request_GET /apple', y: 10000 }, + { name: 'synth-go_production_request_GET /banana', y: 5000 }, + { name: 'synth-java_production_request_GET /banana', y: 5000 }, + ]); }); - - expect(response.status).to.be(200); - expect(response.body.latencyChartPreview.series.length).to.equal(4); - expect( - response.body.latencyChartPreview.series.map((item: PreviewChartResponseItem) => ({ - name: item.name, - y: item.data[0].y, - })) - ).to.eql([ - { name: 'synth-go_production_request_GET /apple', y: 10000 }, - { name: 'synth-java_production_request_GET /apple', y: 10000 }, - { name: 'synth-go_production_request_GET /banana', y: 5000 }, - { name: 'synth-java_production_request_GET /banana', y: 5000 }, - ]); }); - }); - }); + } + ); } diff --git a/x-pack/test/apm_api_integration/tests/anomalies/anomaly_charts.spec.ts b/x-pack/test/apm_api_integration/tests/anomalies/anomaly_charts.spec.ts index b67dc436e57c0..10b853d18445f 100644 --- a/x-pack/test/apm_api_integration/tests/anomalies/anomaly_charts.spec.ts +++ b/x-pack/test/apm_api_integration/tests/anomalies/anomaly_charts.spec.ts @@ -169,7 +169,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - describe('with ml jobs', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176966 + describe.skip('with ml jobs', () => { beforeEach(async () => { await createAndRunApmMlJobs({ es, diff --git a/x-pack/test/apm_api_integration/tests/correlations/failed_transactions.spec.ts b/x-pack/test/apm_api_integration/tests/correlations/failed_transactions.spec.ts index 066f5532d925c..8d556d63e7ab5 100644 --- a/x-pack/test/apm_api_integration/tests/correlations/failed_transactions.spec.ts +++ b/x-pack/test/apm_api_integration/tests/correlations/failed_transactions.spec.ts @@ -104,118 +104,127 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - registry.when('failed transactions with data', { config: 'trial', archives: ['8.0.0'] }, () => { - it('runs queries and returns results', async () => { - const overallDistributionResponse = await apmApiClient.readUser({ - endpoint: 'POST /internal/apm/latency/overall_distribution/transactions', - params: { - body: { - ...getOptions(), - percentileThreshold: 95, - chartType: LatencyDistributionChartType.failedTransactionsCorrelations, + // FLAKY: https://github.com/elastic/kibana/issues/176544 + registry.when.skip( + 'failed transactions with data', + { config: 'trial', archives: ['8.0.0'] }, + () => { + it('runs queries and returns results', async () => { + const overallDistributionResponse = await apmApiClient.readUser({ + endpoint: 'POST /internal/apm/latency/overall_distribution/transactions', + params: { + body: { + ...getOptions(), + percentileThreshold: 95, + chartType: LatencyDistributionChartType.failedTransactionsCorrelations, + }, }, - }, - }); - - expect(overallDistributionResponse.status).to.eql( - 200, - `Expected status to be '200', got '${overallDistributionResponse.status}'` - ); + }); - const errorDistributionResponse = await apmApiClient.readUser({ - endpoint: 'POST /internal/apm/latency/overall_distribution/transactions', - params: { - body: { - ...getOptions(), - percentileThreshold: 95, - termFilters: [{ fieldName: EVENT_OUTCOME, fieldValue: EventOutcome.failure }], - chartType: LatencyDistributionChartType.failedTransactionsCorrelations, + expect(overallDistributionResponse.status).to.eql( + 200, + `Expected status to be '200', got '${overallDistributionResponse.status}'` + ); + + const errorDistributionResponse = await apmApiClient.readUser({ + endpoint: 'POST /internal/apm/latency/overall_distribution/transactions', + params: { + body: { + ...getOptions(), + percentileThreshold: 95, + termFilters: [{ fieldName: EVENT_OUTCOME, fieldValue: EventOutcome.failure }], + chartType: LatencyDistributionChartType.failedTransactionsCorrelations, + }, }, - }, - }); - - expect(errorDistributionResponse.status).to.eql( - 200, - `Expected status to be '200', got '${errorDistributionResponse.status}'` - ); - - const fieldCandidatesResponse = await apmApiClient.readUser({ - endpoint: 'GET /internal/apm/correlations/field_candidates/transactions', - params: { - query: getOptions(), - }, - }); - - expect(fieldCandidatesResponse.status).to.eql( - 200, - `Expected status to be '200', got '${fieldCandidatesResponse.status}'` - ); - - const fieldCandidates = fieldCandidatesResponse.body?.fieldCandidates.filter( - (t) => !(t === EVENT_OUTCOME) - ); + }); - // Identified 68 fieldCandidates. - expect(fieldCandidates.length).to.eql( - 68, - `Expected field candidates length to be '68', got '${fieldCandidates.length}'` - ); + expect(errorDistributionResponse.status).to.eql( + 200, + `Expected status to be '200', got '${errorDistributionResponse.status}'` + ); - const failedTransactionsCorrelationsResponse = await apmApiClient.readUser({ - endpoint: 'POST /internal/apm/correlations/p_values/transactions', - params: { - body: { - ...getOptions(), - fieldCandidates, + const fieldCandidatesResponse = await apmApiClient.readUser({ + endpoint: 'GET /internal/apm/correlations/field_candidates/transactions', + params: { + query: getOptions(), }, - }, - }); - - expect(failedTransactionsCorrelationsResponse.status).to.eql( - 200, - `Expected status to be '200', got '${failedTransactionsCorrelationsResponse.status}'` - ); - - const fieldsToSample = new Set(); - if (failedTransactionsCorrelationsResponse.body?.failedTransactionsCorrelations.length > 0) { - failedTransactionsCorrelationsResponse.body?.failedTransactionsCorrelations.forEach((d) => { - fieldsToSample.add(d.fieldName); }); - } - - const finalRawResponse: FailedTransactionsCorrelationsResponse = { - ccsWarning: failedTransactionsCorrelationsResponse.body?.ccsWarning, - percentileThresholdValue: overallDistributionResponse.body?.percentileThresholdValue, - overallHistogram: overallDistributionResponse.body?.overallHistogram, - errorHistogram: errorDistributionResponse.body?.overallHistogram, - failedTransactionsCorrelations: - failedTransactionsCorrelationsResponse.body?.failedTransactionsCorrelations, - }; - expect(finalRawResponse?.percentileThresholdValue).to.be(1309695.875); - expect(finalRawResponse?.errorHistogram?.length).to.be(101); - expect(finalRawResponse?.overallHistogram?.length).to.be(101); - - expect(finalRawResponse?.failedTransactionsCorrelations?.length).to.eql( - 30, - `Expected 30 identified correlations, got ${finalRawResponse?.failedTransactionsCorrelations?.length}.` - ); + expect(fieldCandidatesResponse.status).to.eql( + 200, + `Expected status to be '200', got '${fieldCandidatesResponse.status}'` + ); + + const fieldCandidates = fieldCandidatesResponse.body?.fieldCandidates.filter( + (t) => !(t === EVENT_OUTCOME) + ); + + // Identified 68 fieldCandidates. + expect(fieldCandidates.length).to.eql( + 68, + `Expected field candidates length to be '68', got '${fieldCandidates.length}'` + ); + + const failedTransactionsCorrelationsResponse = await apmApiClient.readUser({ + endpoint: 'POST /internal/apm/correlations/p_values/transactions', + params: { + body: { + ...getOptions(), + fieldCandidates, + }, + }, + }); - const sortedCorrelations = finalRawResponse?.failedTransactionsCorrelations?.sort( - (a, b) => b.score - a.score - ); - const correlation = sortedCorrelations?.[0]; - - expect(typeof correlation).to.be('object'); - expect(correlation?.doc_count).to.be(31); - expect(correlation?.score).to.be(83.70467673605746); - expect(correlation?.bg_count).to.be(31); - expect(correlation?.fieldName).to.be('http.response.status_code'); - expect(correlation?.fieldValue).to.be(500); - expect(typeof correlation?.pValue).to.be('number'); - expect(typeof correlation?.normalizedScore).to.be('number'); - expect(typeof correlation?.failurePercentage).to.be('number'); - expect(typeof correlation?.successPercentage).to.be('number'); - }); - }); + expect(failedTransactionsCorrelationsResponse.status).to.eql( + 200, + `Expected status to be '200', got '${failedTransactionsCorrelationsResponse.status}'` + ); + + const fieldsToSample = new Set(); + if ( + failedTransactionsCorrelationsResponse.body?.failedTransactionsCorrelations.length > 0 + ) { + failedTransactionsCorrelationsResponse.body?.failedTransactionsCorrelations.forEach( + (d) => { + fieldsToSample.add(d.fieldName); + } + ); + } + + const finalRawResponse: FailedTransactionsCorrelationsResponse = { + ccsWarning: failedTransactionsCorrelationsResponse.body?.ccsWarning, + percentileThresholdValue: overallDistributionResponse.body?.percentileThresholdValue, + overallHistogram: overallDistributionResponse.body?.overallHistogram, + errorHistogram: errorDistributionResponse.body?.overallHistogram, + failedTransactionsCorrelations: + failedTransactionsCorrelationsResponse.body?.failedTransactionsCorrelations, + }; + + expect(finalRawResponse?.percentileThresholdValue).to.be(1309695.875); + expect(finalRawResponse?.errorHistogram?.length).to.be(101); + expect(finalRawResponse?.overallHistogram?.length).to.be(101); + + expect(finalRawResponse?.failedTransactionsCorrelations?.length).to.eql( + 30, + `Expected 30 identified correlations, got ${finalRawResponse?.failedTransactionsCorrelations?.length}.` + ); + + const sortedCorrelations = finalRawResponse?.failedTransactionsCorrelations?.sort( + (a, b) => b.score - a.score + ); + const correlation = sortedCorrelations?.[0]; + + expect(typeof correlation).to.be('object'); + expect(correlation?.doc_count).to.be(31); + expect(correlation?.score).to.be(83.70467673605746); + expect(correlation?.bg_count).to.be(31); + expect(correlation?.fieldName).to.be('http.response.status_code'); + expect(correlation?.fieldValue).to.be(500); + expect(typeof correlation?.pValue).to.be('number'); + expect(typeof correlation?.normalizedScore).to.be('number'); + expect(typeof correlation?.failurePercentage).to.be('number'); + expect(typeof correlation?.successPercentage).to.be('number'); + }); + } + ); } diff --git a/x-pack/test/apm_api_integration/tests/correlations/field_value_pairs.spec.ts b/x-pack/test/apm_api_integration/tests/correlations/field_value_pairs.spec.ts index 4765e83342e52..f2bb340cb9d60 100644 --- a/x-pack/test/apm_api_integration/tests/correlations/field_value_pairs.spec.ts +++ b/x-pack/test/apm_api_integration/tests/correlations/field_value_pairs.spec.ts @@ -53,7 +53,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - registry.when( + // FLAKY: https://github.com/elastic/kibana/issues/176425 + registry.when.skip( 'field value pairs with data and default args', { config: 'trial', archives: ['8.0.0'] }, () => { diff --git a/x-pack/test/apm_api_integration/tests/error_rate/service_maps.spec.ts b/x-pack/test/apm_api_integration/tests/error_rate/service_maps.spec.ts index 9a8caeef22b97..bae1d1b38099c 100644 --- a/x-pack/test/apm_api_integration/tests/error_rate/service_maps.spec.ts +++ b/x-pack/test/apm_api_integration/tests/error_rate/service_maps.spec.ts @@ -140,7 +140,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { after(() => synthtraceEsClient.clean()); - describe('compare latency value between service inventory and service maps', () => { + // FLAKY: https://github.com/elastic/kibana/issues/172772 + describe.skip('compare latency value between service inventory and service maps', () => { before(async () => { [errorTransactionValues, errorRateMetricValues] = await Promise.all([ getErrorRateValues('transaction'), diff --git a/x-pack/test/apm_api_integration/tests/index.ts b/x-pack/test/apm_api_integration/tests/index.ts index c8eec324f4bd7..d7c2e93f16288 100644 --- a/x-pack/test/apm_api_integration/tests/index.ts +++ b/x-pack/test/apm_api_integration/tests/index.ts @@ -29,7 +29,8 @@ export default function apmApiIntegrationTests({ getService, loadTestFile }: Ftr // DO NOT SKIP // Skipping here will skip the entire apm api test suite // Instead skip (flaky) tests individually - describe('APM API tests', function () { + // Failing: See https://github.com/elastic/kibana/issues/176996 + describe.skip('APM API tests', function () { const filePattern = getGlobPattern(); const tests = globby.sync(filePattern, { cwd }); diff --git a/x-pack/test/apm_api_integration/tests/latency/service_maps.spec.ts b/x-pack/test/apm_api_integration/tests/latency/service_maps.spec.ts index b31d5a66b8389..493bea1efd3f3 100644 --- a/x-pack/test/apm_api_integration/tests/latency/service_maps.spec.ts +++ b/x-pack/test/apm_api_integration/tests/latency/service_maps.spec.ts @@ -114,7 +114,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { after(() => synthtraceEsClient.clean()); - describe('compare latency value between service inventory and service maps', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176976 + describe.skip('compare latency value between service inventory and service maps', () => { before(async () => { [latencyTransactionValues, latencyMetricValues] = await Promise.all([ getLatencyValues('transaction'), diff --git a/x-pack/test/apm_api_integration/tests/metrics/memory/memory_metrics.spec.ts b/x-pack/test/apm_api_integration/tests/metrics/memory/memory_metrics.spec.ts index d67451e4d1abc..14f820b041304 100644 --- a/x-pack/test/apm_api_integration/tests/metrics/memory/memory_metrics.spec.ts +++ b/x-pack/test/apm_api_integration/tests/metrics/memory/memory_metrics.spec.ts @@ -33,7 +33,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); } - registry.when('Memory', { config: 'trial', archives: [] }, () => { + // FLAKY: https://github.com/elastic/kibana/issues/176990 + registry.when.skip('Memory', { config: 'trial', archives: [] }, () => { before(async () => { await generateData({ start, end, synthtraceEsClient }); }); diff --git a/x-pack/test/apm_api_integration/tests/service_maps/service_maps_kuery_filter.spec.ts b/x-pack/test/apm_api_integration/tests/service_maps/service_maps_kuery_filter.spec.ts index 42de24f80df18..9919683b5ced2 100644 --- a/x-pack/test/apm_api_integration/tests/service_maps/service_maps_kuery_filter.spec.ts +++ b/x-pack/test/apm_api_integration/tests/service_maps/service_maps_kuery_filter.spec.ts @@ -41,7 +41,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { } registry.when('Service Map', { config: 'trial', archives: [] }, () => { - describe('optional kuery param', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176982 + describe.skip('optional kuery param', () => { before(async () => { const events = timerange(start, end) .interval('15m') diff --git a/x-pack/test/apm_api_integration/tests/throughput/service_maps.spec.ts b/x-pack/test/apm_api_integration/tests/throughput/service_maps.spec.ts index 3ca048253bf34..2109fb44f6bdf 100644 --- a/x-pack/test/apm_api_integration/tests/throughput/service_maps.spec.ts +++ b/x-pack/test/apm_api_integration/tests/throughput/service_maps.spec.ts @@ -119,7 +119,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { after(() => synthtraceEsClient.clean()); - describe('compare throughput value between service inventory and service maps', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176984 + describe.skip('compare throughput value between service inventory and service maps', () => { before(async () => { [throughputTransactionValues, throughputMetricValues] = await Promise.all([ getThroughputValues('transaction'), @@ -135,7 +136,8 @@ export default function ApiTest({ getService }: FtrProviderContext) { }); }); - describe('when calling service maps transactions stats api', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176987 + describe.skip('when calling service maps transactions stats api', () => { let serviceMapsNodeThroughput: number | null | undefined; before(async () => { const response = await callApi(); diff --git a/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts b/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts index 5c42f0e9bf9ae..5b457c9ff7714 100644 --- a/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts +++ b/x-pack/test/cloud_security_posture_functional/page_objects/findings_page.ts @@ -291,17 +291,6 @@ export function FindingsPageProvider({ getService, getPageObjects }: FtrProvider const misconfigurationsFlyout = createFlyoutObject('findings_flyout'); - const toastMessage = async (testSubj = 'csp:toast-success') => ({ - async getElement() { - return await testSubjects.find(testSubj); - }, - async clickToastMessageLink(linkTestSubj = 'csp:toast-success-link') { - const element = await this.getElement(); - const link = await element.findByTestSubject(linkTestSubj); - await link.click(); - }, - }); - const groupSelector = (testSubj = 'group-selector-dropdown') => ({ async getElement() { return await testSubjects.find(testSubj); @@ -360,7 +349,6 @@ export function FindingsPageProvider({ getService, getPageObjects }: FtrProvider distributionBar, vulnerabilityDataGrid, misconfigurationsFlyout, - toastMessage, detectionRuleApi, groupSelector, findingsGrouping, diff --git a/x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts b/x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts index 9b60c77c3ec15..5e4e812c88a8f 100644 --- a/x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts +++ b/x-pack/test/cloud_security_posture_functional/pages/findings_alerts.ts @@ -13,6 +13,7 @@ import type { FtrProviderContext } from '../ftr_provider_context'; export default function ({ getPageObjects, getService }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const retry = getService('retry'); + const toasts = getService('toasts'); const pageObjects = getPageObjects(['common', 'findings', 'header']); const chance = new Chance(); @@ -155,13 +156,13 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await misconfigurationsFlyout.getVisibleText('csp:findings-flyout-detection-rule-count') ).to.be('1 detection rule'); - const toastMessage = await (await findings.toastMessage()).getElement(); + const toastMessage = await (await toasts.toastMessageByTestSubj()).getElement(); expect(toastMessage).to.be.ok(); const toastMessageTitle = await toastMessage.findByTestSubject('csp:toast-success-title'); expect(await toastMessageTitle.getVisibleText()).to.be(ruleName1); - await (await findings.toastMessage()).clickToastMessageLink(); + await (await toasts.toastMessageByTestSubj()).clickToastMessageLink(); const rulePageTitle = await testSubjects.find('header-page-title'); expect(await rulePageTitle.getVisibleText()).to.be(ruleName1); @@ -182,13 +183,13 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await misconfigurationsFlyout.getVisibleText('csp:findings-flyout-detection-rule-count') ).to.be('1 detection rule'); - const toastMessage = await (await findings.toastMessage()).getElement(); + const toastMessage = await (await toasts.toastMessageByTestSubj()).getElement(); expect(toastMessage).to.be.ok(); const toastMessageTitle = await toastMessage.findByTestSubject('csp:toast-success-title'); expect(await toastMessageTitle.getVisibleText()).to.be(ruleName1); - await (await findings.toastMessage()).clickToastMessageLink(); + await (await toasts.toastMessageByTestSubj()).clickToastMessageLink(); const rulePageTitle = await testSubjects.find('header-page-title'); expect(await rulePageTitle.getVisibleText()).to.be(ruleName1); @@ -199,7 +200,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await latestFindingsTable.openFlyoutAt(0); await misconfigurationsFlyout.clickTakeActionCreateRuleButton(); - await (await findings.toastMessage()).clickToastMessageLink(); + await (await toasts.toastMessageByTestSubj()).clickToastMessageLink(); const rulePageDescription = await testSubjects.find( 'stepAboutRuleDetailsToggleDescriptionText' diff --git a/x-pack/test/examples/search_examples/partial_results_example.ts b/x-pack/test/examples/search_examples/partial_results_example.ts index 83eb900ef0ff4..269b2e79ab38f 100644 --- a/x-pack/test/examples/search_examples/partial_results_example.ts +++ b/x-pack/test/examples/search_examples/partial_results_example.ts @@ -14,8 +14,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common']); const retry = getService('retry'); - // FLAKY: https://github.com/elastic/kibana/issues/175579 - describe.skip('Partial results example', () => { + describe('Partial results example', () => { before(async () => { await PageObjects.common.navigateToApp('searchExamples'); await testSubjects.click('/search'); diff --git a/x-pack/test/examples/search_examples/search_example.ts b/x-pack/test/examples/search_examples/search_example.ts index 6dd9c6e125b18..a46739fb6b569 100644 --- a/x-pack/test/examples/search_examples/search_example.ts +++ b/x-pack/test/examples/search_examples/search_example.ts @@ -50,9 +50,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); beforeEach(async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await retry.waitFor('toasts gone', async () => { - return (await toasts.getToastCount()) === 0; + return (await toasts.getCount()) === 0; }); }); @@ -85,10 +85,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should handle warnings', async () => { await testSubjects.click('searchWithWarning'); await retry.waitFor('', async () => { - const toastCount = await toasts.getToastCount(); + const toastCount = await toasts.getCount(); return toastCount > 1; }); - const warningToast = await toasts.getToastElement(2); + const warningToast = await toasts.getElementByIndex(2); const textEl = await warningToast.findByTestSubject('euiToastBody'); const text: string = await textEl.getVisibleText(); expect(text).to.contain('Watch out!'); diff --git a/x-pack/test/examples/search_examples/search_sessions_cache.ts b/x-pack/test/examples/search_examples/search_sessions_cache.ts index 44a72680c155d..04e5325f66738 100644 --- a/x-pack/test/examples/search_examples/search_sessions_cache.ts +++ b/x-pack/test/examples/search_examples/search_sessions_cache.ts @@ -17,12 +17,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const comboBox = getService('comboBox'); async function getExecutedAt() { - const toast = await toasts.getToastElement(1); + const toast = await toasts.getElementByIndex(1); const timeElem = await testSubjects.findDescendant('requestExecutedAt', toast); const text = await timeElem.getVisibleText(); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await retry.waitFor('toasts gone', async () => { - return (await toasts.getToastCount()) === 0; + return (await toasts.getCount()) === 0; }); return text; } diff --git a/x-pack/test/examples/search_examples/sql_search_example.ts b/x-pack/test/examples/search_examples/sql_search_example.ts index a51ea21ea36bd..fc31d15deb82c 100644 --- a/x-pack/test/examples/search_examples/sql_search_example.ts +++ b/x-pack/test/examples/search_examples/sql_search_example.ts @@ -36,7 +36,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'responseCodeBlock', `"logstash-2015.09.22"` ); - expect(await toasts.getToastCount()).to.be(0); + expect(await toasts.getCount()).to.be(0); }); }); } diff --git a/x-pack/test/functional/apps/dashboard/group3/drilldowns/dashboard_to_dashboard_drilldown.ts b/x-pack/test/functional/apps/dashboard/group3/drilldowns/dashboard_to_dashboard_drilldown.ts index deb5195040800..a8dd8c7aaa769 100644 --- a/x-pack/test/functional/apps/dashboard/group3/drilldowns/dashboard_to_dashboard_drilldown.ts +++ b/x-pack/test/functional/apps/dashboard/group3/drilldowns/dashboard_to_dashboard_drilldown.ts @@ -36,12 +36,13 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const security = getService('security'); const spaces = getService('spaces'); const elasticChart = getService('elasticChart'); + const toasts = getService('toasts'); const createDrilldown = async () => { await PageObjects.dashboard.gotoDashboardEditMode( dashboardDrilldownsManage.DASHBOARD_WITH_PIE_CHART_NAME ); - await PageObjects.common.clearAllToasts(); // toasts get in the way of bottom "Create drilldown" button in flyout + await toasts.dismissAll(); // toasts get in the way of bottom "Create drilldown" button in flyout // create drilldown await dashboardPanelActions.openContextMenu(); @@ -77,7 +78,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { controls: Array<{ field: string; type: string }> ) => { await PageObjects.dashboard.gotoDashboardEditMode(dashboardName); - await PageObjects.common.clearAllToasts(); // toasts get in the way of bottom "Save and close" button in create control flyout + await toasts.dismissAll(); // toasts get in the way of bottom "Save and close" button in create control flyout for (const control of controls) { await PageObjects.dashboardControls.createControl({ diff --git a/x-pack/test/functional/apps/discover/reporting.ts b/x-pack/test/functional/apps/discover/reporting.ts index 9f9a1e277cec8..78166fd85d22e 100644 --- a/x-pack/test/functional/apps/discover/reporting.ts +++ b/x-pack/test/functional/apps/discover/reporting.ts @@ -30,6 +30,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const filterBar = getService('filterBar'); const find = getService('find'); const testSubjects = getService('testSubjects'); + const toasts = getService('toasts'); const setFieldsFromSource = async (setValue: boolean) => { await kibanaServer.uiSettings.update({ 'discover:searchFieldsFromSource': setValue }); @@ -38,7 +39,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const getReport = async () => { // close any open notification toasts - await PageObjects.reporting.clearToastNotifications(); + await toasts.dismissAll(); await PageObjects.reporting.openCsvReportingPanel(); await PageObjects.reporting.clickGenerateReportButton(); diff --git a/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts b/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts index 4480063da220b..d680778adc523 100644 --- a/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts +++ b/x-pack/test/functional/apps/index_management/data_streams_tab/data_streams_tab.ts @@ -106,7 +106,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('saveButton'); // Expect to see a success toast - const successToast = await toasts.getToastElement(1); + const successToast = await toasts.getElementByIndex(1); expect(await successToast.getVisibleText()).to.contain('Data retention updated'); }); @@ -124,7 +124,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('saveButton'); // Expect to see a success toast - const successToast = await toasts.getToastElement(1); + const successToast = await toasts.getElementByIndex(1); expect(await successToast.getVisibleText()).to.contain('Data retention disabled'); }); }); diff --git a/x-pack/test/functional/apps/index_management/enrich_policies_tab/enrich_policies_tab.ts b/x-pack/test/functional/apps/index_management/enrich_policies_tab/enrich_policies_tab.ts index ab626393a9578..aa7aa2764b7c0 100644 --- a/x-pack/test/functional/apps/index_management/enrich_policies_tab/enrich_policies_tab.ts +++ b/x-pack/test/functional/apps/index_management/enrich_policies_tab/enrich_policies_tab.ts @@ -90,7 +90,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.indexManagement.clickExecuteEnrichPolicyAt(0); await pageObjects.indexManagement.clickConfirmModalButton(); - const successToast = await toasts.getToastElement(1); + const successToast = await toasts.getElementByIndex(1); expect(await successToast.getVisibleText()).to.contain(`Executed ${ENRICH_POLICY_NAME}`); }); @@ -98,7 +98,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.indexManagement.clickDeleteEnrichPolicyAt(0); await pageObjects.indexManagement.clickConfirmModalButton(); - const successToast = await toasts.getToastElement(2); + const successToast = await toasts.getElementByIndex(2); expect(await successToast.getVisibleText()).to.contain(`Deleted ${ENRICH_POLICY_NAME}`); }); }); diff --git a/x-pack/test/functional/apps/infra/hosts_view.ts b/x-pack/test/functional/apps/infra/hosts_view.ts index 9742eed4d2f30..a185023c9b33d 100644 --- a/x-pack/test/functional/apps/infra/hosts_view.ts +++ b/x-pack/test/functional/apps/infra/hosts_view.ts @@ -34,6 +34,7 @@ const END_HOST_PROCESSES_DATE = moment.utc(DATES.metricsAndLogs.hosts.processesD const tableEntries = [ { + alertsCount: 2, title: 'demo-stack-apache-01', cpuUsage: '1.2%', normalizedLoad: '0.5%', @@ -44,36 +45,29 @@ const tableEntries = [ tx: '0 bit/s', }, { - title: 'demo-stack-client-01', - cpuUsage: '0.5%', - normalizedLoad: '0.1%', - memoryUsage: '13.8%', - memoryFree: '3.3 GB', - diskSpaceUsage: '16.9%', - rx: '0 bit/s', - tx: '0 bit/s', - }, - { - title: 'demo-stack-haproxy-01', - cpuUsage: '0.8%', + alertsCount: 2, + title: 'demo-stack-mysql-01', + cpuUsage: '0.9%', normalizedLoad: '0%', - memoryUsage: '16.5%', + memoryUsage: '18.2%', memoryFree: '3.2 GB', - diskSpaceUsage: '16.3%', + diskSpaceUsage: '17.8%', rx: '0 bit/s', tx: '0 bit/s', }, { - title: 'demo-stack-mysql-01', - cpuUsage: '0.9%', + alertsCount: 2, + title: 'demo-stack-redis-01', + cpuUsage: '0.8%', normalizedLoad: '0%', - memoryUsage: '18.2%', - memoryFree: '3.2 GB', - diskSpaceUsage: '17.8%', + memoryUsage: '15.9%', + memoryFree: '3.3 GB', + diskSpaceUsage: '16.3%', rx: '0 bit/s', tx: '0 bit/s', }, { + alertsCount: 0, title: 'demo-stack-nginx-01', cpuUsage: '0.8%', normalizedLoad: '1.4%', @@ -84,15 +78,27 @@ const tableEntries = [ tx: '0 bit/s', }, { - title: 'demo-stack-redis-01', + alertsCount: 0, + title: 'demo-stack-haproxy-01', cpuUsage: '0.8%', normalizedLoad: '0%', - memoryUsage: '15.9%', - memoryFree: '3.3 GB', + memoryUsage: '16.5%', + memoryFree: '3.2 GB', diskSpaceUsage: '16.3%', rx: '0 bit/s', tx: '0 bit/s', }, + { + alertsCount: 0, + title: 'demo-stack-client-01', + cpuUsage: '0.5%', + normalizedLoad: '0.1%', + memoryUsage: '13.8%', + memoryFree: '3.3 GB', + diskSpaceUsage: '16.9%', + rx: '0 bit/s', + tx: '0 bit/s', + }, ]; export default ({ getPageObjects, getService }: FtrProviderContext) => { @@ -226,7 +232,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); - describe('Overview Tab', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176951 + describe.skip('Overview Tab', () => { before(async () => { await pageObjects.assetDetails.clickOverviewTab(); }); @@ -609,10 +616,10 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await Promise.all( [ { metric: 'hostsCount', value: '3' }, - { metric: 'cpuUsage', value: '0.8%' }, + { metric: 'cpuUsage', value: '0.9%' }, { metric: 'normalizedLoad1m', value: '0.2%' }, - { metric: 'memoryUsage', value: '16.3%' }, - { metric: 'diskUsage', value: '16.9%' }, + { metric: 'memoryUsage', value: '17.5%' }, + { metric: 'diskUsage', value: '17.2%' }, ].map(async ({ metric, value }) => { await retry.try(async () => { const tileValue = await pageObjects.infraHostsView.getKPITileValue(metric); @@ -625,12 +632,12 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('should update the alerts count on a search submit', async () => { const alertsCount = await pageObjects.infraHostsView.getAlertsCount(); - expect(alertsCount).to.be('2'); + expect(alertsCount).to.be('6'); }); it('should update the alerts table content on a search submit', async () => { - const ACTIVE_ALERTS = 2; - const RECOVERED_ALERTS = 2; + const ACTIVE_ALERTS = 6; + const RECOVERED_ALERTS = 4; const ALL_ALERTS = ACTIVE_ALERTS + RECOVERED_ALERTS; const COLUMNS = 11; @@ -707,7 +714,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.infraHostsView.sortByCpuUsage(); let hostRows = await pageObjects.infraHostsView.getHostsTableData(); const hostDataFirtPage = await pageObjects.infraHostsView.getHostsRowData(hostRows[0]); - expect(hostDataFirtPage).to.eql(tableEntries[1]); + expect(hostDataFirtPage).to.eql(tableEntries[5]); await pageObjects.infraHostsView.paginateTo(2); hostRows = await pageObjects.infraHostsView.getHostsTableData(); @@ -724,7 +731,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.infraHostsView.paginateTo(2); hostRows = await pageObjects.infraHostsView.getHostsTableData(); const hostDataLastPage = await pageObjects.infraHostsView.getHostsRowData(hostRows[0]); - expect(hostDataLastPage).to.eql(tableEntries[1]); + expect(hostDataLastPage).to.eql(tableEntries[5]); }); it('should sort by text field asc', async () => { @@ -736,14 +743,14 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await pageObjects.infraHostsView.paginateTo(2); hostRows = await pageObjects.infraHostsView.getHostsTableData(); const hostDataLastPage = await pageObjects.infraHostsView.getHostsRowData(hostRows[0]); - expect(hostDataLastPage).to.eql(tableEntries[5]); + expect(hostDataLastPage).to.eql(tableEntries[2]); }); it('should sort by text field desc', async () => { await pageObjects.infraHostsView.sortByTitle(); let hostRows = await pageObjects.infraHostsView.getHostsTableData(); const hostDataFirtPage = await pageObjects.infraHostsView.getHostsRowData(hostRows[0]); - expect(hostDataFirtPage).to.eql(tableEntries[5]); + expect(hostDataFirtPage).to.eql(tableEntries[2]); await pageObjects.infraHostsView.paginateTo(2); hostRows = await pageObjects.infraHostsView.getHostsTableData(); diff --git a/x-pack/test/functional/apps/lens/group2/fields_list.ts b/x-pack/test/functional/apps/lens/group2/fields_list.ts index 743a26d3f20ee..cb29eb74b96d1 100644 --- a/x-pack/test/functional/apps/lens/group2/fields_list.ts +++ b/x-pack/test/functional/apps/lens/group2/fields_list.ts @@ -9,7 +9,14 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { - const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header', 'timePicker']); + const PageObjects = getPageObjects([ + 'visualize', + 'lens', + 'common', + 'header', + 'timePicker', + 'unifiedFieldList', + ]); const find = getService('find'); const log = getService('log'); const testSubjects = getService('testSubjects'); @@ -19,8 +26,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const es = getService('es'); const queryBar = getService('queryBar'); - // Failing: See https://github.com/elastic/kibana/issues/176837 - describe.skip('lens fields list tests', () => { + describe('lens fields list tests', () => { for (const datasourceType of ['form-based', 'ad-hoc', 'ad-hoc-no-timefield']) { describe(`${datasourceType} datasource`, () => { before(async () => { @@ -263,16 +269,17 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should show new fields Available fields', async () => { await es.transport.request({ - path: '/field-update-test/_doc', + path: '/field-update-test/_doc?refresh=true', method: 'POST', body: { '@timestamp': new Date().toISOString(), - oldField: 10, + oldField: 20, newField: 20, }, }); + await PageObjects.lens.waitForField('oldField'); - await queryBar.setQuery('oldField: 10'); + await queryBar.setQuery('oldField: 20'); await queryBar.submitQuery(); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.lens.waitForField('newField'); diff --git a/x-pack/test/functional/apps/lens/group4/show_underlying_data.ts b/x-pack/test/functional/apps/lens/group4/show_underlying_data.ts index 06716c54ac0e3..fee3756e11759 100644 --- a/x-pack/test/functional/apps/lens/group4/show_underlying_data.ts +++ b/x-pack/test/functional/apps/lens/group4/show_underlying_data.ts @@ -8,7 +8,14 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { - const PageObjects = getPageObjects(['visualize', 'lens', 'common', 'header', 'discover']); + const PageObjects = getPageObjects([ + 'visualize', + 'lens', + 'common', + 'header', + 'discover', + 'unifiedFieldList', + ]); const queryBar = getService('queryBar'); const filterBar = getService('filterBar'); const listingTable = getService('listingTable'); @@ -16,8 +23,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const find = getService('find'); const browser = getService('browser'); - // Failing: See https://github.com/elastic/kibana/issues/176828 - describe.skip('show underlying data', () => { + describe('show underlying data', () => { it('should show the open button for a compatible saved visualization', async () => { await PageObjects.visualize.gotoVisualizationLandingPage(); await listingTable.searchForItemWithName('lnsXYvis'); @@ -126,7 +132,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('should show the open button for a compatible saved visualization with a lucene query', async () => { - // Make the breakdown dimention contribute to filters again + // Make the breakdown dimension contribute to filters again await PageObjects.lens.openDimensionEditor( 'lnsXY_splitDimensionPanel > lns-dimensionTrigger' ); @@ -155,6 +161,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const [lensWindowHandler, discoverWindowHandle] = await browser.getAllWindowHandles(); await browser.switchToWindow(discoverWindowHandle); await PageObjects.header.waitUntilLoadingHasFinished(); + await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded(); await testSubjects.existOrFail('unifiedHistogramChart'); // check the query expect(await queryBar.getQueryString()).be.eql( diff --git a/x-pack/test/functional/apps/lens/group6/annotations.ts b/x-pack/test/functional/apps/lens/group6/annotations.ts index cd9986b29ab03..66871edd593b5 100644 --- a/x-pack/test/functional/apps/lens/group6/annotations.ts +++ b/x-pack/test/functional/apps/lens/group6/annotations.ts @@ -155,7 +155,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.click('confirmSaveSavedObjectButton'); - const toastContents = await toastsService.getToastContent(1); + const toastContents = await toastsService.getContentByIndex(1); expect(toastContents).to.be( `Saved "${ANNOTATION_GROUP_TITLE}"\nView or manage in the annotation library.` diff --git a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation_saved_search.ts b/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation_saved_search.ts index 307678384d470..eb81e2d8de15a 100644 --- a/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation_saved_search.ts +++ b/x-pack/test/functional/apps/ml/data_frame_analytics/classification_creation_saved_search.ts @@ -14,8 +14,7 @@ export default function ({ getService }: FtrProviderContext) { const ml = getService('ml'); const editedDescription = 'Edited description'; - // FLAKY: https://github.com/elastic/kibana/issues/147020 - describe.skip('classification saved search creation', function () { + describe('classification saved search creation', function () { before(async () => { await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/farequote_small'); await ml.testResources.createDataViewIfNeeded('ft_farequote_small', '@timestamp'); @@ -684,16 +683,20 @@ export default function ({ getService }: FtrProviderContext) { await ml.dataFrameAnalyticsResults.assertResultsTableNotEmpty(); await ml.testExecution.logTestStep('displays the ROC curve chart'); - await ml.commonUI.assertColorsInCanvasElement( - 'mlDFAnalyticsClassificationExplorationRocCurveChart', - testData.expected.rocCurveColorState, - ['#000000'], - undefined, - undefined, - // increased tolerance for ROC curve chart up from 10 to 20 - // since the returned colors vary quite a bit on each run. - 20 - ); + + // NOTE: Temporarily disabling these assertions since the colors can vary quite a bit on each run and cause flakiness + // Tracking in https://github.com/elastic/kibana/issues/176938 + + // await ml.commonUI.assertColorsInCanvasElement( + // 'mlDFAnalyticsClassificationExplorationRocCurveChart', + // testData.expected.rocCurveColorState, + // ['#000000'], + // undefined, + // undefined, + // // increased tolerance for ROC curve chart up from 10 to 20 + // // since the returned colors vary quite a bit on each run. + // 20 + // ); await ml.commonUI.resetAntiAliasing(); }); diff --git a/x-pack/test/functional/apps/observability_logs_explorer/config.ts b/x-pack/test/functional/apps/observability_logs_explorer/config.ts index be14d3cca2396..0811f0e2a794e 100644 --- a/x-pack/test/functional/apps/observability_logs_explorer/config.ts +++ b/x-pack/test/functional/apps/observability_logs_explorer/config.ts @@ -9,10 +9,33 @@ import { FtrConfigProviderContext, GenericFtrProviderContext } from '@kbn/test'; import { createLogger, LogLevel, LogsSynthtraceEsClient } from '@kbn/apm-synthtrace'; import { FtrProviderContext as InheritedFtrProviderContext } from '../../ftr_provider_context'; -export default async function createTestConfig({ readConfigFile }: FtrConfigProviderContext) { +export type InheritedServices = InheritedFtrProviderContext extends GenericFtrProviderContext< + infer TServices, + {} +> + ? TServices + : {}; + +export type InheritedPageObjects = InheritedFtrProviderContext extends GenericFtrProviderContext< + infer TServices, + infer TPageObjects +> + ? TPageObjects + : {}; + +interface ObsLogExplorerConfig { + services: InheritedServices & { + logSynthtraceEsClient: ( + context: InheritedFtrProviderContext + ) => Promise; + }; +} + +export default async function createTestConfig({ + readConfigFile, +}: FtrConfigProviderContext): Promise { const functionalConfig = await readConfigFile(require.resolve('../../config.base.js')); const services = functionalConfig.get('services'); - const pageObjects = functionalConfig.get('pageObjects'); return { ...functionalConfig.getAll(), @@ -27,14 +50,11 @@ export default async function createTestConfig({ readConfigFile }: FtrConfigProv }); }, }, - pageObjects, }; } -export type CreateTestConfig = Awaited>; - -export type ObsLogsExplorerServices = CreateTestConfig['services']; -export type ObsLogsExplorerPageObject = CreateTestConfig['pageObjects']; +export type ObsLogsExplorerServices = ObsLogExplorerConfig['services']; +export type ObsLogsExplorerPageObject = InheritedPageObjects; export type FtrProviderContext = GenericFtrProviderContext< ObsLogsExplorerServices, diff --git a/x-pack/test/functional/apps/security/users.ts b/x-pack/test/functional/apps/security/users.ts index 1bf0e2eea4d70..e9711dc29c46b 100644 --- a/x-pack/test/functional/apps/security/users.ts +++ b/x-pack/test/functional/apps/security/users.ts @@ -159,11 +159,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { describe('change password', () => { before(async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }); afterEach(async () => { await PageObjects.security.submitUpdateUserForm(); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }); after(async () => { await PageObjects.security.forceLogout(); @@ -177,10 +177,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.security.updateUserPassword(optionalUser); await retry.waitFor('', async () => { - const toastCount = await toasts.getToastCount(); + const toastCount = await toasts.getCount(); return toastCount >= 1; }); - const successToast = await toasts.getToastElement(1); + const successToast = await toasts.getElementByIndex(1); expect(await successToast.getVisibleText()).to.be('Password successfully changed'); }); @@ -196,10 +196,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.security.updateUserPassword(optionalUser, true); await retry.waitFor('', async () => { - const toastCount = await toasts.getToastCount(); + const toastCount = await toasts.getCount(); return toastCount >= 1; }); - const successToast = await toasts.getToastElement(1); + const successToast = await toasts.getElementByIndex(1); expect(await successToast.getVisibleText()).to.be('Password successfully changed'); }); }); diff --git a/x-pack/test/functional/apps/user_profiles/user_profiles.ts b/x-pack/test/functional/apps/user_profiles/user_profiles.ts index a9f2f7a519502..cd41155707d68 100644 --- a/x-pack/test/functional/apps/user_profiles/user_profiles.ts +++ b/x-pack/test/functional/apps/user_profiles/user_profiles.ts @@ -8,8 +8,9 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../ftr_provider_context'; -export default ({ getPageObjects }: FtrProviderContext) => { +export default ({ getPageObjects, getService }: FtrProviderContext) => { const pageObjects = getPageObjects(['common', 'userProfiles', 'settings']); + const toasts = getService('toasts'); describe('User Profile Page', async () => { before(async () => {}); @@ -24,7 +25,7 @@ export default ({ getPageObjects }: FtrProviderContext) => { await pageObjects.userProfiles.saveUserProfileChanges(); - let toast = await pageObjects.common.closeToast(); + let toast = await toasts.getTitleAndDismiss(); expect(toast).to.be('Profile updated'); @@ -32,7 +33,7 @@ export default ({ getPageObjects }: FtrProviderContext) => { await pageObjects.userProfiles.saveUserProfileChanges(); - toast = await pageObjects.common.closeToast(); + toast = await toasts.getTitleAndDismiss(); expect(toast).to.be('Profile updated'); }); @@ -42,7 +43,7 @@ export default ({ getPageObjects }: FtrProviderContext) => { await pageObjects.userProfiles.saveUserProfileChanges(); - let toast = await pageObjects.common.closeToast(); + let toast = await toasts.getTitleAndDismiss(); expect(toast).to.be('Profile updated'); @@ -50,7 +51,7 @@ export default ({ getPageObjects }: FtrProviderContext) => { await pageObjects.userProfiles.saveUserProfileChanges(); - toast = await pageObjects.common.closeToast(); + toast = await toasts.getTitleAndDismiss(); expect(toast).to.be('Profile updated'); }); @@ -72,7 +73,7 @@ export default ({ getPageObjects }: FtrProviderContext) => { const submitButton = await pageObjects.userProfiles.getChangePasswordFormSubmitButton(); await submitButton.click(); - const initialToast = await pageObjects.common.closeToast(); + const initialToast = await toasts.getTitleAndDismiss(); expect(initialToast).to.be('Password successfully changed'); @@ -84,7 +85,7 @@ export default ({ getPageObjects }: FtrProviderContext) => { await submitButton.click(); - const resetToast = await pageObjects.common.closeToast(); + const resetToast = await toasts.getTitleAndDismiss(); expect(resetToast).to.be('Password successfully changed'); }); diff --git a/x-pack/test/functional/page_objects/infra_hosts_view.ts b/x-pack/test/functional/page_objects/infra_hosts_view.ts index 60c4f0727e7c0..31ae75c4000d6 100644 --- a/x-pack/test/functional/page_objects/infra_hosts_view.ts +++ b/x-pack/test/functional/page_objects/infra_hosts_view.ts @@ -66,10 +66,29 @@ export function InfraHostsViewProvider({ getService }: FtrProviderContext) { const cells = await row.findAllByCssSelector('[data-test-subj*="hostsView-tableRow-"]'); // Retrieve content for each cell - const [title, cpuUsage, normalizedLoad, memoryUsage, memoryFree, diskSpaceUsage, rx, tx] = - await Promise.all(cells.map((cell) => this.getHostsCellContent(cell))); - - return { title, cpuUsage, normalizedLoad, memoryUsage, memoryFree, diskSpaceUsage, rx, tx }; + const [ + alertsCount, + title, + cpuUsage, + normalizedLoad, + memoryUsage, + memoryFree, + diskSpaceUsage, + rx, + tx, + ] = await Promise.all(cells.map((cell) => this.getHostsCellContent(cell))); + + return { + alertsCount, + title, + cpuUsage, + normalizedLoad, + memoryUsage, + memoryFree, + diskSpaceUsage, + rx, + tx, + }; }, async getHostsCellContent(cell: WebElementWrapper) { @@ -235,11 +254,11 @@ export function InfraHostsViewProvider({ getService }: FtrProviderContext) { // Sorting getCpuUsageHeader() { - return testSubjects.find('tableHeaderCell_cpu_2'); + return testSubjects.find('tableHeaderCell_cpu_3'); }, getTitleHeader() { - return testSubjects.find('tableHeaderCell_title_1'); + return testSubjects.find('tableHeaderCell_title_2'); }, async sortByCpuUsage() { diff --git a/x-pack/test/functional/page_objects/observability_logs_explorer.ts b/x-pack/test/functional/page_objects/observability_logs_explorer.ts index baeff166b6c6c..270b233c9dca3 100644 --- a/x-pack/test/functional/page_objects/observability_logs_explorer.ts +++ b/x-pack/test/functional/page_objects/observability_logs_explorer.ts @@ -393,7 +393,7 @@ export function ObservabilityLogsExplorerPageObject({ }, async assertRestoreFailureToastExist() { - const successToast = await toasts.getToastElement(1); + const successToast = await toasts.getElementByIndex(1); expect(await successToast.getVisibleText()).to.contain('Error restoring state from URL'); }, diff --git a/x-pack/test/functional/page_objects/reporting_page.ts b/x-pack/test/functional/page_objects/reporting_page.ts index d4fbad898ecfa..1574a5b8df0ce 100644 --- a/x-pack/test/functional/page_objects/reporting_page.ts +++ b/x-pack/test/functional/page_objects/reporting_page.ts @@ -98,11 +98,6 @@ export class ReportingPageObject extends FtrService { await this.share.openShareMenuItem('PNG Reports'); } - async clearToastNotifications() { - const toasts = await this.testSubjects.findAll('toastCloseButton'); - await Promise.all(toasts.map(async (t) => await t.click())); - } - async getQueueReportError() { return await this.testSubjects.exists('errorToastMessage'); } diff --git a/x-pack/test/functional/services/cases/common.ts b/x-pack/test/functional/services/cases/common.ts index 4809fe4278814..d8bb1ffe7a286 100644 --- a/x-pack/test/functional/services/cases/common.ts +++ b/x-pack/test/functional/services/cases/common.ts @@ -94,7 +94,7 @@ export function CasesCommonServiceProvider({ getService, getPageObject }: FtrPro }, async expectToasterToContain(content: string) { - const toast = await toasts.getToastElement(1); + const toast = await toasts.getElementByIndex(1); expect(await toast.getVisibleText()).to.contain(content); }, diff --git a/x-pack/test/functional/services/ml/common_ui.ts b/x-pack/test/functional/services/ml/common_ui.ts index 63a1fdf17cf4f..98404c88b412e 100644 --- a/x-pack/test/functional/services/ml/common_ui.ts +++ b/x-pack/test/functional/services/ml/common_ui.ts @@ -389,15 +389,13 @@ export function MachineLearningCommonUIProvider({ async assertLastToastHeader(expectedHeader: string, timeout: number = 5000) { await retry.tryForTime(timeout, async () => { - const resultToast = await toasts.getToastElement(1); - const titleElement = await testSubjects.findDescendant('euiToastHeader', resultToast); - const title: string = await titleElement.getVisibleText(); + const title: string = await toasts.getTitleByIndex(1); expect(title).to.eql( expectedHeader, `Expected the toast header to equal "${expectedHeader}" (got "${title}")` ); }); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }, async ensureAllMenuPopoversClosed() { diff --git a/x-pack/test/functional/services/ml/stack_management_jobs.ts b/x-pack/test/functional/services/ml/stack_management_jobs.ts index 52b8e005ac94c..072cb26bd86a4 100644 --- a/x-pack/test/functional/services/ml/stack_management_jobs.ts +++ b/x-pack/test/functional/services/ml/stack_management_jobs.ts @@ -89,13 +89,10 @@ export function MachineLearningStackManagementJobsProvider({ }); // check and close success toast - const resultToast = await toasts.getToastElement(1); - const titleElement = await testSubjects.findDescendant('euiToastHeader', resultToast); - const title: string = await titleElement.getVisibleText(); + const title = await toasts.getTitleByIndex(1); expect(title).to.match(/^\d+ item[s]? synchronized$/); - const dismissButton = await testSubjects.findDescendant('toastCloseButton', resultToast); - await dismissButton.click(); + await toasts.dismissByIndex(1); }, async assertADJobRowSpaces(adJobId: string, expectedSpaces: string[]) { @@ -281,13 +278,10 @@ export function MachineLearningStackManagementJobsProvider({ }); // check and close success toast - const resultToast = await toasts.getToastElement(1); - const titleElement = await testSubjects.findDescendant('euiToastHeader', resultToast); - const title: string = await titleElement.getVisibleText(); + const title = await toasts.getTitleByIndex(1); expect(title).to.match(/^\d+ job[s]? successfully imported$/); - const dismissButton = await testSubjects.findDescendant('toastCloseButton', resultToast); - await dismissButton.click(); + await toasts.dismissByIndex(1); // check that the flyout is closed await testSubjects.missingOrFail('mlJobMgmtImportJobsFlyout', { timeout: 60 * 1000 }); @@ -349,12 +343,10 @@ export function MachineLearningStackManagementJobsProvider({ }); // check and close success toast - const resultToast = await toasts.getToastElement(1); - const titleElement = await testSubjects.findDescendant('euiToastHeader', resultToast); - const title: string = await titleElement.getVisibleText(); + const title = await toasts.getTitleByIndex(1); expect(title).to.match(/^Your file is downloading in the background$/); - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); // check that the flyout is closed await testSubjects.missingOrFail('mlJobMgmtExportJobsFlyout', { timeout: 60 * 1000 }); diff --git a/x-pack/test/functional/services/observability/alerts/common.ts b/x-pack/test/functional/services/observability/alerts/common.ts index c4df13d80f675..39edf24a96317 100644 --- a/x-pack/test/functional/services/observability/alerts/common.ts +++ b/x-pack/test/functional/services/observability/alerts/common.ts @@ -241,8 +241,8 @@ export function ObservabilityAlertsCommonProvider({ } // wait for a confirmation toast (the css index is 1-based) - await toasts.getToastElement(1); - await toasts.dismissAllToasts(); + await toasts.getElementByIndex(1); + await toasts.dismissAll(); }; const setWorkflowStatusFilter = retryOnStale.wrap(async (workflowStatus: WorkflowStatus) => { diff --git a/x-pack/test/functional/services/transform/wizard.ts b/x-pack/test/functional/services/transform/wizard.ts index 5e00904ab8a27..19cb6c15a9f56 100644 --- a/x-pack/test/functional/services/transform/wizard.ts +++ b/x-pack/test/functional/services/transform/wizard.ts @@ -1178,10 +1178,10 @@ export function TransformWizardProvider({ getService, getPageObjects }: FtrProvi }, async assertErrorToastsNotExist() { - const toastCount = await toasts.getToastCount(); + const toastCount = await toasts.getCount(); // Toast element index starts at 1, not 0 for (let toastIdx = 1; toastIdx < toastCount + 1; toastIdx++) { - const toast = await toasts.getToastElement(toastIdx); + const toast = await toasts.getElementByIndex(toastIdx); const isErrorToast = await toast.elementHasClass('euiToast--danger'); expect(isErrorToast).to.eql(false, `Expected toast message to be successful, got error.`); } diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group2/attachment_framework.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group2/attachment_framework.ts index fc313fc502fd8..9c1c5395f667a 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group2/attachment_framework.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group2/attachment_framework.ts @@ -250,7 +250,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { */ await cases.create.createCase({ owner }); await cases.common.expectToasterToContain('has been updated'); - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); } const casesCreatedFromFlyout = await findCases({ supertest }); @@ -343,7 +343,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await testSubjects.click(`cases-table-row-select-${currentCaseId}`); await cases.common.expectToasterToContain('has been updated'); - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); await ensureFirstCommentOwner(currentCaseId, owner); } }); @@ -406,7 +406,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.common.expectToasterToContain(`${caseTitle} has been updated`); await testSubjects.click('toaster-content-case-view-link'); - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); const title = await find.byCssSelector('[data-test-subj="editable-title-header-value"]'); expect(await title.getVisibleText()).toEqual(caseTitle); @@ -434,7 +434,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.common.expectToasterToContain(`${theCaseTitle} has been updated`); await testSubjects.click('toaster-content-case-view-link'); - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); const title = await find.byCssSelector('[data-test-subj="editable-title-header-value"]'); expect(await title.getVisibleText()).toEqual(theCaseTitle); diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group2/configure.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group2/configure.ts index c61077c4583c8..7f016ee919a3f 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group2/configure.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group2/configure.ts @@ -36,9 +36,9 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { it('change closure option successfully', async () => { await cases.common.selectRadioGroupValue('closure-options-radio-group', 'close-by-pushing'); - const toast = await toasts.getToastElement(1); + const toast = await toasts.getElementByIndex(1); expect(await toast.getVisibleText()).to.be('Settings successfully updated'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await cases.common.assertRadioGroupValue('closure-options-radio-group', 'close-by-pushing'); }); }); diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group2/list_view.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group2/list_view.ts index 906e571941ff2..f1b4e4ea8485a 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group2/list_view.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group2/list_view.ts @@ -883,7 +883,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { describe('row actions', () => { afterEach(async () => { - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); }); describe('Status', () => { @@ -969,7 +969,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { describe('Column Selection', () => { afterEach(async () => { - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); }); before(async () => { diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group2/upgrade.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group2/upgrade.ts index 8320ac9707e3a..cf1ea5512eaba 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group2/upgrade.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group2/upgrade.ts @@ -78,7 +78,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); it('does not show any error toasters', async () => { - expect(await toasts.getToastCount()).to.be(0); + expect(await toasts.getCount()).to.be(0); }); it('shows the title correctly', async () => { @@ -294,7 +294,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { }); it('does not show any error toasters', async () => { - expect(await toasts.getToastCount()).to.be(0); + expect(await toasts.getCount()).to.be(0); }); it('shows the title correctly', async () => { diff --git a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/discover/search_source_alert.ts b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/discover/search_source_alert.ts index bffa564fba774..3053f776aede7 100644 --- a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/discover/search_source_alert.ts +++ b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/discover/search_source_alert.ts @@ -254,10 +254,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const checkInitialRuleParamsState = async (dataView: string, isViewInApp = false) => { if (isViewInApp) { - expect(await toasts.getToastCount()).to.be(0); + expect(await toasts.getCount()).to.be(0); } else { - expect(await toasts.getToastCount()).to.be(1); - expect((await toasts.getToastContent(1)).startsWith('Displayed documents may vary')).to.be( + expect(await toasts.getCount()).to.be(1); + expect((await toasts.getContentByIndex(1)).startsWith('Displayed documents may vary')).to.be( true ); } @@ -271,7 +271,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }; const checkUpdatedRuleParamsState = async () => { - expect(await toasts.getToastCount()).to.be(0); + expect(await toasts.getCount()).to.be(0); const queryString = await queryBar.getQueryString(); const hasFilter = await filterBar.hasFilter('message.keyword', 'msg-1'); expect(queryString).to.be.equal('message:msg-1'); @@ -519,8 +519,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should not display results after data view removal on clicking viewInApp link', async () => { await clickViewInApp(RULE_NAME); - expect(await toasts.getToastCount()).to.be.equal(1); - const content = await toasts.getToastContent(1); + expect(await toasts.getCount()).to.be.equal(1); + const content = await toasts.getContentByIndex(1); expect(content).to.equal( `Error fetching search source\nCould not locate that data view (id: ${sourceDataViewId}), click here to re-create it` ); diff --git a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/alert_flyout.ts b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/alert_flyout.ts index b68ecb3c08d9e..25f77cb8d41ef 100644 --- a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/alert_flyout.ts +++ b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/alert_flyout.ts @@ -15,6 +15,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const pageObjects = getPageObjects(['common', 'uptime']); const supertest = getService('supertest'); const retry = getService('retry'); + const toasts = getService('toasts'); describe('overview page alert flyout controls', function () { const DEFAULT_DATE_START = 'Sep 10, 2019 @ 12:40:08.078'; @@ -86,7 +87,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('can save alert', async () => { await alerts.clickSaveRuleButton(ruleName); await alerts.clickSaveAlertsConfirmButton(); - await pageObjects.common.closeToast(); + await toasts.dismiss(); }); it('posts an alert, verifies its presence, and deletes the alert', async () => { @@ -171,7 +172,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { it('can save alert', async () => { await alerts.clickSaveRuleButton(alertId); await alerts.clickSaveAlertsConfirmButton(); - await pageObjects.common.closeToast(); + await toasts.dismiss(); }); it('has created a valid alert with expected parameters', async () => { diff --git a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts index 98a4a09ee2b8a..e5efd66060e31 100644 --- a/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts +++ b/x-pack/test/functional_with_es_ssl/apps/discover_ml_uptime/uptime/simple_down_alert.ts @@ -73,7 +73,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); it('displays relevant alert in list drawer', async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await testSubjects.click(`xpack.synthetics.monitorList.${monitorId}.expandMonitorDetail`); await pageObjects.header.waitUntilLoadingHasFinished(); diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts index 30ece977d1641..5d11dd17695d0 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/alert_create_flyout.ts @@ -20,6 +20,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const retry = getService('retry'); const browser = getService('browser'); const rules = getService('rules'); + const toasts = getService('toasts'); async function getAlertsByName(name: string) { const { @@ -143,7 +144,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.setValue('nameInput', slackConnectorName); await testSubjects.setValue('slackWebhookUrlInput', 'https://test.com'); await find.clickByCssSelector('[data-test-subj="saveActionButtonModal"]:not(disabled)'); - const createdConnectorToastTitle = await pageObjects.common.closeToast(); + const createdConnectorToastTitle = await toasts.getTitleAndDismiss(); expect(createdConnectorToastTitle).to.eql(`Created '${slackConnectorName}'`); await testSubjects.click('notifyWhenSelect'); await testSubjects.click('onThrottleInterval'); @@ -186,7 +187,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { ); await testSubjects.click('saveRuleButton'); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Created rule "${alertName}"`); await pageObjects.triggersActionsUI.searchAlerts(alertName); const searchResultsAfterSave = await pageObjects.triggersActionsUI.getAlertsList(); @@ -214,7 +215,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.setValue('nameInput', slackConnectorName); await testSubjects.setValue('slackWebhookUrlInput', 'https://test.com'); await find.clickByCssSelector('[data-test-subj="saveActionButtonModal"]:not(disabled)'); - const createdConnectorToastTitle = await pageObjects.common.closeToast(); + const createdConnectorToastTitle = await toasts.getTitleAndDismiss(); expect(createdConnectorToastTitle).to.eql(`Created '${slackConnectorName}'`); await testSubjects.setValue('messageTextArea', 'test message '); await ( @@ -236,7 +237,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('addNewActionConnectorActionGroup-1-option-other'); await testSubjects.click('saveRuleButton'); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Created rule "${alertName}"`); await pageObjects.triggersActionsUI.searchAlerts(alertName); const searchResultsAfterSave = await pageObjects.triggersActionsUI.getAlertsList(); @@ -267,7 +268,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('confirmRuleSaveModal > confirmModalConfirmButton'); await testSubjects.missingOrFail('confirmRuleSaveModal'); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Created rule "${alertName}"`); await new Promise((resolve) => setTimeout(resolve, 1000)); await pageObjects.triggersActionsUI.searchAlerts(alertName); diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/general.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/general.ts index 3f23faad58ce2..093c9c812c061 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/general.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/general.ts @@ -28,6 +28,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex const supertest = getService('supertest'); let objectRemover: ObjectRemover; const browser = getService('browser'); + const toasts = getService('toasts'); describe('General connector functionality', function () { before(async () => { @@ -61,7 +62,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex '[data-test-subj="create-connector-flyout-save-btn"]:not(disabled)' ); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Created '${connectorName}'`); await pageObjects.triggersActionsUI.searchConnectors(connectorName); @@ -102,7 +103,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex '[data-test-subj="edit-connector-flyout-save-btn"]:not(disabled)' ); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Updated '${updatedConnectorName}'`); await testSubjects.click('euiFlyoutCloseButton'); @@ -228,7 +229,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex await testSubjects.click('deleteIdsConfirmation > confirmModalConfirmButton'); await testSubjects.missingOrFail('deleteIdsConfirmation'); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Deleted 1 connector'); await pageObjects.triggersActionsUI.searchConnectors(connectorName); @@ -259,7 +260,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex await testSubjects.click('deleteIdsConfirmation > confirmModalConfirmButton'); await testSubjects.missingOrFail('deleteIdsConfirmation'); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Deleted 1 connector'); await pageObjects.triggersActionsUI.searchConnectors(connectorName); diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/opsgenie.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/opsgenie.ts index 6b37fa90119ea..47490f2c52a4e 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/opsgenie.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/opsgenie.ts @@ -20,6 +20,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const actions = getService('actions'); const rules = getService('rules'); const browser = getService('browser'); + const toasts = getService('toasts'); let objectRemover: ObjectRemover; describe('Opsgenie', () => { @@ -45,7 +46,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { apiKey: 'apiKey', }); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Created '${connectorName}'`); await pageObjects.triggersActionsUI.searchConnectors(connectorName); @@ -80,7 +81,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { apiKey: 'apiKey', }); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Updated '${updatedConnectorName}'`); await testSubjects.click('euiFlyoutCloseButton'); diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/slack.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/slack.ts index 14dbc0db0c241..25243b838e583 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/slack.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/slack.ts @@ -18,6 +18,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const supertest = getService('supertest'); const actions = getService('actions'); const rules = getService('rules'); + const toasts = getService('toasts'); let objectRemover: ObjectRemover; describe('Slack', () => { @@ -52,7 +53,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { url: 'https://test.com', }); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Created '${connectorName}'`); await pageObjects.triggersActionsUI.searchConnectors(connectorName); @@ -80,7 +81,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { token: 'supersecrettoken', }); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Created '${connectorName}'`); await pageObjects.triggersActionsUI.searchConnectors(connectorName); @@ -166,7 +167,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }, ]); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Created rule "${ruleName}"`); }); @@ -183,7 +184,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('saveRuleButton'); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Failed to retrieve Slack channels list'); // We are not saving the rule yet as we currently have no way @@ -210,7 +211,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { // tags: '', // }, // ]); - // const toastTitle = await pageObjects.common.closeToast(); + // const toastTitle = await toasts.getTitleAndDismiss(); // expect(toastTitle).to.eql(`Created rule "${ruleName}"`); }); }); diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/tines.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/tines.ts index 87ce49d95e3da..048fda14996bd 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/tines.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/connectors/tines.ts @@ -29,6 +29,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const actions = getService('actions'); const browser = getService('browser'); const comboBox = getService('comboBox'); + const toasts = getService('toasts'); let objectRemover: ObjectRemover; let simulatorUrl: string; @@ -63,7 +64,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { token: 'apiToken', }); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Created '${connectorName}'`); await pageObjects.triggersActionsUI.searchConnectors(connectorName); @@ -99,7 +100,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { token: 'apiToken', }); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Updated '${updatedConnectorName}'`); await testSubjects.click('euiFlyoutCloseButton'); diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts index 0d7539c566e7e..a6b5af188c260 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/details.ts @@ -25,6 +25,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const supertest = getService('supertest'); const comboBox = getService('comboBox'); const objectRemover = new ObjectRemover(supertest); + const toasts = getService('toasts'); async function createConnectorManualCleanup(overwrites: Record = {}) { const { body: createdConnector } = await supertest @@ -382,7 +383,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await find.clickByCssSelector('[data-test-subj="saveEditedRuleButton"]:not(disabled)'); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Updated '${updatedRuleName}'`); await retry.tryForTime(30 * 1000, async () => { @@ -469,7 +470,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('deleteIdsConfirmation > confirmModalConfirmButton'); await testSubjects.missingOrFail('deleteIdsConfirmation'); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Deleted 1 connector'); // Wait to ensure the table is finished loading @@ -546,7 +547,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('deleteIdsConfirmation > confirmModalConfirmButton'); await testSubjects.missingOrFail('deleteIdsConfirmation'); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Deleted 1 connector'); // Wait to ensure the table is finished loading @@ -656,7 +657,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await find.clickByCssSelector('[data-test-subj="saveEditedRuleButton"]:not(disabled)'); - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Updated '${updatedRuleName}'`); }); }); diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/maintenance_windows/maintenance_windows_table.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/maintenance_windows/maintenance_windows_table.ts index 6a23cc5486469..0b228be252ca3 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/maintenance_windows/maintenance_windows_table.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/maintenance_windows/maintenance_windows_table.ts @@ -15,6 +15,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const testSubjects = getService('testSubjects'); const pageObjects = getPageObjects(['common', 'maintenanceWindows', 'header']); const retry = getService('retry'); + const toasts = getService('toasts'); let objectRemover: ObjectRemover; const browser = getService('browser'); @@ -52,7 +53,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Cancelled running maintenance window '${name}'`); }); @@ -85,7 +86,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Archived maintenance window '${name}'`); }); @@ -116,7 +117,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Cancelled and archived running maintenance window '${name}'`); }); @@ -149,7 +150,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Archived maintenance window '${name}'`); }); @@ -164,7 +165,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql(`Unarchived maintenance window '${name}'`); }); diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/bulk_actions.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/bulk_actions.ts index 617429f3a23c9..c8cf8903a4275 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/bulk_actions.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/bulk_actions.ts @@ -14,7 +14,12 @@ import expect from '@kbn/expect'; import { FtrProviderContext } from '../../../ftr_provider_context'; -import { createAlert, scheduleRule, snoozeAlert } from '../../../lib/alert_api_actions'; +import { + createAlert, + createAlertManualCleanup, + scheduleRule, + snoozeAlert, +} from '../../../lib/alert_api_actions'; import { ObjectRemover } from '../../../lib/object_remover'; export default ({ getPageObjects, getService }: FtrProviderContext) => { @@ -23,13 +28,14 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const supertest = getService('supertest'); const retry = getService('retry'); const objectRemover = new ObjectRemover(supertest); + const toasts = getService('toasts'); async function refreshAlertsList() { await testSubjects.click('logsTab'); await testSubjects.click('rulesTab'); } - describe('rules list', () => { + describe('rules list bulk actions', () => { before(async () => { await pageObjects.common.navigateToApp('triggersActions'); await testSubjects.click('rulesTab'); @@ -60,7 +66,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('linkSnooze1h'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Updated snooze settings for 2 rules.'); }); @@ -99,7 +105,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Updated snooze settings for 2 rules.'); }); @@ -130,7 +136,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('scheduler-saveSchedule'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Updated snooze settings for 2 rules.'); }); @@ -169,7 +175,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Updated snooze settings for 2 rules.'); }); @@ -201,9 +207,87 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Updated API key for 1 rule.'); }); }); + + it('should apply filters to bulk actions when using the select all button', async () => { + const rule1 = await createAlert({ + supertest, + objectRemover, + overwrites: { name: 'a' }, + }); + const rule2 = await createAlertManualCleanup({ + supertest, + overwrites: { name: 'b', rule_type_id: 'test.always-firing' }, + }); + const rule3 = await createAlert({ + supertest, + objectRemover, + overwrites: { name: 'c' }, + }); + + await refreshAlertsList(); + expect(await testSubjects.getVisibleText('totalRulesCount')).to.be('3 rules'); + + await testSubjects.click('ruleTypeFilterButton'); + await testSubjects.existOrFail('ruleTypetest.noopFilterOption'); + await testSubjects.click('ruleTypetest.noopFilterOption'); + await testSubjects.click(`checkboxSelectRow-${rule1.id}`); + await testSubjects.click('selectAllRulesButton'); + + await testSubjects.click('showBulkActionButton'); + await testSubjects.click('bulkDisable'); + await testSubjects.existOrFail('untrackAlertsModal'); + await testSubjects.click('confirmModalConfirmButton'); + + await retry.try(async () => { + const toastTitle = await toasts.getTitleAndDismiss(); + expect(toastTitle).to.eql('Disabled 2 rules'); + }); + + await testSubjects.click('rules-list-clear-filter'); + await refreshAlertsList(); + + await pageObjects.triggersActionsUI.searchAlerts(rule1.name); + expect(await testSubjects.getVisibleText('statusDropdown')).to.be('Disabled'); + await pageObjects.triggersActionsUI.searchAlerts(rule2.name); + expect(await testSubjects.getVisibleText('statusDropdown')).to.be('Enabled'); + await pageObjects.triggersActionsUI.searchAlerts(rule3.name); + expect(await testSubjects.getVisibleText('statusDropdown')).to.be('Disabled'); + + await testSubjects.click('rules-list-clear-filter'); + await refreshAlertsList(); + + await testSubjects.click('ruleStatusFilterButton'); + await testSubjects.existOrFail('ruleStatusFilterOption-enabled'); + await testSubjects.click('ruleStatusFilterOption-enabled'); + await testSubjects.click(`checkboxSelectRow-${rule2.id}`); + await testSubjects.click('selectAllRulesButton'); + + await testSubjects.click('showBulkActionButton'); + await testSubjects.click('bulkDelete'); + await testSubjects.existOrFail('rulesDeleteConfirmation'); + await testSubjects.click('confirmModalConfirmButton'); + + await retry.try(async () => { + const toastTitle = await toasts.getTitleAndDismiss(); + expect(toastTitle).to.eql('Deleted 1 rule'); + }); + + await testSubjects.click('rules-list-clear-filter'); + await refreshAlertsList(); + + await retry.try( + async () => { + expect(await testSubjects.getVisibleText('totalRulesCount')).to.be('2 rules'); + }, + async () => { + // If the delete fails, make sure rule2 gets cleaned up + objectRemover.add(rule2.id, 'alert', 'alerts'); + } + ); + }); }); }; diff --git a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/rules_list.ts b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/rules_list.ts index 7838ec24c50a3..e3324ccbc000a 100644 --- a/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/rules_list.ts +++ b/x-pack/test/functional_with_es_ssl/apps/triggers_actions_ui/rules_list/rules_list.ts @@ -27,6 +27,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex const retry = getService('retry'); const header = getPageObject('header'); const objectRemover = new ObjectRemover(supertest); + const toasts = getService('toasts'); async function refreshAlertsList() { const existsClearFilter = await testSubjects.exists('rules-list-clear-filter'); @@ -346,7 +347,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Deleted 1 rule'); }); @@ -369,7 +370,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex await header.waitUntilLoadingHasFinished(); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Disabled 1 rule'); }); @@ -468,7 +469,7 @@ export default ({ getPageObjects, getPageObject, getService }: FtrProviderContex await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const toastTitle = await pageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Deleted 1 rule'); }); diff --git a/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts b/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts index 66badaab026ab..119f29693cfcc 100644 --- a/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts +++ b/x-pack/test/observability_ai_assistant_functional/tests/conversations/index.spec.ts @@ -115,11 +115,11 @@ export default function ApiTest({ getService, getPageObjects }: FtrProviderConte ); await retry.waitFor('Connector created toast', async () => { - const count = await toasts.getToastCount(); + const count = await toasts.getCount(); return count > 0; }); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }); it('creates a connector', async () => { diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts index 274bac5fc5dc0..b1c8d6dd028b2 100644 --- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts +++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/init_routes.ts @@ -62,6 +62,7 @@ export function initRoutes( params: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }), state: schema.recordOf(schema.string(), schema.any(), { defaultValue: {} }), id: schema.maybe(schema.string()), + timeoutOverride: schema.maybe(schema.string()), }), }), }, @@ -300,6 +301,7 @@ export function initRoutes( const taskManager = await taskManagerStart; return res.ok({ body: await taskManager.fetch({ + size: 20, query: taskManagerQuery, }), }); diff --git a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts index d7bb483fcac01..52c747d0ec786 100644 --- a/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts +++ b/x-pack/test/plugin_api_integration/plugins/sample_task_plugin/server/plugin.ts @@ -18,6 +18,7 @@ import { EphemeralTask, } from '@kbn/task-manager-plugin/server'; import { DEFAULT_MAX_WORKERS } from '@kbn/task-manager-plugin/server/config'; +import { TaskPriority } from '@kbn/task-manager-plugin/server/task'; import { initRoutes } from './init_routes'; // this plugin's dependendencies @@ -166,6 +167,37 @@ export class SampleTaskManagerFixturePlugin }, }), }, + sampleAdHocTaskTimingOut: { + title: 'Sample Ad-Hoc Task that Times Out', + description: 'A sample task that times out.', + maxAttempts: 3, + timeout: '1s', + createTaskRunner: ({ taskInstance }: { taskInstance: ConcreteTaskInstance }) => { + let isCancelled: boolean = false; + return { + async run() { + // wait for 15 seconds + await new Promise((r) => setTimeout(r, 15000)); + + if (!isCancelled) { + const [{ elasticsearch }] = await core.getStartServices(); + await elasticsearch.client.asInternalUser.index({ + index: '.kibana_task_manager_test_result', + body: { + type: 'task', + taskType: 'sampleAdHocTaskTimingOut', + taskId: taskInstance.id, + }, + refresh: true, + }); + } + }, + async cancel() { + isCancelled = true; + }, + }; + }, + }, sampleRecurringTaskWhichHangs: { title: 'Sample Recurring Task that Hangs for a minute', description: 'A sample task that Hangs for a minute on each run.', @@ -242,6 +274,36 @@ export class SampleTaskManagerFixturePlugin async run() {}, }), }, + lowPriorityTask: { + title: 'Task used for testing priority claiming', + priority: TaskPriority.Low, + createTaskRunner: ({ taskInstance }: { taskInstance: ConcreteTaskInstance }) => ({ + async run() { + const { state, schedule } = taskInstance; + const prevState = state || { count: 0 }; + + const count = (prevState.count || 0) + 1; + + const [{ elasticsearch }] = await core.getStartServices(); + await elasticsearch.client.asInternalUser.index({ + index: '.kibana_task_manager_test_result', + body: { + type: 'task', + taskType: 'lowPriorityTask', + taskId: taskInstance.id, + state: JSON.stringify(state), + ranAt: new Date(), + }, + refresh: true, + }); + + return { + state: { count }, + schedule, + }; + }, + }), + }, }); const taskWithTiming = { diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts index 1f52d3ca24f90..e5d5e8fbd6fb7 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/check_registered_task_types.ts @@ -20,6 +20,8 @@ export default function ({ getService }: FtrProviderContext) { } const TEST_TYPES = [ + 'sampleAdHocTaskTimingOut', + 'lowPriorityTask', 'sampleOneTimeTaskThrowingError', 'sampleRecurringTaskTimingOut', 'sampleRecurringTaskWhichHangs', 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 420dfe795f322..1480d5f371a77 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,6 +9,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('task_manager', function taskManagerSuite() { + loadTestFile(require.resolve('./task_priority')); loadTestFile(require.resolve('./background_task_utilization_route')); loadTestFile(require.resolve('./metrics_route')); loadTestFile(require.resolve('./health_route')); diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts index f897e0fa05035..a430993933c8b 100644 --- a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_management.ts @@ -791,6 +791,43 @@ export default function ({ getService }: FtrProviderContext) { }); }); + it('should fail to schedule recurring task with timeout override', async () => { + const task = await scheduleTask({ + taskType: 'sampleRecurringTaskTimingOut', + schedule: { interval: '1s' }, + timeoutOverride: '30s', + params: {}, + }); + + expect(task.timeoutOverride).to.be(undefined); + }); + + it('should allow timeout override for ad hoc tasks', async () => { + const task = await scheduleTask({ + taskType: 'sampleAdHocTaskTimingOut', + timeoutOverride: '30s', + params: {}, + }); + + expect(task.timeoutOverride).to.be('30s'); + + // this task type is set to time out after 1s but the task runner + // will wait 15 seconds and then index a document if it hasn't timed out + // this test overrides the timeout to 30s and checks if the expected + // document was indexed. presence of indexed document means the task + // timeout override was respected + await retry.try(async () => { + const [scheduledTask] = (await currentTasks()).docs; + expect(scheduledTask?.id).to.eql(task.id); + }); + + await retry.try(async () => { + const docs: RawDoc[] = await historyDocs(task.id); + expect(docs.length).to.eql(1); + expect(docs[0]._source.taskType).to.eql('sampleAdHocTaskTimingOut'); + }); + }); + it('should bulk update schedules for multiple tasks', async () => { const initialTime = Date.now(); const tasks = await Promise.all([ diff --git a/x-pack/test/plugin_api_integration/test_suites/task_manager/task_priority.ts b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_priority.ts new file mode 100644 index 0000000000000..f8fc3f63987b9 --- /dev/null +++ b/x-pack/test/plugin_api_integration/test_suites/task_manager/task_priority.ts @@ -0,0 +1,216 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import type * as estypes from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; +import { ConcreteTaskInstance } from '@kbn/task-manager-plugin/server'; +import { taskMappings as TaskManagerMapping } from '@kbn/task-manager-plugin/server/saved_objects/mappings'; +import { asyncForEach } from '@kbn/std'; +import { FtrProviderContext } from '../../ftr_provider_context'; + +const { properties: taskManagerIndexMapping } = TaskManagerMapping; + +export interface RawDoc { + _id: string; + _source: any; + _type?: string; +} +export interface SearchResults { + hits: { + hits: RawDoc[]; + }; +} + +type DeprecatedConcreteTaskInstance = Omit & { + interval: string; +}; + +type SerializedConcreteTaskInstance = Omit< + ConcreteTaskInstance, + 'state' | 'params' | 'scheduledAt' | 'startedAt' | 'retryAt' | 'runAt' +> & { + state: State; + params: Params; + scheduledAt: string; + startedAt: string | null; + retryAt: string | null; + runAt: string; +}; + +export default function ({ getService }: FtrProviderContext) { + const es = getService('es'); + const retry = getService('retry'); + const supertest = getService('supertest'); + + const testHistoryIndex = '.kibana_task_manager_test_result'; + + function scheduleTask( + task: Partial + ): Promise { + return supertest + .post('/api/sample_tasks/schedule') + .set('kbn-xsrf', 'xxx') + .send({ task }) + .expect(200) + .then((response: { body: SerializedConcreteTaskInstance }) => response.body); + } + + function currentTasks(): Promise<{ + docs: Array>; + }> { + return supertest + .get('/api/sample_tasks') + .expect(200) + .then((response) => response.body); + } + + async function historyDocs({ + taskId, + taskType, + }: { + taskId?: string; + taskType?: string; + }): Promise { + const filter: any[] = [{ term: { type: 'task' } }]; + if (taskId) { + filter.push({ term: { taskId } }); + } + if (taskType) { + filter.push({ term: { taskType } }); + } + return es + .search({ + index: testHistoryIndex, + body: { + query: { + bool: { + filter, + }, + }, + }, + }) + .then((result) => (result as unknown as SearchResults).hits.hits); + } + + describe('task priority', () => { + beforeEach(async () => { + const exists = await es.indices.exists({ index: testHistoryIndex }); + if (exists) { + await es.deleteByQuery({ + index: testHistoryIndex, + refresh: true, + body: { query: { term: { type: 'task' } } }, + }); + } else { + await es.indices.create({ + index: testHistoryIndex, + body: { + mappings: { + properties: { + type: { + type: 'keyword', + }, + taskId: { + type: 'keyword', + }, + params: taskManagerIndexMapping.params, + state: taskManagerIndexMapping.state, + runAt: taskManagerIndexMapping.runAt, + } as Record, + }, + }, + }); + } + }); + + afterEach(async () => { + await supertest.delete('/api/sample_tasks').set('kbn-xsrf', 'xxx').expect(200); + }); + + it('should claim low priority tasks if there is capacity', async () => { + // schedule 5 normal tasks and 1 low priority task + // setting the schedule long so they should only run once + const tasksToSchedule = []; + for (let i = 0; i < 5; i++) { + tasksToSchedule.push( + scheduleTask({ + taskType: 'sampleTask', + schedule: { interval: `1d` }, + params: {}, + }) + ); + } + tasksToSchedule.push( + scheduleTask({ + taskType: 'lowPriorityTask', + schedule: { interval: `1d` }, + params: {}, + }) + ); + const scheduledTasks = await Promise.all(tasksToSchedule); + + await retry.try(async () => { + const tasks = (await currentTasks()).docs; + expect(tasks.length).to.eql(6); + + const taskIds = tasks.map((task) => task.id); + const taskDocs: RawDoc[] = []; + await asyncForEach(scheduledTasks, async (scheduledTask) => { + expect(taskIds).to.contain(scheduledTask.id); + const doc: RawDoc[] = await historyDocs({ taskId: scheduledTask.id }); + expect(doc.length).to.eql(1); + taskDocs.push(...doc); + }); + + expect( + taskDocs.findIndex((taskDoc) => taskDoc._source.taskType === 'lowPriorityTask') + ).to.be.greaterThan(-1); + }); + }); + + it('should not claim low priority tasks when there is no capacity', async () => { + // schedule a bunch of normal priority tasks that run frequently + const tasksToSchedule = []; + for (let i = 0; i < 10; i++) { + tasksToSchedule.push( + scheduleTask({ + taskType: 'sampleTask', + schedule: { interval: `1s` }, + params: {}, + }) + ); + } + + // schedule a low priority task + tasksToSchedule.push( + scheduleTask({ + taskType: 'lowPriorityTask', + schedule: { interval: `1s` }, + params: {}, + }) + ); + const scheduledTasks = await Promise.all(tasksToSchedule); + + // make sure all tasks get created + await retry.try(async () => { + const tasks = (await currentTasks()).docs; + expect(tasks.length).to.eql(11); + + const taskIds = tasks.map((task) => task.id); + scheduledTasks.forEach((scheduledTask) => { + expect(taskIds).to.contain(scheduledTask.id); + }); + }); + + // wait for 30 seconds to let the multiple task claiming cycles run + await new Promise((r) => setTimeout(r, 30000)); + + const docs: RawDoc[] = await historyDocs({ taskType: 'lowPriorityTask' }); + expect(docs.length).to.eql(0); + }); + }); +} diff --git a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/ibm_resilient_connector.ts b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/ibm_resilient_connector.ts index 4ff2a98377dad..a950f1824b5af 100644 --- a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/ibm_resilient_connector.ts +++ b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/ibm_resilient_connector.ts @@ -18,6 +18,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const pageObjects = getPageObjects(['common', 'header']); const testSubjects = getService('testSubjects'); const kibanaServer = getService('kibanaServer'); + const toasts = getService('toasts'); let resilientSimulatorUrl: string = ''; let smallUrl: string; @@ -47,9 +48,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await commonScreenshots.takeScreenshot('resilient-connector', screenshotDirectories); await testSubjects.click('create-connector-flyout-save-test-btn'); // Close all toasts since it is unable to get incident types from example site - await pageObjects.common.clearAllToasts(); + await toasts.dismissAll(); await pageObjects.header.waitUntilLoadingHasFinished(); - await pageObjects.common.clearAllToasts(); + await toasts.dismissAll(); await commonScreenshots.takeScreenshot('resilient-params-test', screenshotDirectories); await testSubjects.click('euiFlyoutCloseButton'); }); diff --git a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/sentinelone_connector.ts b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/sentinelone_connector.ts index ced2d8e2e0260..537fc8e6b9163 100644 --- a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/sentinelone_connector.ts +++ b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/sentinelone_connector.ts @@ -18,6 +18,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const actions = getService('actions'); const kibanaServer = getService('kibanaServer'); const testSubjects = getService('testSubjects'); + const toasts = getService('toasts'); let simulatorUrl: string; let editSimulatorUrl: string; @@ -43,7 +44,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.setValue('secrets.token-input', 'tester'); await commonScreenshots.takeScreenshot('sentinelone-connector', screenshotDirectories); await testSubjects.click('create-connector-flyout-save-test-btn'); - await pageObjects.common.clearAllToasts(); + await toasts.dismissAll(); await commonScreenshots.takeScreenshot('sentinelone-params-test', screenshotDirectories); await testSubjects.click('euiFlyoutCloseButton'); }); diff --git a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/tines_connector.ts b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/tines_connector.ts index 6c399f4b1b9ec..83472abbc5693 100644 --- a/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/tines_connector.ts +++ b/x-pack/test/screenshot_creation/apps/response_ops_docs/stack_connectors/tines_connector.ts @@ -18,6 +18,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const actions = getService('actions'); const kibanaServer = getService('kibanaServer'); const testSubjects = getService('testSubjects'); + const toasts = getService('toasts'); + let simulatorUrl: string; let editSimulatorUrl: string; @@ -44,7 +46,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.setValue('secrets.token-input', 'tester'); await commonScreenshots.takeScreenshot('tines-connector', screenshotDirectories); await testSubjects.click('create-connector-flyout-save-test-btn'); - await pageObjects.common.clearAllToasts(); + await toasts.dismissAll(); await commonScreenshots.takeScreenshot('tines-params-test', screenshotDirectories); await testSubjects.click('euiFlyoutCloseButton'); }); diff --git a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/save_search_session.ts b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/save_search_session.ts index 8f3cb7f3b8a8e..bb7f87dadc3a1 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/save_search_session.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/save_search_session.ts @@ -146,7 +146,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.dashboard.waitForRenderComplete(); await searchSessions.expectState('restored'); - expect(await toasts.getToastCount()).to.be(0); // no session restoration related warnings + expect(await toasts.getCount()).to.be(0); // no session restoration related warnings }); }); }); diff --git a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/session_searches_integration.ts b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/session_searches_integration.ts index cffd9db8dd12b..0a6b4f0625e95 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/session_searches_integration.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/session_searches_integration.ts @@ -181,9 +181,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // Check that session is still loading await searchSessions.expectState('backgroundLoading'); await retry.waitFor('session restoration warnings related to other bucket', async () => { - return (await toasts.getToastCount()) === 1; + return (await toasts.getCount()) === 1; }); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); // check that other bucket requested add to a session await searchSessions.openPopover(); @@ -194,7 +194,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(searchSessionItem.searchesCount).to.be(2); await searchSessionItem.view(); - expect(await toasts.getToastCount()).to.be(0); // there should be no warnings + expect(await toasts.getCount()).to.be(0); // there should be no warnings await searchSessions.expectState('restored', 20000); await dashboardExpect.noErrorEmbeddablesPresent(); diff --git a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/sessions_in_space.ts b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/sessions_in_space.ts index c5851c44365dc..79b98e4741e0d 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/sessions_in_space.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/dashboard/async_search/sessions_in_space.ts @@ -68,7 +68,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // Check that session is restored await searchSessions.expectState('restored'); await dashboardExpect.noErrorEmbeddablesPresent(); - expect(await toasts.getToastCount()).to.be(0); // no session restoration related warnings + expect(await toasts.getCount()).to.be(0); // no session restoration related warnings }); }); describe('Disabled storing search sessions', () => { diff --git a/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts b/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts index 251290c6f4b5e..3f586ddc89856 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/discover/async_search.ts @@ -63,7 +63,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await PageObjects.header.waitUntilLoadingHasFinished(); await searchSessions.expectState('restored'); await testSubjects.existOrFail('discoverErrorCalloutTitle'); // expect error because of fake searchSessionId - await PageObjects.common.clearAllToasts(); + await toasts.dismissAll(); const searchSessionId1 = await getSearchSessionId(); expect(searchSessionId1).to.be(fakeSearchSessionId); await queryBar.clickQuerySubmitButton(); @@ -87,7 +87,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { // back navigation takes discover to fakeSearchSessionId which is in error state // clean up page to get out of error state before proceeding to next test - await PageObjects.common.clearAllToasts(); + await toasts.dismissAll(); await queryBar.clickQuerySubmitButton(); await PageObjects.header.waitUntilLoadingHasFinished(); }); @@ -128,7 +128,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { await PageObjects.header.waitUntilLoadingHasFinished(); await searchSessions.expectState('restored'); expect(await PageObjects.discover.hasNoResults()).to.be(true); - expect(await toasts.getToastCount()).to.be(0); // no session restoration related warnings + expect(await toasts.getCount()).to.be(0); // no session restoration related warnings await PageObjects.searchSessionsManagement.goTo(); const searchSessionListAfterRestore = await PageObjects.searchSessionsManagement.getList(); diff --git a/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts b/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts index 1bb691629a63e..6c6228aa0056f 100644 --- a/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts +++ b/x-pack/test/search_sessions_integration/tests/apps/discover/sessions_in_space.ts @@ -71,7 +71,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { // Check that session is restored await searchSessions.expectState('restored'); - expect(await toasts.getToastCount()).to.be(0); // no session restoration related warnings + expect(await toasts.getCount()).to.be(0); // no session restoration related warnings }); }); describe('Disabled storing search sessions in space', () => { diff --git a/x-pack/test/security_functional/tests/login_selector/basic_functionality.ts b/x-pack/test/security_functional/tests/login_selector/basic_functionality.ts index b3d3b58568f49..727edd341a65f 100644 --- a/x-pack/test/security_functional/tests/login_selector/basic_functionality.ts +++ b/x-pack/test/security_functional/tests/login_selector/basic_functionality.ts @@ -15,6 +15,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const security = getService('security'); const deployment = getService('deployment'); const PageObjects = getPageObjects(['security', 'common']); + const toasts = getService('toasts'); describe('Basic functionality', function () { this.tags('includeFirefox'); @@ -154,7 +155,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should show toast with error if SSO fails', async () => { await PageObjects.security.loginSelector.selectLoginMethod('saml', 'unknown_saml'); - const toastTitle = await PageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Could not perform login.'); await PageObjects.security.loginSelector.verifyLoginSelectorIsVisible(); @@ -163,7 +164,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should show toast with error if anonymous login fails', async () => { await PageObjects.security.loginSelector.selectLoginMethod('anonymous', 'anonymous1'); - const toastTitle = await PageObjects.common.closeToast(); + const toastTitle = await toasts.getTitleAndDismiss(); expect(toastTitle).to.eql('Could not perform login.'); await PageObjects.security.loginSelector.verifyLoginSelectorIsVisible(); diff --git a/x-pack/test/security_solution_api_integration/package.json b/x-pack/test/security_solution_api_integration/package.json index 10e1346c678f3..270927876dc14 100644 --- a/x-pack/test/security_solution_api_integration/package.json +++ b/x-pack/test/security_solution_api_integration/package.json @@ -8,8 +8,11 @@ "initialize-server:genai": "node ./scripts/index.js server genai trial_license_complete_tier", "run-tests:genai": "node ./scripts/index.js runner genai trial_license_complete_tier", - "initialize-server:ea": "node ./scripts/index.js server entity_analytics trial_license_complete_tier", - "run-tests:ea": "node ./scripts/index.js runner entity_analytics trial_license_complete_tier", + "initialize-server:ea:trial_complete": "node ./scripts/index.js server entity_analytics trial_license_complete_tier", + "run-tests:ea:trial_complete": "node ./scripts/index.js runner entity_analytics trial_license_complete_tier", + + "initialize-server:ea:basic_essentials": "node ./scripts/index.js server entity_analytics basic_license_essentials_tier", + "run-tests:ea:basic_essentials": "node ./scripts/index.js runner entity_analytics basic_license_essentials_tier", "initialize-server:dr": "node ./scripts/index.js server detections_response trial_license_complete_tier", "run-tests:dr": "node ./scripts/index.js runner detections_response trial_license_complete_tier", @@ -35,11 +38,17 @@ "genai:server:ess": "npm run initialize-server:genai invoke_ai ess", "genai:runner:ess": "npm run run-tests:genai invoke_ai ess essEnv", - "entity_analytics:server:serverless": "npm run initialize-server:ea risk_engine serverless", - "entity_analytics:runner:serverless": "npm run run-tests:ea risk_engine serverless serverlessEnv", - "entity_analytics:qa:serverless": "npm run run-tests:ea risk_engine serverless qaEnv", - "entity_analytics:server:ess": "npm run initialize-server:ea risk_engine ess", - "entity_analytics:runner:ess": "npm run run-tests:ea risk_engine ess essEnv", + "entity_analytics:server:serverless": "npm run initialize-server:ea:trial_complete risk_engine serverless", + "entity_analytics:runner:serverless": "npm run run-tests:ea:trial_complete risk_engine serverless serverlessEnv", + "entity_analytics:qa:serverless": "npm run run-tests:ea:trial_complete risk_engine serverless qaEnv", + "entity_analytics:server:ess": "npm run initialize-server:ea:trial_complete risk_engine ess", + "entity_analytics:runner:ess": "npm run run-tests:ea:trial_complete risk_engine ess essEnv", + + "entity_analytics:essentials:server:serverless": "npm run initialize-server:ea:basic_essentials risk_engine serverless", + "entity_analytics:essentials:runner:serverless": "npm run run-tests:ea:basic_essentials risk_engine serverless serverlessEnv", + "entity_analytics:essentials:qa:serverless": "npm run run-tests:ea:basic_essentials risk_engine serverless qaEnv", + "entity_analytics:essentials:server:ess": "npm run initialize-server:ea:basic_essentials risk_engine ess", + "entity_analytics:essentials:runner:ess": "npm run run-tests:ea:basic_essentials risk_engine ess essEnv", "exception_lists_items:server:serverless": "npm run initialize-server:lists:complete exception_lists_items serverless", "exception_lists_items:runner:serverless": "npm run run-tests:lists:complete exception_lists_items serverless serverlessEnv", diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/api_feature_access.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/api_feature_access.ts new file mode 100644 index 0000000000000..505a152e71f9c --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/api_feature_access.ts @@ -0,0 +1,36 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { riskEngineRouteHelpersFactory } from '../../utils'; +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default ({ getService }: FtrProviderContext) => { + const supertest = getService('supertest'); + const riskEngineRoutes = riskEngineRouteHelpersFactory(supertest); + + describe('@serverless essentials tier api access', () => { + it('should not find init api', async () => { + await riskEngineRoutes.init(404); + }); + + it('should not find getStatus api', async () => { + await riskEngineRoutes.getStatus(404); + }); + + it('should not find enable api', async () => { + await riskEngineRoutes.enable(404); + }); + + it('should not find disable api', async () => { + await riskEngineRoutes.disable(404); + }); + + it('should not find privileges api', async () => { + await riskEngineRoutes.privileges(404); + }); + }); +}; diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/ess.config.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/ess.config.ts new file mode 100644 index 0000000000000..ec66c64efff54 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/ess.config.ts @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { FtrConfigProviderContext } from '@kbn/test'; +export default async function ({ readConfigFile }: FtrConfigProviderContext) { + const functionalConfig = await readConfigFile( + require.resolve('../../../../../config/ess/config.base.basic') + ); + + return { + ...functionalConfig.getAll(), + kbnTestServer: { + ...functionalConfig.get('kbnTestServer'), + serverArgs: [ + ...functionalConfig.get('kbnTestServer.serverArgs'), + `--xpack.securitySolution.enableExperimental=${JSON.stringify([])}`, + ], + }, + testFiles: [require.resolve('..')], + junit: { + reportName: 'Entity Analytics - Risk Engine Integration Tests - ESS Env - Basic License', + }, + }; +} diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/serverless.config.ts new file mode 100644 index 0000000000000..b2f33e1a10648 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/configs/serverless.config.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 { createTestConfig } from '../../../../../config/serverless/config.base'; + +export default createTestConfig({ + kbnTestServerArgs: [ + `--xpack.securitySolution.enableExperimental=${JSON.stringify([])}`, + `--xpack.securitySolutionServerless.productTypes=${JSON.stringify([ + { product_line: 'security', product_tier: 'essentials' }, + { product_line: 'endpoint', product_tier: 'essentials' }, + { product_line: 'cloud', product_tier: 'essentials' }, + ])}`, + ], + testFiles: [require.resolve('..')], + junit: { + reportName: + 'Entity Analytics - Risk Engine Integration Tests - Serverless Env - Essentials Tier', + }, +}); diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/index.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/index.ts new file mode 100644 index 0000000000000..d8440719640e7 --- /dev/null +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/basic_license_essentials_tier/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. + */ + +import { FtrProviderContext } from '../../../../ftr_provider_context'; + +export default function ({ loadTestFile }: FtrProviderContext) { + describe('Entity Analytics - Risk Engine', function () { + loadTestFile(require.resolve('./api_feature_access')); + }); +} diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/serverless.config.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/serverless.config.ts index ea11bdb5af9fd..d91303b344403 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/serverless.config.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/risk_engine/trial_license_complete_tier/configs/serverless.config.ts @@ -8,7 +8,14 @@ import { createTestConfig } from '../../../../../config/serverless/config.base'; export default createTestConfig({ - kbnTestServerArgs: [`--xpack.securitySolution.enableExperimental=${JSON.stringify([])}`], + kbnTestServerArgs: [ + `--xpack.securitySolution.enableExperimental=${JSON.stringify([])}`, + `--xpack.securitySolutionServerless.productTypes=${JSON.stringify([ + { product_line: 'security', product_tier: 'complete' }, + { product_line: 'endpoint', product_tier: 'complete' }, + { product_line: 'cloud', product_tier: 'complete' }, + ])}`, + ], testFiles: [require.resolve('..')], junit: { reportName: 'Entity Analytics - Risk Engine Integration Tests - Serverless Env - Complete Tier', diff --git a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts index 4583d9d6c6772..82f33d6637d6e 100644 --- a/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts +++ b/x-pack/test/security_solution_api_integration/test_suites/entity_analytics/utils/risk_engine.ts @@ -488,41 +488,49 @@ export const riskEngineRouteHelpersFactory = ( supertest: SuperTest.SuperTest, namespace?: string ) => ({ - init: async () => + init: async (expectStatusCode: number = 200) => await supertest .post(routeWithNamespace(RISK_ENGINE_INIT_URL, namespace)) .set('kbn-xsrf', 'true') .set('elastic-api-version', '1') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .send() - .expect(200), + .expect(expectStatusCode), - getStatus: async () => + getStatus: async (expectStatusCode: number = 200) => await supertest .get(routeWithNamespace(RISK_ENGINE_STATUS_URL, namespace)) .set('kbn-xsrf', 'true') .set('elastic-api-version', '1') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .send() - .expect(200), + .expect(expectStatusCode), - enable: async () => + enable: async (expectStatusCode: number = 200) => await supertest .post(routeWithNamespace(RISK_ENGINE_ENABLE_URL, namespace)) .set('kbn-xsrf', 'true') .set('elastic-api-version', '1') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .send() - .expect(200), + .expect(expectStatusCode), - disable: async () => + disable: async (expectStatusCode: number = 200) => await supertest .post(routeWithNamespace(RISK_ENGINE_DISABLE_URL, namespace)) .set('kbn-xsrf', 'true') .set('elastic-api-version', '1') .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .send() - .expect(200), + .expect(expectStatusCode), + + privileges: async (expectStatusCode: number = 200) => + await supertest + .get(RISK_ENGINE_PRIVILEGES_URL) + .set('elastic-api-version', '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + .send() + .expect(expectStatusCode), }); interface Credentials { diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/enrichments.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/enrichments.cy.ts index a080c4494833f..5a6fdc2f05532 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/enrichments.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/entity_analytics/enrichments.cy.ts @@ -46,7 +46,8 @@ describe('Enrichment', { tags: ['@ess', '@serverless'] }, () => { }); describe('Custom query rule', () => { - describe('from legacy risk scores', () => { + // FLAKY: https://github.com/elastic/kibana/issues/176965 + describe.skip('from legacy risk scores', () => { beforeEach(() => { disableExpandableFlyout(); cy.task('esArchiverLoad', { archiveName: 'risk_hosts' }); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts index e9fe42b6951ea..fb2af6a16b022 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/alerts/expandable_flyout/alert_details_right_panel_overview_tab.cy.ts @@ -334,7 +334,7 @@ describe( // TODO work on getting proper data to make the prevalence section work here // we need to generate enough data to have at least one field with prevalence - it.skip('should display prevalence section', () => { + it('should display prevalence section', () => { toggleOverviewTabAboutSection(); toggleOverviewTabInvestigationSection(); toggleOverviewTabInsightsSection(); diff --git a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts index 08af050c7e1c5..09597c80691a5 100644 --- a/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts +++ b/x-pack/test/security_solution_cypress/cypress/e2e/investigations/timelines/data_providers.cy.ts @@ -29,7 +29,8 @@ import { import { getTimeline } from '../../../objects/timeline'; import { hostsUrl } from '../../../urls/navigation'; -describe('Timeline data providers', { tags: ['@ess', '@serverless'] }, () => { +// FLAKY: https://github.com/elastic/kibana/issues/176945 +describe.skip('Timeline data providers', { tags: ['@ess', '@serverless'] }, () => { beforeEach(() => { login(); visitWithTimeRange(hostsUrl('allHosts')); diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel.ts index c2b1eebfefb46..ee3cdbeb65a86 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel.ts @@ -11,6 +11,5 @@ import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB } from '../../screens/expandable_f * Open the Insights tab in the document details expandable flyout left section */ export const openInsightsTab = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB).click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_analyzer_graph_tab.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_analyzer_graph_tab.ts index 04ff01815be8e..fd267f35941d5 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_analyzer_graph_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_analyzer_graph_tab.ts @@ -11,6 +11,5 @@ import { DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON } from '../ * Open the Graph Analyzer under the Visuablize tab in the document details expandable flyout left section */ export const openGraphAnalyzerTab = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_VISUALIZE_TAB_GRAPH_ANALYZER_BUTTON).click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_correlations_tab.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_correlations_tab.ts index cf023e4bd9a68..8900e86a4524e 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_correlations_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_correlations_tab.ts @@ -11,6 +11,5 @@ import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON } from '../../ * Open the Correlations tab under the Visuablize tab in the document details expandable flyout left section */ export const openCorrelationsTab = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_CORRELATIONS_BUTTON).click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_entities_tab.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_entities_tab.ts index 2c771f0c754d0..71a3f936702f1 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_entities_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_entities_tab.ts @@ -11,6 +11,5 @@ import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_BUTTON } from '../../scre * Open the Entities tab under the Insights tab in the document details expandable flyout left section */ export const openEntitiesTab = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_BUTTON).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_BUTTON).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_ENTITIES_BUTTON).click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_investigation_tab.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_investigation_tab.ts index cb52ae1203940..f13d6a511b5a3 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_investigation_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_investigation_tab.ts @@ -11,6 +11,5 @@ import { DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB } from '../../screens/expanda * Open the Investigations tab in the document details expandable flyout left section */ export const openInvestigationTab = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_INVESTIGATION_TAB).click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_prevalence_tab.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_prevalence_tab.ts index 14f55a857960f..a81a7d8031855 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_prevalence_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_prevalence_tab.ts @@ -11,6 +11,5 @@ import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_PREVALENCE_BUTTON } from '../../sc * Open the Prevalence tab under the Visualize tab in the document details expandable flyout left section */ export const openPrevalenceTab = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_PREVALENCE_BUTTON).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_PREVALENCE_BUTTON).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_PREVALENCE_BUTTON).click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_response_tab.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_response_tab.ts index 0721e2d6aa7c7..62b583039c58c 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_response_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_response_tab.ts @@ -11,6 +11,5 @@ import { DOCUMENT_DETAILS_FLYOUT_RESPONSE_TAB } from '../../screens/expandable_f * Open the Response tab in the document details expandable flyout left section */ export const openResponseTab = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_RESPONSE_TAB).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_RESPONSE_TAB).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_RESPONSE_TAB).click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_threat_intelligence_tab.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_threat_intelligence_tab.ts index c8744e6684783..33d96b5bfc418 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_threat_intelligence_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_left_panel_threat_intelligence_tab.ts @@ -11,8 +11,5 @@ import { DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON } from * Open the Threat intelligence tab under the Insights tab in the document details expandable flyout left section */ export const openThreatIntelligenceTab = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON) - .should('be.visible') - .click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_INSIGHTS_TAB_THREAT_INTELLIGENCE_BUTTON).click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_preview_panel_rule_preview.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_preview_panel_rule_preview.ts index 458ba7c70e688..481cf63c06388 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_preview_panel_rule_preview.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_preview_panel_rule_preview.ts @@ -17,8 +17,7 @@ import { * Toggle the About Section in Rule Preview panel */ export const toggleRulePreviewAboutSection = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_HEADER).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_ABOUT_SECTION_HEADER).click(); }; /* Definition section */ @@ -27,10 +26,7 @@ export const toggleRulePreviewAboutSection = () => { * Toggle the Definition Section in Rule Preview panel */ export const toggleRulePreviewDefinitionSection = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_HEADER) - .should('be.visible') - .click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_DEFINITION_SECTION_HEADER).click(); }; /* Schedule section */ @@ -39,6 +35,5 @@ export const toggleRulePreviewDefinitionSection = () => { * Toggle the Schedule Section in Rule Preview panel */ export const toggleRulePreviewScheduleSection = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_HEADER).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_RULE_PREVIEW_SCHEDULE_SECTION_HEADER).click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel.ts index 11e1b6a0b0ef9..3934b170f43c0 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel.ts @@ -29,7 +29,6 @@ import { TOASTER_CLOSE_ICON } from '../../screens/alerts_detection_rules'; * Expand the left section of the document details expandable flyout by clicking on the expand icon button */ export const expandDocumentDetailsExpandableFlyoutLeftSection = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_EXPAND_DETAILS_BUTTON).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_EXPAND_DETAILS_BUTTON).click(); }; @@ -37,7 +36,6 @@ export const expandDocumentDetailsExpandableFlyoutLeftSection = () => { * Expand the left section of the document details expandable flyout by clicking on the collapse icon button */ export const collapseDocumentDetailsExpandableFlyoutLeftSection = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_COLLAPSE_DETAILS_BUTTON).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_COLLAPSE_DETAILS_BUTTON).click(); }; @@ -45,7 +43,6 @@ export const collapseDocumentDetailsExpandableFlyoutLeftSection = () => { * Open the Table tab in the document details expandable flyout right section */ export const openTableTab = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_TABLE_TAB).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_TABLE_TAB).click(); }; @@ -53,7 +50,6 @@ export const openTableTab = () => { * Open the Json tab in the document details expandable flyout right section */ export const openJsonTab = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_JSON_TAB).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_JSON_TAB).click(); }; @@ -61,7 +57,6 @@ export const openJsonTab = () => { * Close document details flyout */ export const closeFlyout = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_CLOSE_BUTTON).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_CLOSE_BUTTON).click(); }; @@ -79,7 +74,6 @@ export const openTakeActionButtonAndSelectItem = (option: string) => { * Scroll down to the flyout footer's take action button and open its dropdown */ export const openTakeActionButton = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER).within(() => cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_TAKE_ACTION_BUTTON).click() ); @@ -89,9 +83,9 @@ export const openTakeActionButton = () => { * Click on the item within the flyout's footer take action button dropdown */ export const selectTakeActionItem = (option: string) => { - cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_TAKE_ACTION_BUTTON_DROPDOWN) - .should('be.visible') - .within(() => cy.get(option).should('be.visible').click()); + cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_TAKE_ACTION_BUTTON_DROPDOWN).within(() => + cy.get(option).click() + ); }; /** @@ -104,5 +98,5 @@ export const fillOutFormToCreateNewCase = () => { cy.get(DOCUMENT_DETAILS_FLYOUT_FOOTER_ADD_TO_NEW_CASE_CREATE_BUTTON).click(); cy.get(VIEW_CASE_TOASTER_LINK).should('be.visible'); - cy.get(TOASTER_CLOSE_ICON).should('be.visible').click(); + cy.get(TOASTER_CLOSE_ICON).click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts index 7c5a1006e8a3c..aade383f2d846 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/alert_details_right_panel_overview_tab.ts @@ -29,8 +29,7 @@ import { * Toggle the Overview tab about section in the document details expandable flyout right section */ export const toggleOverviewTabAboutSection = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_HEADER).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_ABOUT_SECTION_HEADER).click(); }; /* Investigation section */ @@ -39,10 +38,7 @@ export const toggleOverviewTabAboutSection = () => { * Toggle the Overview tab investigation section in the document details expandable flyout right section */ export const toggleOverviewTabInvestigationSection = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_SECTION_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_SECTION_HEADER) - .should('be.visible') - .click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_SECTION_HEADER).click(); }; /* Insights section */ @@ -51,48 +47,35 @@ export const toggleOverviewTabInvestigationSection = () => { * Toggle the Overview tab insights section in the document details expandable flyout right section */ export const toggleOverviewTabInsightsSection = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_SECTION_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_SECTION_HEADER).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_SECTION_HEADER).click(); }; /** * Click on the header in the right section, Insights, Entities */ export const navigateToEntitiesDetails = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER) - .should('be.visible') - .click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_ENTITIES_HEADER).click(); }; /** * Click on the header in the right section, Insights, Threat Intelligence */ export const navigateToThreatIntelligenceDetails = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_HEADER) - .should('be.visible') - .click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_THREAT_INTELLIGENCE_HEADER).click(); }; /** * Click on the header in the right section, Insights, Correlations */ export const navigateToCorrelationsDetails = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER) - .should('be.visible') - .click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_CORRELATIONS_HEADER).click(); }; /** * Click on the view all button under the right section, Insights, Prevalence */ export const navigateToPrevalenceDetails = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER) - .should('be.visible') - .click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INSIGHTS_PREVALENCE_HEADER).click(); }; /* Visualizations section */ @@ -101,62 +84,44 @@ export const navigateToPrevalenceDetails = () => { * Toggle the Overview tab visualizations section in the document details expandable flyout right section */ export const toggleOverviewTabVisualizationsSection = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_VISUALIZATIONS_SECTION_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_VISUALIZATIONS_SECTION_HEADER) - .should('be.visible') - .click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_VISUALIZATIONS_SECTION_HEADER).click(); }; /** * Toggle the Overview tab response section in the document details expandable flyout right section */ export const toggleOverviewTabResponseSection = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_SECTION_HEADER).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_SECTION_HEADER).should('be.visible').click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_SECTION_HEADER).click(); }; /** * Click on the investigation guide button under the right section, Visualization */ export const clickInvestigationGuideButton = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_GUIDE_BUTTON).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_GUIDE_BUTTON) - .should('be.visible') - .click(); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_INVESTIGATION_GUIDE_BUTTON).click(); }; /** * Click `Rule summary` button to open rule preview panel */ export const clickRuleSummaryButton = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE) - .should('be.visible') - .within(() => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_RULE_PREVIEW_BUTTON) - .should('be.visible') - .click(); - }); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_DESCRIPTION_TITLE).within(() => { + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_RULE_PREVIEW_BUTTON).click(); + }); }; /** * Click `Show full reason` button to open alert reason preview panel */ export const clickAlertReasonButton = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_TITLE).scrollIntoView(); - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_TITLE) - .should('be.visible') - .within(() => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_ALERT_REASON_PREVIEW_BUTTON) - .should('be.visible') - .click(); - }); + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_REASON_TITLE).within(() => { + cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_OPEN_ALERT_REASON_PREVIEW_BUTTON).click(); + }); }; /** * Click the Response button to open the response detail tab in the left section */ export const navigateToResponseDetails = () => { - cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_BUTTON).scrollIntoView(); cy.get(DOCUMENT_DETAILS_FLYOUT_OVERVIEW_TAB_RESPONSE_BUTTON).should('be.visible').click(); }; diff --git a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts index cd244f192bd52..6c69a3249f30b 100644 --- a/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts +++ b/x-pack/test/security_solution_cypress/cypress/tasks/expandable_flyout/common.ts @@ -36,5 +36,5 @@ export const createNewCaseFromExpandableFlyout = () => { cy.get(VIEW_CASE_TOASTER_LINK).should('be.visible'); // NOTE: close pop up to limit interaction with flyout behind - cy.get(VIEW_CASE_TOASTER_CLOSE_BUTTON).should('be.visible').click(); + cy.get(VIEW_CASE_TOASTER_CLOSE_BUTTON).click(); }; diff --git a/x-pack/test/security_solution_endpoint/apps/integrations/artifact_entries_list.ts b/x-pack/test/security_solution_endpoint/apps/integrations/artifact_entries_list.ts index b1ee0897fd0b0..cb759ed015a20 100644 --- a/x-pack/test/security_solution_endpoint/apps/integrations/artifact_entries_list.ts +++ b/x-pack/test/security_solution_endpoint/apps/integrations/artifact_entries_list.ts @@ -36,6 +36,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const esClient = getService('es'); const supertest = getService('supertest'); const find = getService('find'); + const toasts = getService('toasts'); const policyTestResources = getService('policyTestResources'); const unzipPromisify = promisify(unzip); @@ -241,7 +242,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { checkResult.value ); } - await pageObjects.common.closeToast(); + await toasts.dismiss(); // Title is shown after adding an item expect(await testSubjects.getVisibleText('header-page-title')).to.equal(testData.title); @@ -275,7 +276,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { ); } - await pageObjects.common.closeToast(); + await toasts.dismiss(); // Title still shown after editing an item expect(await testSubjects.getVisibleText('header-page-title')).to.equal(testData.title); @@ -333,7 +334,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { policyId: firstPolicy.packagePolicy.id, suffix: firstSuffix, }); - await pageObjects.common.closeToast(); + await toasts.dismiss(); // Create second trusted app await createArtifact(testData, { @@ -341,11 +342,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { suffix: secondSuffix, createButton: 'pageAddButton', }); - await pageObjects.common.closeToast(); + await toasts.dismiss(); // Create third trusted app await createArtifact(testData, { suffix: thirdSuffix, createButton: 'pageAddButton' }); - await pageObjects.common.closeToast(); + await toasts.dismiss(); // Checks if fleet artifact has been updated correctly await checkFleetArtifacts( diff --git a/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts b/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts index dd927c68593dd..23b5b4f058152 100644 --- a/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts +++ b/x-pack/test/security_solution_endpoint/apps/integrations/endpoint_exceptions.ts @@ -27,6 +27,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const find = getService('find'); const unzipPromisify = promisify(unzip); const comboBox = getService('comboBox'); + const toasts = getService('toasts'); describe('Endpoint Exceptions', function () { targetTags(this, ['@ess', '@serverless']); @@ -172,7 +173,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await setLastEntry({ field: 'process.executable', operator: 'matches', value: 'ex*' }); await testSubjects.click('addExceptionConfirmButton'); - await pageObjects.common.closeToast(); + await toasts.dismiss(); await checkArtifact({ entries: [ @@ -216,7 +217,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await setLastEntry({ field: 'process.executable', operator: 'is', value: 'something' }); await testSubjects.click('addExceptionConfirmButton'); - await pageObjects.common.closeToast(); + await toasts.dismiss(); await checkArtifact({ entries: [ diff --git a/x-pack/test/security_solution_endpoint/apps/integrations/trusted_apps_list.ts b/x-pack/test/security_solution_endpoint/apps/integrations/trusted_apps_list.ts index e00dde08d58fb..9bef272a010a2 100644 --- a/x-pack/test/security_solution_endpoint/apps/integrations/trusted_apps_list.ts +++ b/x-pack/test/security_solution_endpoint/apps/integrations/trusted_apps_list.ts @@ -15,6 +15,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { const testSubjects = getService('testSubjects'); const browser = getService('browser'); const endpointTestResources = getService('endpointTestResources'); + const toasts = getService('toasts'); describe('When on the Trusted Apps list', function () { targetTags(this, ['@ess', '@serverless']); @@ -48,7 +49,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { ).to.equal( 'AND process.hash.*IS a4370c0cf81686c0b696fa6261c9d3e0d810ae704ab8301839dffd5d5112f476' ); - await pageObjects.common.closeToast(); + await toasts.dismiss(); // Title is shown after adding an item expect(await testSubjects.getVisibleText('header-page-title')).to.equal( 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 f2b6452245135..34f376d55b103 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 @@ -13,6 +13,7 @@ export function EndpointPolicyPageProvider({ getService, getPageObjects }: FtrPr const pageObjects = getPageObjects(['common', 'header']); const testSubjects = getService('testSubjects'); const retryService = getService('retry'); + const toasts = getService('toasts'); const formTestSubj = getPolicySettingsFormTestSubjects(); return { @@ -111,7 +112,7 @@ export function EndpointPolicyPageProvider({ getService, getPageObjects }: FtrPr // which are displayed using one or more Toast messages. This in turn prevents the user from // actually clicking the Save button. Because those errors are not associated with Policy details, // we'll first check that all toasts are cleared - await pageObjects.common.clearAllToasts(); + await toasts.dismissAll(); await testSubjects.click('policyDetailsSaveButton'); await testSubjects.existOrFail('policyDetailsConfirmModal'); diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/fleet/fleet.ts b/x-pack/test_serverless/api_integration/test_suites/observability/fleet/fleet.ts index 98866bc50f431..e6b55bd99a29b 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/fleet/fleet.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/fleet/fleet.ts @@ -12,7 +12,8 @@ export default function ({ getService }: FtrProviderContext) { const svlCommonApi = getService('svlCommonApi'); const supertest = getService('supertest'); - describe('fleet', function () { + // FLAKY: https://github.com/elastic/kibana/issues/176858 + describe.skip('fleet', function () { it('rejects request to create a new fleet server hosts if host url is different from default', async () => { const { body, status } = await supertest .post('/api/fleet/fleet_server_hosts') diff --git a/x-pack/test_serverless/api_integration/test_suites/security/fleet/fleet.ts b/x-pack/test_serverless/api_integration/test_suites/security/fleet/fleet.ts index 98866bc50f431..3c8dad02fafc8 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/fleet/fleet.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/fleet/fleet.ts @@ -12,7 +12,8 @@ export default function ({ getService }: FtrProviderContext) { const svlCommonApi = getService('svlCommonApi'); const supertest = getService('supertest'); - describe('fleet', function () { + // FLAKY: https://github.com/elastic/kibana/issues/176754 + describe.skip('fleet', function () { it('rejects request to create a new fleet server hosts if host url is different from default', async () => { const { body, status } = await supertest .post('/api/fleet/fleet_server_hosts') diff --git a/x-pack/test_serverless/functional/config.base.ts b/x-pack/test_serverless/functional/config.base.ts index 7827714dea55d..07aa6c9af5318 100644 --- a/x-pack/test_serverless/functional/config.base.ts +++ b/x-pack/test_serverless/functional/config.base.ts @@ -115,6 +115,9 @@ export function createTestConfig(options: CreateTestConfigOptions) { screenshots: { directory: resolve(__dirname, 'screenshots'), }, + failureDebugging: { + htmlDirectory: resolve(__dirname, 'failure_debug', 'html'), + }, junit: options.junit, suiteTags: options.suiteTags, }; diff --git a/x-pack/test_serverless/functional/page_objects/svl_common_page.ts b/x-pack/test_serverless/functional/page_objects/svl_common_page.ts index d8ba679128410..84d23eedcce7b 100644 --- a/x-pack/test_serverless/functional/page_objects/svl_common_page.ts +++ b/x-pack/test_serverless/functional/page_objects/svl_common_page.ts @@ -40,7 +40,22 @@ export function SvlCommonPageProvider({ getService, getPageObjects }: FtrProvide await alert.accept(); } log.debug(`browser: wait for resource page to be loaded`); - await find.byCssSelector('body > pre', 5000); + // TODO: temporary solution while we don't migrate all functional tests to SAML auth + // On CI sometimes we are redirected to cloud login page, in this case we skip cleanup + const isOnBootstrap = await find.existsByDisplayedByCssSelector('body > pre', 5000); + if (!isOnBootstrap) { + const currentUrl = await browser.getCurrentUrl(); + log.debug(`current url: ${currentUrl}`); + if (!currentUrl.includes(deployment.getHostPort())) { + log.debug('Skipping browser state cleanup'); + return; + } else { + log.debug('browser: navigate to /bootstrap-anonymous.js #2'); + await browser.get(noAuthRequiredUrl); + await find.byCssSelector('body > pre', 5000); + } + } + log.debug(`browser: delete all the cookies`); await retry.waitForWithTimeout('Browser cookies are deleted', 10000, async () => { await browser.deleteAllCookies(); @@ -125,7 +140,7 @@ export function SvlCommonPageProvider({ getService, getPageObjects }: FtrProvide async forceLogout() { log.debug('SvlCommonPage.forceLogout'); - if (await find.existsByDisplayedByCssSelector('.login-form', 100)) { + if (await find.existsByDisplayedByCssSelector('.login-form', 2000)) { log.debug('Already on the login page, not forcing anything'); return; } diff --git a/x-pack/test_serverless/functional/test_suites/common/discover/group1/_discover.ts b/x-pack/test_serverless/functional/test_suites/common/discover/group1/_discover.ts index 1b5b3c8f6ff52..32fa8d5d6a8af 100644 --- a/x-pack/test_serverless/functional/test_suites/common/discover/group1/_discover.ts +++ b/x-pack/test_serverless/functional/test_suites/common/discover/group1/_discover.ts @@ -152,9 +152,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); - // FLAKY: https://github.com/elastic/kibana/issues/173292 - // FLAKY: https://github.com/elastic/kibana/issues/173784 - describe.skip('query #2, which has an empty time range', () => { + describe('query #2, which has an empty time range', () => { const fromTime = 'Jun 11, 1999 @ 09:22:11.000'; const toTime = 'Jun 12, 1999 @ 11:21:04.000'; @@ -177,8 +175,11 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); it('should show matches when time range is expanded', async () => { - await PageObjects.discover.expandTimeRangeAsSuggestedInNoResultsMessage(); - await PageObjects.discover.waitUntilSearchingHasFinished(); + await retry.waitFor('view all matches to load', async () => { + await PageObjects.discover.expandTimeRangeAsSuggestedInNoResultsMessage(); + await PageObjects.discover.waitUntilSearchingHasFinished(); + return !(await testSubjects.exists('discoverNoResultsViewAllMatches')); + }); await retry.try(async function () { expect(await PageObjects.discover.hasNoResults()).to.be(false); expect(await PageObjects.discover.getHitCountInt()).to.be.above(0); diff --git a/x-pack/test_serverless/functional/test_suites/common/discover/group2/_adhoc_data_views.ts b/x-pack/test_serverless/functional/test_suites/common/discover/group2/_adhoc_data_views.ts index b27001a396bb6..192014d40f2b8 100644 --- a/x-pack/test_serverless/functional/test_suites/common/discover/group2/_adhoc_data_views.ts +++ b/x-pack/test_serverless/functional/test_suites/common/discover/group2/_adhoc_data_views.ts @@ -260,12 +260,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const second = await PageObjects.discover.getCurrentDataViewId(); expect(first).not.equal(second); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await browser.goBack(); await PageObjects.header.waitUntilLoadingHasFinished(); - const [firstToast, secondToast] = await toasts.getAllToastElements(); + const [firstToast, secondToast] = await toasts.getAll(); expect([await firstToast.getVisibleText(), await secondToast.getVisibleText()].sort()).to.eql( [ diff --git a/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/reporting.ts b/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/reporting.ts index 620bf876cb9a9..e7e32c3c94dde 100644 --- a/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/reporting.ts +++ b/x-pack/test_serverless/functional/test_suites/common/discover/x_pack/reporting.ts @@ -29,6 +29,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const filterBar = getService('filterBar'); const find = getService('find'); const testSubjects = getService('testSubjects'); + const toasts = getService('toasts'); const setFieldsFromSource = async (setValue: boolean) => { await kibanaServer.uiSettings.update({ 'discover:searchFieldsFromSource': setValue }); @@ -37,7 +38,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const getReport = async () => { // close any open notification toasts - await PageObjects.reporting.clearToastNotifications(); + await toasts.dismissAll(); await PageObjects.reporting.openCsvReportingPanel(); await PageObjects.reporting.clickGenerateReportButton(); diff --git a/x-pack/test_serverless/functional/test_suites/common/discover_ml_uptime/discover/search_source_alert.ts b/x-pack/test_serverless/functional/test_suites/common/discover_ml_uptime/discover/search_source_alert.ts index 25ae3eb08af48..1a82e4b73b2be 100644 --- a/x-pack/test_serverless/functional/test_suites/common/discover_ml_uptime/discover/search_source_alert.ts +++ b/x-pack/test_serverless/functional/test_suites/common/discover_ml_uptime/discover/search_source_alert.ts @@ -290,10 +290,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const checkInitialRuleParamsState = async (dataView: string, isViewInApp = false) => { if (isViewInApp) { - expect(await toasts.getToastCount()).to.be(0); + expect(await toasts.getCount()).to.be(0); } else { - expect(await toasts.getToastCount()).to.be(1); - expect((await toasts.getToastContent(1)).startsWith('Displayed documents may vary')).to.be( + expect(await toasts.getCount()).to.be(1); + expect((await toasts.getContentByIndex(1)).startsWith('Displayed documents may vary')).to.be( true ); } @@ -307,7 +307,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }; const checkUpdatedRuleParamsState = async () => { - expect(await toasts.getToastCount()).to.be(0); + expect(await toasts.getCount()).to.be(0); const queryString = await queryBar.getQueryString(); const hasFilter = await filterBar.hasFilter('message.keyword', 'msg-1'); expect(queryString).to.be.equal('message:msg-1'); @@ -569,8 +569,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it('should not display results after data view removal on clicking viewInApp link', async () => { await clickViewInApp(RULE_NAME); - expect(await toasts.getToastCount()).to.be.equal(1); - const content = await toasts.getToastContent(1); + expect(await toasts.getCount()).to.be.equal(1); + const content = await toasts.getContentByIndex(1); expect(content).to.equal( `Error fetching search source\nCould not locate that data view (id: ${sourceDataViewId}), click here to re-create it` ); diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/partial_results/index.ts b/x-pack/test_serverless/functional/test_suites/common/examples/partial_results/index.ts index c5a5bb2995217..415174adf0d0a 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/partial_results/index.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/partial_results/index.ts @@ -12,8 +12,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testSubjects = getService('testSubjects'); const PageObjects = getPageObjects(['common', 'svlCommonPage']); - // FLAKY: https://github.com/elastic/kibana/issues/167643 - describe.skip('Partial Results Example', function () { + describe('Partial Results Example', function () { before(async () => { await PageObjects.svlCommonPage.loginAsAdmin(); await PageObjects.common.navigateToApp('partialResultsExample'); diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts b/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts index 43b6c6c086717..50b1f7f16f244 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/search/warnings.ts @@ -8,13 +8,11 @@ import type { estypes } from '@elastic/elasticsearch'; import expect from '@kbn/expect'; import assert from 'assert'; -import type { WebElementWrapper } from '@kbn/ftr-common-functional-ui-services'; import type { FtrProviderContext } from '../../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const PageObjects = getPageObjects(['common', 'timePicker', 'svlCommonPage']); const testSubjects = getService('testSubjects'); - const find = getService('find'); const retry = getService('retry'); const es = getService('es'); const log = getService('log'); @@ -23,6 +21,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const kibanaServer = getService('kibanaServer'); const esArchiver = getService('esArchiver'); const monacoEditor = getService('monacoEditor'); + const toasts = getService('toasts'); describe('handling warnings with search source fetch', function () { const dataViewTitle = 'sample-01,sample-01-rollup'; @@ -32,7 +31,6 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const testIndex = 'sample-01'; const testRollupIndex = 'sample-01-rollup'; const testRollupField = 'kubernetes.container.memory.usage.bytes'; - const toastsSelector = '[data-test-subj=globalToastList] [data-test-subj=euiToastHeader]'; const shardFailureType = 'unsupported_aggregation_on_downsampled_index'; const shardFailureReason = `Field [${testRollupField}] of type [aggregate_metric_double] is not supported for aggregation [percentiles]`; @@ -96,15 +94,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); afterEach(async () => { - await PageObjects.common.clearAllToasts(); + await toasts.dismissAll(); }); it('should show search warnings as toasts', async () => { await testSubjects.click('searchSourceWithOther'); await retry.try(async () => { - const toasts = await find.allByCssSelector(toastsSelector); - expect(toasts.length).to.be(2); + expect(await toasts.getCount()).to.be(2); await testSubjects.click('viewWarningBtn'); }); @@ -151,10 +148,8 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await testSubjects.click('searchSourceWithoutOther'); // wait for toasts - toasts appear after the response is rendered - let toasts: WebElementWrapper[] = []; await retry.try(async () => { - toasts = await find.allByCssSelector(toastsSelector); - expect(toasts.length).to.be(2); + expect(await toasts.getCount()).to.be(2); }); // warnings tab diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts b/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts index a07e823b57972..f2cbf39d96e5f 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/search_examples/search_example.ts @@ -53,9 +53,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); beforeEach(async () => { - await toasts.dismissAllToasts(); + await toasts.dismissAll(); await retry.waitFor('toasts gone', async () => { - return (await toasts.getToastCount()) === 0; + return (await toasts.getCount()) === 0; }); }); @@ -90,10 +90,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { it.skip('should handle warnings', async () => { await testSubjects.click('searchWithWarning'); await retry.waitFor('', async () => { - const toastCount = await toasts.getToastCount(); + const toastCount = await toasts.getCount(); return toastCount > 1; }); - const warningToast = await toasts.getToastElement(2); + const warningToast = await toasts.getElementByIndex(2); const textEl = await warningToast.findByTestSubject('euiToastBody'); const text: string = await textEl.getVisibleText(); expect(text).to.contain('Watch out!'); diff --git a/x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples/existing_fields.ts b/x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples/existing_fields.ts index 4725b39bd9db1..05400dbac1b38 100644 --- a/x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples/existing_fields.ts +++ b/x-pack/test_serverless/functional/test_suites/common/examples/unified_field_list_examples/existing_fields.ts @@ -78,7 +78,7 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { await PageObjects.timePicker.setAbsoluteRange(TEST_START_TIME, TEST_END_TIME); await PageObjects.header.waitUntilLoadingHasFinished(); await PageObjects.unifiedFieldList.waitUntilSidebarHasLoaded(); - await PageObjects.unifiedFieldList.toggleSidebarSection('meta'); + await PageObjects.unifiedFieldList.openSidebarSection('meta'); }); after(async () => { @@ -92,8 +92,7 @@ export default ({ getService, getPageObjects }: FtrProviderContext) => { await kibanaServer.savedObjects.cleanStandardList(); }); - // FLAKY: https://github.com/elastic/kibana/issues/172781 - describe.skip('existence', () => { + describe('existence', () => { it('should find which fields exist in the sample documents', async () => { const sidebarFields = await PageObjects.unifiedFieldList.getAllFieldNames(); expect(sidebarFields.sort()).to.eql([...metaFields, ...fieldsWithData].sort()); diff --git a/x-pack/test_serverless/functional/test_suites/common/management/index_management/data_streams.ts b/x-pack/test_serverless/functional/test_suites/common/management/index_management/data_streams.ts index 4a92df7d90f39..4223decc869c6 100644 --- a/x-pack/test_serverless/functional/test_suites/common/management/index_management/data_streams.ts +++ b/x-pack/test_serverless/functional/test_suites/common/management/index_management/data_streams.ts @@ -115,7 +115,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('saveButton'); // Expect to see a success toast - const successToast = await toasts.getToastElement(1); + const successToast = await toasts.getElementByIndex(1); expect(await successToast.getVisibleText()).to.contain('Data retention updated'); }); @@ -133,7 +133,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { await testSubjects.click('saveButton'); // Expect to see a success toast - const successToast = await toasts.getToastElement(1); + const successToast = await toasts.getElementByIndex(1); expect(await successToast.getVisibleText()).to.contain('Data retention disabled'); }); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts index 18cf4d4ebfc93..a06bbf97d8f34 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/attachment_framework.ts @@ -72,7 +72,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.common.expectToasterToContain(`${caseTitle} has been updated`); await testSubjects.click('toaster-content-case-view-link'); - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); if (await testSubjects.exists('appLeaveConfirmModal')) { await testSubjects.exists('confirmModalConfirmButton'); @@ -106,7 +106,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.common.expectToasterToContain(`${theCaseTitle} has been updated`); await testSubjects.click('toaster-content-case-view-link'); - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); if (await testSubjects.exists('appLeaveConfirmModal')) { await testSubjects.exists('confirmModalConfirmButton'); diff --git a/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts b/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts index 63cc955cfb4d0..7b56c069fec5d 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/cases/configure.ts @@ -52,9 +52,9 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { it('change closure option successfully', async () => { await cases.common.selectRadioGroupValue('closure-options-radio-group', 'close-by-pushing'); - const toast = await toasts.getToastElement(1); + const toast = await toasts.getElementByIndex(1); expect(await toast.getVisibleText()).to.be('Settings successfully updated'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }); }); diff --git a/x-pack/test_serverless/functional/test_suites/observability/rules/rules_list.ts b/x-pack/test_serverless/functional/test_suites/observability/rules/rules_list.ts index 2ebb4395bf317..fa7fd21328b03 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/rules/rules_list.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/rules/rules_list.ts @@ -368,7 +368,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const resultToast = await toasts.getToastElement(1); + const resultToast = await toasts.getElementByIndex(1); const toastText = await resultToast.getVisibleText(); expect(toastText).toEqual('Deleted 1 rule'); }); @@ -396,7 +396,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await header.waitUntilLoadingHasFinished(); await retry.try(async () => { - const resultToast = await toasts.getToastElement(1); + const resultToast = await toasts.getElementByIndex(1); const toastText = await resultToast.getVisibleText(); expect(toastText).toEqual('Disabled 1 rule'); }); @@ -484,7 +484,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await testSubjects.click('confirmModalConfirmButton'); await retry.try(async () => { - const resultToast = await toasts.getToastElement(1); + const resultToast = await toasts.getElementByIndex(1); const toastText = await resultToast.getVisibleText(); expect(toastText).toEqual('Deleted 1 rule'); }); @@ -937,7 +937,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { '[data-test-subj="rulesListNotifyBadge-snoozed"]:not(.euiButton-isDisabled)' ); await retry.try(async () => { - const resultToast = await toasts.getToastElement(1); + const resultToast = await toasts.getElementByIndex(1); const toastText = await resultToast.getVisibleText(); expect(toastText).toEqual('Rules notification successfully unsnoozed'); }); diff --git a/x-pack/test_serverless/functional/test_suites/search/default_dataview.ts b/x-pack/test_serverless/functional/test_suites/search/default_dataview.ts index 0a0212ba10919..2beb234f688f4 100644 --- a/x-pack/test_serverless/functional/test_suites/search/default_dataview.ts +++ b/x-pack/test_serverless/functional/test_suites/search/default_dataview.ts @@ -13,8 +13,7 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { const svlCommonNavigation = getPageObject('svlCommonNavigation'); const svlCommonPage = getPageObject('svlCommonPage'); - // FLAKY: https://github.com/elastic/kibana/issues/175601 - describe.skip('default dataView', function () { + describe('default dataView', function () { // Error: expected testSubject(kbnOverviewElasticsearchGettingStarted) to exist this.tags(['failsOnMKI']); before(async () => { diff --git a/x-pack/test_serverless/functional/test_suites/search/rules/rule_details.ts b/x-pack/test_serverless/functional/test_suites/search/rules/rule_details.ts index 4ca9268618f1d..6d859406f3786 100644 --- a/x-pack/test_serverless/functional/test_suites/search/rules/rule_details.ts +++ b/x-pack/test_serverless/functional/test_suites/search/rules/rule_details.ts @@ -298,7 +298,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await find.clickByCssSelector('[data-test-subj="saveEditedRuleButton"]:not(disabled)'); await retry.try(async () => { - const resultToast = await toasts.getToastElement(1); + const resultToast = await toasts.getElementByIndex(1); const toastText = await resultToast.getVisibleText(); expect(toastText).toEqual(`Updated '${updatedRuleName}'`); }); @@ -407,7 +407,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await deleteConnector(connector1.name); await retry.try(async () => { - const resultToast = await toasts.getToastElement(1); + const resultToast = await toasts.getElementByIndex(1); const toastText = await resultToast.getVisibleText(); expect(toastText).toEqual('Deleted 1 connector'); }); @@ -484,7 +484,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await deleteConnector(connector.name); await retry.try(async () => { - const resultToast = await toasts.getToastElement(1); + const resultToast = await toasts.getElementByIndex(1); const toastText = await resultToast.getVisibleText(); expect(toastText).toEqual('Deleted 1 connector'); }); @@ -618,7 +618,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await find.clickByCssSelector('[data-test-subj="saveEditedRuleButton"]:not(disabled)'); await retry.try(async () => { - const resultToast = await toasts.getToastElement(1); + const resultToast = await toasts.getElementByIndex(1); const toastText = await resultToast.getVisibleText(); expect(toastText).toEqual(`Updated '${updatedRuleName}'`); }); diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/attachment_framework.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/attachment_framework.ts index 39973a9eed08d..85a78cef48a86 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/attachment_framework.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/attachment_framework.ts @@ -65,7 +65,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.common.expectToasterToContain(`${caseTitle} has been updated`); await testSubjects.click('toaster-content-case-view-link'); - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); if (await testSubjects.exists('appLeaveConfirmModal')) { await testSubjects.exists('confirmModalConfirmButton'); @@ -104,7 +104,7 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.common.expectToasterToContain(`${theCaseTitle} has been updated`); await testSubjects.click('toaster-content-case-view-link'); - await toasts.dismissAllToastsWithChecks(); + await toasts.dismissAllWithChecks(); if (await testSubjects.exists('appLeaveConfirmModal')) { await testSubjects.exists('confirmModalConfirmButton'); diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts index fe14d0f9aef4c..bd36f8f7a8ea1 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/cases/configure.ts @@ -52,9 +52,9 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { it('change closure option successfully', async () => { await cases.common.selectRadioGroupValue('closure-options-radio-group', 'close-by-pushing'); - const toast = await toasts.getToastElement(1); + const toast = await toasts.getElementByIndex(1); expect(await toast.getVisibleText()).to.be('Settings successfully updated'); - await toasts.dismissAllToasts(); + await toasts.dismissAll(); }); }); diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts index fc75dab7160f5..69bc9d517e7e8 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts @@ -19,8 +19,7 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { const headerPage = getPageObject('header'); const retry = getService('retry'); - // FLAKY: https://github.com/elastic/kibana/issues/175608 - describe.skip('navigation', function () { + describe('navigation', function () { before(async () => { await svlCommonPage.login(); await svlSecNavigation.navigateToLandingPage();