diff --git a/.buildkite/pipeline-resource-definitions/locations.yml b/.buildkite/pipeline-resource-definitions/locations.yml index ee90785fd1e88..945e1ec820ffa 100644 --- a/.buildkite/pipeline-resource-definitions/locations.yml +++ b/.buildkite/pipeline-resource-definitions/locations.yml @@ -7,4 +7,12 @@ spec: type: url targets: - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-migration-staging.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-explore.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-investigations.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-rule-management.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-detection-engine.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-gen-ai.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-entity-analytics.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-defend-workflows.yml + - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/security-solution-ess/security-solution-ess.yml - https://github.com/elastic/kibana/blob/main/.buildkite/pipeline-resource-definitions/kibana-serverless-release.yml diff --git a/.buildkite/pipeline-resource-definitions/security-solution-ess/security-solution-ess.yml b/.buildkite/pipeline-resource-definitions/security-solution-ess/security-solution-ess.yml new file mode 100644 index 0000000000000..b22891cbe9d2d --- /dev/null +++ b/.buildkite/pipeline-resource-definitions/security-solution-ess/security-solution-ess.yml @@ -0,0 +1,37 @@ +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: bk-kibana-security-solution-ess + description: "[ESS] Executes Cypress tests against ESS deployment" +spec: + type: buildkite-pipeline + owner: 'group:security-engineering-productivity' + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: "Kibana / ESS / Security Solution" + description: "[ESS] Executes Cypress tests against ESS deployment" + spec: + repository: elastic/kibana + pipeline_file: .buildkite/pipelines/security_solution/ess_cypress.yml + provider_settings: + build_branches: false + build_pull_requests: false + publish_commit_status: false + skip_pull_request_builds_for_existing_commits: false + trigger_mode: none + build_tags: false + teams: + kibana-tech-leads: + access_level: MANAGE_BUILD_AND_READ + appex-qa: + access_level: MANAGE_BUILD_AND_READ + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + security-engineering-productivity: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ diff --git a/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-defend-workflows.yml b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-defend-workflows.yml new file mode 100644 index 0000000000000..f3e9358fa4f30 --- /dev/null +++ b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-defend-workflows.yml @@ -0,0 +1,37 @@ +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: bk-kibana-serverless-secsol-defend-workflows + description: "[MKI] Executes Cypress tests for the Defend Workflows team" +spec: + type: buildkite-pipeline + owner: 'group:security-engineering-productivity' + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: "Kibana / Serverless / Security Solution Quality Gate / Defend Workflows" + description: "[MKI] Executes Cypress tests for the Defend Workflows team" + spec: + repository: elastic/kibana + pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_explore.yml + provider_settings: + build_branches: false + build_pull_requests: false + publish_commit_status: false + skip_pull_request_builds_for_existing_commits: false + trigger_mode: none + build_tags: false + teams: + kibana-tech-leads: + access_level: MANAGE_BUILD_AND_READ + appex-qa: + access_level: MANAGE_BUILD_AND_READ + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + security-engineering-productivity: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ diff --git a/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-detection-engine.yml b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-detection-engine.yml new file mode 100644 index 0000000000000..2316a9c543d3c --- /dev/null +++ b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-detection-engine.yml @@ -0,0 +1,37 @@ +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: bk-kibana-serverless-secsol-qg-detection-engine + description: "[MKI] Executes Cypress tests for the Detection Engine team" +spec: + type: buildkite-pipeline + owner: 'group:security-engineering-productivity' + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: "Kibana / Serverless / Security Solution Quality Gate / Detection Engine" + description: "[MKI] Executes Cypress tests for the Detection Engine team" + spec: + repository: elastic/kibana + pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_detection_engine.yml + provider_settings: + build_branches: false + build_pull_requests: false + publish_commit_status: false + skip_pull_request_builds_for_existing_commits: false + trigger_mode: none + build_tags: false + teams: + kibana-tech-leads: + access_level: MANAGE_BUILD_AND_READ + appex-qa: + access_level: MANAGE_BUILD_AND_READ + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + security-engineering-productivity: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ diff --git a/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-entity-analytics.yml b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-entity-analytics.yml new file mode 100644 index 0000000000000..809e2587f659f --- /dev/null +++ b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-entity-analytics.yml @@ -0,0 +1,37 @@ +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: bk-kibana-serverless-secsol-qg-entity-analytics + description: "[MKI] Executes Cypress tests for the Entity Analytics team" +spec: + type: buildkite-pipeline + owner: 'group:security-engineering-productivity' + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: "Kibana / Serverless / Security Solution Quality Gate / Entity Analytics" + description: "[MKI] Executes Cypress tests for the Entity Analytics team" + spec: + repository: elastic/kibana + pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_entity_analytics.yml + provider_settings: + build_branches: false + build_pull_requests: false + publish_commit_status: false + skip_pull_request_builds_for_existing_commits: false + trigger_mode: none + build_tags: false + teams: + kibana-tech-leads: + access_level: MANAGE_BUILD_AND_READ + appex-qa: + access_level: MANAGE_BUILD_AND_READ + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + security-engineering-productivity: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ diff --git a/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-explore.yml b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-explore.yml new file mode 100644 index 0000000000000..f1667273282fb --- /dev/null +++ b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-explore.yml @@ -0,0 +1,37 @@ +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: bk-kibana-serverless-secsol-qg-explore + description: "[MKI] Executes Cypress tests for the Explore team" +spec: + type: buildkite-pipeline + owner: 'group:security-engineering-productivity' + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: "Kibana / Serverless / Security Solution Quality Gate / Explore" + description: "[MKI] Executes Cypress tests for the Explore team" + spec: + repository: elastic/kibana + pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_explore.yml + provider_settings: + build_branches: false + build_pull_requests: false + publish_commit_status: false + skip_pull_request_builds_for_existing_commits: false + trigger_mode: none + build_tags: false + teams: + kibana-tech-leads: + access_level: MANAGE_BUILD_AND_READ + appex-qa: + access_level: MANAGE_BUILD_AND_READ + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + security-engineering-productivity: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ diff --git a/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-gen-ai.yml b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-gen-ai.yml new file mode 100644 index 0000000000000..cca1ab2ae4b42 --- /dev/null +++ b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-gen-ai.yml @@ -0,0 +1,37 @@ +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: bk-kibana-serverless-secsol-qg-detection-gen-ai + description: "[MKI] Executes Cypress tests for the Gen AI team" +spec: + type: buildkite-pipeline + owner: 'group:security-engineering-productivity' + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: "Kibana / Serverless / Security Solution Quality Gate / Gen Ai" + description: "[MKI] Executes Cypress tests for the Gen AI team" + spec: + repository: elastic/kibana + pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_gen_ai.yml + provider_settings: + build_branches: false + build_pull_requests: false + publish_commit_status: false + skip_pull_request_builds_for_existing_commits: false + trigger_mode: none + build_tags: false + teams: + kibana-tech-leads: + access_level: MANAGE_BUILD_AND_READ + appex-qa: + access_level: MANAGE_BUILD_AND_READ + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + security-engineering-productivity: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ diff --git a/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-investigations.yml b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-investigations.yml new file mode 100644 index 0000000000000..7f4c67c1c14d3 --- /dev/null +++ b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-investigations.yml @@ -0,0 +1,37 @@ +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: bk-kibana-serverless-secsol-qg-detection-investigations + description: "[MKI] Executes Cypress tests for the Investigations team" +spec: + type: buildkite-pipeline + owner: 'group:security-engineering-productivity' + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: "Kibana / Serverless / Security Solution Quality Gate / Investigations" + description: "[MKI] Executes Cypress tests for the Investigations team" + spec: + repository: elastic/kibana + pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_investigations.yml + provider_settings: + build_branches: false + build_pull_requests: false + publish_commit_status: false + skip_pull_request_builds_for_existing_commits: false + trigger_mode: none + build_tags: false + teams: + kibana-tech-leads: + access_level: MANAGE_BUILD_AND_READ + appex-qa: + access_level: MANAGE_BUILD_AND_READ + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + security-engineering-productivity: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ diff --git a/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-rule-management.yml b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-rule-management.yml new file mode 100644 index 0000000000000..8d2d4d4039e06 --- /dev/null +++ b/.buildkite/pipeline-resource-definitions/security-solution-quality-gate/kibana-serverless-security-solution-quality-gate-rule-management.yml @@ -0,0 +1,37 @@ +# yaml-language-server: $schema=https://gist.githubusercontent.com/elasticmachine/988b80dae436cafea07d9a4a460a011d/raw/rre.schema.json +apiVersion: backstage.io/v1alpha1 +kind: Resource +metadata: + name: bk-kibana-serverless-secsol-qg-detection-rule-management + description: "[MKI] Executes Cypress tests for the Rule Management team" +spec: + type: buildkite-pipeline + owner: 'group:security-engineering-productivity' + system: buildkite + implementation: + apiVersion: buildkite.elastic.dev/v1 + kind: Pipeline + metadata: + name: "Kibana / Serverless / Security Solution Quality Gate / Rule Management" + description: "[MKI] Executes Cypress tests for the Rule Management team" + spec: + repository: elastic/kibana + pipeline_file: .buildkite/pipelines/security_solution_quality_gate/mki_security_solution_rule_management.yml + provider_settings: + build_branches: false + build_pull_requests: false + publish_commit_status: false + skip_pull_request_builds_for_existing_commits: false + trigger_mode: none + build_tags: false + teams: + kibana-tech-leads: + access_level: MANAGE_BUILD_AND_READ + appex-qa: + access_level: MANAGE_BUILD_AND_READ + kibana-operations: + access_level: MANAGE_BUILD_AND_READ + security-engineering-productivity: + access_level: MANAGE_BUILD_AND_READ + everyone: + access_level: BUILD_AND_READ diff --git a/.buildkite/pipelines/security_solution/ess_cypress.yml b/.buildkite/pipelines/security_solution/ess_cypress.yml new file mode 100644 index 0000000000000..a827106594637 --- /dev/null +++ b/.buildkite/pipelines/security_solution/ess_cypress.yml @@ -0,0 +1,30 @@ +steps: + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh + label: Build kibana image + key: build_image + agents: + queue: n2-16-spot + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: '-1' + limit: 3 + + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh + label: 'Upload runtime info' + key: upload_runtime_info + depends_on: build_image + agents: + queue: n2-4-spot + timeout_in_minutes: 300 + retry: + automatic: + - exit_status: '-1' + limit: 2 + + - group: 'Execute Cypress Tests' + key: test_execution + depends_on: build_image + steps: + - label: Running ESS Cypress Tests + command: "echo 'Running ESS Cypress Tests'" diff --git a/.buildkite/pipelines/security_solution/security_solution_cypress.yml b/.buildkite/pipelines/security_solution/security_solution_cypress.yml deleted file mode 100644 index 4d27fd954c110..0000000000000 --- a/.buildkite/pipelines/security_solution/security_solution_cypress.yml +++ /dev/null @@ -1,123 +0,0 @@ -steps: - - command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh - label: Build kibana image - key: build_image - agents: - queue: n2-16-spot - timeout_in_minutes: 60 - retry: - automatic: - - exit_status: "-1" - limit: 3 - - - command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh - label: "Upload runtime info" - key: upload_runtime_info - depends_on: build_image - agents: - queue: n2-4-spot - timeout_in_minutes: 300 - retry: - automatic: - - exit_status: "*" - limit: 1 - - - group: "Execute Tests" - depends_on: build_image - key: test_execution - steps: - - command: .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh cypress:run:qa:serverless:explore - label: 'Serverless MKI QA Explore - 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:investigations - label: 'Serverless MKI QA Investigations - 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: 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: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' - 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: 1 - 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:entity_analytics - label: 'Serverless MKI QA Entity Analytics - 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 \ No newline at end of file diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_defend_workflows.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_defend_workflows.yml new file mode 100644 index 0000000000000..11a99f29fbe14 --- /dev/null +++ b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_defend_workflows.yml @@ -0,0 +1,36 @@ +steps: + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh + label: Build kibana image + key: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-16 + preemptible: true + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: "-1" + limit: 3 + + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh + label: "Upload runtime info" + key: upload_runtime_info + depends_on: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + timeout_in_minutes: 300 + retry: + automatic: + - exit_status: "*" + limit: 1 + + - command: "echo 'Running the defend worklows tests in this step" + depends_on: build_image + key: test_defend_workflows + label: 'Serverless MKI QA Defend Workflows - Security Solution Cypress Tests' diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_detection_engine.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_detection_engine.yml new file mode 100644 index 0000000000000..a138c15ad6986 --- /dev/null +++ b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_detection_engine.yml @@ -0,0 +1,71 @@ +steps: + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh + label: Build kibana image + key: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-16 + preemptible: true + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: "-1" + limit: 3 + + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh + label: "Upload runtime info" + key: upload_runtime_info + depends_on: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + timeout_in_minutes: 300 + 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' + key: test_detection_engine + depends_on: build_image + env: + BK_TEST_SUITE_KEY: "serverless-cypress-detection-engine" + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + # 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' + key: test_detection_engine_exceptions + depends_on: build_image + env: + BK_TEST_SUITE_KEY: "serverless-cypress-detection-engine" + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + # 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 \ No newline at end of file diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_entity_analytics.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_entity_analytics.yml new file mode 100644 index 0000000000000..9614f4e877f2d --- /dev/null +++ b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_entity_analytics.yml @@ -0,0 +1,51 @@ +steps: + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh + label: Build kibana image + key: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-16 + preemptible: true + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: "-1" + limit: 3 + + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh + label: "Upload runtime info" + key: upload_runtime_info + depends_on: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + timeout_in_minutes: 300 + 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:entity_analytics + label: 'Serverless MKI QA Entity Analytics - Security Solution Cypress Tests' + depends_on: build_image + key: test_entity_analytics + env: + BK_TEST_SUITE_KEY: "serverless-cypress-entity-analytics" + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + # 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 \ No newline at end of file diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_explore.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_explore.yml new file mode 100644 index 0000000000000..c1b0f849d9036 --- /dev/null +++ b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_explore.yml @@ -0,0 +1,51 @@ +steps: + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh + label: Build kibana image + key: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-16 + preemptible: true + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: "-1" + limit: 3 + + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh + label: "Upload runtime info" + key: upload_runtime_info + depends_on: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + timeout_in_minutes: 300 + 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:explore + depends_on: build_image + key: test_explore + label: 'Serverless MKI QA Explore - Security Solution Cypress Tests' + env: + BK_TEST_SUITE_KEY: "serverless-cypress-explore" + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + # 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 diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_gen_ai.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_gen_ai.yml new file mode 100644 index 0000000000000..ee0fef579f1c6 --- /dev/null +++ b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_gen_ai.yml @@ -0,0 +1,51 @@ +steps: + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh + label: Build kibana image + key: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-16 + preemptible: true + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: "-1" + limit: 3 + + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh + label: "Upload runtime info" + key: upload_runtime_info + depends_on: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + timeout_in_minutes: 300 + 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' + depends_on: build_image + key: test_ai_assistant + env: + BK_TEST_SUITE_KEY: "serverless-cypress-gen-ai" + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + # TODO : Revise the timeout when the pipeline will be officially integrated with the quality gate. + timeout_in_minutes: 300 + parallelism: 1 + retry: + automatic: + - exit_status: '*' + limit: 1 \ No newline at end of file diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_investigations.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_investigations.yml new file mode 100644 index 0000000000000..8a5349fea578b --- /dev/null +++ b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_investigations.yml @@ -0,0 +1,51 @@ +steps: + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh + label: Build kibana image + key: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-16 + preemptible: true + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: "-1" + limit: 3 + + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh + label: "Upload runtime info" + key: upload_runtime_info + depends_on: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + timeout_in_minutes: 300 + 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:investigations + depends_on: build_image + key: test_investigations + label: 'Serverless MKI QA Investigations - Security Solution Cypress Tests' + env: + BK_TEST_SUITE_KEY: "serverless-cypress-investigations" + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + # 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 \ No newline at end of file diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_rule_management.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_rule_management.yml new file mode 100644 index 0000000000000..1cff6dfe25767 --- /dev/null +++ b/.buildkite/pipelines/security_solution_quality_gate/mki_security_solution_rule_management.yml @@ -0,0 +1,71 @@ +steps: + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/create_periodic_test_docker_image.sh + label: Build kibana image + key: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-16 + preemptible: true + timeout_in_minutes: 60 + retry: + automatic: + - exit_status: "-1" + limit: 3 + + - command: .buildkite/scripts/pipelines/security_solution_quality_gate/upload_image_metadata.sh + label: "Upload runtime info" + key: upload_runtime_info + depends_on: build_image + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + timeout_in_minutes: 300 + 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' + depends_on: build_image + key: test_rule_management + env: + BK_TEST_SUITE_KEY: "serverless-cypress-rule-management" + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + # 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' + depends_on: build_image + key: test_rule_management_prebuilt_rules + env: + BK_TEST_SUITE_KEY: "serverless-cypress-rule-management" + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-qa + provider: gcp + machineType: n2-standard-4 + preemptible: true + # 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 \ No newline at end of file diff --git a/.buildkite/scripts/pipelines/security_solution_ess/pipeline.sh b/.buildkite/scripts/pipelines/security_solution_ess/pipeline.sh deleted file mode 100755 index c21d9cea0b87f..0000000000000 --- a/.buildkite/scripts/pipelines/security_solution_ess/pipeline.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -echo "Inside the security solution pipeline" \ No newline at end of file diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/pipeline.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/pipeline.sh deleted file mode 100755 index 807ec48ab48ed..0000000000000 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/pipeline.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -echo "Running the EDR-Workflows testing for Kibana" \ No newline at end of file diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh index 8cce28a1401df..cf0dc230b0f40 100755 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh +++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/mki_security_solution_cypress.sh @@ -30,6 +30,6 @@ fi QA_API_KEY=$(vault_get security-solution-quality-gate qa_api_key) QA_CONSOLE_URL=$(vault_get security-solution-quality-gate qa_console_url) -BK_ANALYTICS_API_KEY=$(vault_get security-solution-quality-gate serverless-sec-sol-cypress-bk-api-key) +BK_ANALYTICS_API_KEY=$(vault_get security-solution-quality-gate $BK_TEST_SUITE_KEY) QA_CONSOLE_URL=$QA_CONSOLE_URL KIBANA_MKI_USE_LATEST_COMMIT=$KIBANA_OVERRIDE_FLAG BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY CLOUD_QA_API_KEY=$QA_API_KEY yarn $1; status=$?; yarn junit:merge || :; exit $status diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.sh deleted file mode 100755 index b3d93e083fa41..0000000000000 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -ts-node .buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.ts diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.ts b/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.ts deleted file mode 100644 index fb9ec67fba888..0000000000000 --- a/.buildkite/scripts/pipelines/security_solution_quality_gate/security_solution_cypress/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { execSync } from 'child_process'; -import fs from 'fs'; - -const getPipeline = (filename: string, removeSteps = true) => { - const str = fs.readFileSync(filename).toString(); - return removeSteps ? str.replace(/^steps:/, '') : str; -}; - -const uploadPipeline = (pipelineContent: string | object) => { - const str = - typeof pipelineContent === 'string' ? pipelineContent : JSON.stringify(pipelineContent); - - execSync('buildkite-agent pipeline upload', { - input: str, - stdio: ['pipe', 'inherit', 'inherit'], - }); -}; - -(async () => { - try { - const pipeline = []; - - pipeline.push( - getPipeline('.buildkite/pipelines/security_solution/security_solution_cypress.yml', false) - ); - // remove duplicated steps - uploadPipeline([...new Set(pipeline)].join('\n')); - } catch (ex) { - console.error('PR pipeline generation error', ex.message); - process.exit(1); - } -})(); diff --git a/.buildkite/scripts/steps/esql_grammar_sync.sh b/.buildkite/scripts/steps/esql_grammar_sync.sh index 2b9bbe2e810ad..33091b7524387 100755 --- a/.buildkite/scripts/steps/esql_grammar_sync.sh +++ b/.buildkite/scripts/steps/esql_grammar_sync.sh @@ -4,7 +4,7 @@ set -euo pipefail synchronize_lexer_grammar () { license_header="$1" source_file="$PARENT_DIR/elasticsearch/x-pack/plugin/esql/src/main/antlr/EsqlBaseLexer.g4" - destination_file="./packages/kbn-monaco/src/esql/antlr/esql_lexer.g4" + destination_file="./packages/kbn-esql-ast/src/antlr/esql_lexer.g4" # Copy the file cp "$source_file" "$destination_file" @@ -27,7 +27,7 @@ synchronize_lexer_grammar () { synchronize_parser_grammar () { license_header="$1" source_file="$PARENT_DIR/elasticsearch/x-pack/plugin/esql/src/main/antlr/EsqlBaseParser.g4" - destination_file="./packages/kbn-monaco/src/esql/antlr/esql_parser.g4" + destination_file="./packages/kbn-esql-ast/src/antlr/esql_parser.g4" # Copy the file cp "$source_file" "$destination_file" @@ -105,7 +105,7 @@ main () { .buildkite/scripts/bootstrap.sh # Build ANTLR stuff - cd ./packages/kbn-monaco/src + cd ./packages/kbn-esql-ast/src yarn build:antlr4:esql # Make a commit diff --git a/.eslintignore b/.eslintignore index 296d712a4cdfe..cb4ee2668b226 100644 --- a/.eslintignore +++ b/.eslintignore @@ -39,6 +39,7 @@ snapshots.js /packages/kbn-ui-framework/dist /packages/kbn-flot-charts/lib /packages/kbn-monaco/src/**/antlr +/packages/kbn-esql-ast/src/**/antlr # Bazel /bazel-* diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index a4ef92d1ad935..1088b4e8a1176 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -12,10 +12,13 @@ x-pack/test/alerting_api_integration/common/plugins/actions_simulators @elastic/ packages/kbn-actions-types @elastic/response-ops src/plugins/advanced_settings @elastic/appex-sharedux @elastic/kibana-management src/plugins/ai_assistant_management/selection @elastic/obs-knowledge-team +x-pack/packages/ml/aiops_change_point_detection @elastic/ml-ui +x-pack/packages/ml/aiops_common @elastic/ml-ui x-pack/packages/ml/aiops_components @elastic/ml-ui +x-pack/packages/ml/aiops_log_pattern_analysis @elastic/ml-ui +x-pack/packages/ml/aiops_log_rate_analysis @elastic/ml-ui x-pack/plugins/aiops @elastic/ml-ui x-pack/packages/ml/aiops_test_utils @elastic/ml-ui -x-pack/packages/ml/aiops_utils @elastic/ml-ui x-pack/test/alerting_api_integration/packages/helpers @elastic/response-ops x-pack/test/alerting_api_integration/common/plugins/alerts @elastic/response-ops x-pack/examples/alerting_example @elastic/response-ops @@ -41,6 +44,7 @@ packages/analytics/shippers/elastic_v3/server @elastic/kibana-core packages/analytics/shippers/fullstory @elastic/kibana-core packages/kbn-apm-config-loader @elastic/kibana-core @vigneshshanmugam x-pack/plugins/observability_solution/apm_data_access @elastic/obs-knowledge-team @elastic/obs-ux-infra_services-team +packages/kbn-apm-data-view @elastic/obs-ux-infra_services-team x-pack/plugins/observability_solution/apm @elastic/obs-ux-infra_services-team packages/kbn-apm-synthtrace @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team packages/kbn-apm-synthtrace-client @elastic/obs-ux-infra_services-team @elastic/obs-ux-logs-team @@ -393,7 +397,10 @@ packages/kbn-eslint-plugin-imports @elastic/kibana-operations packages/kbn-eslint-plugin-telemetry @elastic/obs-knowledge-team examples/eso_model_version_example @elastic/kibana-security x-pack/test/encrypted_saved_objects_api_integration/plugins/api_consumer_plugin @elastic/kibana-security -packages/kbn-esql-utils @elastic/kibana-visualizations +packages/kbn-esql-ast @elastic/kibana-esql +packages/kbn-esql-utils @elastic/kibana-esql +packages/kbn-esql-validation-autocomplete @elastic/kibana-esql +examples/esql_validation_example @elastic/kibana-esql packages/kbn-event-annotation-common @elastic/kibana-visualizations packages/kbn-event-annotation-components @elastic/kibana-visualizations src/plugins/event_annotation_listing @elastic/kibana-visualizations @@ -497,7 +504,7 @@ src/plugins/kibana_react @elastic/appex-sharedux src/plugins/kibana_usage_collection @elastic/kibana-core src/plugins/kibana_utils @elastic/appex-sharedux x-pack/plugins/kubernetes_security @elastic/kibana-cloud-security-posture -packages/kbn-language-documentation-popover @elastic/kibana-visualizations +packages/kbn-language-documentation-popover @elastic/kibana-esql x-pack/examples/lens_config_builder_example @elastic/kibana-visualizations packages/kbn-lens-embeddable-utils @elastic/obs-ux-infra_services-team @elastic/kibana-visualizations packages/kbn-lens-formula-docs @elastic/kibana-visualizations @@ -613,7 +620,6 @@ packages/kbn-plugin-helpers @elastic/kibana-operations examples/portable_dashboards_example @elastic/kibana-presentation examples/preboot_example @elastic/kibana-security @elastic/kibana-core packages/presentation/presentation_containers @elastic/kibana-presentation -packages/presentation/presentation_library @elastic/kibana-presentation src/plugins/presentation_panel @elastic/kibana-presentation packages/presentation/presentation_publishing @elastic/kibana-presentation src/plugins/presentation_util @elastic/kibana-presentation @@ -825,8 +831,8 @@ x-pack/test/licensing_plugin/plugins/test_feature_usage @elastic/kibana-security packages/kbn-test-jest-helpers @elastic/kibana-operations @elastic/appex-qa packages/kbn-test-subj-selector @elastic/kibana-operations @elastic/appex-qa x-pack/examples/testing_embedded_lens @elastic/kibana-visualizations -packages/kbn-text-based-editor @elastic/kibana-visualizations -src/plugins/text_based_languages @elastic/kibana-visualizations +packages/kbn-text-based-editor @elastic/kibana-esql +src/plugins/text_based_languages @elastic/kibana-esql x-pack/examples/third_party_lens_navigation_prompt @elastic/kibana-visualizations x-pack/examples/third_party_vis_lens_example @elastic/kibana-visualizations x-pack/plugins/threat_intelligence @elastic/security-threat-hunting-investigations @@ -966,7 +972,7 @@ packages/kbn-zod-helpers @elastic/security-detection-rule-management /test/api_integration/apis/event_annotations @elastic/kibana-visualizations /x-pack/test_serverless/functional/test_suites/common/visualizations/ @elastic/kibana-visualizations /x-pack/test_serverless/functional/fixtures/kbn_archiver/lens/ @elastic/kibana-visualizations -packages/kbn-monaco/src/esql @elastic/kibana-visualizations +packages/kbn-monaco/src/esql @elastic/kibana-esql # Global Experience @@ -1176,8 +1182,8 @@ x-pack/plugins/observability_solution/infra/server/lib/alerting @elastic/obs-ux- /.bazelversion @elastic/kibana-operations /WORKSPACE.bazel @elastic/kibana-operations /.buildkite/ @elastic/kibana-operations -/.buildkite/scripts/steps/esql_grammar_sync.sh @elastic/kibana-visualizations -/.buildkite/pipelines/esql_grammar_sync.yml @elastic/kibana-visualizations +/.buildkite/scripts/steps/esql_grammar_sync.sh @elastic/kibana-esql +/.buildkite/pipelines/esql_grammar_sync.yml @elastic/kibana-esql /kbn_pm/ @elastic/kibana-operations /x-pack/dev-tools @elastic/kibana-operations /catalog-info.yaml @elastic/kibana-operations @elastic/kibana-tech-leads diff --git a/.github/workflows/label-failed-test.yml b/.github/workflows/label-failed-test.yml index 3d1a26844162b..79ad5673f38af 100644 --- a/.github/workflows/label-failed-test.yml +++ b/.github/workflows/label-failed-test.yml @@ -23,6 +23,7 @@ jobs: working-directory: ./kibana-operations/triage env: GITHUB_TOKEN: ${{secrets.KIBANAMACHINE_TOKEN}} + SLACK_TOKEN: ${{secrets.SLACK_TOKEN_FAILED_TEST_NOTIFIER}} run: | npm install node failed-test-label ${{github.event.issue.number}} || true diff --git a/.github/workflows/skip-failed-test.yml b/.github/workflows/skip-failed-test.yml index 3670157aebae9..5950ed7e74c54 100644 --- a/.github/workflows/skip-failed-test.yml +++ b/.github/workflows/skip-failed-test.yml @@ -41,6 +41,7 @@ jobs: working-directory: ./kibana-operations/triage env: GITHUB_TOKEN: ${{secrets.KIBANAMACHINE_TOKEN}} + SLACK_TOKEN: ${{secrets.SLACK_TOKEN_FAILED_TEST_NOTIFIER}} run: | npm install node failed-test-auto ${{github.event.issue.number}} diff --git a/.i18nrc.json b/.i18nrc.json index d28a3584e0069..0c71b510223ad 100644 --- a/.i18nrc.json +++ b/.i18nrc.json @@ -81,6 +81,7 @@ "interpreter": "src/legacy/core_plugins/interpreter", "imageEmbeddable": "src/plugins/image_embeddable", "kbn": "src/legacy/core_plugins/kibana", + "kbn-esql-validation-autocomplete": "packages/kbn-esql-validation-autocomplete/src", "kbnConfig": "packages/kbn-config/src", "kbnDocViews": "src/legacy/core_plugins/kbn_doc_views", "kibana_react": "src/legacy/core_plugins/kibana_react", diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 164bacdc48c5b..f22e570967cd6 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-03-26 +date: 2024-03-28 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 02765a9901731..ee2e65110a26b 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/ai_assistant_management_selection.mdx b/api_docs/ai_assistant_management_selection.mdx index 4419100768f07..a91c9abdb8daa 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-03-26 +date: 2024-03-28 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 3d561b10ac09f..fcdc60e0159fc 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index 9e8d2085e3093..2d07cb3143930 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -3539,22 +3539,10 @@ "plugin": "ruleRegistry", "path": "x-pack/plugins/rule_registry/server/utils/create_persistence_rule_type_wrapper.ts" }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts" - }, - { - "plugin": "observability", - "path": "x-pack/plugins/observability_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts" - }, { "plugin": "securitySolution", "path": "x-pack/plugins/security_solution/server/lib/detection_engine/rule_preview/api/preview_rules/route.ts" }, - { - "plugin": "slo", - "path": "x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/executor.ts" - }, { "plugin": "synthetics", "path": "x-pack/plugins/observability_solution/synthetics/server/alert_rules/common.ts" diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index 289ce3eb30df8..37e3653c3fa5a 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.devdocs.json b/api_docs/apm.devdocs.json index 79aed0b4b88af..6adaf35de55b4 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -81,7 +81,7 @@ "label": "featureFlags", "description": [], "signature": [ - "{ agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; profilingIntegrationAvailable: boolean; }" + "{ agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; profilingIntegrationAvailable: boolean; ruleFormV2Enabled: boolean; }" ], "path": "x-pack/plugins/observability_solution/apm/public/index.ts", "deprecated": false, @@ -275,7 +275,7 @@ "Observable", "; searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", - "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; forceSyntheticSource: boolean; latestAgentVersionsUrl: string; serverless: Readonly<{} & { enabled: true; }>; serverlessOnboarding: boolean; managedServiceUrl: string; featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; profilingIntegrationAvailable: boolean; }>; }>>; }" + "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; forceSyntheticSource: boolean; latestAgentVersionsUrl: string; serverless: Readonly<{} & { enabled: true; }>; serverlessOnboarding: boolean; managedServiceUrl: string; featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; profilingIntegrationAvailable: boolean; ruleFormV2Enabled: boolean; }>; }>>; }" ], "path": "x-pack/plugins/observability_solution/apm/server/plugin.ts", "deprecated": false, @@ -450,7 +450,7 @@ "signature": [ "{ readonly enabled: boolean; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly serviceMapTerminateAfter: number; readonly serviceMapMaxTraces: number; readonly ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", - "; readonly telemetryCollectionEnabled: boolean; readonly metricsInterval: number; readonly agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; readonly forceSyntheticSource: boolean; readonly latestAgentVersionsUrl: string; readonly serverless: Readonly<{} & { enabled: true; }>; readonly serverlessOnboarding: boolean; readonly managedServiceUrl: string; readonly featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; profilingIntegrationAvailable: boolean; }>; }" + "; readonly telemetryCollectionEnabled: boolean; readonly metricsInterval: number; readonly agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; readonly forceSyntheticSource: boolean; readonly latestAgentVersionsUrl: string; readonly serverless: Readonly<{} & { enabled: true; }>; readonly serverlessOnboarding: boolean; readonly managedServiceUrl: string; readonly featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; profilingIntegrationAvailable: boolean; ruleFormV2Enabled: boolean; }>; }" ], "path": "x-pack/plugins/observability_solution/apm/server/index.ts", "deprecated": false, @@ -7998,7 +7998,7 @@ "Observable", "; searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", - "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; forceSyntheticSource: boolean; latestAgentVersionsUrl: string; serverless: Readonly<{} & { enabled: true; }>; serverlessOnboarding: boolean; managedServiceUrl: string; featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; profilingIntegrationAvailable: boolean; }>; }>>" + "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; forceSyntheticSource: boolean; latestAgentVersionsUrl: string; serverless: Readonly<{} & { enabled: true; }>; serverlessOnboarding: boolean; managedServiceUrl: string; featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; profilingIntegrationAvailable: boolean; ruleFormV2Enabled: boolean; }>; }>>" ], "path": "x-pack/plugins/observability_solution/apm/server/types.ts", "deprecated": false, diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 6f2eb214fea64..a67041732a13a 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-03-26 +date: 2024-03-28 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 5b58c21763082..e2b694dd4b87e 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-03-26 +date: 2024-03-28 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 e40ead74001dc..21e46e4b560c7 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-03-26 +date: 2024-03-28 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 6150b93f18bec..83cc029004f05 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-03-26 +date: 2024-03-28 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 232d68508c782..e9761d79fc851 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-03-26 +date: 2024-03-28 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 18fc64d3bfeb0..322dc1ae41e4c 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-03-26 +date: 2024-03-28 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 43f778384c930..546e462d8dff7 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.devdocs.json b/api_docs/charts.devdocs.json index d4c7d4e5e0ce3..220c4efcc4680 100644 --- a/api_docs/charts.devdocs.json +++ b/api_docs/charts.devdocs.json @@ -3401,11 +3401,11 @@ "PointerUpdateTrigger", " | undefined; brushAxis?: ", "BrushAxis", - " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaLabel?: string | undefined; xDomain?: ", + " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaDescription?: string | undefined; ariaLabel?: string | undefined; xDomain?: ", "MakeOverridesSerializable", "<", "CustomXDomain", - " | undefined>; ariaDescription?: string | undefined; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", + " | undefined>; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", "LegendStrategy", " | undefined; onLegendItemClick?: \"ignore\" | undefined; customLegend?: \"ignore\" | undefined; onLegendItemMinusClick?: \"ignore\" | undefined; onLegendItemOut?: \"ignore\" | undefined; onLegendItemOver?: \"ignore\" | undefined; onLegendItemPlusClick?: \"ignore\" | undefined; debugState?: boolean | undefined; onProjectionClick?: \"ignore\" | undefined; onElementClick?: \"ignore\" | undefined; onElementOver?: \"ignore\" | undefined; onElementOut?: \"ignore\" | undefined; onBrushEnd?: \"ignore\" | undefined; onResize?: \"ignore\" | undefined; onWillRender?: \"ignore\" | undefined; onProjectionAreaChange?: \"ignore\" | undefined; onAnnotationClick?: \"ignore\" | undefined; resizeDebounce?: number | undefined; pointerUpdateDebounce?: number | undefined; roundHistogramBrushValues?: boolean | undefined; noResults?: React.ReactChild | React.ComponentType<{}> | undefined; legendSort?: \"ignore\" | undefined; } | undefined; }" ], diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 1a24f2ed6efd9..b2cd68e71cf8e 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-03-26 +date: 2024-03-28 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 9f950a9b0c694..99b91bc2f05e8 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-03-26 +date: 2024-03-28 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 3f3e34ac49f62..34af336788bfa 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-03-26 +date: 2024-03-28 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 721346ab07e30..4151f027293cc 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-03-26 +date: 2024-03-28 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 66d1bdf05dd7b..16c57560b4ebf 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-03-26 +date: 2024-03-28 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 dffe069e9159b..8feb96fbb7866 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-03-26 +date: 2024-03-28 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 f15b3f9fd522b..1bb21b1fa764b 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-03-26 +date: 2024-03-28 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 b10174fcd1635..4cf52be50817b 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-03-26 +date: 2024-03-28 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 facbf0ca8a2b1..f2b69c866bed1 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-03-26 +date: 2024-03-28 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 6ed1e1c43dbce..226356e69899e 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-03-26 +date: 2024-03-28 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 09c8fd286e684..7eee8250c2351 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-03-26 +date: 2024-03-28 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 bb12c874c4897..d285d2b08b845 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index 3024b1783752a..1cef5b87888b0 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -13030,7 +13030,7 @@ "\nCreates a minimal static representation of the data view. Fields and popularity scores will be omitted." ], "signature": [ - "() => Omit<", + "(params?: { keepFieldAttrs?: (\"customLabel\" | \"customDescription\")[] | undefined; } | undefined) => Omit<", { "pluginId": "dataViews", "scope": "common", @@ -13043,7 +13043,35 @@ "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, "trackAdoption": false, - "children": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.toMinimalSpec.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataView.toMinimalSpec.$1.keepFieldAttrs", + "type": "Array", + "tags": [], + "label": "keepFieldAttrs", + "description": [], + "signature": [ + "(\"customLabel\" | \"customDescription\")[] | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], "returnComment": [] }, { @@ -19387,7 +19415,7 @@ "\nCreates a minimal static representation of the data view. Fields and popularity scores will be omitted." ], "signature": [ - "() => Omit<", + "(params?: { keepFieldAttrs?: (\"customLabel\" | \"customDescription\")[] | undefined; } | undefined) => Omit<", { "pluginId": "dataViews", "scope": "common", @@ -19400,7 +19428,35 @@ "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, "trackAdoption": false, - "children": [], + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.toMinimalSpec.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataView.toMinimalSpec.$1.keepFieldAttrs", + "type": "Array", + "tags": [], + "label": "keepFieldAttrs", + "description": [], + "signature": [ + "(\"customLabel\" | \"customDescription\")[] | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], "returnComment": [] }, { diff --git a/api_docs/data.mdx b/api_docs/data.mdx index 3f5cfd7695420..609c94812f03e 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.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 | |-------------------|-----------|------------------------|-----------------| -| 3257 | 31 | 2597 | 23 | +| 3261 | 31 | 2601 | 23 | ## Client diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index f14a614c8da57..6d74a354843e0 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.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 | |-------------------|-----------|------------------------|-----------------| -| 3257 | 31 | 2597 | 23 | +| 3261 | 31 | 2601 | 23 | ## Client diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index fccd5a61b6986..21b57ae9fff6b 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.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 | |-------------------|-----------|------------------------|-----------------| -| 3257 | 31 | 2597 | 23 | +| 3261 | 31 | 2601 | 23 | ## Client diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 821e4860ede1b..7306137b4a6a0 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-03-26 +date: 2024-03-28 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 a2f1532f2678f..fa79a5518ee69 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-03-26 +date: 2024-03-28 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 316f2d0127336..af356fe5b902c 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViewManagement'] --- import dataViewManagementObj from './data_view_management.devdocs.json'; diff --git a/api_docs/data_views.devdocs.json b/api_docs/data_views.devdocs.json index 61472b2262a82..e9aea1f707c76 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -281,7 +281,7 @@ "\nCreates a minimal static representation of the data view. Fields and popularity scores will be omitted." ], "signature": [ - "() => Omit<", + "(params?: { keepFieldAttrs?: (\"customLabel\" | \"customDescription\")[] | undefined; } | undefined) => Omit<", { "pluginId": "dataViews", "scope": "common", @@ -294,7 +294,35 @@ "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, "trackAdoption": false, - "children": [], + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-public.DataView.toMinimalSpec.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-public.DataView.toMinimalSpec.$1.keepFieldAttrs", + "type": "Array", + "tags": [], + "label": "keepFieldAttrs", + "description": [], + "signature": [ + "(\"customLabel\" | \"customDescription\")[] | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], "returnComment": [] }, { @@ -6931,7 +6959,7 @@ "\nCreates a minimal static representation of the data view. Fields and popularity scores will be omitted." ], "signature": [ - "() => Omit<", + "(params?: { keepFieldAttrs?: (\"customLabel\" | \"customDescription\")[] | undefined; } | undefined) => Omit<", { "pluginId": "dataViews", "scope": "common", @@ -6944,7 +6972,35 @@ "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, "trackAdoption": false, - "children": [], + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-server.DataView.toMinimalSpec.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-server.DataView.toMinimalSpec.$1.keepFieldAttrs", + "type": "Array", + "tags": [], + "label": "keepFieldAttrs", + "description": [], + "signature": [ + "(\"customLabel\" | \"customDescription\")[] | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], "returnComment": [] }, { @@ -12569,7 +12625,7 @@ "\nCreates a minimal static representation of the data view. Fields and popularity scores will be omitted." ], "signature": [ - "() => Omit<", + "(params?: { keepFieldAttrs?: (\"customLabel\" | \"customDescription\")[] | undefined; } | undefined) => Omit<", { "pluginId": "dataViews", "scope": "common", @@ -12582,7 +12638,35 @@ "path": "src/plugins/data_views/common/data_views/data_view.ts", "deprecated": false, "trackAdoption": false, - "children": [], + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-common.DataView.toMinimalSpec.$1", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-common.DataView.toMinimalSpec.$1.keepFieldAttrs", + "type": "Array", + "tags": [], + "label": "keepFieldAttrs", + "description": [], + "signature": [ + "(\"customLabel\" | \"customDescription\")[] | undefined" + ], + "path": "src/plugins/data_views/common/data_views/data_view.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], "returnComment": [] }, { diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 10e6aad1b3953..c2f4d8b47737f 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 970 | 0 | 288 | 4 | +| 976 | 0 | 294 | 4 | ## Client diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 4cc5d8b93bf1b..7dc2000cc1c59 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-03-26 +date: 2024-03-28 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 bcdae19ead162..5a020c083a10b 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-03-26 +date: 2024-03-28 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 a171d9466a7ca..69618cd31ce83 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -17,7 +17,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Referencing plugin(s) | Remove By | | ---------------|-----------|-----------| | | ml, stackAlerts | - | -| | share, uiActions, guidedOnboarding, home, serverless, management, spaces, savedObjects, indexManagement, devTools, console, visualizations, dashboard, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, security, alerting, triggersActionsUi, aiops, maps, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, licenseManagement, dataVisualizer, ml, fleet, crossClusterReplication, graph, grokdebugger, indexLifecycleManagement, ingestPipelines, logstash, metricsDataAccess, exploratoryView, osquery, infra, monitoring, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, snapshotRestore, transform, upgradeAssistant, watcher, cloudDataMigration, profiling, apm, observabilityOnboarding, synthetics, uptime, ux, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - | +| | share, uiActions, guidedOnboarding, home, serverless, management, spaces, savedObjects, indexManagement, devTools, console, visualizations, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, security, alerting, dashboard, triggersActionsUi, aiops, maps, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, licenseManagement, dataVisualizer, ml, fleet, crossClusterReplication, graph, grokdebugger, indexLifecycleManagement, ingestPipelines, logstash, metricsDataAccess, exploratoryView, osquery, infra, monitoring, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, snapshotRestore, transform, upgradeAssistant, watcher, cloudDataMigration, profiling, apm, observabilityOnboarding, synthetics, uptime, ux, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - | | | encryptedSavedObjects, actions, data, ml, logstash, securitySolution, cloudChat | - | | | actions, ml, savedObjectsTagging, enterpriseSearch | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, visualizations, aiops, ml, dataVisualizer, dashboardEnhanced, graph, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | @@ -28,9 +28,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | dashboard, dataVisualizer, stackAlerts, expressionPartitionVis | - | | | stackAlerts, alerting, securitySolution, inputControlVis | - | | | triggersActionsUi | - | -| | inspector, data, savedObjects, console, runtimeFields, indexManagement, dataViewEditor, unifiedSearch, embeddable, visualizations, dashboard, licensing, savedObjectsTagging, dataViewFieldEditor, lens, security, triggersActionsUi, cases, observabilityShared, banners, maps, @kbn/reporting-public, reporting, timelines, fleet, telemetry, cloudSecurityPosture, dashboardEnhanced, imageEmbeddable, graph, exploratoryView, monitoring, securitySolution, cloudLinks, synthetics, uptime, dataViewManagement, eventAnnotationListing, filesManagement, uiActions, visTypeVislib | - | +| | inspector, data, savedObjects, console, runtimeFields, indexManagement, dataViewEditor, unifiedSearch, embeddable, visualizations, licensing, savedObjectsTagging, dataViewFieldEditor, lens, security, dashboard, triggersActionsUi, cases, observabilityShared, banners, maps, @kbn/reporting-public, reporting, timelines, fleet, telemetry, cloudSecurityPosture, dashboardEnhanced, imageEmbeddable, graph, exploratoryView, monitoring, securitySolution, cloudLinks, synthetics, uptime, dataViewManagement, eventAnnotationListing, filesManagement, uiActions, visTypeVislib | - | | | @kbn/core, visualizations, triggersActionsUi | - | -| | ruleRegistry, observability, securitySolution, slo, synthetics, uptime | - | +| | ruleRegistry, securitySolution, synthetics, uptime, slo | - | | | alerting, discover, securitySolution | - | | | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, fleet, graph, lists, osquery, securitySolution, alerting | - | | | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-api-server-internal, @kbn/core-saved-objects-import-export-server-internal, @kbn/core-saved-objects-server-internal, fleet, graph, lists, osquery, securitySolution, alerting | - | @@ -65,7 +65,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/core-saved-objects-browser-mocks, discover, @kbn/core-saved-objects-browser-internal | - | | | @kbn/management-settings-field-definition, discover | - | | | monitoring | - | -| | @kbn/core-saved-objects-api-browser, @kbn/core, savedObjects, savedObjectsManagement, visualizations, savedObjectsTagging, eventAnnotation, lens, graph, dashboard, savedObjectsTaggingOss, kibanaUtils, expressions, data, embeddable, controls, uiActionsEnhanced, canvas, maps, dashboardEnhanced, globalSearchProviders | - | +| | @kbn/core-saved-objects-api-browser, @kbn/core, savedObjects, savedObjectsManagement, visualizations, savedObjectsTagging, eventAnnotation, lens, graph, dashboard, savedObjectsTaggingOss, kibanaUtils, expressions, data, embeddable, uiActionsEnhanced, controls, canvas, maps, dashboardEnhanced, globalSearchProviders | - | | | @kbn/core-saved-objects-browser, @kbn/core-saved-objects-browser-internal, @kbn/core, home, savedObjects, visualizations, lens, visTypeTimeseries, @kbn/core-saved-objects-browser-mocks | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-browser-mocks, savedObjects, dashboard | - | | | @kbn/core-saved-objects-browser-mocks, home, @kbn/core-saved-objects-browser-internal | - | @@ -102,6 +102,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | visTypeTimeseries, graph, dataViewManagement | - | | | visualizations, graph | - | | | @kbn/core, lens, savedObjects | - | +| | embeddable, dashboard | - | +| | dashboard | - | | | dataViews, maps | - | | | dataViews, dataViewManagement | - | | | dataViews, dataViewManagement | - | @@ -149,7 +151,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | fleet, apm, security, securitySolution | 8.8.0 | | | fleet, apm, security, securitySolution | 8.8.0 | | | spaces, security, alerting | 8.8.0 | -| | embeddable, presentationUtil, dashboard, lens, discover, graph, links | 8.8.0 | +| | embeddable, presentationUtil, lens, dashboard, discover, graph, links | 8.8.0 | | | @kbn/core-application-browser-internal, @kbn/core-application-browser-mocks, management, fleet, searchPlayground, security, kibanaOverview, @kbn/core | 8.8.0 | | | security | 8.8.0 | | | apm | 8.8.0 | @@ -182,6 +184,8 @@ Safe to remove. | | data | | | data | | | embeddableEnhanced | +| | expressionGauge | +| | expressionGauge | | | expressions | | | expressions | | | expressions | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index e9693182b4c04..38df5ddf55941 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -328,7 +328,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/monaco/esql_theme.ts#:~:text=darkMode), [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/monaco/esql_theme.ts#:~:text=darkMode) | - | +| | [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/esql_theme.ts#:~:text=darkMode), [esql_theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/esql/lib/esql_theme.ts#:~:text=darkMode), [theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/console/theme.ts#:~:text=darkMode), [theme.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-monaco/src/console/theme.ts#:~:text=darkMode) | - | @@ -564,7 +564,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/data/types.ts#:~:text=fieldFormats), [data_service.ts](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/services/data/data_service.ts#:~:text=fieldFormats) | - | | | [show_settings.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/show_settings.tsx#:~:text=toMountPoint), [show_settings.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/show_settings.tsx#:~:text=toMountPoint), [confirm_overlays.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx#:~:text=toMountPoint), [confirm_overlays.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx#:~:text=toMountPoint), [dashboard_no_match.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx#:~:text=toMountPoint), [dashboard_no_match.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx#:~:text=toMountPoint), [dashboard_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_listing/dashboard_listing.tsx#:~:text=toMountPoint), [dashboard_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_listing/dashboard_listing.tsx#:~:text=toMountPoint), [open_replace_panel_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx#:~:text=toMountPoint), [open_replace_panel_flyout.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx#:~:text=toMountPoint)+ 2 more | - | | | [dashboard_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx#:~:text=KibanaThemeProvider), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx#:~:text=KibanaThemeProvider), [dashboard_container.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx#:~:text=KibanaThemeProvider), [dashboard_router.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx#:~:text=KibanaThemeProvider), [dashboard_router.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx#:~:text=KibanaThemeProvider), [dashboard_router.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx#:~:text=KibanaThemeProvider) | - | -| | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | +| | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [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=savedObjects), [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=savedObjects) | - | | | [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=create) | - | | | [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) | - | @@ -573,6 +573,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [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) | - | +| | [legacy_add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx#:~:text=HasLegacyLibraryTransforms), [legacy_add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx#:~:text=HasLegacyLibraryTransforms), [legacy_unlink_from_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx#:~:text=HasLegacyLibraryTransforms), [legacy_unlink_from_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx#:~:text=HasLegacyLibraryTransforms) | - | +| | [legacy_add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx#:~:text=apiHasLegacyLibraryTransforms), [legacy_add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx#:~:text=apiHasLegacyLibraryTransforms), [legacy_unlink_from_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx#:~:text=apiHasLegacyLibraryTransforms), [legacy_unlink_from_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx#:~:text=apiHasLegacyLibraryTransforms) | - | @@ -696,6 +698,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [helpers.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/helpers.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [container.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/container.test.ts#:~:text=executeTriggerActions), [explicit_input.test.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/tests/explicit_input.test.ts#:~:text=executeTriggerActions) | - | | | [default_embeddable_factory_provider.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts#:~:text=SavedObjectAttributes), [default_embeddable_factory_provider.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/default_embeddable_factory_provider.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/types.ts#:~:text=SavedObjectAttributes), [types.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/types.ts#:~:text=SavedObjectAttributes) | - | | | [migrate_base_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/migrate_base_input.ts#:~:text=SavedObjectReference), [migrate_base_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/migrate_base_input.ts#:~:text=SavedObjectReference), [migrate_base_input.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/migrate_base_input.ts#:~:text=SavedObjectReference), [inject.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/inject.ts#:~:text=SavedObjectReference), [inject.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/common/lib/inject.ts#:~:text=SavedObjectReference) | - | +| | [i_embeddable.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts#:~:text=HasLegacyLibraryTransforms), [i_embeddable.ts](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts#:~:text=HasLegacyLibraryTransforms) | - | @@ -1204,14 +1207,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] -## observability - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [custom_threshold_executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/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_solution/observability/server/lib/rules/custom_threshold/custom_threshold_executor.ts#:~:text=alertFactory) | - | - - - ## observabilityOnboarding | Deprecated API | Reference location(s) | Remove By | @@ -1496,7 +1491,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [executor.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/executor.ts#:~:text=alertFactory), [executor.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/executor.test.ts#:~:text=alertFactory) | - | +| | [executor.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/slo/server/lib/rules/slo_burn_rate/executor.test.ts#:~:text=alertFactory) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/slo/public/plugin.ts#:~:text=license%24) | 8.8.0 | | | [slo.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/slo/server/saved_objects/slo.ts#:~:text=migrations) | - | @@ -1665,7 +1660,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [to_ast.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/gauge/public/to_ast.ts#:~:text=percentageMode) | - | +| | [to_ast.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/gauge/public/to_ast.ts#:~:text=percentageMode), [to_ast.ts](https://github.com/elastic/kibana/tree/main/src/plugins/vis_types/gauge/public/to_ast.ts#:~:text=percentageMode) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 154f96018cfcd..c960928afc8b7 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -79,7 +79,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| dashboard | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.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), [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 | +| dashboard | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [add_to_library_action.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [attribute_service.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/embeddable/public/lib/attribute_service/attribute_service.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx#:~:text=SavedObjectSaveModal), [saved_object_save_modal_dashboard.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.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), [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 | diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 1f70e25860722..1fa10536f5b73 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-03-26 +date: 2024-03-28 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 8c83a37615729..0d3b3579af2c0 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-03-26 +date: 2024-03-28 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 80d1d2fe4ce4a..a079d68fcfdfe 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-03-26 +date: 2024-03-28 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 ff74c0d269504..0322c933c540f 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-03-26 +date: 2024-03-28 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 b5b5ae2a0f09f..4cc77874f0061 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index cbbc7e2e1a7a1..0e1bf12d94027 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -8937,7 +8937,7 @@ "section": "def-public.DefaultEmbeddableApi", "text": "DefaultEmbeddableApi" }, - ">({ maybeId, type, state, parentApi, onApiAvailable, }: { maybeId?: string | undefined; type: string; state: ", + ">({ maybeId, type, state, parentApi, onApiAvailable, panelProps, }: { maybeId?: string | undefined; type: string; state: ", { "pluginId": "@kbn/presentation-containers", "scope": "common", @@ -8953,7 +8953,15 @@ "section": "def-common.PresentationContainer", "text": "PresentationContainer" }, - " | undefined; onApiAvailable?: ((api: ApiType) => void) | undefined; }) => JSX.Element" + " | undefined; onApiAvailable?: ((api: ApiType) => void) | undefined; panelProps?: Pick<", + { + "pluginId": "presentationPanel", + "scope": "public", + "docId": "kibPresentationPanelPluginApi", + "section": "def-public.PresentationPanelProps", + "text": "PresentationPanelProps" + }, + ", \"showShadow\" | \"showBorder\" | \"showBadges\" | \"showNotifications\" | \"hideHeader\" | \"hideInspector\"> | undefined; }) => JSX.Element" ], "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx", "deprecated": false, @@ -8964,7 +8972,7 @@ "id": "def-public.ReactEmbeddableRenderer.$1", "type": "Object", "tags": [], - "label": "{\n maybeId,\n type,\n state,\n parentApi,\n onApiAvailable,\n}", + "label": "{\n maybeId,\n type,\n state,\n parentApi,\n onApiAvailable,\n panelProps,\n}", "description": [], "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx", "deprecated": false, @@ -9068,6 +9076,28 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "embeddable", + "id": "def-public.ReactEmbeddableRenderer.$1.panelProps", + "type": "Object", + "tags": [], + "label": "panelProps", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "presentationPanel", + "scope": "public", + "docId": "kibPresentationPanelPluginApi", + "section": "def-public.PresentationPanelProps", + "text": "PresentationPanelProps" + }, + ", \"showShadow\" | \"showBorder\" | \"showBadges\" | \"showNotifications\" | \"hideHeader\" | \"hideInspector\"> | undefined" + ], + "path": "src/plugins/embeddable/public/react_embeddable_system/react_embeddable_renderer.tsx", + "deprecated": false, + "trackAdoption": false } ] } diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 8d2d02870e3f8..e9b178f0cce55 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 556 | 1 | 451 | 10 | +| 557 | 1 | 452 | 10 | ## Client diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index c70a9789442be..1e5c51fa4dbf3 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-03-26 +date: 2024-03-28 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 30d9e2b601692..41aa1f801efb8 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-03-26 +date: 2024-03-28 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 e0ab7b4adf9d4..2be5e71918b08 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-03-26 +date: 2024-03-28 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 4a517898ea054..137001600d632 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-03-26 +date: 2024-03-28 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 b4e962640ec80..a0c95a423b4f8 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-03-26 +date: 2024-03-28 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 5a8748a48d54b..ec197c7f36465 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-03-26 +date: 2024-03-28 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 bc7e37c4e3b8b..94325b58616d8 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-03-26 +date: 2024-03-28 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 b1c2999766382..f33fe065dd285 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-03-26 +date: 2024-03-28 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 babd1ec174e56..63c13bdb76b03 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.devdocs.json b/api_docs/expression_gauge.devdocs.json index c730e7b812f98..1826fe01494c5 100644 --- a/api_docs/expression_gauge.devdocs.json +++ b/api_docs/expression_gauge.devdocs.json @@ -549,15 +549,7 @@ "section": "def-common.GaugeState", "text": "GaugeState" }, - " & { shape: ", - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.GaugeShape", - "text": "GaugeShape" - }, - "; colorMode: ", + " & { colorMode: ", "GaugeColorMode", "; palette?: ", { @@ -750,35 +742,6 @@ "deprecated": false, "trackAdoption": false }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.GaugeState.centralMajorMode", - "type": "CompoundType", - "tags": [], - "label": "centralMajorMode", - "description": [], - "signature": [ - "GaugeCentralMajorMode", - " | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.GaugeState.centralMajor", - "type": "string", - "tags": [], - "label": "centralMajor", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "expressionGauge", "id": "def-common.GaugeState.colorMode", @@ -831,34 +794,12 @@ "label": "shape", "description": [], "signature": [ - "\"arc\" | \"circle\" | \"horizontalBullet\" | \"verticalBullet\"" + "\"arc\" | \"circle\" | \"horizontalBullet\" | \"verticalBullet\" | \"semiCircle\"" ], "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", "deprecated": false, "trackAdoption": false }, - { - "parentPluginId": "expressionGauge", - "id": "def-common.GaugeState.percentageMode", - "type": "CompoundType", - "tags": [ - "deprecated" - ], - "label": "percentageMode", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", - "deprecated": true, - "trackAdoption": false, - "references": [ - { - "plugin": "visTypeGauge", - "path": "src/plugins/vis_types/gauge/public/to_ast.ts" - } - ] - }, { "parentPluginId": "expressionGauge", "id": "def-common.GaugeState.respectRanges", @@ -886,6 +827,69 @@ "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "expressionGauge", + "id": "def-common.GaugeState.centralMajorMode", + "type": "CompoundType", + "tags": [ + "deprecated" + ], + "label": "centralMajorMode", + "description": [], + "signature": [ + "GaugeCentralMajorMode", + " | undefined" + ], + "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", + "deprecated": true, + "trackAdoption": false, + "references": [] + }, + { + "parentPluginId": "expressionGauge", + "id": "def-common.GaugeState.centralMajor", + "type": "string", + "tags": [ + "deprecated" + ], + "label": "centralMajor", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", + "deprecated": true, + "trackAdoption": false, + "references": [] + }, + { + "parentPluginId": "expressionGauge", + "id": "def-common.GaugeState.percentageMode", + "type": "CompoundType", + "tags": [ + "deprecated" + ], + "label": "percentageMode", + "description": [ + "\nThis field is deprecated and will be removed in a future release" + ], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "visTypeGauge", + "path": "src/plugins/vis_types/gauge/public/to_ast.ts" + }, + { + "plugin": "visTypeGauge", + "path": "src/plugins/vis_types/gauge/public/to_ast.ts" + } + ] } ], "initialIsOpen": false @@ -1036,15 +1040,7 @@ "section": "def-common.GaugeState", "text": "GaugeState" }, - " & { shape: ", - { - "pluginId": "expressionGauge", - "scope": "common", - "docId": "kibExpressionGaugePluginApi", - "section": "def-common.GaugeShape", - "text": "GaugeShape" - }, - "; colorMode: ", + " & { colorMode: ", "GaugeColorMode", "; palette?: ", { @@ -1251,11 +1247,11 @@ "PointerUpdateTrigger", " | undefined; brushAxis?: ", "BrushAxis", - " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaLabel?: string | undefined; xDomain?: ", + " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaDescription?: string | undefined; ariaLabel?: string | undefined; xDomain?: ", "MakeOverridesSerializable", "<", "CustomXDomain", - " | undefined>; ariaDescription?: string | undefined; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", + " | undefined>; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", "LegendStrategy", " | undefined; onLegendItemClick?: \"ignore\" | undefined; customLegend?: \"ignore\" | undefined; onLegendItemMinusClick?: \"ignore\" | undefined; onLegendItemOut?: \"ignore\" | undefined; onLegendItemOver?: \"ignore\" | undefined; onLegendItemPlusClick?: \"ignore\" | undefined; debugState?: boolean | undefined; onProjectionClick?: \"ignore\" | undefined; onElementClick?: \"ignore\" | undefined; onElementOver?: \"ignore\" | undefined; onElementOut?: \"ignore\" | undefined; onBrushEnd?: \"ignore\" | undefined; onResize?: \"ignore\" | undefined; onWillRender?: \"ignore\" | undefined; onProjectionAreaChange?: \"ignore\" | undefined; onAnnotationClick?: \"ignore\" | undefined; resizeDebounce?: number | undefined; pointerUpdateDebounce?: number | undefined; roundHistogramBrushValues?: boolean | undefined; noResults?: React.ReactChild | React.ComponentType<{}> | undefined; legendSort?: \"ignore\" | undefined; }>> & Partial>) | undefined; setChartSize: (d: ", { @@ -1280,7 +1276,7 @@ "label": "GaugeShape", "description": [], "signature": [ - "\"arc\" | \"circle\" | \"horizontalBullet\" | \"verticalBullet\"" + "\"arc\" | \"circle\" | \"horizontalBullet\" | \"verticalBullet\" | \"semiCircle\"" ], "path": "src/plugins/chart_expressions/expression_gauge/common/types/expression_functions.ts", "deprecated": false, @@ -1372,7 +1368,7 @@ "label": "GaugeShapes", "description": [], "signature": [ - "{ readonly HORIZONTAL_BULLET: \"horizontalBullet\"; readonly VERTICAL_BULLET: \"verticalBullet\"; readonly ARC: \"arc\"; readonly CIRCLE: \"circle\"; }" + "{ readonly HORIZONTAL_BULLET: \"horizontalBullet\"; readonly VERTICAL_BULLET: \"verticalBullet\"; readonly SEMI_CIRCLE: \"semiCircle\"; readonly ARC: \"arc\"; readonly CIRCLE: \"circle\"; }" ], "path": "src/plugins/chart_expressions/expression_gauge/common/constants.ts", "deprecated": false, diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index ba1db0673263f..610b02daee542 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.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 | |-------------------|-----------|------------------------|-----------------| -| 59 | 0 | 59 | 2 | +| 59 | 0 | 58 | 2 | ## Client diff --git a/api_docs/expression_heatmap.devdocs.json b/api_docs/expression_heatmap.devdocs.json index 949af2f84bffd..53e77c550dcdf 100644 --- a/api_docs/expression_heatmap.devdocs.json +++ b/api_docs/expression_heatmap.devdocs.json @@ -521,11 +521,11 @@ "PointerUpdateTrigger", " | undefined; brushAxis?: ", "BrushAxis", - " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaLabel?: string | undefined; xDomain?: ", + " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaDescription?: string | undefined; ariaLabel?: string | undefined; xDomain?: ", "MakeOverridesSerializable", "<", "CustomXDomain", - " | undefined>; ariaDescription?: string | undefined; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", + " | undefined>; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", "LegendStrategy", " | undefined; onLegendItemClick?: \"ignore\" | undefined; customLegend?: \"ignore\" | undefined; onLegendItemMinusClick?: \"ignore\" | undefined; onLegendItemOut?: \"ignore\" | undefined; onLegendItemOver?: \"ignore\" | undefined; onLegendItemPlusClick?: \"ignore\" | undefined; debugState?: boolean | undefined; onProjectionClick?: \"ignore\" | undefined; onElementClick?: \"ignore\" | undefined; onElementOver?: \"ignore\" | undefined; onElementOut?: \"ignore\" | undefined; onBrushEnd?: \"ignore\" | undefined; onResize?: \"ignore\" | undefined; onWillRender?: \"ignore\" | undefined; onProjectionAreaChange?: \"ignore\" | undefined; onAnnotationClick?: \"ignore\" | undefined; resizeDebounce?: number | undefined; pointerUpdateDebounce?: number | undefined; roundHistogramBrushValues?: boolean | undefined; noResults?: React.ReactChild | React.ComponentType<{}> | undefined; legendSort?: \"ignore\" | undefined; }>> & Partial>) | undefined" ], diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index c7f160a06aa38..57013040deabc 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-03-26 +date: 2024-03-28 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 b4a53e5ba8ddc..0fc6c6277d5d0 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-03-26 +date: 2024-03-28 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 14d09956b6d76..934eb4152c55c 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-03-26 +date: 2024-03-28 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 1433e6a9d3424..150f790e5e464 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.devdocs.json b/api_docs/expression_metric_vis.devdocs.json index 74c0ab8ff17b4..04d285aba5fc0 100644 --- a/api_docs/expression_metric_vis.devdocs.json +++ b/api_docs/expression_metric_vis.devdocs.json @@ -898,11 +898,11 @@ "PointerUpdateTrigger", " | undefined; brushAxis?: ", "BrushAxis", - " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaLabel?: string | undefined; xDomain?: ", + " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaDescription?: string | undefined; ariaLabel?: string | undefined; xDomain?: ", "MakeOverridesSerializable", "<", "CustomXDomain", - " | undefined>; ariaDescription?: string | undefined; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", + " | undefined>; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", "LegendStrategy", " | undefined; onLegendItemClick?: \"ignore\" | undefined; customLegend?: \"ignore\" | undefined; onLegendItemMinusClick?: \"ignore\" | undefined; onLegendItemOut?: \"ignore\" | undefined; onLegendItemOver?: \"ignore\" | undefined; onLegendItemPlusClick?: \"ignore\" | undefined; debugState?: boolean | undefined; onProjectionClick?: \"ignore\" | undefined; onElementClick?: \"ignore\" | undefined; onElementOver?: \"ignore\" | undefined; onElementOut?: \"ignore\" | undefined; onBrushEnd?: \"ignore\" | undefined; onResize?: \"ignore\" | undefined; onWillRender?: \"ignore\" | undefined; onProjectionAreaChange?: \"ignore\" | undefined; onAnnotationClick?: \"ignore\" | undefined; resizeDebounce?: number | undefined; pointerUpdateDebounce?: number | undefined; roundHistogramBrushValues?: boolean | undefined; noResults?: React.ReactChild | React.ComponentType<{}> | undefined; legendSort?: \"ignore\" | undefined; }>> & Partial>) | undefined" ], diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 21c451bd5cc6b..be529578cf19b 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-03-26 +date: 2024-03-28 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 af1e58cf126e7..dadcc45c16f13 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-03-26 +date: 2024-03-28 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 222893c30655f..af14a72a4391e 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-03-26 +date: 2024-03-28 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 9dbe42942b3c4..a183788d71c9f 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-03-26 +date: 2024-03-28 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 19e1748672bf8..dac4640332934 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-03-26 +date: 2024-03-28 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 426177774cb5f..ddae1d838786e 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.devdocs.json b/api_docs/expression_x_y.devdocs.json index ad075c5f0e7e0..a077d8d2b545e 100644 --- a/api_docs/expression_x_y.devdocs.json +++ b/api_docs/expression_x_y.devdocs.json @@ -1972,11 +1972,11 @@ "PointerUpdateTrigger", " | undefined; brushAxis?: ", "BrushAxis", - " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaLabel?: string | undefined; xDomain?: ", + " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaDescription?: string | undefined; ariaLabel?: string | undefined; xDomain?: ", "MakeOverridesSerializable", "<", "CustomXDomain", - " | undefined>; ariaDescription?: string | undefined; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", + " | undefined>; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", "LegendStrategy", " | undefined; onLegendItemClick?: \"ignore\" | undefined; customLegend?: \"ignore\" | undefined; onLegendItemMinusClick?: \"ignore\" | undefined; onLegendItemOut?: \"ignore\" | undefined; onLegendItemOver?: \"ignore\" | undefined; onLegendItemPlusClick?: \"ignore\" | undefined; debugState?: boolean | undefined; onProjectionClick?: \"ignore\" | undefined; onElementClick?: \"ignore\" | undefined; onElementOver?: \"ignore\" | undefined; onElementOut?: \"ignore\" | undefined; onBrushEnd?: \"ignore\" | undefined; onResize?: \"ignore\" | undefined; onWillRender?: \"ignore\" | undefined; onProjectionAreaChange?: \"ignore\" | undefined; onAnnotationClick?: \"ignore\" | undefined; resizeDebounce?: number | undefined; pointerUpdateDebounce?: number | undefined; roundHistogramBrushValues?: boolean | undefined; noResults?: React.ReactChild | React.ComponentType<{}> | undefined; legendSort?: \"ignore\" | undefined; }>> & Partial>) | undefined" ], diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index c10ef1d62948e..2a34a162ef740 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-03-26 +date: 2024-03-28 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 db886f366d3ec..aee63fc8a3cf8 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-03-26 +date: 2024-03-28 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 8503b3aad67ae..d4e134fc7462a 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-03-26 +date: 2024-03-28 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 d2bb626e69ebf..5ce978a4bcc2f 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-03-26 +date: 2024-03-28 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 139a114b0d5c4..64256324d308b 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-03-26 +date: 2024-03-28 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 9f2e63b7e87c4..8bd763f2ec25e 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-03-26 +date: 2024-03-28 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 7da46e62bcacf..7a00179379bf5 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-03-26 +date: 2024-03-28 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 ceef0a7ebe292..56b6b96c6043b 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-03-26 +date: 2024-03-28 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 143330d37910e..9bf58e58593e2 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-03-26 +date: 2024-03-28 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 9be08bf7b3726..0644b673679d7 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-03-26 +date: 2024-03-28 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 89b557bc4b56b..e4adf39dbb80e 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-03-26 +date: 2024-03-28 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 157835f71eda5..3124b0af8a467 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-03-26 +date: 2024-03-28 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 95c748e658b59..5512532ba6c46 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.devdocs.json b/api_docs/index_management.devdocs.json index c455123546077..25706cb7c54fa 100644 --- a/api_docs/index_management.devdocs.json +++ b/api_docs/index_management.devdocs.json @@ -349,68 +349,40 @@ }, { "parentPluginId": "indexManagement", - "id": "def-public.IndexManagementPluginSetup", + "id": "def-public.IndexMappingProps", "type": "Interface", "tags": [], - "label": "IndexManagementPluginSetup", + "label": "IndexMappingProps", "description": [], - "path": "x-pack/plugins/index_management/public/types.ts", + "path": "x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/index_mapping_with_context_types.tsx", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "indexManagement", - "id": "def-public.IndexManagementPluginSetup.apiService", + "id": "def-public.IndexMappingProps.index", "type": "Object", "tags": [], - "label": "apiService", + "label": "index", "description": [], "signature": [ - "PublicApiServiceSetup" + "Index | undefined" ], - "path": "x-pack/plugins/index_management/public/types.ts", + "path": "x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/index_mapping_with_context_types.tsx", "deprecated": false, "trackAdoption": false }, { "parentPluginId": "indexManagement", - "id": "def-public.IndexManagementPluginSetup.extensionsService", - "type": "Object", - "tags": [], - "label": "extensionsService", - "description": [], - "signature": [ - "ExtensionsSetup" - ], - "path": "x-pack/plugins/index_management/public/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "indexManagement", - "id": "def-public.IndexManagementPluginStart", - "type": "Interface", - "tags": [], - "label": "IndexManagementPluginStart", - "description": [], - "path": "x-pack/plugins/index_management/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "indexManagement", - "id": "def-public.IndexManagementPluginStart.extensionsService", - "type": "Object", + "id": "def-public.IndexMappingProps.showAboutMappings", + "type": "CompoundType", "tags": [], - "label": "extensionsService", + "label": "showAboutMappings", "description": [], "signature": [ - "ExtensionsSetup" + "boolean | undefined" ], - "path": "x-pack/plugins/index_management/public/types.ts", + "path": "x-pack/plugins/index_management/public/application/sections/home/index_list/details_page/index_mapping_with_context_types.tsx", "deprecated": false, "trackAdoption": false } @@ -420,7 +392,146 @@ ], "enums": [], "misc": [], - "objects": [] + "objects": [], + "setup": { + "parentPluginId": "indexManagement", + "id": "def-public.IndexManagementPluginSetup", + "type": "Interface", + "tags": [], + "label": "IndexManagementPluginSetup", + "description": [], + "path": "x-pack/plugins/index_management/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "indexManagement", + "id": "def-public.IndexManagementPluginSetup.apiService", + "type": "Object", + "tags": [], + "label": "apiService", + "description": [], + "signature": [ + "PublicApiServiceSetup" + ], + "path": "x-pack/plugins/index_management/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "indexManagement", + "id": "def-public.IndexManagementPluginSetup.extensionsService", + "type": "Object", + "tags": [], + "label": "extensionsService", + "description": [], + "signature": [ + "ExtensionsSetup" + ], + "path": "x-pack/plugins/index_management/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "indexManagement", + "id": "def-public.IndexManagementPluginStart", + "type": "Interface", + "tags": [], + "label": "IndexManagementPluginStart", + "description": [], + "path": "x-pack/plugins/index_management/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "indexManagement", + "id": "def-public.IndexManagementPluginStart.extensionsService", + "type": "Object", + "tags": [], + "label": "extensionsService", + "description": [], + "signature": [ + "ExtensionsSetup" + ], + "path": "x-pack/plugins/index_management/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "indexManagement", + "id": "def-public.IndexManagementPluginStart.getIndexMappingComponent", + "type": "Function", + "tags": [], + "label": "getIndexMappingComponent", + "description": [], + "signature": [ + "(deps: { history: ", + { + "pluginId": "@kbn/core-application-browser", + "scope": "common", + "docId": "kibKbnCoreApplicationBrowserPluginApi", + "section": "def-common.ScopedHistory", + "text": "ScopedHistory" + }, + "; }) => React.FC<", + { + "pluginId": "indexManagement", + "scope": "public", + "docId": "kibIndexManagementPluginApi", + "section": "def-public.IndexMappingProps", + "text": "IndexMappingProps" + }, + ">" + ], + "path": "x-pack/plugins/index_management/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "indexManagement", + "id": "def-public.IndexManagementPluginStart.getIndexMappingComponent.$1", + "type": "Object", + "tags": [], + "label": "deps", + "description": [], + "path": "x-pack/plugins/index_management/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "indexManagement", + "id": "def-public.IndexManagementPluginStart.getIndexMappingComponent.$1.history", + "type": "Object", + "tags": [], + "label": "history", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-application-browser", + "scope": "common", + "docId": "kibKbnCoreApplicationBrowserPluginApi", + "section": "def-common.ScopedHistory", + "text": "ScopedHistory" + }, + "" + ], + "path": "x-pack/plugins/index_management/public/types.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + } + ], + "lifecycle": "start", + "initialIsOpen": true + } }, "server": { "classes": [], diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index 3c21c130fca7f..232e891f3f0ab 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; @@ -21,10 +21,16 @@ Contact [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kiban | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 224 | 0 | 219 | 3 | +| 230 | 0 | 225 | 3 | ## Client +### Setup + + +### Start + + ### Functions diff --git a/api_docs/infra.devdocs.json b/api_docs/infra.devdocs.json index 1057a5e8af9ce..c4dd0ffb4ba2b 100644 --- a/api_docs/infra.devdocs.json +++ b/api_docs/infra.devdocs.json @@ -358,7 +358,7 @@ "label": "featureFlags", "description": [], "signature": [ - "{ customThresholdAlertsEnabled: boolean; logsUIEnabled: boolean; metricsExplorerEnabled: boolean; osqueryEnabled: boolean; inventoryThresholdAlertRuleEnabled: boolean; metricThresholdAlertRuleEnabled: boolean; logThresholdAlertRuleEnabled: boolean; alertsAndRulesDropdownEnabled: boolean; profilingEnabled: boolean; }" + "{ customThresholdAlertsEnabled: boolean; logsUIEnabled: boolean; metricsExplorerEnabled: boolean; osqueryEnabled: boolean; inventoryThresholdAlertRuleEnabled: boolean; metricThresholdAlertRuleEnabled: boolean; logThresholdAlertRuleEnabled: boolean; alertsAndRulesDropdownEnabled: boolean; profilingEnabled: boolean; ruleFormV2Enabled: boolean; }" ], "path": "x-pack/plugins/observability_solution/infra/common/plugin_config_types.ts", "deprecated": false, diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index f75bdbe516dbb..ea3a5c3af5ca7 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-03-26 +date: 2024-03-28 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 11dd04dc2b45e..a67b7066b7dcf 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-03-26 +date: 2024-03-28 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 7bef4ba2f7d11..a88f151b8aaf0 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-03-26 +date: 2024-03-28 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 f293239722160..eb3ada87441a8 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-03-26 +date: 2024-03-28 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 6dcdc1200765a..f86d3525afec6 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-03-26 +date: 2024-03-28 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 86a70fafec7fa..5d252c12b4db1 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.devdocs.json b/api_docs/kbn_aiops_components.devdocs.json index dffa211061c67..925991f6401a0 100644 --- a/api_docs/kbn_aiops_components.devdocs.json +++ b/api_docs/kbn_aiops_components.devdocs.json @@ -621,6 +621,29 @@ "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.DocumentCountChartProps.changePoint", + "type": "Object", + "tags": [], + "label": "changePoint", + "description": [ + "Optional change point metadata" + ], + "signature": [ + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.DocumentCountStatsChangePoint", + "text": "DocumentCountStatsChangePoint" + }, + " | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index cf5b0ce37017a..a6debf23f74c5 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 35 | 0 | 0 | 0 | +| 36 | 0 | 0 | 0 | ## Common diff --git a/api_docs/kbn_aiops_utils.devdocs.json b/api_docs/kbn_aiops_utils.devdocs.json index b733fd1318ca7..ba456fab7b43f 100644 --- a/api_docs/kbn_aiops_utils.devdocs.json +++ b/api_docs/kbn_aiops_utils.devdocs.json @@ -19,6 +19,62 @@ "common": { "classes": [], "functions": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getExtendedChangePoint", + "type": "Function", + "tags": [], + "label": "getExtendedChangePoint", + "description": [ + "\nCalculates and returns an extended change point range based on the specified change point timestamp.\n" + ], + "signature": [ + "(buckets: Record, changePointTs: number) => { startTs: number; endTs: number; }" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_extended_change_point.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getExtendedChangePoint.$1", + "type": "Object", + "tags": [], + "label": "buckets", + "description": [ + "- An object where keys are bucket timestamps as strings\n and values are numeric values associated with each bucket." + ], + "signature": [ + "Record" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_extended_change_point.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getExtendedChangePoint.$2", + "type": "number", + "tags": [], + "label": "changePointTs", + "description": [ + "- The timestamp of the change point as a number. This timestamp must\n be one of the keys in the `buckets` object." + ], + "signature": [ + "number" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_extended_change_point.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "An object containing two properties: `startTs` and `endTs`." + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/aiops-utils", "id": "def-common.getLogRateAnalysisType", @@ -54,7 +110,7 @@ "text": "LogRateAnalysisType" } ], - "path": "x-pack/packages/ml/aiops_utils/get_log_rate_analysis_type.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_log_rate_analysis_type.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -77,7 +133,7 @@ }, "[]" ], - "path": "x-pack/packages/ml/aiops_utils/get_log_rate_analysis_type.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_log_rate_analysis_type.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -100,7 +156,7 @@ "text": "WindowParameters" } ], - "path": "x-pack/packages/ml/aiops_utils/get_log_rate_analysis_type.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_log_rate_analysis_type.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -111,6 +167,79 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getSnappedTimestamps", + "type": "Function", + "tags": [], + "label": "getSnappedTimestamps", + "description": [ + "\nGenerates an array of timestamps evenly spaced within a given time range.\n" + ], + "signature": [ + "(timeRangeEarliest: number, timeRangeLatest: number, interval: number) => number[]" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_snapped_timestamps.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getSnappedTimestamps.$1", + "type": "number", + "tags": [], + "label": "timeRangeEarliest", + "description": [ + "The earliest timestamp in the time range." + ], + "signature": [ + "number" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_snapped_timestamps.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getSnappedTimestamps.$2", + "type": "number", + "tags": [], + "label": "timeRangeLatest", + "description": [ + "The latest timestamp in the time range." + ], + "signature": [ + "number" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_snapped_timestamps.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getSnappedTimestamps.$3", + "type": "number", + "tags": [], + "label": "interval", + "description": [ + "The interval between timestamps in milliseconds." + ], + "signature": [ + "number" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_snapped_timestamps.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "Array of timestamps spaced by the specified interval within the given range." + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/aiops-utils", "id": "def-common.getSnappedWindowParameters", @@ -138,7 +267,7 @@ "text": "WindowParameters" } ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_snapped_window_parameters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -160,7 +289,7 @@ "text": "WindowParameters" } ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_snapped_window_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -177,7 +306,7 @@ "signature": [ "number[]" ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_snapped_window_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -198,7 +327,7 @@ "\nGiven a point in time (e.g. where a user clicks), use simple heuristics to compute:\n\n1. The time window around the click to evaluate for changes\n2. The historical time window prior to the click to use as a baseline.\n\nThe philosophy here is that charts are displayed with different granularities according to their\noverall time window. We select the log deviation and historical time windows inline with the\noverall time window.\n\nThe algorithm for doing this is based on the typical granularities that exist in machine data.\n" ], "signature": [ - "(clickTime: number, minTime: number, maxTime: number) => ", + "(clickTime: number, minTime: number, maxTime: number, clickTimeUpper?: number | undefined, windowGapOverride?: number | undefined) => ", { "pluginId": "@kbn/aiops-utils", "scope": "common", @@ -207,7 +336,7 @@ "text": "WindowParameters" } ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -223,7 +352,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -240,7 +369,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -257,19 +386,265 @@ "signature": [ "number" ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getWindowParameters.$4", + "type": "number", + "tags": [], + "label": "clickTimeUpper", + "description": [ + "optional timestamp to treat clicktime and clickTimeUpper\nas a time range instead of point in time" + ], + "signature": [ + "number | undefined" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getWindowParameters.$5", + "type": "number", + "tags": [], + "label": "windowGapOverride", + "description": [ + "optional override for the baseline/deviation gap" + ], + "signature": [ + "number | undefined" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false } ], "returnComment": [ "WindowParameters" ], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getWindowParametersForTrigger", + "type": "Function", + "tags": [], + "label": "getWindowParametersForTrigger", + "description": [ + "\nCalculates window parameters, adjusting the window based on a\nchange point and interval. If a change point is specified and falls within\nthe startRange, the window is adjusted around the change point. Otherwise,\nthe window is determined by the startRange and interval.\n" + ], + "signature": [ + "(startRange: number | ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.WindowParameters", + "text": "WindowParameters" + }, + ", interval: number, timeRangeEarliest: number, timeRangeLatest: number, changePoint: ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.DocumentCountStatsChangePoint", + "text": "DocumentCountStatsChangePoint" + }, + " | undefined) => ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.WindowParameters", + "text": "WindowParameters" + } + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters_for_trigger.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getWindowParametersForTrigger.$1", + "type": "CompoundType", + "tags": [], + "label": "startRange", + "description": [ + "The start timestamp or window parameters. If a number,\nit's the start timestamp; if an object, it's assumed to be\nwindow parameters and is returned directly." + ], + "signature": [ + "number | ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.WindowParameters", + "text": "WindowParameters" + } + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters_for_trigger.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getWindowParametersForTrigger.$2", + "type": "number", + "tags": [], + "label": "interval", + "description": [ + "Interval in milliseconds for extending the window or\nadjusting the start range." + ], + "signature": [ + "number" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters_for_trigger.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getWindowParametersForTrigger.$3", + "type": "number", + "tags": [], + "label": "timeRangeEarliest", + "description": [ + "Earliest timestamp in milliseconds in the time range." + ], + "signature": [ + "number" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters_for_trigger.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getWindowParametersForTrigger.$4", + "type": "number", + "tags": [], + "label": "timeRangeLatest", + "description": [ + "Latest timestamp in milliseconds in the time range." + ], + "signature": [ + "number" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters_for_trigger.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getWindowParametersForTrigger.$5", + "type": "Object", + "tags": [], + "label": "changePoint", + "description": [ + "Optional change point with `startTs` and `endTs`\nproperties. Adjusts window parameters if within `startRange`." + ], + "signature": [ + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.DocumentCountStatsChangePoint", + "text": "DocumentCountStatsChangePoint" + }, + " | undefined" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/get_window_parameters_for_trigger.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [ + "Window parameters" + ], + "initialIsOpen": false } ], "interfaces": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.DocumentCountStatsChangePoint", + "type": "Interface", + "tags": [], + "label": "DocumentCountStatsChangePoint", + "description": [ + "\nRepresents a change point in document count statistics,\nidentifying a significant change over time." + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.DocumentCountStatsChangePoint.key", + "type": "number", + "tags": [], + "label": "key", + "description": [ + "Key is the timestamp of the change point." + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.DocumentCountStatsChangePoint.startTs", + "type": "number", + "tags": [], + "label": "startTs", + "description": [ + "The start timestamp of the change point period." + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.DocumentCountStatsChangePoint.endTs", + "type": "number", + "tags": [], + "label": "endTs", + "description": [ + "The end timestamp of the change point period." + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.DocumentCountStatsChangePoint.type", + "type": "string", + "tags": [], + "label": "type", + "description": [ + "The type of change point." + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/aiops-utils", "id": "def-common.LogRateHistogramItem", @@ -279,7 +654,7 @@ "description": [ "\nLog rate histogram item" ], - "path": "x-pack/packages/ml/aiops_utils/log_rate_histogram_item.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/log_rate_histogram_item.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -295,7 +670,7 @@ "signature": [ "string | number" ], - "path": "x-pack/packages/ml/aiops_utils/log_rate_histogram_item.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/log_rate_histogram_item.ts", "deprecated": false, "trackAdoption": false }, @@ -308,7 +683,7 @@ "description": [ "\nNumber of doc count for that time bucket" ], - "path": "x-pack/packages/ml/aiops_utils/log_rate_histogram_item.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/log_rate_histogram_item.ts", "deprecated": false, "trackAdoption": false } @@ -328,7 +703,7 @@ "description": [ "\nTime range definition for baseline and deviation to be used by log rate analysis.\n" ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/window_parameters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -341,7 +716,7 @@ "description": [ "Baseline minimum value" ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/window_parameters.ts", "deprecated": false, "trackAdoption": false }, @@ -354,7 +729,7 @@ "description": [ "Baseline maximum value" ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/window_parameters.ts", "deprecated": false, "trackAdoption": false }, @@ -367,7 +742,7 @@ "description": [ "Deviation minimum value" ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/window_parameters.ts", "deprecated": false, "trackAdoption": false }, @@ -380,7 +755,7 @@ "description": [ "Deviation maximum value" ], - "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/window_parameters.ts", "deprecated": false, "trackAdoption": false } @@ -390,6 +765,23 @@ ], "enums": [], "misc": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.LOG_RATE_ANALYSIS_HIGHLIGHT_COLOR", + "type": "string", + "tags": [], + "label": "LOG_RATE_ANALYSIS_HIGHLIGHT_COLOR", + "description": [ + "Highlighting color for charts" + ], + "signature": [ + "\"orange\"" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/aiops-utils", "id": "def-common.LogRateAnalysisType", @@ -402,7 +794,7 @@ "signature": [ "\"spike\" | \"dip\"" ], - "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis_type.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/log_rate_analysis_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false @@ -421,7 +813,7 @@ "signature": [ "{ readonly SPIKE: \"spike\"; readonly DIP: \"dip\"; }" ], - "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis_type.ts", + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis/log_rate_analysis_type.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 5850c391496ee..6f336edfe102a 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 20 | 0 | 0 | 0 | +| 41 | 0 | 0 | 0 | ## Common diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index d1c1a0d528183..b291db86aea55 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-03-26 +date: 2024-03-28 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 c5a1bdb9dda20..7610e67ea8888 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-03-26 +date: 2024-03-28 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 9d06bba72bb96..9d19c1de4b586 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-03-26 +date: 2024-03-28 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 9ce411ff4d887..5ae6ed98ac0ed 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-03-26 +date: 2024-03-28 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 a11f4cb0c16a6..db54c42fdc42a 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-03-26 +date: 2024-03-28 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 aa4aeb5fd2247..9eca52a7f073f 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-03-26 +date: 2024-03-28 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 dd306cf03b694..b0fb719d6ba0c 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-03-26 +date: 2024-03-28 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 bcaa7d3113216..e9937969b7ba5 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-03-26 +date: 2024-03-28 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 ee2eecd71770a..44fce7ab14508 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-03-26 +date: 2024-03-28 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 f09167db3ccce..be9bd8aa9eb9f 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-03-26 +date: 2024-03-28 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 bff24c907bf7f..a555d6c1b2890 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-03-26 +date: 2024-03-28 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 27b2e7070504b..a196c141f7308 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-03-26 +date: 2024-03-28 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 96d16ac7b6060..4e6b96e3490bc 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-03-26 +date: 2024-03-28 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 481c7269c4e25..7785993178041 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-03-26 +date: 2024-03-28 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 515137171e58c..c473ef09a829f 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-03-26 +date: 2024-03-28 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 3d95c93ddfe20..633017bf4f004 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-03-26 +date: 2024-03-28 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 45e6316a51bed..30521775556a9 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-03-26 +date: 2024-03-28 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 8314e53f416fb..3b05c3008778f 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-03-26 +date: 2024-03-28 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 dedc33879b3be..0efcc8f6b2c5c 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-03-26 +date: 2024-03-28 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 5a2996e3168a2..43ebdb23ec64a 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-03-26 +date: 2024-03-28 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 fcac785dc8991..69dc1e5531396 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-03-26 +date: 2024-03-28 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 7c1260c5bbc99..5143df2344b29 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-03-26 +date: 2024-03-28 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 a9168e9144bdc..6f31ae02051ee 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-03-26 +date: 2024-03-28 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.devdocs.json b/api_docs/kbn_chart_icons.devdocs.json index e6af0161a3596..193e1ad9b262d 100644 --- a/api_docs/kbn_chart_icons.devdocs.json +++ b/api_docs/kbn_chart_icons.devdocs.json @@ -839,6 +839,117 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/chart-icons", + "id": "def-common.IconChartGaugeArc", + "type": "Function", + "tags": [], + "label": "IconChartGaugeArc", + "description": [], + "signature": [ + "({ title, titleId, ...props }: Omit<", + "EuiIconProps", + ", \"type\">) => JSX.Element" + ], + "path": "packages/kbn-chart-icons/src/assets/chart_gauge_arc.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/chart-icons", + "id": "def-common.IconChartGaugeArc.$1", + "type": "Object", + "tags": [], + "label": "{ title, titleId, ...props }", + "description": [], + "signature": [ + "Omit<", + "EuiIconProps", + ", \"type\">" + ], + "path": "packages/kbn-chart-icons/src/assets/chart_gauge_arc.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/chart-icons", + "id": "def-common.IconChartGaugeCircle", + "type": "Function", + "tags": [], + "label": "IconChartGaugeCircle", + "description": [], + "signature": [ + "({ title, titleId, ...props }: Omit<", + "EuiIconProps", + ", \"type\">) => JSX.Element" + ], + "path": "packages/kbn-chart-icons/src/assets/chart_gauge_circle.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/chart-icons", + "id": "def-common.IconChartGaugeCircle.$1", + "type": "Object", + "tags": [], + "label": "{ title, titleId, ...props }", + "description": [], + "signature": [ + "Omit<", + "EuiIconProps", + ", \"type\">" + ], + "path": "packages/kbn-chart-icons/src/assets/chart_gauge_circle.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/chart-icons", + "id": "def-common.IconChartGaugeSemiCircle", + "type": "Function", + "tags": [], + "label": "IconChartGaugeSemiCircle", + "description": [], + "signature": [ + "({ title, titleId, ...props }: Omit<", + "EuiIconProps", + ", \"type\">) => JSX.Element" + ], + "path": "packages/kbn-chart-icons/src/assets/chart_gauge_semi_circle.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/chart-icons", + "id": "def-common.IconChartGaugeSemiCircle.$1", + "type": "Object", + "tags": [], + "label": "{\n title,\n titleId,\n ...props\n}", + "description": [], + "signature": [ + "Omit<", + "EuiIconProps", + ", \"type\">" + ], + "path": "packages/kbn-chart-icons/src/assets/chart_gauge_semi_circle.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/chart-icons", "id": "def-common.IconChartHeatmap", diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index b5d04c52a168b..172626f62300b 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.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 | |-------------------|-----------|------------------------|-----------------| -| 78 | 0 | 78 | 0 | +| 84 | 0 | 84 | 0 | ## Common diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index f13e59431bdc4..36f7815beebde 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-03-26 +date: 2024-03-28 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 43f4bf96dda45..228edb3609474 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-03-26 +date: 2024-03-28 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 062106ed2940a..f84411198f6e2 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-03-26 +date: 2024-03-28 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 b8ef2d5070e34..80ad35cfcfa2c 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-03-26 +date: 2024-03-28 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 b082df6d4b848..f2e5f1113abed 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-03-26 +date: 2024-03-28 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 98d018fc32fa5..cf3dac2868c5e 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-03-26 +date: 2024-03-28 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 1cfdae5e3c21a..004cf7931e706 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-03-26 +date: 2024-03-28 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 12acb4c239844..6a2588f258b9b 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-03-26 +date: 2024-03-28 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 3ff6b8b7eb613..71c704eeab140 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-03-26 +date: 2024-03-28 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 74d4f52234649..beb1746b7bdd4 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-03-26 +date: 2024-03-28 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 39237255bacf9..fe365d2ef5f67 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-03-26 +date: 2024-03-28 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 7757a2ce011fb..8220db6ce2c91 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-03-26 +date: 2024-03-28 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 26f3d37b3016e..77c8450443670 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-03-26 +date: 2024-03-28 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 7cc280d2c9c6f..ddede6fb7a0a4 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-03-26 +date: 2024-03-28 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 f99b2dad5ff2d..d3fb6bb406a20 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-03-26 +date: 2024-03-28 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 238e4adcca111..b6c7b9b806590 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-03-26 +date: 2024-03-28 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 c97621e85aab5..517f1bed33d99 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-03-26 +date: 2024-03-28 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 bad1a4b07ed8b..c60f424c5fad9 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-03-26 +date: 2024-03-28 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 10fc0d8f807c6..3c515e49817af 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-03-26 +date: 2024-03-28 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 34e2381ccba04..830ed139ea061 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-03-26 +date: 2024-03-28 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 a41b287e02bad..70c05e31ba519 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-03-26 +date: 2024-03-28 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 f3ba451c0dda0..345c1c6376753 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-03-26 +date: 2024-03-28 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 0c706e3e6c6fa..6aca9ac81428a 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-03-26 +date: 2024-03-28 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 736bef7db288a..309bf9777dc7d 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-03-26 +date: 2024-03-28 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 0203eac3b23d9..5953af68f1d5b 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-03-26 +date: 2024-03-28 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 8e21304951e21..187909db4c215 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-03-26 +date: 2024-03-28 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 d422589416b84..963c4a19337d6 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-03-26 +date: 2024-03-28 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 9d701cb992d6a..57a56c4eef51e 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-03-26 +date: 2024-03-28 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 7fb83c417a0dd..33570f50e8267 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-03-26 +date: 2024-03-28 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 8865ffa70a48f..3136945cd6c7c 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-03-26 +date: 2024-03-28 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 4bb11178ae1b5..c5ea610e9a665 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-03-26 +date: 2024-03-28 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 a0eb1f72e0e13..6a61354b00f06 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-03-26 +date: 2024-03-28 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 fd908bc64658e..1ab5870ee2862 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-03-26 +date: 2024-03-28 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 d0a81348ced9f..364279354aa3d 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-03-26 +date: 2024-03-28 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 5c35cf52c2056..fe732126b8cdb 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-03-26 +date: 2024-03-28 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 c80dfaee79dfc..433e84c76b28d 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-03-26 +date: 2024-03-28 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 bb21570613d6d..499d5edb71bc6 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-03-26 +date: 2024-03-28 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 62f608ba47ede..a35a5b6874d74 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-03-26 +date: 2024-03-28 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 ae35d8b7cf32d..f7a33b1b240f8 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-03-26 +date: 2024-03-28 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 d8ef868dc85d7..d369057d7c926 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-03-26 +date: 2024-03-28 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 e67caafdb092d..5ac943a1bf85f 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-03-26 +date: 2024-03-28 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 ffcb0adb43e5d..8799540914f1c 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-03-26 +date: 2024-03-28 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 00a9375e15e24..809b752083e37 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-03-26 +date: 2024-03-28 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 21f724ef831f5..a1d5d23426c51 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-03-26 +date: 2024-03-28 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 c3fb247b54e1f..fd0c06695464d 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-03-26 +date: 2024-03-28 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 fec08c4298097..d40bad5226e54 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-03-26 +date: 2024-03-28 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 2a2d6b91b344d..4262f2fbc6c1d 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-03-26 +date: 2024-03-28 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 eebfc0de6dd47..60377013444b8 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-03-26 +date: 2024-03-28 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 49db6234b2804..ff040c5beaa15 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-03-26 +date: 2024-03-28 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 a2560123e2082..72fa71451fe5b 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-03-26 +date: 2024-03-28 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 65a08f821bca4..f47f63555f5ba 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-03-26 +date: 2024-03-28 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 11fa31fa91c25..c0f4372828bbb 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-03-26 +date: 2024-03-28 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 160f022c408b7..5db4dc7d8c820 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-03-26 +date: 2024-03-28 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 fcfdf812eb7f9..2f4a7d70cd856 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-03-26 +date: 2024-03-28 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 7349161857f14..7768be9e21fec 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-03-26 +date: 2024-03-28 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 2b0966d1626c3..c3f4b802b60a0 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-03-26 +date: 2024-03-28 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 e7b0f04f4bd71..557d436779ef8 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-03-26 +date: 2024-03-28 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 c881394119f90..90dec5c1fa710 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-03-26 +date: 2024-03-28 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 275eb9703df2a..c8ae5f31b0f9a 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-03-26 +date: 2024-03-28 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 1f0eaed0a8707..ec3ef0c8233ac 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-03-26 +date: 2024-03-28 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 2627aa5d97f61..fbcecc5497c03 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-03-26 +date: 2024-03-28 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 20d951ace007f..4588fd8eda1de 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-03-26 +date: 2024-03-28 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 fd76953903f2f..b283e18fb07cc 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-03-26 +date: 2024-03-28 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 b669850337e6f..c065767b6fd8a 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-03-26 +date: 2024-03-28 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 8345d612466e6..c9aa0b13bb97a 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-03-26 +date: 2024-03-28 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 ee3791bb61c24..f1d481b73480f 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-03-26 +date: 2024-03-28 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 8572fc88b338f..8fbfdf2980761 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-03-26 +date: 2024-03-28 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 573e88645a600..2dabf2170e186 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-03-26 +date: 2024-03-28 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 f6d026b5176aa..b9cff2e1199cd 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-03-26 +date: 2024-03-28 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 fc73b661e9d7b..c8fbe186917f5 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-03-26 +date: 2024-03-28 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 4a81e0362997b..32b5bcc52294e 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-03-26 +date: 2024-03-28 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 82a1052be4804..4624509972f2a 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-03-26 +date: 2024-03-28 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 108272edb153e..a6af9fa531cf3 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-03-26 +date: 2024-03-28 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 4a44daf69309e..b27ba8a9056e8 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-03-26 +date: 2024-03-28 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 91d245cf991cb..9ff2d9b9a6dd5 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-03-26 +date: 2024-03-28 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 2f317c1023b84..1dcd6dc30db03 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-03-26 +date: 2024-03-28 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 4e550059368d0..6e03ebc73f081 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-03-26 +date: 2024-03-28 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 8a214057a0c69..846e67ae59655 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-03-26 +date: 2024-03-28 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 a74ad94de409e..f5b25f6fd52da 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-03-26 +date: 2024-03-28 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 724b77736bd8c..2029a5aec5cae 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-03-26 +date: 2024-03-28 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 519f01408403d..577858158c5c4 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-03-26 +date: 2024-03-28 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 d5f4853d32f89..a3d60abb51e56 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-03-26 +date: 2024-03-28 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 969c2de180d5f..6645e956fd020 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-03-26 +date: 2024-03-28 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 144a21dc0f9f4..8715980564d43 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-03-26 +date: 2024-03-28 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 f15ef622219c5..22f5bf62e008c 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-03-26 +date: 2024-03-28 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 4371da191deea..a5bcee532c8b8 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json index 89bb69db2598a..649d896ae346c 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -3776,10 +3776,6 @@ "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/routes/api/templates/register_get_routes.ts" }, - { - "plugin": "indexManagement", - "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_mapping_route.ts" - }, { "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/routes/api/settings/register_load_route.ts" @@ -3816,6 +3812,10 @@ "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_privileges_route.ts" }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_mapping_route.ts" + }, { "plugin": "remoteClusters", "path": "x-pack/plugins/remote_clusters/server/routes/api/get_route.ts" @@ -4400,10 +4400,6 @@ "plugin": "serverlessSearch", "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" }, - { - "plugin": "serverlessSearch", - "path": "x-pack/plugins/serverless_search/server/routes/connectors_routes.ts" - }, { "plugin": "serverlessSearch", "path": "x-pack/plugins/serverless_search/server/routes/mapping_routes.ts" @@ -8096,6 +8092,10 @@ "plugin": "indexManagement", "path": "x-pack/plugins/index_management/server/routes/api/enrich_policies/register_execute_route.ts" }, + { + "plugin": "indexManagement", + "path": "x-pack/plugins/index_management/server/routes/api/mapping/register_update_mapping_route.ts" + }, { "plugin": "remoteClusters", "path": "x-pack/plugins/remote_clusters/server/routes/api/update_route.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 7aa6946a5a57c..de30781dc0459 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-03-26 +date: 2024-03-28 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 a845ab3eaf2ae..e2aeef863ad1e 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-03-26 +date: 2024-03-28 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 b9af8c3809e48..fb05395c518df 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-03-26 +date: 2024-03-28 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 3e5d9eb00ff8b..bb49ff4733a34 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-03-26 +date: 2024-03-28 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 885054879a016..aeb30cc926f29 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-03-26 +date: 2024-03-28 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 b04c3ce36a43c..2177a0827f72f 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-03-26 +date: 2024-03-28 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 52262282b0aa2..571db6417721d 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-03-26 +date: 2024-03-28 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 fc04bbb54d108..076dc455ce861 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-03-26 +date: 2024-03-28 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 9cf4096fc7b06..435d3b6048ef3 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-03-26 +date: 2024-03-28 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 928753a54e795..b93a52cbae6b6 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-03-26 +date: 2024-03-28 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 b429e2c2bba67..9587c424b6fcf 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-03-26 +date: 2024-03-28 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 b3ac554c56d5d..9fbc8d93b6878 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-03-26 +date: 2024-03-28 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 bea97a9d18d08..d860a38d8c6b2 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-03-26 +date: 2024-03-28 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 de3b01e818bfe..00c14db1060fc 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-03-26 +date: 2024-03-28 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 80af4726e4f1b..91114eb0abef3 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-03-26 +date: 2024-03-28 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 cc4ce51fa5a4d..ccac9bb4525d6 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-03-26 +date: 2024-03-28 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 a0da4988af8a9..2e19c41514cae 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-03-26 +date: 2024-03-28 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 fa4b1c197b27a..17a4bd6ac6d04 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-03-26 +date: 2024-03-28 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 599e36e2783cb..875b37a06a6c6 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-03-26 +date: 2024-03-28 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 82270c2a1dea2..17ed13eb4e7ed 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-03-26 +date: 2024-03-28 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 1a7ec5abf79c0..084d08e8ae4bc 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-03-26 +date: 2024-03-28 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 14e441d93c3a3..f3f911c20fa1b 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-03-26 +date: 2024-03-28 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 50282b57fc991..336c9ef6e8d88 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-03-26 +date: 2024-03-28 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 e11170eaa2d39..89d22cd6cb374 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-03-26 +date: 2024-03-28 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 8125b9f83c353..3cad5e7f3d766 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-03-26 +date: 2024-03-28 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 873ac67dc6afa..1ccf61542a722 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-03-26 +date: 2024-03-28 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 1689872abbf88..3c1ddf92a3631 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-03-26 +date: 2024-03-28 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 e0fc5278585e0..09104418138c3 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-03-26 +date: 2024-03-28 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 83bf159adde58..1d19c8e4dbc4b 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-03-26 +date: 2024-03-28 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 fe6022714affd..f760d185c42e9 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-03-26 +date: 2024-03-28 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 da90989d0f810..c31a0ba38791b 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-03-26 +date: 2024-03-28 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 84162691c21b8..d0969d22aa8b4 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-03-26 +date: 2024-03-28 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 a042e95b4dfff..45ca370943b74 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-03-26 +date: 2024-03-28 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 1116adec01c9c..0cb2a5acb9709 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-03-26 +date: 2024-03-28 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 8c7683e0e3015..043cd5cfffb7b 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-03-26 +date: 2024-03-28 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 2940e62860825..5f4919eb0e5e4 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-03-26 +date: 2024-03-28 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 0ce36c060ddd3..23243b15d6711 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-03-26 +date: 2024-03-28 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 9aa6c327067e9..95a9f78905ba1 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-03-26 +date: 2024-03-28 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 7ca5108384d94..27932a88aa26a 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-03-26 +date: 2024-03-28 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 9acf837aa9f3e..4de8f7db7b9b8 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-03-26 +date: 2024-03-28 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 8645c5265ca4d..53facaa228432 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-03-26 +date: 2024-03-28 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 69e4349c32976..a49269787b7e4 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-03-26 +date: 2024-03-28 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 ed07db70518ae..01206d529253f 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-03-26 +date: 2024-03-28 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 88024e0715bc8..2607ae1f3105e 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-03-26 +date: 2024-03-28 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 44f9d5ea98fad..e770410b9065c 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-03-26 +date: 2024-03-28 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 08db474444867..1b242a350a656 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-03-26 +date: 2024-03-28 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 b9de85f5878ce..a9d743e81c520 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-03-26 +date: 2024-03-28 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 ee9edfdb8a025..95d4223230526 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-03-26 +date: 2024-03-28 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 91aaf8cc45fbe..d37f1f2227941 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-03-26 +date: 2024-03-28 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 29955b9cab591..10cd39404b965 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-03-26 +date: 2024-03-28 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 107dfddc04ba4..ff34ddd0bbad0 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-03-26 +date: 2024-03-28 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 79600e624be8a..507f080881116 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-03-26 +date: 2024-03-28 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 58538d5d40aaa..59ddd9a61aa24 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-03-26 +date: 2024-03-28 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 ef3c344130478..23bc1d7cd095b 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-03-26 +date: 2024-03-28 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 532af596fa52f..5527261f0c02b 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-03-26 +date: 2024-03-28 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 52541781a0642..5efe47ef36899 100644 --- a/api_docs/kbn_core_saved_objects_common.devdocs.json +++ b/api_docs/kbn_core_saved_objects_common.devdocs.json @@ -2350,54 +2350,6 @@ "plugin": "visualizations", "path": "src/plugins/visualizations/public/utils/saved_visualization_references/timeseries_references.ts" }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/options_list/options_list_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/options_list/options_list_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/options_list/options_list_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/range_slider/range_slider_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/range_slider/range_slider_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/range_slider/range_slider_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/time_slider/time_slider_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/time_slider/time_slider_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/time_slider/time_slider_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/control_group/control_group_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/control_group/control_group_persistable_state.ts" - }, - { - "plugin": "controls", - "path": "src/plugins/controls/common/control_group/control_group_persistable_state.ts" - }, { "plugin": "savedObjectsTagging", "path": "x-pack/plugins/saved_objects_tagging/common/references.ts" @@ -2498,6 +2450,54 @@ "plugin": "lens", "path": "x-pack/plugins/lens/common/embeddable_factory/index.ts" }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/options_list/options_list_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/options_list/options_list_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/options_list/options_list_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/range_slider/range_slider_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/range_slider/range_slider_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/range_slider/range_slider_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/time_slider/time_slider_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/time_slider/time_slider_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/time_slider/time_slider_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/control_group/control_group_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/control_group/control_group_persistable_state.ts" + }, + { + "plugin": "controls", + "path": "src/plugins/controls/common/control_group/control_group_persistable_state.ts" + }, { "plugin": "canvas", "path": "x-pack/plugins/canvas/canvas_plugin_src/functions/external/saved_lens.ts" diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index 36e2f8e62f958..de11b3985a583 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-03-26 +date: 2024-03-28 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 a3b6af3a07fd1..7161fbac48722 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-03-26 +date: 2024-03-28 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 46c16861c1f7e..0e7405b6872ad 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-03-26 +date: 2024-03-28 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 33dc7fbd62341..7d4458fd93817 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-03-26 +date: 2024-03-28 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 69e6f7a24ee3d..55bc163b552ad 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-migration-server-mocks'] --- import kbnCoreSavedObjectsMigrationServerMocksObj from './kbn_core_saved_objects_migration_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_server.mdx b/api_docs/kbn_core_saved_objects_server.mdx index 8ad0b6cc56bd2..47a7fe0f19031 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-03-26 +date: 2024-03-28 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 9cc2a26233e8d..f91de7dd36f80 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-03-26 +date: 2024-03-28 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 76e04b2fb9353..d113585c00d26 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-03-26 +date: 2024-03-28 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 7181d42ed0c6a..faa701fa14441 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser.mdx b/api_docs/kbn_core_security_browser.mdx index 923b302d766de..8531a750de733 100644 --- a/api_docs/kbn_core_security_browser.mdx +++ b/api_docs/kbn_core_security_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser title: "@kbn/core-security-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser'] --- import kbnCoreSecurityBrowserObj from './kbn_core_security_browser.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_internal.mdx b/api_docs/kbn_core_security_browser_internal.mdx index e3ec2721e33ce..aefa438438b5a 100644 --- a/api_docs/kbn_core_security_browser_internal.mdx +++ b/api_docs/kbn_core_security_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-internal title: "@kbn/core-security-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-internal plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-internal'] --- import kbnCoreSecurityBrowserInternalObj from './kbn_core_security_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_browser_mocks.mdx b/api_docs/kbn_core_security_browser_mocks.mdx index f699e16b1b663..f72471992364f 100644 --- a/api_docs/kbn_core_security_browser_mocks.mdx +++ b/api_docs/kbn_core_security_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-browser-mocks title: "@kbn/core-security-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-browser-mocks plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-browser-mocks'] --- import kbnCoreSecurityBrowserMocksObj from './kbn_core_security_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_security_common.mdx b/api_docs/kbn_core_security_common.mdx index 63249bf8349fa..5fca8f4b7630d 100644 --- a/api_docs/kbn_core_security_common.mdx +++ b/api_docs/kbn_core_security_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-common title: "@kbn/core-security-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-common plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-common'] --- import kbnCoreSecurityCommonObj from './kbn_core_security_common.devdocs.json'; diff --git a/api_docs/kbn_core_security_server.mdx b/api_docs/kbn_core_security_server.mdx index 990aca0277475..5d387e62dbf37 100644 --- a/api_docs/kbn_core_security_server.mdx +++ b/api_docs/kbn_core_security_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server title: "@kbn/core-security-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server'] --- import kbnCoreSecurityServerObj from './kbn_core_security_server.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_internal.mdx b/api_docs/kbn_core_security_server_internal.mdx index b64df2f80ff67..695a4655c45ae 100644 --- a/api_docs/kbn_core_security_server_internal.mdx +++ b/api_docs/kbn_core_security_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-internal title: "@kbn/core-security-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-internal plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-internal'] --- import kbnCoreSecurityServerInternalObj from './kbn_core_security_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_security_server_mocks.mdx b/api_docs/kbn_core_security_server_mocks.mdx index 69551f39bf6fb..38e08d2b69365 100644 --- a/api_docs/kbn_core_security_server_mocks.mdx +++ b/api_docs/kbn_core_security_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-security-server-mocks title: "@kbn/core-security-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-security-server-mocks plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-security-server-mocks'] --- import kbnCoreSecurityServerMocksObj from './kbn_core_security_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index 0707d86a6b8ec..5ede7130bbe83 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-03-26 +date: 2024-03-28 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 9a2ea310d3d7f..d83c2a23c4da2 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-03-26 +date: 2024-03-28 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 2aac29b0755da..f55c8b056eae0 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-03-26 +date: 2024-03-28 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 85de716c2aa2d..ecf32b44315a4 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-03-26 +date: 2024-03-28 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 cb3123345b4ad..b78c0c0e3f436 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-03-26 +date: 2024-03-28 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 1830a81bbb81c..62c8e23122136 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-03-26 +date: 2024-03-28 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 0ad2a247c0c29..d958205ef1775 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-03-26 +date: 2024-03-28 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 afbdd914128d8..e4b1bd2508b2e 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-03-26 +date: 2024-03-28 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 8f15de4e34c97..43b5524769070 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-03-26 +date: 2024-03-28 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 fa6e96bcb63a1..21ee4c049cf9e 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-03-26 +date: 2024-03-28 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 9f29eeef3569e..5c6d6d5e23386 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-03-26 +date: 2024-03-28 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 f521a4f861f65..d23fd1de7e262 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-03-26 +date: 2024-03-28 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 823a07a79b847..d067511b48fa1 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-03-26 +date: 2024-03-28 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 6e4f378296319..b0cfe0521b874 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-03-26 +date: 2024-03-28 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 adce8f24cdc29..25054b4441e76 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-03-26 +date: 2024-03-28 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 c63e800d7e7fe..fe691fee1c63f 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-03-26 +date: 2024-03-28 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 3a0b1acf25ba8..1974b2dc720c5 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-03-26 +date: 2024-03-28 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 701229ddc679b..cbf8d8141c19b 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-03-26 +date: 2024-03-28 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 fbf89fb41abbf..c14c297f4e95c 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-03-26 +date: 2024-03-28 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 c89a2d5929800..978959d40ef30 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-03-26 +date: 2024-03-28 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 2c3a3dacba8bb..95723186c06d3 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-03-26 +date: 2024-03-28 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 3f742a5ebe041..461f33121dc78 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-03-26 +date: 2024-03-28 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 4359bf9350d39..ad0df49294527 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-03-26 +date: 2024-03-28 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 641f0025ebd08..e25b3dc7190e1 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-03-26 +date: 2024-03-28 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 0b25ba714e698..881bc31923c1c 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-03-26 +date: 2024-03-28 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 298ec719441e5..814ba679ac238 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-03-26 +date: 2024-03-28 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 1df98fff6a88b..90b8ffdd73a9f 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-03-26 +date: 2024-03-28 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 057d40c634225..b89f9c5f55532 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-03-26 +date: 2024-03-28 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 f26f47f3b6018..89b89e36c9bae 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-03-26 +date: 2024-03-28 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 b7915821f8abc..59fb33279760d 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-03-26 +date: 2024-03-28 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 4a555b1ebce88..a4285c0adcb89 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-03-26 +date: 2024-03-28 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 8237760883bd2..b55677aafb405 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-03-26 +date: 2024-03-28 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 a643447ddcc93..fd1dd3dd69fd2 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-03-26 +date: 2024-03-28 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 35f9b3b800e8d..6d5050ca45265 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-03-26 +date: 2024-03-28 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 1a4fa31a50a1b..0948c199a0b34 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-03-26 +date: 2024-03-28 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 f4b2ef53aee44..0f3993a15e29d 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-03-26 +date: 2024-03-28 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 3a7dc4aff3aeb..b6b83a02cc188 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-03-26 +date: 2024-03-28 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 ce092846aa0c4..b50f50e0b7dc2 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_fleet.mdx b/api_docs/kbn_deeplinks_fleet.mdx index 800deed11b2e3..d867b18950743 100644 --- a/api_docs/kbn_deeplinks_fleet.mdx +++ b/api_docs/kbn_deeplinks_fleet.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-fleet title: "@kbn/deeplinks-fleet" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-fleet plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-fleet'] --- import kbnDeeplinksFleetObj from './kbn_deeplinks_fleet.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index ffede5a9a2e48..8adcfd0bb0a01 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-03-26 +date: 2024-03-28 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 e6f845973a461..d961d272d2d30 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-03-26 +date: 2024-03-28 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 f129b6f9d7f14..b7c988a7c0e7d 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-03-26 +date: 2024-03-28 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 7b2937d079e57..53dbc83f514c1 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_security.mdx b/api_docs/kbn_deeplinks_security.mdx index 71c4280415a1f..cfb1d5b9e10f9 100644 --- a/api_docs/kbn_deeplinks_security.mdx +++ b/api_docs/kbn_deeplinks_security.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-security title: "@kbn/deeplinks-security" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-security plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-security'] --- import kbnDeeplinksSecurityObj from './kbn_deeplinks_security.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_shared.mdx b/api_docs/kbn_deeplinks_shared.mdx index 65c2e8b8e039a..7758559f5b2ba 100644 --- a/api_docs/kbn_deeplinks_shared.mdx +++ b/api_docs/kbn_deeplinks_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-deeplinks-shared title: "@kbn/deeplinks-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/deeplinks-shared plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-shared'] --- import kbnDeeplinksSharedObj from './kbn_deeplinks_shared.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 100ddf4869460..c8a9eaeaa9269 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-03-26 +date: 2024-03-28 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 fb4c351a9929b..8881669ee0b8d 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-03-26 +date: 2024-03-28 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 c606961ead92e..2aa568ba77f7c 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-03-26 +date: 2024-03-28 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 179875b915ab3..ba19b0b8c2347 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-03-26 +date: 2024-03-28 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 f676849deb0d8..f9234a7c9d077 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-03-26 +date: 2024-03-28 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 51443cec280db..856892425321a 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-03-26 +date: 2024-03-28 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 75bc0e0a5ad57..95836ccd1d483 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-03-26 +date: 2024-03-28 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 146e3f20f259e..3388aa5e0dce9 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-03-26 +date: 2024-03-28 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 d5e74db7a9492..625abc7cfe0bc 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/discover-utils'] --- import kbnDiscoverUtilsObj from './kbn_discover_utils.devdocs.json'; diff --git a/api_docs/kbn_doc_links.devdocs.json b/api_docs/kbn_doc_links.devdocs.json index 7c32860d8ad16..963afbd73f71a 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -840,7 +840,7 @@ "label": "fleet", "description": [], "signature": [ - "{ readonly beatsAgentComparison: string; readonly guide: string; readonly fleetServer: string; readonly fleetServerAddFleetServer: string; readonly esSettings: string; readonly settings: string; readonly logstashSettings: string; readonly kafkaSettings: string; readonly settingsFleetServerHostSettings: string; readonly settingsFleetServerProxySettings: string; readonly troubleshooting: string; readonly elasticAgent: string; readonly datastreams: string; readonly datastreamsILM: string; readonly datastreamsNamingScheme: string; readonly datastreamsManualRollover: string; readonly datastreamsTSDS: string; readonly datastreamsTSDSMetrics: string; readonly installElasticAgent: string; readonly installElasticAgentStandalone: string; readonly packageSignatures: string; readonly upgradeElasticAgent: string; readonly learnMoreBlog: string; readonly apiKeysLearnMore: string; readonly onPremRegistry: string; readonly secureLogstash: string; readonly agentPolicy: string; readonly api: string; readonly uninstallAgent: string; readonly installAndUninstallIntegrationAssets: string; readonly elasticAgentInputConfiguration: string; readonly policySecrets: string; readonly remoteESOoutput: string; readonly performancePresets: string; }" + "{ readonly beatsAgentComparison: string; readonly guide: string; readonly fleetServer: string; readonly fleetServerAddFleetServer: string; readonly esSettings: string; readonly settings: string; readonly logstashSettings: string; readonly kafkaSettings: string; readonly settingsFleetServerHostSettings: string; readonly settingsFleetServerProxySettings: string; readonly troubleshooting: string; readonly elasticAgent: string; readonly datastreams: string; readonly datastreamsILM: string; readonly datastreamsNamingScheme: string; readonly datastreamsManualRollover: string; readonly datastreamsTSDS: string; readonly datastreamsTSDSMetrics: string; readonly installElasticAgent: string; readonly installElasticAgentStandalone: string; readonly packageSignatures: string; readonly upgradeElasticAgent: string; readonly learnMoreBlog: string; readonly apiKeysLearnMore: string; readonly onPremRegistry: string; readonly secureLogstash: string; readonly agentPolicy: string; readonly api: string; readonly uninstallAgent: string; readonly installAndUninstallIntegrationAssets: string; readonly elasticAgentInputConfiguration: string; readonly policySecrets: string; readonly remoteESOoutput: string; readonly performancePresets: string; readonly scalingKubernetesResourcesAndLimits: string; }" ], "path": "packages/kbn-doc-links/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_doc_links.mdx b/api_docs/kbn_doc_links.mdx index 8f104ec19703a..d00a865fa89f7 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-03-26 +date: 2024-03-28 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 adc2ef0358bc7..f9dcb8f0d06b8 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-03-26 +date: 2024-03-28 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 1b3b8d11aeaf1..57ef674a19260 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-03-26 +date: 2024-03-28 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 d6e7993766ec0..028fcf8bd5c47 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-03-26 +date: 2024-03-28 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 476c97ec3a6ce..a87c8be2eae50 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-03-26 +date: 2024-03-28 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 54b204daa6405..d6b1076cbf2a7 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-03-26 +date: 2024-03-28 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 c168b7c980013..ba3be90ba3450 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-03-26 +date: 2024-03-28 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.devdocs.json b/api_docs/kbn_elastic_assistant_common.devdocs.json index 79a19b081fcaf..beede79e1ad88 100644 --- a/api_docs/kbn_elastic_assistant_common.devdocs.json +++ b/api_docs/kbn_elastic_assistant_common.devdocs.json @@ -108,6 +108,130 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/elastic-assistant-common", + "id": "def-common.handleBedrockChunk", + "type": "Function", + "tags": [], + "label": "handleBedrockChunk", + "description": [ + "\nHandle a chunk of data from the bedrock API." + ], + "signature": [ + "({ chunk, bedrockBuffer, chunkHandler, logger, }: { chunk: Uint8Array; bedrockBuffer: Uint8Array; chunkHandler?: ((chunk: string) => void) | undefined; logger?: ", + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.Logger", + "text": "Logger" + }, + " | undefined; }) => { decodedChunk: string; bedrockBuffer: Uint8Array; }" + ], + "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/elastic-assistant-common", + "id": "def-common.handleBedrockChunk.$1", + "type": "Object", + "tags": [], + "label": "{\n chunk,\n bedrockBuffer,\n chunkHandler,\n logger,\n}", + "description": [], + "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/elastic-assistant-common", + "id": "def-common.handleBedrockChunk.$1.chunk", + "type": "Object", + "tags": [], + "label": "chunk", + "description": [], + "signature": [ + "Uint8Array" + ], + "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/elastic-assistant-common", + "id": "def-common.handleBedrockChunk.$1.bedrockBuffer", + "type": "Object", + "tags": [], + "label": "bedrockBuffer", + "description": [], + "signature": [ + "Uint8Array" + ], + "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/elastic-assistant-common", + "id": "def-common.handleBedrockChunk.$1.chunkHandler", + "type": "Function", + "tags": [], + "label": "chunkHandler", + "description": [], + "signature": [ + "((chunk: string) => void) | undefined" + ], + "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/elastic-assistant-common", + "id": "def-common.handleBedrockChunk.$1.chunkHandler.$1", + "type": "string", + "tags": [], + "label": "chunk", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/elastic-assistant-common", + "id": "def-common.handleBedrockChunk.$1.logger", + "type": "Object", + "tags": [], + "label": "logger", + "description": [], + "signature": [ + { + "pluginId": "@kbn/logging", + "scope": "common", + "docId": "kibKbnLoggingPluginApi", + "section": "def-common.Logger", + "text": "Logger" + }, + " | undefined" + ], + "path": "x-pack/packages/kbn-elastic-assistant-common/impl/utils/bedrock.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [ + ", bedrockBuffer } - The decoded chunk and the updated buffer." + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/elastic-assistant-common", "id": "def-common.isAllowed", diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index ad05386204da9..0e0e43417695c 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 220 | 0 | 207 | 0 | +| 227 | 0 | 213 | 0 | ## Common diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index b850439d1d7f5..94bf62df1f506 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-03-26 +date: 2024-03-28 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 5464f256a286e..4644c02bd072d 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-03-26 +date: 2024-03-28 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 d4984063fbbdc..4d60fda0005ef 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-03-26 +date: 2024-03-28 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 53b57fad7e883..1b620baa4b62e 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-03-26 +date: 2024-03-28 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 c92c607da9046..4495262ce48cb 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-03-26 +date: 2024-03-28 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 2f851b1ad0112..0b66f9c936c27 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.devdocs.json b/api_docs/kbn_esql_ast.devdocs.json new file mode 100644 index 0000000000000..3d5cdfbcd90b8 --- /dev/null +++ b/api_docs/kbn_esql_ast.devdocs.json @@ -0,0 +1,1221 @@ +{ + "id": "@kbn/esql-ast", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLErrorListener", + "type": "Class", + "tags": [], + "label": "ESQLErrorListener", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLErrorListener", + "text": "ESQLErrorListener" + }, + " extends ", + "ErrorListener", + "" + ], + "path": "packages/kbn-esql-ast/src/antlr_error_listener.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLErrorListener.errors", + "type": "Array", + "tags": [], + "label": "errors", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.EditorError", + "text": "EditorError" + }, + "[]" + ], + "path": "packages/kbn-esql-ast/src/antlr_error_listener.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLErrorListener.syntaxError", + "type": "Function", + "tags": [], + "label": "syntaxError", + "description": [], + "signature": [ + "(recognizer: ", + "Recognizer", + ", offendingSymbol: any, line: number, column: number, message: string, error: ", + "RecognitionException", + " | undefined) => void" + ], + "path": "packages/kbn-esql-ast/src/antlr_error_listener.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLErrorListener.syntaxError.$1", + "type": "Object", + "tags": [], + "label": "recognizer", + "description": [], + "signature": [ + "Recognizer", + "" + ], + "path": "packages/kbn-esql-ast/src/antlr_error_listener.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLErrorListener.syntaxError.$2", + "type": "Any", + "tags": [], + "label": "offendingSymbol", + "description": [], + "signature": [ + "any" + ], + "path": "packages/kbn-esql-ast/src/antlr_error_listener.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLErrorListener.syntaxError.$3", + "type": "number", + "tags": [], + "label": "line", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-esql-ast/src/antlr_error_listener.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLErrorListener.syntaxError.$4", + "type": "number", + "tags": [], + "label": "column", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-esql-ast/src/antlr_error_listener.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLErrorListener.syntaxError.$5", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-ast/src/antlr_error_listener.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLErrorListener.syntaxError.$6", + "type": "Object", + "tags": [], + "label": "error", + "description": [], + "signature": [ + "RecognitionException", + " | undefined" + ], + "path": "packages/kbn-esql-ast/src/antlr_error_listener.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLErrorListener.getErrors", + "type": "Function", + "tags": [], + "label": "getErrors", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.EditorError", + "text": "EditorError" + }, + "[]" + ], + "path": "packages/kbn-esql-ast/src/antlr_error_listener.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "initialIsOpen": false + } + ], + "functions": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.getAstAndSyntaxErrors", + "type": "Function", + "tags": [], + "label": "getAstAndSyntaxErrors", + "description": [], + "signature": [ + "(text: string | undefined) => Promise<{ errors: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.EditorError", + "text": "EditorError" + }, + "[]; ast: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAst", + "text": "ESQLAst" + }, + "; }>" + ], + "path": "packages/kbn-esql-ast/src/ast_parser.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.getAstAndSyntaxErrors.$1", + "type": "string", + "tags": [], + "label": "text", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-ast/src/ast_parser.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.getLexer", + "type": "Function", + "tags": [], + "label": "getLexer", + "description": [], + "signature": [ + "(inputStream: ", + "CharStream", + ", errorListener: ", + "ErrorListener", + ") => ", + "default" + ], + "path": "packages/kbn-esql-ast/src/antlr_facade.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.getLexer.$1", + "type": "Object", + "tags": [], + "label": "inputStream", + "description": [], + "signature": [ + "CharStream" + ], + "path": "packages/kbn-esql-ast/src/antlr_facade.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.getLexer.$2", + "type": "Object", + "tags": [], + "label": "errorListener", + "description": [], + "signature": [ + "ErrorListener", + "" + ], + "path": "packages/kbn-esql-ast/src/antlr_facade.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.getParser", + "type": "Function", + "tags": [], + "label": "getParser", + "description": [], + "signature": [ + "(inputStream: ", + "CharStream", + ", errorListener: ", + "ErrorListener", + ", parseListener?: ", + "default", + " | undefined) => ", + "default" + ], + "path": "packages/kbn-esql-ast/src/antlr_facade.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.getParser.$1", + "type": "Object", + "tags": [], + "label": "inputStream", + "description": [], + "signature": [ + "CharStream" + ], + "path": "packages/kbn-esql-ast/src/antlr_facade.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.getParser.$2", + "type": "Object", + "tags": [], + "label": "errorListener", + "description": [], + "signature": [ + "ErrorListener", + "" + ], + "path": "packages/kbn-esql-ast/src/antlr_facade.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.getParser.$3", + "type": "Object", + "tags": [], + "label": "parseListener", + "description": [], + "signature": [ + "default", + " | undefined" + ], + "path": "packages/kbn-esql-ast/src/antlr_facade.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.EditorError", + "type": "Interface", + "tags": [], + "label": "EditorError", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.EditorError.startLineNumber", + "type": "number", + "tags": [], + "label": "startLineNumber", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.EditorError.endLineNumber", + "type": "number", + "tags": [], + "label": "endLineNumber", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.EditorError.startColumn", + "type": "number", + "tags": [], + "label": "startColumn", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.EditorError.endColumn", + "type": "number", + "tags": [], + "label": "endColumn", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.EditorError.message", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.EditorError.code", + "type": "string", + "tags": [], + "label": "code", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.EditorError.severity", + "type": "CompoundType", + "tags": [], + "label": "severity", + "description": [], + "signature": [ + "number | \"error\" | \"warning\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLColumn", + "type": "Interface", + "tags": [], + "label": "ESQLColumn", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLColumn", + "text": "ESQLColumn" + }, + " extends ESQLAstBaseItem" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLColumn.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"column\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLColumn.quoted", + "type": "boolean", + "tags": [], + "label": "quoted", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLCommand", + "type": "Interface", + "tags": [], + "label": "ESQLCommand", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + " extends ESQLAstBaseItem" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLCommand.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"command\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLCommand.args", + "type": "Array", + "tags": [], + "label": "args", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + "[]" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLCommandMode", + "type": "Interface", + "tags": [], + "label": "ESQLCommandMode", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " extends ESQLAstBaseItem" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLCommandMode.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"mode\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLCommandOption", + "type": "Interface", + "tags": [], + "label": "ESQLCommandOption", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + }, + " extends ESQLAstBaseItem" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLCommandOption.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"option\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLCommandOption.args", + "type": "Array", + "tags": [], + "label": "args", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + "[]" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLFunction", + "type": "Interface", + "tags": [], + "label": "ESQLFunction", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + " extends ESQLAstBaseItem" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLFunction.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"function\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLFunction.args", + "type": "Array", + "tags": [], + "label": "args", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + "[]" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLLiteral", + "type": "Interface", + "tags": [], + "label": "ESQLLiteral", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLLiteral", + "text": "ESQLLiteral" + }, + " extends ESQLAstBaseItem" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLLiteral.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"literal\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLLiteral.literalType", + "type": "CompoundType", + "tags": [], + "label": "literalType", + "description": [], + "signature": [ + "\"string\" | \"number\" | \"boolean\" | \"null\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLLiteral.value", + "type": "CompoundType", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "string | number" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLLocation", + "type": "Interface", + "tags": [], + "label": "ESQLLocation", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLLocation.min", + "type": "number", + "tags": [], + "label": "min", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLLocation.max", + "type": "number", + "tags": [], + "label": "max", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLMessage", + "type": "Interface", + "tags": [], + "label": "ESQLMessage", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLMessage.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"error\" | \"warning\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLMessage.text", + "type": "string", + "tags": [], + "label": "text", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLMessage.location", + "type": "Object", + "tags": [], + "label": "location", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLLocation", + "text": "ESQLLocation" + } + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLMessage.code", + "type": "string", + "tags": [], + "label": "code", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLSource", + "type": "Interface", + "tags": [], + "label": "ESQLSource", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLSource", + "text": "ESQLSource" + }, + " extends ESQLAstBaseItem" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLSource.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"source\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLSource.sourceType", + "type": "CompoundType", + "tags": [], + "label": "sourceType", + "description": [], + "signature": [ + "\"index\" | \"policy\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLTimeInterval", + "type": "Interface", + "tags": [], + "label": "ESQLTimeInterval", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLTimeInterval", + "text": "ESQLTimeInterval" + }, + " extends ESQLAstBaseItem" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLTimeInterval.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"timeInterval\"" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLTimeInterval.unit", + "type": "string", + "tags": [], + "label": "unit", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLTimeInterval.quantity", + "type": "number", + "tags": [], + "label": "quantity", + "description": [], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.AstProviderFn", + "type": "Type", + "tags": [], + "label": "AstProviderFn", + "description": [], + "signature": [ + "(text: string | undefined) => Promise<{ ast: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAst", + "text": "ESQLAst" + }, + "; errors: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.EditorError", + "text": "EditorError" + }, + "[]; }>" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.AstProviderFn.$1", + "type": "string", + "tags": [], + "label": "text", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLAst", + "type": "Type", + "tags": [], + "label": "ESQLAst", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + "[]" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLAstItem", + "type": "Type", + "tags": [], + "label": "ESQLAstItem", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLSingleAstItem", + "text": "ESQLSingleAstItem" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + "[]" + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ESQLSingleAstItem", + "type": "Type", + "tags": [], + "label": "ESQLSingleAstItem", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLSource", + "text": "ESQLSource" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLColumn", + "text": "ESQLColumn" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLTimeInterval", + "text": "ESQLTimeInterval" + }, + " | ", + "ESQLList", + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLLiteral", + "text": "ESQLLiteral" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + } + ], + "path": "packages/kbn-esql-ast/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-ast", + "id": "def-common.ROOT_STATEMENT", + "type": "string", + "tags": [], + "label": "ROOT_STATEMENT", + "description": [], + "signature": [ + "\"singleStatement\"" + ], + "path": "packages/kbn-esql-ast/src/antlr_facade.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx new file mode 100644 index 0000000000000..2fcdbea7bd9c6 --- /dev/null +++ b/api_docs/kbn_esql_ast.mdx @@ -0,0 +1,39 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnEsqlAstPluginApi +slug: /kibana-dev-docs/api/kbn-esql-ast +title: "@kbn/esql-ast" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/esql-ast plugin +date: 2024-03-28 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] +--- +import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; + + + +Contact [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 66 | 1 | 66 | 2 | + +## Common + +### Functions + + +### Classes + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index 0b69c4af4737f..e6f441ad59c38 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,14 +8,14 @@ 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; -Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) for questions regarding this plugin. +Contact [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/kbn_esql_validation_autocomplete.devdocs.json b/api_docs/kbn_esql_validation_autocomplete.devdocs.json new file mode 100644 index 0000000000000..d31a6e8b0b1cc --- /dev/null +++ b/api_docs/kbn_esql_validation_autocomplete.devdocs.json @@ -0,0 +1,3845 @@ +{ + "id": "@kbn/esql-validation-autocomplete", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + }, + "common": { + "classes": [], + "functions": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.collectVariables", + "type": "Function", + "tags": [], + "label": "collectVariables", + "description": [], + "signature": [ + "(commands: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + "[], fields: Map, queryString: string) => Map" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/variables.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.collectVariables.$1", + "type": "Array", + "tags": [], + "label": "commands", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + "[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/variables.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.collectVariables.$2", + "type": "Object", + "tags": [], + "label": "fields", + "description": [], + "signature": [ + "Map" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/variables.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.collectVariables.$3", + "type": "string", + "tags": [], + "label": "queryString", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/variables.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.columnExists", + "type": "Function", + "tags": [], + "label": "columnExists", + "description": [], + "signature": [ + "(column: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLColumn", + "text": "ESQLColumn" + }, + ", { fields, variables }: Pick<", + "ReferenceMaps", + ", \"fields\" | \"variables\">) => { hit: boolean; nameHit: string; } | { hit: boolean; nameHit?: undefined; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.columnExists.$1", + "type": "Object", + "tags": [], + "label": "column", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLColumn", + "text": "ESQLColumn" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.columnExists.$2", + "type": "Object", + "tags": [], + "label": "{ fields, variables }", + "description": [], + "signature": [ + "Pick<", + "ReferenceMaps", + ", \"fields\" | \"variables\">" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getActions", + "type": "Function", + "tags": [], + "label": "getActions", + "description": [], + "signature": [ + "(innerText: string, markers: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.EditorError", + "text": "EditorError" + }, + "[], astProvider: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.AstProviderFn", + "text": "AstProviderFn" + }, + ", resourceRetriever: ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined) => Promise<", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.CodeAction", + "text": "CodeAction" + }, + "[]>" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/actions.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getActions.$1", + "type": "string", + "tags": [], + "label": "innerText", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/actions.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getActions.$2", + "type": "Array", + "tags": [], + "label": "markers", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.EditorError", + "text": "EditorError" + }, + "[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/actions.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getActions.$3", + "type": "Function", + "tags": [], + "label": "astProvider", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.AstProviderFn", + "text": "AstProviderFn" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/actions.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getActions.$4", + "type": "Object", + "tags": [], + "label": "resourceRetriever", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/actions.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getAllCommands", + "type": "Function", + "tags": [], + "label": "getAllCommands", + "description": [], + "signature": [ + "() => ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.CommandDefinition", + "text": "CommandDefinition" + }, + "[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getAllFunctions", + "type": "Function", + "tags": [], + "label": "getAllFunctions", + "description": [], + "signature": [ + "(options: { type: \"agg\" | \"builtin\" | \"eval\" | (\"agg\" | \"builtin\" | \"eval\")[]; } | undefined) => ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.FunctionDefinition", + "text": "FunctionDefinition" + }, + "[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getAllFunctions.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getAllFunctions.$1.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"agg\" | \"builtin\" | \"eval\" | (\"agg\" | \"builtin\" | \"eval\")[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getAstContext", + "type": "Function", + "tags": [], + "label": "getAstContext", + "description": [ + "\nGiven a ES|QL query string, its AST and the cursor position,\nit returns the type of context for the position (\"list\", \"function\", \"option\", \"setting\", \"expression\", \"newCommand\")\nplus the whole hierarchy of nodes (command, option, setting and actual position node) context.\n\nType details:\n* \"list\": the cursor is inside a \"in\" list of values (i.e. `a in (1, 2, )`)\n* \"function\": the cursor is inside a function call (i.e. `fn()`)\n* \"option\": the cursor is inside a command option (i.e. `command ... by `)\n* \"setting\": the cursor is inside a setting (i.e. `command _`)\n* \"expression\": the cursor is inside a command expression (i.e. `command ... ` or `command a = ... `)\n* \"newCommand\": the cursor is at the beginning of a new command (i.e. `command1 | command2 | `)" + ], + "signature": [ + "(queryString: string, ast: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAst", + "text": "ESQLAst" + }, + ", offset: number) => { type: \"list\"; command: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + "; node: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + "; option: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + }, + " | undefined; setting: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " | undefined; } | { type: \"function\"; command: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + "; node: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + "; option: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + }, + " | undefined; setting: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " | undefined; } | { type: \"option\"; command: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + "; node: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLSource", + "text": "ESQLSource" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLColumn", + "text": "ESQLColumn" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLTimeInterval", + "text": "ESQLTimeInterval" + }, + " | ", + "ESQLList", + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLLiteral", + "text": "ESQLLiteral" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + "; option: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + }, + " | undefined; setting: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " | undefined; } | { type: \"setting\"; command: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + "; node: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLSource", + "text": "ESQLSource" + }, + "; option: undefined; setting: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " | undefined; } | { type: \"newCommand\"; command: undefined; node: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLSource", + "text": "ESQLSource" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLColumn", + "text": "ESQLColumn" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLTimeInterval", + "text": "ESQLTimeInterval" + }, + " | ", + "ESQLList", + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLLiteral", + "text": "ESQLLiteral" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " | undefined; option: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + }, + " | undefined; setting: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " | undefined; } | { type: \"option\"; command: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + "; node: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLSource", + "text": "ESQLSource" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLColumn", + "text": "ESQLColumn" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLTimeInterval", + "text": "ESQLTimeInterval" + }, + " | ", + "ESQLList", + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLLiteral", + "text": "ESQLLiteral" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " | undefined; option: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + }, + "; setting: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " | undefined; } | { type: \"expression\"; command: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + "; option: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + }, + " | undefined; node: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLSource", + "text": "ESQLSource" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLColumn", + "text": "ESQLColumn" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLTimeInterval", + "text": "ESQLTimeInterval" + }, + " | ", + "ESQLList", + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLLiteral", + "text": "ESQLLiteral" + }, + " | ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " | undefined; setting: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandMode", + "text": "ESQLCommandMode" + }, + " | undefined; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/context.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getAstContext.$1", + "type": "string", + "tags": [], + "label": "queryString", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/context.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getAstContext.$2", + "type": "Array", + "tags": [], + "label": "ast", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAst", + "text": "ESQLAst" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/context.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getAstContext.$3", + "type": "number", + "tags": [], + "label": "offset", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/context.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getColumnHit", + "type": "Function", + "tags": [], + "label": "getColumnHit", + "description": [], + "signature": [ + "(columnName: string, { fields, variables }: Pick<", + "ReferenceMaps", + ", \"fields\" | \"variables\">, position: number | undefined) => ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLVariable", + "text": "ESQLVariable" + }, + " | ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLRealField", + "text": "ESQLRealField" + }, + " | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getColumnHit.$1", + "type": "string", + "tags": [], + "label": "columnName", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getColumnHit.$2", + "type": "Object", + "tags": [], + "label": "{ fields, variables }", + "description": [], + "signature": [ + "Pick<", + "ReferenceMaps", + ", \"fields\" | \"variables\">" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getColumnHit.$3", + "type": "number", + "tags": [], + "label": "position", + "description": [], + "signature": [ + "number | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getCommandDefinition", + "type": "Function", + "tags": [], + "label": "getCommandDefinition", + "description": [], + "signature": [ + "(name: string) => ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.CommandDefinition", + "text": "CommandDefinition" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getCommandDefinition.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getCommandOption", + "type": "Function", + "tags": [], + "label": "getCommandOption", + "description": [], + "signature": [ + "(optionName: string) => ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.CommandOptionsDefinition", + "text": "CommandOptionsDefinition" + }, + " | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getCommandOption.$1", + "type": "string", + "tags": [], + "label": "optionName", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getFieldsByTypeHelper", + "type": "Function", + "tags": [], + "label": "getFieldsByTypeHelper", + "description": [], + "signature": [ + "(queryText: string, resourceRetriever: ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined) => { getFieldsByType: (expectedType?: string | string[], ignored?: string[]) => Promise; getFieldsMap: () => Promise>; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/resources_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getFieldsByTypeHelper.$1", + "type": "string", + "tags": [], + "label": "queryText", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/resources_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getFieldsByTypeHelper.$2", + "type": "Object", + "tags": [], + "label": "resourceRetriever", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/resources_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getFunctionDefinition", + "type": "Function", + "tags": [], + "label": "getFunctionDefinition", + "description": [], + "signature": [ + "(name: string) => ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.FunctionDefinition", + "text": "FunctionDefinition" + }, + " | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getFunctionDefinition.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getFunctionSignatures", + "type": "Function", + "tags": [], + "label": "getFunctionSignatures", + "description": [ + "\nGiven a function definition, this function will return a list of function signatures\n\nIf withTypes is true, the function will return a formal function definition with all arguments typed.\nThis is used when generating the function signature for the monaco editor. If withTypes is false, you get\nan \"injectable\" version of the signature to be used to generate test cases." + ], + "signature": [ + "({ name, signatures }: ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.FunctionDefinition", + "text": "FunctionDefinition" + }, + ", { withTypes }: { withTypes: boolean; }) => { declaration: string; examples: string[] | undefined; }[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getFunctionSignatures.$1", + "type": "Object", + "tags": [], + "label": "{ name, signatures }", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.FunctionDefinition", + "text": "FunctionDefinition" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getFunctionSignatures.$2", + "type": "Object", + "tags": [], + "label": "{ withTypes }", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getFunctionSignatures.$2.withTypes", + "type": "boolean", + "tags": [], + "label": "withTypes", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/helpers.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getPolicyHelper", + "type": "Function", + "tags": [], + "label": "getPolicyHelper", + "description": [], + "signature": [ + "(resourceRetriever: ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined) => { getPolicies: () => Promise<{ name: string; sourceIndices: string[]; matchField: string; enrichFields: string[]; }[]>; getPolicyMetadata: (policyName: string) => Promise<{ name: string; sourceIndices: string[]; matchField: string; enrichFields: string[]; } | undefined>; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/resources_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getPolicyHelper.$1", + "type": "Object", + "tags": [], + "label": "resourceRetriever", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/resources_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getSourcesHelper", + "type": "Function", + "tags": [], + "label": "getSourcesHelper", + "description": [], + "signature": [ + "(resourceRetriever: ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined) => () => Promise<{ name: string; hidden: boolean; }[]>" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/resources_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.getSourcesHelper.$1", + "type": "Object", + "tags": [], + "label": "resourceRetriever", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/resources_helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isAssignment", + "type": "Function", + "tags": [], + "label": "isAssignment", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + ") => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isAssignment.$1", + "type": "CompoundType", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isAssignmentComplete", + "type": "Function", + "tags": [], + "label": "isAssignmentComplete", + "description": [], + "signature": [ + "(node: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + " | undefined) => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isAssignmentComplete.$1", + "type": "Object", + "tags": [], + "label": "node", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + " | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isColumnItem", + "type": "Function", + "tags": [], + "label": "isColumnItem", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + ") => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isColumnItem.$1", + "type": "CompoundType", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isEqualType", + "type": "Function", + "tags": [], + "label": "isEqualType", + "description": [], + "signature": [ + "(item: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLSingleAstItem", + "text": "ESQLSingleAstItem" + }, + ", argDef: { name: string; type: string; optional?: boolean | undefined; noNestingFunctions?: boolean | undefined; supportsWildcard?: boolean | undefined; literalOnly?: boolean | undefined; } | { name: string; type: string; optional?: boolean | undefined; innerType?: string | undefined; values?: string[] | undefined; valueDescriptions?: string[] | undefined; literalOnly?: boolean | undefined; wildcards?: boolean | undefined; }, references: ", + "ReferenceMaps", + ", parentCommand: string | undefined, nameHit: string | undefined) => boolean | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isEqualType.$1", + "type": "CompoundType", + "tags": [], + "label": "item", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLSingleAstItem", + "text": "ESQLSingleAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isEqualType.$2", + "type": "CompoundType", + "tags": [], + "label": "argDef", + "description": [], + "signature": [ + "{ name: string; type: string; optional?: boolean | undefined; noNestingFunctions?: boolean | undefined; supportsWildcard?: boolean | undefined; literalOnly?: boolean | undefined; } | { name: string; type: string; optional?: boolean | undefined; innerType?: string | undefined; values?: string[] | undefined; valueDescriptions?: string[] | undefined; literalOnly?: boolean | undefined; wildcards?: boolean | undefined; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isEqualType.$3", + "type": "Object", + "tags": [], + "label": "references", + "description": [], + "signature": [ + "ReferenceMaps" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isEqualType.$4", + "type": "string", + "tags": [], + "label": "parentCommand", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isEqualType.$5", + "type": "string", + "tags": [], + "label": "nameHit", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isExpression", + "type": "Function", + "tags": [], + "label": "isExpression", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + ") => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isExpression.$1", + "type": "CompoundType", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isFunctionItem", + "type": "Function", + "tags": [], + "label": "isFunctionItem", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + ") => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isFunctionItem.$1", + "type": "CompoundType", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isLiteralItem", + "type": "Function", + "tags": [], + "label": "isLiteralItem", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + ") => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isLiteralItem.$1", + "type": "CompoundType", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isOptionItem", + "type": "Function", + "tags": [], + "label": "isOptionItem", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + ") => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isOptionItem.$1", + "type": "CompoundType", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isSettingItem", + "type": "Function", + "tags": [], + "label": "isSettingItem", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + ") => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isSettingItem.$1", + "type": "CompoundType", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isSingleItem", + "type": "Function", + "tags": [], + "label": "isSingleItem", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + ") => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isSingleItem.$1", + "type": "CompoundType", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isSourceItem", + "type": "Function", + "tags": [], + "label": "isSourceItem", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + ") => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isSourceItem.$1", + "type": "CompoundType", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isSupportedFunction", + "type": "Function", + "tags": [], + "label": "isSupportedFunction", + "description": [], + "signature": [ + "(name: string, parentCommand: string | undefined, option: string | undefined) => { supported: boolean; reason: ", + "ReasonTypes", + " | undefined; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isSupportedFunction.$1", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isSupportedFunction.$2", + "type": "string", + "tags": [], + "label": "parentCommand", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isSupportedFunction.$3", + "type": "string", + "tags": [], + "label": "option", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isTimeIntervalItem", + "type": "Function", + "tags": [], + "label": "isTimeIntervalItem", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + }, + ") => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.isTimeIntervalItem.$1", + "type": "CompoundType", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLAstItem", + "text": "ESQLAstItem" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.printFunctionSignature", + "type": "Function", + "tags": [], + "label": "printFunctionSignature", + "description": [], + "signature": [ + "(arg: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + ") => string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.printFunctionSignature.$1", + "type": "Object", + "tags": [], + "label": "arg", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.shouldBeQuotedText", + "type": "Function", + "tags": [], + "label": "shouldBeQuotedText", + "description": [], + "signature": [ + "(text: string, { dashSupported }: { dashSupported?: boolean | undefined; }) => boolean" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.shouldBeQuotedText.$1", + "type": "string", + "tags": [], + "label": "text", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.shouldBeQuotedText.$2", + "type": "Object", + "tags": [], + "label": "{ dashSupported }", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.shouldBeQuotedText.$2.dashSupported", + "type": "CompoundType", + "tags": [], + "label": "dashSupported", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.suggest", + "type": "Function", + "tags": [], + "label": "suggest", + "description": [], + "signature": [ + "(fullText: string, offset: number, context: ", + "EditorContext", + ", astProvider: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.AstProviderFn", + "text": "AstProviderFn" + }, + ", resourceRetriever: ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined) => Promise<", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.SuggestionRawDefinition", + "text": "SuggestionRawDefinition" + }, + "[]>" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.suggest.$1", + "type": "string", + "tags": [], + "label": "fullText", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.suggest.$2", + "type": "number", + "tags": [], + "label": "offset", + "description": [], + "signature": [ + "number" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.suggest.$3", + "type": "Object", + "tags": [], + "label": "context", + "description": [], + "signature": [ + "EditorContext" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.suggest.$4", + "type": "Function", + "tags": [], + "label": "astProvider", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.AstProviderFn", + "text": "AstProviderFn" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.suggest.$5", + "type": "Object", + "tags": [], + "label": "resourceRetriever", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.validateQuery", + "type": "Function", + "tags": [], + "label": "validateQuery", + "description": [ + "\nES|QL validation public API\nIt takes a query string and returns a list of messages (errors and warnings) after validate\nThe astProvider is optional, but if not provided the default one from '@kbn/esql-validation-autocomplete' will be used.\nThis is useful for async loading the ES|QL parser and reduce the bundle size, or to swap grammar version.\nAs for the callbacks, while optional, the validation function will selectively ignore some errors types based on each callback missing." + ], + "signature": [ + "(queryString: string, astProvider: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.AstProviderFn", + "text": "AstProviderFn" + }, + ", options: ", + "ValidationOptions", + ", callbacks: ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined) => Promise<", + "ValidationResult", + ">" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/validation.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.validateQuery.$1", + "type": "string", + "tags": [], + "label": "queryString", + "description": [], + "signature": [ + "string" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/validation.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.validateQuery.$2", + "type": "Function", + "tags": [], + "label": "astProvider", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.AstProviderFn", + "text": "AstProviderFn" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/validation.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.validateQuery.$3", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "ValidationOptions" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/validation.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.validateQuery.$4", + "type": "Object", + "tags": [], + "label": "callbacks", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ESQLCallbacks", + "text": "ESQLCallbacks" + }, + " | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/validation.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [], + "initialIsOpen": false + } + ], + "interfaces": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CodeAction", + "type": "Interface", + "tags": [], + "label": "CodeAction", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CodeAction.title", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CodeAction.diagnostics", + "type": "Array", + "tags": [], + "label": "diagnostics", + "description": [], + "signature": [ + "EditorError", + "[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CodeAction.kind", + "type": "string", + "tags": [], + "label": "kind", + "description": [], + "signature": [ + "\"quickfix\"" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CodeAction.edits", + "type": "Array", + "tags": [], + "label": "edits", + "description": [], + "signature": [ + "{ range: ", + "EditorError", + "; text: string; }[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/code_actions/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandDefinition", + "type": "Interface", + "tags": [], + "label": "CommandDefinition", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.CommandDefinition", + "text": "CommandDefinition" + }, + " extends ", + "CommandBaseDefinition" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandDefinition.options", + "type": "Array", + "tags": [], + "label": "options", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.CommandOptionsDefinition", + "text": "CommandOptionsDefinition" + }, + "[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandDefinition.examples", + "type": "Array", + "tags": [], + "label": "examples", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandDefinition.validate", + "type": "Function", + "tags": [], + "label": "validate", + "description": [], + "signature": [ + "((option: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + ") => ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLMessage", + "text": "ESQLMessage" + }, + "[]) | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandDefinition.validate.$1", + "type": "Object", + "tags": [], + "label": "option", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandDefinition.modes", + "type": "Array", + "tags": [], + "label": "modes", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.CommandModeDefinition", + "text": "CommandModeDefinition" + }, + "[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandModeDefinition", + "type": "Interface", + "tags": [], + "label": "CommandModeDefinition", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandModeDefinition.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandModeDefinition.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandModeDefinition.values", + "type": "Array", + "tags": [], + "label": "values", + "description": [], + "signature": [ + "{ name: string; description: string; }[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandModeDefinition.prefix", + "type": "string", + "tags": [], + "label": "prefix", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandOptionsDefinition", + "type": "Interface", + "tags": [], + "label": "CommandOptionsDefinition", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.CommandOptionsDefinition", + "text": "CommandOptionsDefinition" + }, + " extends ", + "CommandBaseDefinition" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandOptionsDefinition.wrapped", + "type": "Array", + "tags": [], + "label": "wrapped", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandOptionsDefinition.optional", + "type": "boolean", + "tags": [], + "label": "optional", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandOptionsDefinition.skipCommonValidation", + "type": "CompoundType", + "tags": [], + "label": "skipCommonValidation", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandOptionsDefinition.validate", + "type": "Function", + "tags": [], + "label": "validate", + "description": [], + "signature": [ + "((option: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + }, + ", command: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + }, + ", references?: unknown) => ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLMessage", + "text": "ESQLMessage" + }, + "[]) | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandOptionsDefinition.validate.$1", + "type": "Object", + "tags": [], + "label": "option", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommandOption", + "text": "ESQLCommandOption" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandOptionsDefinition.validate.$2", + "type": "Object", + "tags": [], + "label": "command", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLCommand", + "text": "ESQLCommand" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.CommandOptionsDefinition.validate.$3", + "type": "Unknown", + "tags": [], + "label": "references", + "description": [], + "signature": [ + "unknown" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLCallbacks", + "type": "Interface", + "tags": [], + "label": "ESQLCallbacks", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLCallbacks.getSources", + "type": "Function", + "tags": [], + "label": "getSources", + "description": [], + "signature": [ + "CallbackFn<{}, { name: string; hidden: boolean; }> | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLCallbacks.getFieldsFor", + "type": "Function", + "tags": [], + "label": "getFieldsFor", + "description": [], + "signature": [ + "CallbackFn<{ query: string; }, { name: string; type: string; }> | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLCallbacks.getMetaFields", + "type": "Function", + "tags": [], + "label": "getMetaFields", + "description": [], + "signature": [ + "CallbackFn<{}, string> | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLCallbacks.getPolicies", + "type": "Function", + "tags": [], + "label": "getPolicies", + "description": [], + "signature": [ + "CallbackFn<{}, { name: string; sourceIndices: string[]; matchField: string; enrichFields: string[]; }> | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/shared/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLPolicy", + "type": "Interface", + "tags": [], + "label": "ESQLPolicy", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLPolicy.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLPolicy.sourceIndices", + "type": "Array", + "tags": [], + "label": "sourceIndices", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLPolicy.matchField", + "type": "string", + "tags": [], + "label": "matchField", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLPolicy.enrichFields", + "type": "Array", + "tags": [], + "label": "enrichFields", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLRealField", + "type": "Interface", + "tags": [], + "label": "ESQLRealField", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLRealField.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLRealField.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLVariable", + "type": "Interface", + "tags": [], + "label": "ESQLVariable", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLVariable.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLVariable.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ESQLVariable.location", + "type": "Object", + "tags": [], + "label": "location", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLLocation", + "text": "ESQLLocation" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition", + "type": "Interface", + "tags": [], + "label": "FunctionDefinition", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"agg\" | \"builtin\" | \"eval\"" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition.ignoreAsSuggestion", + "type": "CompoundType", + "tags": [], + "label": "ignoreAsSuggestion", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition.alias", + "type": "Array", + "tags": [], + "label": "alias", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition.supportedCommands", + "type": "Array", + "tags": [], + "label": "supportedCommands", + "description": [], + "signature": [ + "string[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition.supportedOptions", + "type": "Array", + "tags": [], + "label": "supportedOptions", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition.signatures", + "type": "Array", + "tags": [], + "label": "signatures", + "description": [], + "signature": [ + "{ params: { name: string; type: string; optional?: boolean | undefined; noNestingFunctions?: boolean | undefined; supportsWildcard?: boolean | undefined; literalOnly?: boolean | undefined; }[]; minParams?: number | undefined; returnType: string; examples?: string[] | undefined; }[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition.validate", + "type": "Function", + "tags": [], + "label": "validate", + "description": [], + "signature": [ + "((fnDef: ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + }, + ") => ", + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLMessage", + "text": "ESQLMessage" + }, + "[]) | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.FunctionDefinition.validate.$1", + "type": "Object", + "tags": [], + "label": "fnDef", + "description": [], + "signature": [ + { + "pluginId": "@kbn/esql-ast", + "scope": "common", + "docId": "kibKbnEsqlAstPluginApi", + "section": "def-common.ESQLFunction", + "text": "ESQLFunction" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.Literals", + "type": "Interface", + "tags": [], + "label": "Literals", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.Literals.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.Literals.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.SuggestionRawDefinition", + "type": "Interface", + "tags": [], + "label": "SuggestionRawDefinition", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.SuggestionRawDefinition.label", + "type": "string", + "tags": [], + "label": "label", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.SuggestionRawDefinition.text", + "type": "string", + "tags": [], + "label": "text", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.SuggestionRawDefinition.asSnippet", + "type": "CompoundType", + "tags": [], + "label": "asSnippet", + "description": [ + "\nShould the text be inserted as a snippet?\nThat is usually used for special behaviour like moving the cursor in a specific position\nafter inserting the text.\ni.e. 'fnName( $0 )' will insert fnName( ) and move the cursor where $0 is." + ], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.SuggestionRawDefinition.kind", + "type": "CompoundType", + "tags": [], + "label": "kind", + "description": [ + "\nThis is useful to identify the suggestion type and apply different styles to it." + ], + "signature": [ + "\"Text\" | \"Operator\" | \"Field\" | \"Function\" | \"Method\" | \"Variable\" | \"Class\" | \"Value\" | \"Constant\" | \"Keyword\" | \"Reference\" | \"Snippet\" | \"Issue\"" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.SuggestionRawDefinition.detail", + "type": "string", + "tags": [], + "label": "detail", + "description": [ + "\nA very short description for the suggestion entry that can be shown on the UI next to the label" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.SuggestionRawDefinition.documentation", + "type": "Object", + "tags": [], + "label": "documentation", + "description": [ + "\nA longer description for the suggestion entry that can be shown on demand on the UI." + ], + "signature": [ + "{ value: string; } | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.SuggestionRawDefinition.sortText", + "type": "string", + "tags": [], + "label": "sortText", + "description": [ + "\nA string to use for sorting the suggestion within the suggestions list" + ], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.SuggestionRawDefinition.command", + "type": "Object", + "tags": [], + "label": "command", + "description": [ + "\nSuggestions can trigger a command by id. This is useful to trigger specific actions in some contexts" + ], + "signature": [ + "{ title: string; id: string; } | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors", + "type": "Interface", + "tags": [], + "label": "ValidationErrors", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.wrongArgumentType", + "type": "Object", + "tags": [], + "label": "wrongArgumentType", + "description": [], + "signature": [ + "{ message: string; type: { name: string; argType: string; value: string | number | Date; givenType: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.wrongArgumentNumber", + "type": "Object", + "tags": [], + "label": "wrongArgumentNumber", + "description": [], + "signature": [ + "{ message: string; type: { fn: string; numArgs: number; passedArgs: number; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.wrongArgumentNumberTooMany", + "type": "Object", + "tags": [], + "label": "wrongArgumentNumberTooMany", + "description": [], + "signature": [ + "{ message: string; type: { fn: string; numArgs: number; passedArgs: number; extraArgs: number; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.wrongArgumentNumberTooFew", + "type": "Object", + "tags": [], + "label": "wrongArgumentNumberTooFew", + "description": [], + "signature": [ + "{ message: string; type: { fn: string; numArgs: number; passedArgs: number; missingArgs: number; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unknownColumn", + "type": "Object", + "tags": [], + "label": "unknownColumn", + "description": [], + "signature": [ + "{ message: string; type: { name: string | number; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unknownFunction", + "type": "Object", + "tags": [], + "label": "unknownFunction", + "description": [], + "signature": [ + "{ message: string; type: { name: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unknownIndex", + "type": "Object", + "tags": [], + "label": "unknownIndex", + "description": [], + "signature": [ + "{ message: string; type: { name: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.noNestedArgumentSupport", + "type": "Object", + "tags": [], + "label": "noNestedArgumentSupport", + "description": [], + "signature": [ + "{ message: string; type: { name: string; argType: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unsupportedFunctionForCommand", + "type": "Object", + "tags": [], + "label": "unsupportedFunctionForCommand", + "description": [], + "signature": [ + "{ message: string; type: { name: string; command: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unsupportedFunctionForCommandOption", + "type": "Object", + "tags": [], + "label": "unsupportedFunctionForCommandOption", + "description": [], + "signature": [ + "{ message: string; type: { name: string; command: string; option: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.shadowFieldType", + "type": "Object", + "tags": [], + "label": "shadowFieldType", + "description": [], + "signature": [ + "{ message: string; type: { field: string; fieldType: string; newType: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unsupportedColumnTypeForCommand", + "type": "Object", + "tags": [], + "label": "unsupportedColumnTypeForCommand", + "description": [], + "signature": [ + "{ message: string; type: { command: string; type: string; typeCount: number; givenType: string; column: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unknownOption", + "type": "Object", + "tags": [], + "label": "unknownOption", + "description": [], + "signature": [ + "{ message: string; type: { command: string; option: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.wrongOptionArgumentType", + "type": "Object", + "tags": [], + "label": "wrongOptionArgumentType", + "description": [], + "signature": [ + "{ message: string; type: { command: string; option: string; type: string; givenValue: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unknownInterval", + "type": "Object", + "tags": [], + "label": "unknownInterval", + "description": [], + "signature": [ + "{ message: string; type: { value: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unsupportedTypeForCommand", + "type": "Object", + "tags": [], + "label": "unsupportedTypeForCommand", + "description": [], + "signature": [ + "{ message: string; type: { command: string; value: string; type: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unknownPolicy", + "type": "Object", + "tags": [], + "label": "unknownPolicy", + "description": [], + "signature": [ + "{ message: string; type: { name: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unknownAggregateFunction", + "type": "Object", + "tags": [], + "label": "unknownAggregateFunction", + "description": [], + "signature": [ + "{ message: string; type: { type: string; value: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.wildcardNotSupportedForCommand", + "type": "Object", + "tags": [], + "label": "wildcardNotSupportedForCommand", + "description": [], + "signature": [ + "{ message: string; type: { command: string; value: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.noWildcardSupportAsArg", + "type": "Object", + "tags": [], + "label": "noWildcardSupportAsArg", + "description": [], + "signature": [ + "{ message: string; type: { name: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unsupportedFieldType", + "type": "Object", + "tags": [], + "label": "unsupportedFieldType", + "description": [], + "signature": [ + "{ message: string; type: { field: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unsupportedSetting", + "type": "Object", + "tags": [], + "label": "unsupportedSetting", + "description": [], + "signature": [ + "{ message: string; type: { setting: string; expected: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unsupportedSettingCommandValue", + "type": "Object", + "tags": [], + "label": "unsupportedSettingCommandValue", + "description": [], + "signature": [ + "{ message: string; type: { command: string; value: string; expected: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.expectedConstant", + "type": "Object", + "tags": [], + "label": "expectedConstant", + "description": [], + "signature": [ + "{ message: string; type: { fn: string; given: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.metadataBracketsDeprecation", + "type": "Object", + "tags": [], + "label": "metadataBracketsDeprecation", + "description": [], + "signature": [ + "{ message: string; type: {}; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.unknownMetadataField", + "type": "Object", + "tags": [], + "label": "unknownMetadataField", + "description": [], + "signature": [ + "{ message: string; type: { value: string; availableFields: string; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ValidationErrors.wrongDissectOptionArgumentType", + "type": "Object", + "tags": [], + "label": "wrongDissectOptionArgumentType", + "description": [], + "signature": [ + "{ message: string; type: { value: string | number; }; }" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ErrorTypes", + "type": "Type", + "tags": [], + "label": "ErrorTypes", + "description": [], + "signature": [ + "keyof ", + { + "pluginId": "@kbn/esql-validation-autocomplete", + "scope": "common", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", + "section": "def-common.ValidationErrors", + "text": "ValidationErrors" + } + ], + "path": "packages/kbn-esql-validation-autocomplete/src/validation/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ItemKind", + "type": "Type", + "tags": [], + "label": "ItemKind", + "description": [], + "signature": [ + "\"Text\" | \"Operator\" | \"Field\" | \"Function\" | \"Method\" | \"Variable\" | \"Class\" | \"Value\" | \"Constant\" | \"Keyword\" | \"Reference\" | \"Snippet\" | \"Issue\"" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ENRICH_MODES", + "type": "Object", + "tags": [], + "label": "ENRICH_MODES", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ENRICH_MODES.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ENRICH_MODES.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ENRICH_MODES.prefix", + "type": "string", + "tags": [], + "label": "prefix", + "description": [], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.ENRICH_MODES.values", + "type": "Array", + "tags": [], + "label": "values", + "description": [], + "signature": [ + "{ name: string; description: string; }[]" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/definitions/settings.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ] + } +} \ No newline at end of file diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx new file mode 100644 index 0000000000000..f30963b46a8a3 --- /dev/null +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -0,0 +1,39 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibKbnEsqlValidationAutocompletePluginApi +slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete +title: "@kbn/esql-validation-autocomplete" +image: https://source.unsplash.com/400x175/?github +description: API docs for the @kbn/esql-validation-autocomplete plugin +date: 2024-03-28 +tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] +--- +import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; + + + +Contact [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 189 | 0 | 180 | 7 | + +## Common + +### Objects + + +### Functions + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 32304f706f2b9..05f8c855263b3 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-03-26 +date: 2024-03-28 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 89c1477fe1c6c..60e9bcb6b528f 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/event-annotation-components'] --- import kbnEventAnnotationComponentsObj from './kbn_event_annotation_components.devdocs.json'; diff --git a/api_docs/kbn_expandable_flyout.mdx b/api_docs/kbn_expandable_flyout.mdx index d6de021bff279..17ecc0af8f070 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/expandable-flyout'] --- import kbnExpandableFlyoutObj from './kbn_expandable_flyout.devdocs.json'; diff --git a/api_docs/kbn_field_types.mdx b/api_docs/kbn_field_types.mdx index 19201a9853944..064f8258dcfd5 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-03-26 +date: 2024-03-28 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 84acfec117127..3edbcacf67d8f 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-03-26 +date: 2024-03-28 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 58092dbe01a02..b2c98809f6269 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-03-26 +date: 2024-03-28 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 3a29382f6d683..3358ec4d9f786 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-03-26 +date: 2024-03-28 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 a6e3e06957a34..b053d8c388ab1 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-services'] --- import kbnFtrCommonFunctionalServicesObj from './kbn_ftr_common_functional_services.devdocs.json'; diff --git a/api_docs/kbn_ftr_common_functional_ui_services.mdx b/api_docs/kbn_ftr_common_functional_ui_services.mdx index 3151735c1a803..7cd1a1dfa0b87 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ftr-common-functional-ui-services'] --- import kbnFtrCommonFunctionalUiServicesObj from './kbn_ftr_common_functional_ui_services.devdocs.json'; diff --git a/api_docs/kbn_generate.mdx b/api_docs/kbn_generate.mdx index e83c3fe8f26e2..d62d67b87b14e 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-03-26 +date: 2024-03-28 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 f2fb3d3e94592..95b1d1fab9c92 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-03-26 +date: 2024-03-28 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 e88d8a6911158..c3202b0c1ba4c 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-03-26 +date: 2024-03-28 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 89fbf3c279549..865437c254835 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-03-26 +date: 2024-03-28 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 3fea89c1e4dcb..b1c431bdecdce 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-03-26 +date: 2024-03-28 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 d701d8fd45ee7..0eebda34fbec7 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-03-26 +date: 2024-03-28 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 d7efae3f52911..2959bebe892b1 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-03-26 +date: 2024-03-28 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 43a4183b4482a..5b3710a429ee8 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-03-26 +date: 2024-03-28 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 d3d9d2e35f7f3..2fcb4d0eee50a 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-03-26 +date: 2024-03-28 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 5660b3472aa35..feb564a94ef97 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-03-26 +date: 2024-03-28 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 818b1b9f41901..f42c37e7d20e1 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-03-26 +date: 2024-03-28 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 a0de4421aafdf..ed27d6d4b5c4d 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-03-26 +date: 2024-03-28 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 76d8e6bcfbe71..2dbf467934376 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-03-26 +date: 2024-03-28 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 b69e5d9f66b6d..3fb3235a7c8cf 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-03-26 +date: 2024-03-28 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 77231ebf96e2b..67e6811a0b572 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-03-26 +date: 2024-03-28 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 9e279901e5e09..ec960ca628b39 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-03-26 +date: 2024-03-28 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 26fb186b5bb32..062db28ac6c2b 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-03-26 +date: 2024-03-28 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 b5c5bc5a86161..9c3b2e0c8c40f 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-03-26 +date: 2024-03-28 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 3091c0a27fd01..0dd4c65bacc81 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-03-26 +date: 2024-03-28 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 386aa8fb374c2..97ecb10e77807 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,14 +8,14 @@ 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; -Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) for questions regarding this plugin. +Contact [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 3eb8f95d2522f..254dcb8f4c40f 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-03-26 +date: 2024-03-28 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 6b1bb111405c2..2618081164c36 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-03-26 +date: 2024-03-28 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 34789bc454b0f..d4f8d14ea93b1 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-03-26 +date: 2024-03-28 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 6bf63ce4b0640..72f4c266a7207 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-03-26 +date: 2024-03-28 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 b7ae564dc8bfb..4c89535d91e5c 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-03-26 +date: 2024-03-28 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 fcd2ea5a6ff93..c690e1f32e71a 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-03-26 +date: 2024-03-28 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 140fe0b3887b7..34d52fb503e3c 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-03-26 +date: 2024-03-28 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 a80ea34de6bea..30f14957b58cf 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-03-26 +date: 2024-03-28 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 8b0013a9cdd17..9f0fcabeb4a1a 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-03-26 +date: 2024-03-28 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 c338522113444..b073942451653 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-03-26 +date: 2024-03-28 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 cab2911fa9d2c..5f058ae0b0912 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-03-26 +date: 2024-03-28 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 b3793abd86f17..b22cfe1aa5252 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-03-26 +date: 2024-03-28 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 7c56c6ff37f71..82fac47e0479b 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-03-26 +date: 2024-03-28 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.devdocs.json b/api_docs/kbn_management_settings_ids.devdocs.json index 3fb03f8e0f772..82c7969bda441 100644 --- a/api_docs/kbn_management_settings_ids.devdocs.json +++ b/api_docs/kbn_management_settings_ids.devdocs.json @@ -1177,6 +1177,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/management-settings-ids", + "id": "def-common.OBSERVABILITY_APM_ENABLE_SERVICE_INVENTORY_TABLE_SEARCH_BAR", + "type": "string", + "tags": [], + "label": "OBSERVABILITY_APM_ENABLE_SERVICE_INVENTORY_TABLE_SEARCH_BAR", + "description": [], + "signature": [ + "\"observability:apmEnableServiceInventoryTableSearchBar\"" + ], + "path": "packages/kbn-management/settings/setting_ids/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/management-settings-ids", "id": "def-common.OBSERVABILITY_APM_ENABLE_SERVICE_METRICS_ID", diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index f70ecf9b65660..4122907f40d7e 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux @elastic/kibana-management](https://github.com/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 136 | 0 | 133 | 0 | +| 137 | 0 | 134 | 0 | ## Common diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index d389f5266b816..335a0936288ba 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-03-26 +date: 2024-03-28 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 328b23332de7b..aae44be8b5ccf 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-03-26 +date: 2024-03-28 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 ce8edc22e8f84..ea71bd2ecd710 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-03-26 +date: 2024-03-28 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 556cf56a5aa8c..da052f646183c 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-03-26 +date: 2024-03-28 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 6d24ca2416f43..9f9940e6c024e 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-03-26 +date: 2024-03-28 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 c9deb4d1712d4..4ec1492d17147 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-03-26 +date: 2024-03-28 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 f400fcc990324..14f57f137647c 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-03-26 +date: 2024-03-28 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 3b84338411887..d4dbe1ba87186 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-03-26 +date: 2024-03-28 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 d7b7413ea162f..398ea8c2264a2 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-03-26 +date: 2024-03-28 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 0d9ac32afe0b9..0d481eb02ef8d 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-03-26 +date: 2024-03-28 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 90d5347b06d0a..fa460ddd94674 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-03-26 +date: 2024-03-28 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 7962634b730fc..28600425269e3 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-03-26 +date: 2024-03-28 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 6860c170487e0..691d4bbfcf4d8 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-03-26 +date: 2024-03-28 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 cfaaeaa7f52ae..313414a584889 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-03-26 +date: 2024-03-28 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 b62e2bcbcdd94..74a10940f27ba 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-03-26 +date: 2024-03-28 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 c6e8da8ea4f4d..f9abe74b977c4 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-03-26 +date: 2024-03-28 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 8cf1c681c7b92..2cdc284182b8c 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-03-26 +date: 2024-03-28 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 36d1eabfb9dbc..949226e5f4b62 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-03-26 +date: 2024-03-28 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 799c47c6286ca..3467a5dc6dfec 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-03-26 +date: 2024-03-28 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 a26af2b05b1de..c53c640c8e5d8 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-03-26 +date: 2024-03-28 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 4cb94061cc7ca..db4dbe8851897 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-03-26 +date: 2024-03-28 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 24ef9998af50a..a82dd865679e3 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-03-26 +date: 2024-03-28 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 b55f268640706..816b8f2721dc6 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-03-26 +date: 2024-03-28 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 c1779f7763aca..519cdf948fe99 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-03-26 +date: 2024-03-28 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 669ff4ace47af..ecc3b390e28f1 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-03-26 +date: 2024-03-28 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 419ddd2461e21..c4e71999c67b1 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-03-26 +date: 2024-03-28 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 a72073e48f60e..ce8407235c754 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-03-26 +date: 2024-03-28 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 f75b87b7f08e7..8e7aed95c69a3 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_time_buckets.mdx b/api_docs/kbn_ml_time_buckets.mdx index fc505e026e5d8..91bd5c8acba0b 100644 --- a/api_docs/kbn_ml_time_buckets.mdx +++ b/api_docs/kbn_ml_time_buckets.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ml-time-buckets title: "@kbn/ml-time-buckets" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ml-time-buckets plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-time-buckets'] --- import kbnMlTimeBucketsObj from './kbn_ml_time_buckets.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index cd2b74e0812a7..46a607e89c4e2 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-03-26 +date: 2024-03-28 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 2e4a701f52556..baed30e003558 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-03-26 +date: 2024-03-28 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 708c2148279b6..f4d7446979797 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-03-26 +date: 2024-03-28 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 696dd6628c928..bfbf6f5087c5a 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-03-26 +date: 2024-03-28 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.devdocs.json b/api_docs/kbn_monaco.devdocs.json index e3ab9d27a3d3f..73ac68935c52b 100644 --- a/api_docs/kbn_monaco.devdocs.json +++ b/api_docs/kbn_monaco.devdocs.json @@ -147,8 +147,8 @@ "pluginId": "@kbn/monaco", "scope": "common", "docId": "kibKbnMonacoPluginApi", - "section": "def-common.EditorError", - "text": "EditorError" + "section": "def-common.MonacoEditorError", + "text": "MonacoEditorError" }, "[] | undefined>" ], @@ -333,103 +333,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/monaco", - "id": "def-common.EditorError", - "type": "Interface", - "tags": [], - "label": "EditorError", - "description": [], - "path": "packages/kbn-monaco/src/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/monaco", - "id": "def-common.EditorError.severity", - "type": "Enum", - "tags": [], - "label": "severity", - "description": [], - "signature": [ - "MarkerSeverity" - ], - "path": "packages/kbn-monaco/src/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/monaco", - "id": "def-common.EditorError.startLineNumber", - "type": "number", - "tags": [], - "label": "startLineNumber", - "description": [], - "path": "packages/kbn-monaco/src/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/monaco", - "id": "def-common.EditorError.startColumn", - "type": "number", - "tags": [], - "label": "startColumn", - "description": [], - "path": "packages/kbn-monaco/src/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/monaco", - "id": "def-common.EditorError.endLineNumber", - "type": "number", - "tags": [], - "label": "endLineNumber", - "description": [], - "path": "packages/kbn-monaco/src/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/monaco", - "id": "def-common.EditorError.endColumn", - "type": "number", - "tags": [], - "label": "endColumn", - "description": [], - "path": "packages/kbn-monaco/src/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/monaco", - "id": "def-common.EditorError.message", - "type": "string", - "tags": [], - "label": "message", - "description": [], - "path": "packages/kbn-monaco/src/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/monaco", - "id": "def-common.EditorError.code", - "type": "string", - "tags": [], - "label": "code", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "packages/kbn-monaco/src/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/monaco", "id": "def-common.ESQLCallbacks", @@ -437,7 +340,7 @@ "tags": [], "label": "ESQLCallbacks", "description": [], - "path": "packages/kbn-monaco/src/esql/lib/ast/shared/types.ts", + "path": "packages/kbn-esql-validation-autocomplete/src/shared/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -451,7 +354,7 @@ "signature": [ "CallbackFn<{}, { name: string; hidden: boolean; }> | undefined" ], - "path": "packages/kbn-monaco/src/esql/lib/ast/shared/types.ts", + "path": "packages/kbn-esql-validation-autocomplete/src/shared/types.ts", "deprecated": false, "trackAdoption": false }, @@ -465,7 +368,7 @@ "signature": [ "CallbackFn<{ query: string; }, { name: string; type: string; }> | undefined" ], - "path": "packages/kbn-monaco/src/esql/lib/ast/shared/types.ts", + "path": "packages/kbn-esql-validation-autocomplete/src/shared/types.ts", "deprecated": false, "trackAdoption": false }, @@ -479,7 +382,7 @@ "signature": [ "CallbackFn<{}, string> | undefined" ], - "path": "packages/kbn-monaco/src/esql/lib/ast/shared/types.ts", + "path": "packages/kbn-esql-validation-autocomplete/src/shared/types.ts", "deprecated": false, "trackAdoption": false }, @@ -493,35 +396,7 @@ "signature": [ "CallbackFn<{}, { name: string; sourceIndices: string[]; matchField: string; enrichFields: string[]; }> | undefined" ], - "path": "packages/kbn-monaco/src/esql/lib/ast/shared/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/monaco", - "id": "def-common.ESQLCallbacks.getPolicyFields", - "type": "Function", - "tags": [], - "label": "getPolicyFields", - "description": [], - "signature": [ - "CallbackFn<{}, string> | undefined" - ], - "path": "packages/kbn-monaco/src/esql/lib/ast/shared/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/monaco", - "id": "def-common.ESQLCallbacks.getPolicyMatchingField", - "type": "Function", - "tags": [], - "label": "getPolicyMatchingField", - "description": [], - "signature": [ - "CallbackFn<{}, string> | undefined" - ], - "path": "packages/kbn-monaco/src/esql/lib/ast/shared/types.ts", + "path": "packages/kbn-esql-validation-autocomplete/src/shared/types.ts", "deprecated": false, "trackAdoption": false } @@ -871,8 +746,8 @@ "pluginId": "@kbn/monaco", "scope": "common", "docId": "kibKbnMonacoPluginApi", - "section": "def-common.EditorError", - "text": "EditorError" + "section": "def-common.MonacoEditorError", + "text": "MonacoEditorError" }, "[]" ], @@ -883,6 +758,103 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.MonacoEditorError", + "type": "Interface", + "tags": [], + "label": "MonacoEditorError", + "description": [], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.MonacoEditorError.severity", + "type": "Enum", + "tags": [], + "label": "severity", + "description": [], + "signature": [ + "MarkerSeverity" + ], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.MonacoEditorError.startLineNumber", + "type": "number", + "tags": [], + "label": "startLineNumber", + "description": [], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.MonacoEditorError.startColumn", + "type": "number", + "tags": [], + "label": "startColumn", + "description": [], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.MonacoEditorError.endLineNumber", + "type": "number", + "tags": [], + "label": "endLineNumber", + "description": [], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.MonacoEditorError.endColumn", + "type": "number", + "tags": [], + "label": "endColumn", + "description": [], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.MonacoEditorError.message", + "type": "string", + "tags": [], + "label": "message", + "description": [], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.MonacoEditorError.code", + "type": "string", + "tags": [], + "label": "code", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "packages/kbn-monaco/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/monaco", "id": "def-common.PainlessAutocompleteField", @@ -1056,7 +1028,7 @@ "id": "def-common.SyntaxErrors.Unnamed", "type": "IndexSignature", "tags": [], - "label": "[modelId: string]: EditorError[]", + "label": "[modelId: string]: MonacoEditorError[]", "description": [], "signature": [ "[modelId: string]: ", @@ -1064,8 +1036,8 @@ "pluginId": "@kbn/monaco", "scope": "common", "docId": "kibKbnMonacoPluginApi", - "section": "def-common.EditorError", - "text": "EditorError" + "section": "def-common.MonacoEditorError", + "text": "MonacoEditorError" }, "[]" ], @@ -1094,6 +1066,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/monaco", + "id": "def-common.CONSOLE_THEME_ID", + "type": "string", + "tags": [], + "label": "CONSOLE_THEME_ID", + "description": [], + "signature": [ + "\"consoleTheme\"" + ], + "path": "packages/kbn-monaco/src/console/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/monaco", "id": "def-common.ESQL_LANG_ID", @@ -1276,9 +1263,9 @@ "editor", ".ITextModel, code: string, callbacks?: ", { - "pluginId": "@kbn/monaco", + "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", - "docId": "kibKbnMonacoPluginApi", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, @@ -1287,16 +1274,16 @@ "pluginId": "@kbn/monaco", "scope": "common", "docId": "kibKbnMonacoPluginApi", - "section": "def-common.EditorError", - "text": "EditorError" + "section": "def-common.MonacoEditorError", + "text": "MonacoEditorError" }, "[]; warnings: ", { "pluginId": "@kbn/monaco", "scope": "common", "docId": "kibKbnMonacoPluginApi", - "section": "def-common.EditorError", - "text": "EditorError" + "section": "def-common.MonacoEditorError", + "text": "MonacoEditorError" }, "[]; }>" ], @@ -1344,9 +1331,9 @@ "description": [], "signature": [ { - "pluginId": "@kbn/monaco", + "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", - "docId": "kibKbnMonacoPluginApi", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, @@ -1370,9 +1357,9 @@ "signature": [ "(callbacks?: ", { - "pluginId": "@kbn/monaco", + "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", - "docId": "kibKbnMonacoPluginApi", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, @@ -1393,9 +1380,9 @@ "description": [], "signature": [ { - "pluginId": "@kbn/monaco", + "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", - "docId": "kibKbnMonacoPluginApi", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, @@ -1419,9 +1406,9 @@ "signature": [ "(callbacks?: ", { - "pluginId": "@kbn/monaco", + "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", - "docId": "kibKbnMonacoPluginApi", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, @@ -1442,9 +1429,9 @@ "description": [], "signature": [ { - "pluginId": "@kbn/monaco", + "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", - "docId": "kibKbnMonacoPluginApi", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, @@ -1468,9 +1455,9 @@ "signature": [ "(callbacks?: ", { - "pluginId": "@kbn/monaco", + "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", - "docId": "kibKbnMonacoPluginApi", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, @@ -1491,9 +1478,9 @@ "description": [], "signature": [ { - "pluginId": "@kbn/monaco", + "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", - "docId": "kibKbnMonacoPluginApi", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, @@ -1517,9 +1504,9 @@ "signature": [ "(callbacks?: ", { - "pluginId": "@kbn/monaco", + "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", - "docId": "kibKbnMonacoPluginApi", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, @@ -1540,9 +1527,9 @@ "description": [], "signature": [ { - "pluginId": "@kbn/monaco", + "pluginId": "@kbn/esql-validation-autocomplete", "scope": "common", - "docId": "kibKbnMonacoPluginApi", + "docId": "kibKbnEsqlValidationAutocompletePluginApi", "section": "def-common.ESQLCallbacks", "text": "ESQLCallbacks" }, diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 5b8aafce528e8..b0d105cae9887 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 106 | 0 | 106 | 2 | +| 105 | 0 | 105 | 2 | ## Common diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 98cf4c3651b78..2452f93bef570 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-03-26 +date: 2024-03-28 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 cb22801d142a1..de65a42ca9449 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-03-26 +date: 2024-03-28 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 c9ccb967bffe2..598fa951454cc 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-03-26 +date: 2024-03-28 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 458c670ea15c7..0440ab7155e1c 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-03-26 +date: 2024-03-28 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 503b5763ac1cb..8f73c839ddc39 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-03-26 +date: 2024-03-28 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 f6197155ebc03..db29e1a0fdc50 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-03-26 +date: 2024-03-28 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 81bcfa3c0da57..fa85f87bcae17 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-03-26 +date: 2024-03-28 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 ae3bff92e0f4a..a1cf3e4beec5c 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-03-26 +date: 2024-03-28 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 c950eba34628f..90718f6c3b8a4 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-03-26 +date: 2024-03-28 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.devdocs.json b/api_docs/kbn_panel_loader.devdocs.json index 5282b2609136d..74454cf0c107b 100644 --- a/api_docs/kbn_panel_loader.devdocs.json +++ b/api_docs/kbn_panel_loader.devdocs.json @@ -11,7 +11,7 @@ "label": "PanelLoader", "description": [], "signature": [ - "(props: { showShadow?: boolean | undefined; dataTestSubj?: string | undefined; }) => JSX.Element" + "(props: { showShadow?: boolean | undefined; showBorder?: boolean | undefined; dataTestSubj?: string | undefined; }) => JSX.Element" ], "path": "packages/kbn-panel-loader/index.tsx", "deprecated": false, @@ -42,6 +42,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "@kbn/panel-loader", + "id": "def-public.PanelLoader.$1.showBorder", + "type": "CompoundType", + "tags": [], + "label": "showBorder", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-panel-loader/index.tsx", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "@kbn/panel-loader", "id": "def-public.PanelLoader.$1.dataTestSubj", diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 2612b8b0b4d3c..2338096fc01e0 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 4 | 0 | 4 | 0 | +| 5 | 0 | 5 | 0 | ## Client diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 916ea107308ae..bb6e5b622d4ce 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-03-26 +date: 2024-03-28 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 f03a5065ef2b8..72ff4413a1122 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-03-26 +date: 2024-03-28 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 b29dea5c30eef..fad33e4b368c2 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-03-26 +date: 2024-03-28 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 d41fc93e678e5..126aa485d24bd 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.devdocs.json b/api_docs/kbn_presentation_containers.devdocs.json index edccee7f208c4..a69cf9cbe4d21 100644 --- a/api_docs/kbn_presentation_containers.devdocs.json +++ b/api_docs/kbn_presentation_containers.devdocs.json @@ -387,57 +387,6 @@ ], "returnComment": [], "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-common.useExpandedPanelId", - "type": "Function", - "tags": [], - "label": "useExpandedPanelId", - "description": [ - "\nGets this API's expanded panel state as a reactive variable which will cause re-renders on change." - ], - "signature": [ - "(api: Partial<", - { - "pluginId": "@kbn/presentation-containers", - "scope": "common", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.CanExpandPanels", - "text": "CanExpandPanels" - }, - "> | undefined) => string | undefined" - ], - "path": "packages/presentation/presentation_containers/interfaces/panel_management.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-containers", - "id": "def-common.useExpandedPanelId.$1", - "type": "Object", - "tags": [], - "label": "api", - "description": [], - "signature": [ - "Partial<", - { - "pluginId": "@kbn/presentation-containers", - "scope": "common", - "docId": "kibKbnPresentationContainersPluginApi", - "section": "def-common.CanExpandPanels", - "text": "CanExpandPanels" - }, - "> | undefined" - ], - "path": "packages/presentation/presentation_containers/interfaces/panel_management.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false } ], "interfaces": [ diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index af20a6d99663a..0cd6d292c4a5b 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 46 | 0 | 44 | 0 | +| 44 | 0 | 43 | 0 | ## Common diff --git a/api_docs/kbn_presentation_library.devdocs.json b/api_docs/kbn_presentation_library.devdocs.json deleted file mode 100644 index 1de4d5190196f..0000000000000 --- a/api_docs/kbn_presentation_library.devdocs.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "id": "@kbn/presentation-library", - "client": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "server": { - "classes": [], - "functions": [], - "interfaces": [], - "enums": [], - "misc": [], - "objects": [] - }, - "common": { - "classes": [], - "functions": [ - { - "parentPluginId": "@kbn/presentation-library", - "id": "def-common.apiCanLinkToLibrary", - "type": "Function", - "tags": [], - "label": "apiCanLinkToLibrary", - "description": [], - "signature": [ - "(api: unknown) => api is ", - { - "pluginId": "@kbn/presentation-library", - "scope": "common", - "docId": "kibKbnPresentationLibraryPluginApi", - "section": "def-common.CanLinkToLibrary", - "text": "CanLinkToLibrary" - } - ], - "path": "packages/presentation/presentation_library/interfaces/can_link_to_library.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-library", - "id": "def-common.apiCanLinkToLibrary.$1", - "type": "Unknown", - "tags": [], - "label": "api", - "description": [], - "signature": [ - "unknown" - ], - "path": "packages/presentation/presentation_library/interfaces/can_link_to_library.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-library", - "id": "def-common.apiCanUnlinkFromLibrary", - "type": "Function", - "tags": [], - "label": "apiCanUnlinkFromLibrary", - "description": [], - "signature": [ - "(api: unknown) => api is ", - { - "pluginId": "@kbn/presentation-library", - "scope": "common", - "docId": "kibKbnPresentationLibraryPluginApi", - "section": "def-common.CanUnlinkFromLibrary", - "text": "CanUnlinkFromLibrary" - } - ], - "path": "packages/presentation/presentation_library/interfaces/can_unlink_from_library.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-library", - "id": "def-common.apiCanUnlinkFromLibrary.$1", - "type": "Unknown", - "tags": [], - "label": "api", - "description": [], - "signature": [ - "unknown" - ], - "path": "packages/presentation/presentation_library/interfaces/can_unlink_from_library.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - } - ], - "interfaces": [ - { - "parentPluginId": "@kbn/presentation-library", - "id": "def-common.CanLinkToLibrary", - "type": "Interface", - "tags": [], - "label": "CanLinkToLibrary", - "description": [], - "path": "packages/presentation/presentation_library/interfaces/can_link_to_library.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-library", - "id": "def-common.CanLinkToLibrary.canLinkToLibrary", - "type": "Function", - "tags": [], - "label": "canLinkToLibrary", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "packages/presentation/presentation_library/interfaces/can_link_to_library.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/presentation-library", - "id": "def-common.CanLinkToLibrary.linkToLibrary", - "type": "Function", - "tags": [], - "label": "linkToLibrary", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "packages/presentation/presentation_library/interfaces/can_link_to_library.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-library", - "id": "def-common.CanUnlinkFromLibrary", - "type": "Interface", - "tags": [], - "label": "CanUnlinkFromLibrary", - "description": [], - "path": "packages/presentation/presentation_library/interfaces/can_unlink_from_library.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-library", - "id": "def-common.CanUnlinkFromLibrary.canUnlinkFromLibrary", - "type": "Function", - "tags": [], - "label": "canUnlinkFromLibrary", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "packages/presentation/presentation_library/interfaces/can_unlink_from_library.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "@kbn/presentation-library", - "id": "def-common.CanUnlinkFromLibrary.unlinkFromLibrary", - "type": "Function", - "tags": [], - "label": "unlinkFromLibrary", - "description": [], - "signature": [ - "() => Promise" - ], - "path": "packages/presentation/presentation_library/interfaces/can_unlink_from_library.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - } - ], - "initialIsOpen": false - } - ], - "enums": [], - "misc": [], - "objects": [] - } -} \ No newline at end of file diff --git a/api_docs/kbn_presentation_library.mdx b/api_docs/kbn_presentation_library.mdx deleted file mode 100644 index 37e58255e6807..0000000000000 --- a/api_docs/kbn_presentation_library.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -#### -#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. -#### Reach out in #docs-engineering for more info. -#### -id: kibKbnPresentationLibraryPluginApi -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-03-26 -tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-library'] ---- -import kbnPresentationLibraryObj from './kbn_presentation_library.devdocs.json'; - - - -Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) for questions regarding this plugin. - -**Code health stats** - -| Public API count | Any count | Items lacking comments | Missing exports | -|-------------------|-----------|------------------------|-----------------| -| 10 | 0 | 10 | 0 | - -## Common - -### Functions - - -### Interfaces - - diff --git a/api_docs/kbn_presentation_publishing.devdocs.json b/api_docs/kbn_presentation_publishing.devdocs.json index b54a48603b9c1..3079d09e14cc1 100644 --- a/api_docs/kbn_presentation_publishing.devdocs.json +++ b/api_docs/kbn_presentation_publishing.devdocs.json @@ -101,6 +101,107 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.apiHasLegacyLibraryTransforms", + "type": "Function", + "tags": [ + "deprecated" + ], + "label": "apiHasLegacyLibraryTransforms", + "description": [], + "signature": [ + "(unknownApi: unknown) => unknownApi is ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.HasLegacyLibraryTransforms", + "text": "HasLegacyLibraryTransforms" + } + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx" + } + ], + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.apiHasLegacyLibraryTransforms.$1", + "type": "Unknown", + "tags": [], + "label": "unknownApi", + "description": [], + "signature": [ + "unknown" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.apiHasLibraryTransforms", + "type": "Function", + "tags": [], + "label": "apiHasLibraryTransforms", + "description": [], + "signature": [ + "(unknownApi: unknown) => unknownApi is ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.HasLibraryTransforms", + "text": "HasLibraryTransforms" + }, + "" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.apiHasLibraryTransforms.$1", + "type": "Unknown", + "tags": [], + "label": "unknownApi", + "description": [], + "signature": [ + "unknown" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-publishing", "id": "def-common.apiHasParentApi", @@ -1536,502 +1637,36 @@ "type": "Function", "tags": [], "label": "useBatchedPublishingSubjects", - "description": [ - "\nBatches the latest values of multiple publishing subjects into a single object. Use this to avoid unnecessary re-renders.\nYou should avoid using this hook with subjects that your component pushes values to on user interaction, as it can cause a slight delay." - ], - "signature": [ - "(...subjects_0: SubjectsType) => ", - "UnwrapPublishingSubjectTuple", - "" - ], - "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useBatchedPublishingSubjects.$1", - "type": "Object", - "tags": [], - "label": "subjects", - "description": [], - "signature": [ - "[...SubjectsType]" - ], - "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useBlockingError", - "type": "Function", - "tags": [], - "label": "useBlockingError", - "description": [ - "\nGets this API's fatal error as a reactive variable which will cause re-renders on change." - ], - "signature": [ - "(api: Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesBlockingError", - "text": "PublishesBlockingError" - }, - "> | undefined) => Error | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_blocking_error.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useBlockingError.$1", - "type": "Object", - "tags": [], - "label": "api", - "description": [], - "signature": [ - "Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesBlockingError", - "text": "PublishesBlockingError" - }, - "> | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_blocking_error.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useDataLoading", - "type": "Function", - "tags": [], - "label": "useDataLoading", - "description": [ - "\nGets this API's data loading state as a reactive variable which will cause re-renders on change." - ], - "signature": [ - "(api: Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesDataLoading", - "text": "PublishesDataLoading" - }, - "> | undefined) => boolean | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_data_loading.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useDataLoading.$1", - "type": "Object", - "tags": [], - "label": "api", - "description": [], - "signature": [ - "Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesDataLoading", - "text": "PublishesDataLoading" - }, - "> | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_data_loading.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useDataViews", - "type": "Function", - "tags": [], - "label": "useDataViews", - "description": [ - "\nGets this API's data views as a reactive variable which will cause re-renders on change." - ], - "signature": [ - "(api: Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesDataViews", - "text": "PublishesDataViews" - }, - "> | undefined) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - "[] | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_data_views.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useDataViews.$1", - "type": "Object", - "tags": [], - "label": "api", - "description": [], - "signature": [ - "Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesDataViews", - "text": "PublishesDataViews" - }, - "> | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_data_views.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useDefaultPanelDescription", - "type": "Function", - "tags": [], - "label": "useDefaultPanelDescription", - "description": [ - "\nA hook that gets this API's default panel description as a reactive variable which will cause re-renders on change." - ], - "signature": [ - "(api: Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesPanelDescription", - "text": "PublishesPanelDescription" - }, - "> | undefined) => string | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useDefaultPanelDescription.$1", - "type": "Object", - "tags": [], - "label": "api", - "description": [], - "signature": [ - "Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesPanelDescription", - "text": "PublishesPanelDescription" - }, - "> | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useDisabledActionIds", - "type": "Function", - "tags": [], - "label": "useDisabledActionIds", - "description": [ - "\nGets this API's disabled action IDs as a reactive variable which will cause re-renders on change." - ], - "signature": [ - "(api: Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesDisabledActionIds", - "text": "PublishesDisabledActionIds" - }, - "> | undefined) => string[] | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_disabled_action_ids.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useDisabledActionIds.$1", - "type": "Object", - "tags": [], - "label": "api", - "description": [], - "signature": [ - "Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesDisabledActionIds", - "text": "PublishesDisabledActionIds" - }, - "> | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_disabled_action_ids.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useInheritedViewMode", - "type": "Function", - "tags": [], - "label": "useInheritedViewMode", - "description": [ - "\nA hook that gets a view mode from this API or its parent as a reactive variable which will cause re-renders on change.\nif this api has a view mode AND its parent has a view mode, we consider the APIs version the source of truth." - ], - "signature": [ - "(api: ApiType | undefined) => ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.ViewMode", - "text": "ViewMode" - }, - " | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/can_access_view_mode.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useInheritedViewMode.$1", - "type": "Uncategorized", - "tags": [], - "label": "api", - "description": [], - "signature": [ - "ApiType | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/can_access_view_mode.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.usePanelDescription", - "type": "Function", - "tags": [], - "label": "usePanelDescription", - "description": [ - "\nA hook that gets this API's panel description as a reactive variable which will cause re-renders on change." - ], - "signature": [ - "(api: Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesPanelDescription", - "text": "PublishesPanelDescription" - }, - "> | undefined) => string | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.usePanelDescription.$1", - "type": "Object", - "tags": [], - "label": "api", - "description": [], - "signature": [ - "Partial<", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesPanelDescription", - "text": "PublishesPanelDescription" - }, - "> | undefined" - ], - "path": "packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.usePublishingSubject", - "type": "Function", - "tags": [], - "label": "usePublishingSubject", - "description": [ - "\nDeclares a publishing subject, allowing external code to subscribe to react state changes.\nChanges to state fire subject.next" - ], - "signature": [ - "(state: T) => ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishingSubject", - "text": "PublishingSubject" - }, - "" - ], - "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.usePublishingSubject.$1", - "type": "Uncategorized", - "tags": [], - "label": "state", - "description": [ - "React state from useState hook." - ], - "signature": [ - "T" - ], - "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [], - "initialIsOpen": false - }, - { - "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useSavedObjectId", - "type": "Function", - "tags": [], - "label": "useSavedObjectId", - "description": [ - "\nA hook that gets this API's saved object ID as a reactive variable which will cause re-renders on change." - ], - "signature": [ - "(api: ", - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesSavedObjectId", - "text": "PublishesSavedObjectId" - }, - " | undefined) => string | undefined" + "description": [ + "\nBatches the latest values of multiple publishing subjects into a single object. Use this to avoid unnecessary re-renders.\nYou should avoid using this hook with subjects that your component pushes values to on user interaction, as it can cause a slight delay." ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_saved_object_id.ts", + "signature": [ + "(...subjects_0: SubjectsType) => ", + "UnwrapPublishingSubjectTuple", + "" + ], + "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useSavedObjectId.$1", + "id": "def-common.useBatchedPublishingSubjects.$1", "type": "Object", "tags": [], - "label": "api", - "description": [], + "label": "subjects", + "description": [ + "Publishing subjects array.\nWhen 'subjects' is expected to change, 'subjects' must be part of component react state." + ], "signature": [ - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesSavedObjectId", - "text": "PublishesSavedObjectId" - }, - " | undefined" + "[...SubjectsType]" ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_saved_object_id.ts", + "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts", "deprecated": false, "trackAdoption": false, - "isRequired": false + "isRequired": true } ], "returnComment": [], @@ -2039,54 +1674,58 @@ }, { "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useStateFromPublishingSubject", + "id": "def-common.useInheritedViewMode", "type": "Function", "tags": [], - "label": "useStateFromPublishingSubject", + "label": "useInheritedViewMode", "description": [ - "\nDeclares a state variable that is synced with a publishing subject value." + "\nA hook that gets a view mode from this API or its parent as a reactive variable which will cause re-renders on change.\nif this api has a view mode AND its parent has a view mode, we consider the APIs version the source of truth." ], "signature": [ - " | undefined = ", + " = ", { "pluginId": "@kbn/presentation-publishing", "scope": "common", "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishingSubject", - "text": "PublishingSubject" + "section": "def-common.CanAccessViewMode", + "text": "CanAccessViewMode" }, - " | undefined>(subject: SubjectType) => ", - "ValueFromPublishingSubject", - "" + ">(api: ApiType | undefined) => ", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.ViewMode", + "text": "ViewMode" + }, + " | undefined" ], - "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", + "path": "packages/presentation/presentation_publishing/interfaces/can_access_view_mode.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useStateFromPublishingSubject.$1", + "id": "def-common.useInheritedViewMode.$1", "type": "Uncategorized", "tags": [], - "label": "subject", - "description": [ - "Publishing subject." - ], + "label": "api", + "description": [], "signature": [ - "SubjectType" + "ApiType | undefined" ], - "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", + "path": "packages/presentation/presentation_publishing/interfaces/can_access_view_mode.ts", "deprecated": false, "trackAdoption": false, - "isRequired": true + "isRequired": false } ], "returnComment": [], @@ -2094,49 +1733,44 @@ }, { "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useUnsavedChanges", + "id": "def-common.usePublishingSubject", "type": "Function", "tags": [], - "label": "useUnsavedChanges", + "label": "usePublishingSubject", "description": [ - "\nA hook that gets this API's unsaved changes as a reactive variable which will cause re-renders on change." + "\nDeclares a publishing subject, allowing external code to subscribe to react state changes.\nChanges to state fire subject.next" ], "signature": [ - "(api: ", + "(state: T) => ", { "pluginId": "@kbn/presentation-publishing", "scope": "common", "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesUnsavedChanges", - "text": "PublishesUnsavedChanges" + "section": "def-common.PublishingSubject", + "text": "PublishingSubject" }, - " | undefined) => object | undefined" + "" ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts", + "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useUnsavedChanges.$1", - "type": "Object", + "id": "def-common.usePublishingSubject.$1", + "type": "Uncategorized", "tags": [], - "label": "api", - "description": [], + "label": "state", + "description": [ + "React state from useState hook." + ], "signature": [ - { - "pluginId": "@kbn/presentation-publishing", - "scope": "common", - "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.PublishesUnsavedChanges", - "text": "PublishesUnsavedChanges" - }, - " | undefined" + "T" ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts", + "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", "deprecated": false, "trackAdoption": false, - "isRequired": false + "isRequired": true } ], "returnComment": [], @@ -2144,58 +1778,54 @@ }, { "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useViewMode", + "id": "def-common.useStateFromPublishingSubject", "type": "Function", "tags": [], - "label": "useViewMode", + "label": "useStateFromPublishingSubject", "description": [ - "\nA hook that gets this API's view mode as a reactive variable which will cause re-renders on change." + "\nDeclares a state variable that is synced with a publishing subject value." ], "signature": [ - " = Partial<", + ">(api: ApiType | undefined) => ", + " | undefined = ", { "pluginId": "@kbn/presentation-publishing", "scope": "common", "docId": "kibKbnPresentationPublishingPluginApi", - "section": "def-common.ViewMode", - "text": "ViewMode" + "section": "def-common.PublishingSubject", + "text": "PublishingSubject" }, - " | undefined" + " | undefined>(subject: SubjectType) => ", + "ValueFromPublishingSubject", + "" ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts", + "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", "deprecated": false, "trackAdoption": false, "children": [ { "parentPluginId": "@kbn/presentation-publishing", - "id": "def-common.useViewMode.$1", + "id": "def-common.useStateFromPublishingSubject.$1", "type": "Uncategorized", "tags": [], - "label": "api", - "description": [], + "label": "subject", + "description": [ + "Publishing subject.\nWhen 'subject' is expected to change, 'subject' must be part of component react state." + ], "signature": [ - "ApiType | undefined" + "SubjectType" ], - "path": "packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts", + "path": "packages/presentation/presentation_publishing/publishing_subject/publishing_subject.ts", "deprecated": false, "trackAdoption": false, - "isRequired": false + "isRequired": true } ], "returnComment": [], @@ -2339,6 +1969,188 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLibraryTransforms", + "type": "Interface", + "tags": [], + "label": "HasLibraryTransforms", + "description": [], + "signature": [ + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.HasLibraryTransforms", + "text": "HasLibraryTransforms" + }, + "" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLibraryTransforms.canLinkToLibrary", + "type": "Function", + "tags": [], + "label": "canLinkToLibrary", + "description": [ + "\n" + ], + "signature": [ + "() => Promise" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [ + "True when embeddable is by-value and can be converted to by-reference" + ] + }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLibraryTransforms.saveStateToSavedObject", + "type": "Function", + "tags": [], + "label": "saveStateToSavedObject", + "description": [ + "\nSaves embeddable to library\n" + ], + "signature": [ + "(title: string) => Promise<{ state: StateT; savedObjectId: string; }>" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLibraryTransforms.saveStateToSavedObject.$1", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "signature": [ + "string" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "state: by-reference embeddable state replacing by-value embeddable state\nsavedObjectId: Saved object id for new saved object added to library" + ] + }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLibraryTransforms.checkForDuplicateTitle", + "type": "Function", + "tags": [], + "label": "checkForDuplicateTitle", + "description": [], + "signature": [ + "(newTitle: string, isTitleDuplicateConfirmed: boolean, onTitleDuplicate: () => void) => Promise" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLibraryTransforms.checkForDuplicateTitle.$1", + "type": "string", + "tags": [], + "label": "newTitle", + "description": [], + "signature": [ + "string" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLibraryTransforms.checkForDuplicateTitle.$2", + "type": "boolean", + "tags": [], + "label": "isTitleDuplicateConfirmed", + "description": [], + "signature": [ + "boolean" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLibraryTransforms.checkForDuplicateTitle.$3", + "type": "Function", + "tags": [], + "label": "onTitleDuplicate", + "description": [], + "signature": [ + "() => void" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLibraryTransforms.canUnlinkFromLibrary", + "type": "Function", + "tags": [], + "label": "canUnlinkFromLibrary", + "description": [ + "\n" + ], + "signature": [ + "() => Promise" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [ + "True when embeddable is by-reference and can be converted to by-value" + ] + }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLibraryTransforms.savedObjectAttributesToState", + "type": "Function", + "tags": [], + "label": "savedObjectAttributesToState", + "description": [ + "\n" + ], + "signature": [ + "() => StateT" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [ + "by-value embeddable state replacing by-reference embeddable state" + ] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-publishing", "id": "def-common.HasParentApi", @@ -5792,6 +5604,57 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/presentation-publishing", + "id": "def-common.HasLegacyLibraryTransforms", + "type": "Type", + "tags": [ + "deprecated" + ], + "label": "HasLegacyLibraryTransforms", + "description": [], + "signature": [ + "Pick<", + { + "pluginId": "@kbn/presentation-publishing", + "scope": "common", + "docId": "kibKbnPresentationPublishingPluginApi", + "section": "def-common.HasLibraryTransforms", + "text": "HasLibraryTransforms" + }, + ", \"canLinkToLibrary\" | \"canUnlinkFromLibrary\"> & { linkToLibrary: () => Promise; unlinkFromLibrary: () => Promise; }" + ], + "path": "packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts", + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts" + }, + { + "plugin": "embeddable", + "path": "src/plugins/embeddable/public/lib/embeddables/i_embeddable.ts" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/legacy_add_to_library_action.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/legacy_unlink_from_library_action.tsx" + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/presentation-publishing", "id": "def-common.PhaseEventType", diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 7bdfe6db74151..0be68dc772b37 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 167 | 0 | 137 | 6 | +| 164 | 0 | 138 | 6 | ## Common diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 01b26a8695454..cf99d172e2258 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-03-26 +date: 2024-03-28 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 734896d336455..ec069a340cf8f 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-03-26 +date: 2024-03-28 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 95022a8145192..110d35f14490a 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-03-26 +date: 2024-03-28 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 4d158375b6d8b..d7b3334ea61f0 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-03-26 +date: 2024-03-28 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 1ce1f604c8c4f..d03b596ef8a07 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-03-26 +date: 2024-03-28 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 9f0bf1d4e6e72..36a139464b3b7 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-03-26 +date: 2024-03-28 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 87a5f3e5911ae..38828f43334b0 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-03-26 +date: 2024-03-28 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 7fb38b58c802f..98ba1d6025b30 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-03-26 +date: 2024-03-28 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 4ac2e461e268f..62dd95ebf98af 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-03-26 +date: 2024-03-28 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 c5ab3bff8ea34..2db5664d6b77b 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-03-26 +date: 2024-03-28 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 f3d5671532b23..c5ef3a2c16c4e 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-03-26 +date: 2024-03-28 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 e7ea67a0167f2..a5005a77f0655 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-03-26 +date: 2024-03-28 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 4c80a17c2a48c..04a496ba2a540 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-03-26 +date: 2024-03-28 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 5ded169e941c4..85085b7f1ca99 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-03-26 +date: 2024-03-28 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 bfbca19fc1beb..85eaddc2c2fdf 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-03-26 +date: 2024-03-28 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 fd0c5ef933652..5a3dd23df0718 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-03-26 +date: 2024-03-28 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 13e582dc37254..86b6cda648db5 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-03-26 +date: 2024-03-28 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 c3355a4af3692..e3d3fd48a4a67 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-03-26 +date: 2024-03-28 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 d4d904cf27d32..a20d93e199be0 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-03-26 +date: 2024-03-28 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 0cfdc27b84b17..fff588acd60f0 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-03-26 +date: 2024-03-28 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 817c822f987a9..7efec59ea8928 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-03-26 +date: 2024-03-28 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 1d40ab3eab522..98f91cad19e84 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-03-26 +date: 2024-03-28 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 477a5ce275b21..eca22ef683063 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-03-26 +date: 2024-03-28 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 e3bb273015c40..1ef6cfd806a8e 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-03-26 +date: 2024-03-28 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 a3046053af8fb..0de2db33ac8b4 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-03-26 +date: 2024-03-28 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 e3c9ab490fa51..d929b5cba90be 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-03-26 +date: 2024-03-28 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 d0e2a783bb567..9decaff815df7 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-03-26 +date: 2024-03-28 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 923159913c229..1a296ca301133 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-03-26 +date: 2024-03-28 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 00922c1711123..156e04f92ede9 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-03-26 +date: 2024-03-28 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 c9ffe7c14dd96..72df239938bcf 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-03-26 +date: 2024-03-28 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 12e46a1aeb82a..dd6a979950c9a 100644 --- a/api_docs/kbn_search_connectors.devdocs.json +++ b/api_docs/kbn_search_connectors.devdocs.json @@ -3942,131 +3942,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.ConnectorServerSideDefinition", - "type": "Interface", - "tags": [], - "label": "ConnectorServerSideDefinition", - "description": [], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.ConnectorServerSideDefinition.categories", - "type": "Array", - "tags": [], - "label": "categories", - "description": [], - "signature": [ - "string[] | undefined" - ], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.ConnectorServerSideDefinition.description", - "type": "string", - "tags": [], - "label": "description", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.ConnectorServerSideDefinition.iconPath", - "type": "string", - "tags": [], - "label": "iconPath", - "description": [], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.ConnectorServerSideDefinition.isBeta", - "type": "boolean", - "tags": [], - "label": "isBeta", - "description": [], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.ConnectorServerSideDefinition.isNative", - "type": "boolean", - "tags": [], - "label": "isNative", - "description": [], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.ConnectorServerSideDefinition.isTechPreview", - "type": "CompoundType", - "tags": [], - "label": "isTechPreview", - "description": [], - "signature": [ - "boolean | undefined" - ], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.ConnectorServerSideDefinition.keywords", - "type": "Array", - "tags": [], - "label": "keywords", - "description": [], - "signature": [ - "string[]" - ], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.ConnectorServerSideDefinition.name", - "type": "string", - "tags": [], - "label": "name", - "description": [], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.ConnectorServerSideDefinition.serviceType", - "type": "string", - "tags": [], - "label": "serviceType", - "description": [], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "@kbn/search-connectors", "id": "def-common.ConnectorStats", @@ -6427,28 +6302,6 @@ } ], "misc": [ - { - "parentPluginId": "@kbn/search-connectors", - "id": "def-common.CONNECTOR_DEFINITIONS", - "type": "Array", - "tags": [], - "label": "CONNECTOR_DEFINITIONS", - "description": [], - "signature": [ - { - "pluginId": "@kbn/search-connectors", - "scope": "common", - "docId": "kibKbnSearchConnectorsPluginApi", - "section": "def-common.ConnectorServerSideDefinition", - "text": "ConnectorServerSideDefinition" - }, - "[]" - ], - "path": "packages/kbn-search-connectors/connectors.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "@kbn/search-connectors", "id": "def-common.ConnectorConfiguration", diff --git a/api_docs/kbn_search_connectors.mdx b/api_docs/kbn_search_connectors.mdx index 5ef816320cdc0..c99055572a9b8 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-03-26 +date: 2024-03-28 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 | |-------------------|-----------|------------------------|-----------------| -| 3219 | 0 | 3219 | 0 | +| 3208 | 0 | 3208 | 0 | ## Common diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index b08e87216acf4..b066c1d90483d 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-03-26 +date: 2024-03-28 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 25ce4d29c7982..496fd7e2d6d31 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-03-26 +date: 2024-03-28 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 1ded7fb6cf12e..b911c17bc20fd 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-03-26 +date: 2024-03-28 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 48c431c35fc8d..c65155bf2c899 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-03-26 +date: 2024-03-28 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 77c36dd65a847..f2d969693657f 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-03-26 +date: 2024-03-28 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 5817693c2a371..7bb71bae1e991 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-03-26 +date: 2024-03-28 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 1291088ef45ca..2dacfb32d7dc9 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-03-26 +date: 2024-03-28 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 042402f65f7b7..d5488e21189cd 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-03-26 +date: 2024-03-28 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 967e9245a75eb..f2c8ec162c14c 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-03-26 +date: 2024-03-28 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 ac126f8244be8..04b553f2aa98b 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-03-26 +date: 2024-03-28 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 94b9831bd0a8b..f96fcbb3661b5 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-03-26 +date: 2024-03-28 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 19307e3a43762..3bf5d754855b8 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-03-26 +date: 2024-03-28 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 8d68bbcd120a9..e8f65810a710b 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-03-26 +date: 2024-03-28 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 56d8696d60e82..d99632c6a4ac5 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-03-26 +date: 2024-03-28 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 adaf29f4d6133..64de4bfd6858d 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-03-26 +date: 2024-03-28 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 0dafe2a0d1865..eb8e3967c84ba 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-03-26 +date: 2024-03-28 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 5278a0a984cb4..0014fa54c8f6b 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-03-26 +date: 2024-03-28 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 60016a60de894..099aad8d82c61 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-03-26 +date: 2024-03-28 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 ac7d4fe3abb8b..3c820dbbc70e4 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-03-26 +date: 2024-03-28 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 f4a75a2f00864..605ae9ddb43b2 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-03-26 +date: 2024-03-28 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 b097e2f09db7e..d24e411f2bc44 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-03-26 +date: 2024-03-28 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 aa003513d50ba..922f2c41397b4 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-03-26 +date: 2024-03-28 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 46d874b2b4074..9b36ca290a3b3 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-03-26 +date: 2024-03-28 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 533cd3bdd0392..d02c3fbd2b78e 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-03-26 +date: 2024-03-28 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 877a6e710429a..bc67577761e37 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-03-26 +date: 2024-03-28 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 a24d0bebf1db5..f355e040058bc 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-03-26 +date: 2024-03-28 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 00458c8d28770..b13eaae09608c 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-03-26 +date: 2024-03-28 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 ae858c9b0ef51..10efd7834bfd5 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-03-26 +date: 2024-03-28 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 726922af109c1..b03d23cb91de1 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-03-26 +date: 2024-03-28 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 9a40bcbcabc9f..03cb525c23f2a 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-03-26 +date: 2024-03-28 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 a3e9238ac828d..10182c5d2c7eb 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-03-26 +date: 2024-03-28 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 4135d3b65173c..7ca583b1bec05 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-03-26 +date: 2024-03-28 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 63cfc6c781906..80d5b6aeb37be 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-03-26 +date: 2024-03-28 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 6b6254227e9a4..976b1ce8e2bb9 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-03-26 +date: 2024-03-28 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 26db1a7c607ff..b342a69a38acc 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-03-26 +date: 2024-03-28 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 7b2632a620270..27e7ed20ac26f 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-03-26 +date: 2024-03-28 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 9cd52ba96a599..7194692d9d053 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-03-26 +date: 2024-03-28 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 c31a4f5be5d45..61bc8a88ec320 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-03-26 +date: 2024-03-28 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 8a2c604c7cd95..eb5f45557f179 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-03-26 +date: 2024-03-28 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 1bd6daed2c5ed..305d5f83c8b11 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-03-26 +date: 2024-03-28 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 fb56ad0bb4a7f..8fdbb98630557 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-03-26 +date: 2024-03-28 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 08ca70961c58b..e75994bce5484 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-03-26 +date: 2024-03-28 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 19dd8d8656dc6..37868c578cbae 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-03-26 +date: 2024-03-28 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 5a89750e57956..dcd237da5a7f7 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-03-26 +date: 2024-03-28 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 00903d0834151..d8b5e938010a1 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-03-26 +date: 2024-03-28 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 25ca58718761c..fd07e74508bd7 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-03-26 +date: 2024-03-28 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 6884eec43ff03..b9308969c9b6b 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-03-26 +date: 2024-03-28 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 4a24406a99ddd..f21ffe679c7ff 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-03-26 +date: 2024-03-28 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 882cc51f690d8..1f094818bf3a4 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-03-26 +date: 2024-03-28 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 f5ac1705a8316..362351c1de9d4 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-03-26 +date: 2024-03-28 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 6e5d3a967ab0b..b2614f21ea634 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-03-26 +date: 2024-03-28 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 99c7f5d3296f0..3772b38f10ecd 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-03-26 +date: 2024-03-28 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 652e2ab2a5667..14ac3b7cf8154 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-03-26 +date: 2024-03-28 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 9e422f56e8b57..a8d8272ff8e8c 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-03-26 +date: 2024-03-28 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 5e3616fc26257..525947ab146f7 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-03-26 +date: 2024-03-28 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 e5e4f696f572a..05ac58d2fe5f2 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-03-26 +date: 2024-03-28 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 07d0dd9a15692..c351eff5c7e54 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-03-26 +date: 2024-03-28 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 e1f33e331a55e..72c9a63f36539 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-03-26 +date: 2024-03-28 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 df6aeb2dd8248..34ac4daaccfac 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-03-26 +date: 2024-03-28 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 6d6a1de4a9083..2980d7dc6396f 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-03-26 +date: 2024-03-28 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 a14fd68a3165b..95d325a5fb43f 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-03-26 +date: 2024-03-28 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 46c650cc73155..dcb1477179b1e 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-03-26 +date: 2024-03-28 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 4151aa11a4f06..ae61cc5916f50 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-03-26 +date: 2024-03-28 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 c311fa29920d1..4e0b95fbe8f0a 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-03-26 +date: 2024-03-28 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 405f41950154e..a2d1331a6ea83 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-03-26 +date: 2024-03-28 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 3c5102f768a59..b27d95f3b0881 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-03-26 +date: 2024-03-28 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 27e7f3b77cd82..b53bff4262b37 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-03-26 +date: 2024-03-28 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 c0560ecd25216..43a3488d464ed 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-03-26 +date: 2024-03-28 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 c42b92f5d3f26..df1fa32f07f66 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-03-26 +date: 2024-03-28 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 148c5d4a3b184..e96dae6350308 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-03-26 +date: 2024-03-28 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 1e293bd9e58d7..69bc3cb2d3b5e 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-03-26 +date: 2024-03-28 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 5f5222ae2f7e9..f2e50129eb4dc 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-03-26 +date: 2024-03-28 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 ee440b51b1da1..3a869189e21f8 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-03-26 +date: 2024-03-28 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 dae1d30043ebe..6ed42d49cd07e 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-03-26 +date: 2024-03-28 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 95a8bdd9edbbc..3eb12f1e4ed46 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-03-26 +date: 2024-03-28 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 f0894e5e5c483..a9e3fc5476585 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-03-26 +date: 2024-03-28 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 901b1c735316f..d8ccf4b00b585 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_solution_nav_es.mdx b/api_docs/kbn_solution_nav_es.mdx index be9242dc97dfe..e4557e2e7ac8b 100644 --- a/api_docs/kbn_solution_nav_es.mdx +++ b/api_docs/kbn_solution_nav_es.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-solution-nav-es title: "@kbn/solution-nav-es" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/solution-nav-es plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/solution-nav-es'] --- import kbnSolutionNavEsObj from './kbn_solution_nav_es.devdocs.json'; diff --git a/api_docs/kbn_solution_nav_oblt.mdx b/api_docs/kbn_solution_nav_oblt.mdx index 4dcbe8ef03528..9f4c6e3fa2a54 100644 --- a/api_docs/kbn_solution_nav_oblt.mdx +++ b/api_docs/kbn_solution_nav_oblt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-solution-nav-oblt title: "@kbn/solution-nav-oblt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/solution-nav-oblt plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/solution-nav-oblt'] --- import kbnSolutionNavObltObj from './kbn_solution_nav_oblt.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index 4ce01c98a9b56..76684b9ca05f8 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-03-26 +date: 2024-03-28 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 8a4dd5c513bee..0675cd7fd7173 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-03-26 +date: 2024-03-28 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 cd9c752deaf5d..fe1e0e7cdffe7 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-03-26 +date: 2024-03-28 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 93222ea3573a5..0f4e985f24d3a 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-03-26 +date: 2024-03-28 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 8fb2322c65e94..f911c841b77e1 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-03-26 +date: 2024-03-28 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 a363aeb28e8af..d1f59ecd1c310 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-03-26 +date: 2024-03-28 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 cf1ea354fea4b..8526a34636e42 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-03-26 +date: 2024-03-28 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 33a6ac89295c8..700c7103e3bc0 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-03-26 +date: 2024-03-28 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 69e2dd9be799a..644ac8b388e6f 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-03-26 +date: 2024-03-28 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 2d7976e044e34..732e0737ac905 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test-subj-selector'] --- import kbnTestSubjSelectorObj from './kbn_test_subj_selector.devdocs.json'; diff --git a/api_docs/kbn_text_based_editor.mdx b/api_docs/kbn_text_based_editor.mdx index 41aec0e74354c..ef7b3bba7681b 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,14 +8,14 @@ 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; -Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) for questions regarding this plugin. +Contact [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index 59dae71de39e7..bc72085676d23 100644 --- a/api_docs/kbn_timerange.mdx +++ b/api_docs/kbn_timerange.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-timerange title: "@kbn/timerange" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/timerange plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/timerange'] --- import kbnTimerangeObj from './kbn_timerange.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 520564a80550b..75fef3c9544df 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-03-26 +date: 2024-03-28 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 a9001ad6adc26..6d4fbdebda7ab 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-03-26 +date: 2024-03-28 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 fe2a8ae302a09..aca084cefbfd3 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-03-26 +date: 2024-03-28 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 50d877d64d3c6..506081b1c7e65 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-03-26 +date: 2024-03-28 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 dd5f7aed10011..5b2d0268d7ed9 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-03-26 +date: 2024-03-28 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 19c09ec7318f2..33007a9fe1ee3 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-03-26 +date: 2024-03-28 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.devdocs.json b/api_docs/kbn_ui_theme.devdocs.json index bf9811bcad6d2..f7b49a9d755a3 100644 --- a/api_docs/kbn_ui_theme.devdocs.json +++ b/api_docs/kbn_ui_theme.devdocs.json @@ -71,11 +71,19 @@ "references": [ { "plugin": "@kbn/monaco", - "path": "packages/kbn-monaco/src/esql/lib/monaco/esql_theme.ts" + "path": "packages/kbn-monaco/src/esql/lib/esql_theme.ts" }, { "plugin": "@kbn/monaco", - "path": "packages/kbn-monaco/src/esql/lib/monaco/esql_theme.ts" + "path": "packages/kbn-monaco/src/esql/lib/esql_theme.ts" + }, + { + "plugin": "@kbn/monaco", + "path": "packages/kbn-monaco/src/console/theme.ts" + }, + { + "plugin": "@kbn/monaco", + "path": "packages/kbn-monaco/src/console/theme.ts" }, { "plugin": "securitySolution", diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index b04f953083d79..d3ac245b17a30 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-03-26 +date: 2024-03-28 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 ce0055c7d6110..fbe96d66b57b5 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-03-26 +date: 2024-03-28 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 e36881bf4f24b..2c996c4c0410d 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-03-26 +date: 2024-03-28 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 78fad020fb3be..7453c608d2bae 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-03-26 +date: 2024-03-28 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 d9e25128aff15..f0d8b896608a7 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-03-26 +date: 2024-03-28 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 4c10ca8c24076..cafa991335b9a 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-03-26 +date: 2024-03-28 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 f40b42812e317..82e4dc870d230 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-03-26 +date: 2024-03-28 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 ee8ece70ff75b..b79c232303fc9 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-03-26 +date: 2024-03-28 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 58de8c7aa70b3..a04f5f9984dae 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-03-26 +date: 2024-03-28 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 3d93cfc2fb5de..570014bac85c7 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.devdocs.json b/api_docs/kbn_visualization_ui_components.devdocs.json index a8177415871ca..329e0a16222f7 100644 --- a/api_docs/kbn_visualization_ui_components.devdocs.json +++ b/api_docs/kbn_visualization_ui_components.devdocs.json @@ -11,9 +11,9 @@ "label": "ChartSwitchTrigger", "description": [], "signature": [ - "({ label, icon, onClick, dataTestSubj, size, }: { label: string; icon?: ", + "({ label, icon, onClick, dataTestSubj, }: { label: string; icon?: ", "IconType", - " | undefined; onClick: () => void; dataTestSubj?: string | undefined; size?: \"m\" | \"s\" | undefined; }) => JSX.Element" + " | undefined; onClick: () => void; dataTestSubj?: string | undefined; }) => JSX.Element" ], "path": "packages/kbn-visualization-ui-components/components/chart_switch_trigger.tsx", "deprecated": false, @@ -30,7 +30,7 @@ "signature": [ "{ label: string; icon?: ", "IconType", - " | undefined; onClick: () => void; dataTestSubj?: string | undefined; size?: \"m\" | \"s\" | undefined; }" + " | undefined; onClick: () => void; dataTestSubj?: string | undefined; }" ], "path": "packages/kbn-visualization-ui-components/components/chart_switch_trigger.tsx", "deprecated": false, diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 1ea70ff2c7bf1..19f5c02455cda 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-03-26 +date: 2024-03-28 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 92bb25ac7a894..53612716ec554 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-03-26 +date: 2024-03-28 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 2f8a5042844a1..db3be66f8d37a 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-03-26 +date: 2024-03-28 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 e4299dbf28ebf..2db16515725d0 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-03-26 +date: 2024-03-28 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 7c9f7207c8d57..426f3b14bd53c 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-03-26 +date: 2024-03-28 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 52dffc1c0c9e9..dbffdb537ca68 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index 0503b0d60238f..03ecb9e5ac2c3 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -723,30 +723,6 @@ "plugin": "visualizations", "path": "src/plugins/visualizations/public/visualize_app/index.tsx" }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx" - }, { "plugin": "savedObjectsTagging", "path": "x-pack/plugins/saved_objects_tagging/public/management/mount_section.tsx" @@ -1015,6 +991,30 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/public/application/maintenance_windows.tsx" }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_container/embeddable/dashboard_container.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_app/dashboard_router.tsx" + }, { "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx" @@ -2528,54 +2528,6 @@ "plugin": "visualizations", "path": "src/plugins/visualizations/public/visualize_app/index.tsx" }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/api/show_settings.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_container/embeddable/api/show_settings.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing_table.tsx" - }, - { - "plugin": "dashboard", - "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing_table.tsx" - }, { "plugin": "licensing", "path": "x-pack/plugins/licensing/public/expired_banner.tsx" @@ -2672,6 +2624,54 @@ "plugin": "security", "path": "x-pack/plugins/security/public/session/session_expiration_toast.tsx" }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_container/embeddable/api/show_settings.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_container/embeddable/api/show_settings.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/confirm_overlays.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_app/listing_page/dashboard_no_match.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/open_replace_panel_flyout.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing_table.tsx" + }, + { + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_listing/dashboard_listing_table.tsx" + }, { "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/hooks/use_bulk_edit_response.tsx" diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index c2a9c204782e9..4ce7f00cf3cb0 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-03-26 +date: 2024-03-28 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 5b60f2deaf566..5bb4a8ea3b6b1 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-03-26 +date: 2024-03-28 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 9a112d7958298..42e03c25a23eb 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.devdocs.json b/api_docs/lens.devdocs.json index 43ace307a3256..8f8fcc6f6d91f 100644 --- a/api_docs/lens.devdocs.json +++ b/api_docs/lens.devdocs.json @@ -6311,7 +6311,7 @@ "\nIf the visualization has subtypes, update the subtype in state." ], "signature": [ - "((visualizationTypeId: string, state: T) => T) | undefined" + "((visualizationTypeId: string, state: T, layerId?: string | undefined) => T) | undefined" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, @@ -6346,6 +6346,21 @@ "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "lens", + "id": "def-public.Visualization.switchVisualizationType.$3", + "type": "string", + "tags": [], + "label": "layerId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/lens/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false } ], "returnComment": [] @@ -6360,7 +6375,7 @@ "Description is displayed as the clickable text in the chart switcher" ], "signature": [ - "(state: T) => { icon?: ", + "(state: T, layerId?: string | undefined) => { icon?: ", "IconType", " | undefined; label: string; }" ], @@ -6382,6 +6397,21 @@ "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "lens", + "id": "def-public.Visualization.getDescription.$2", + "type": "string", + "tags": [], + "label": "layerId", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/lens/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false } ], "returnComment": [] @@ -7177,10 +7207,57 @@ }, { "parentPluginId": "lens", - "id": "def-public.Visualization.LayerHeaderComponent", + "id": "def-public.Visualization.isSubtypeCompatible", "type": "Function", "tags": [], - "label": "LayerHeaderComponent", + "label": "isSubtypeCompatible", + "description": [], + "signature": [ + "((subtype1?: string | undefined, subtype2?: string | undefined) => boolean) | undefined" + ], + "path": "x-pack/plugins/lens/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "lens", + "id": "def-public.Visualization.isSubtypeCompatible.$1", + "type": "string", + "tags": [], + "label": "subtype1", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/lens/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "lens", + "id": "def-public.Visualization.isSubtypeCompatible.$2", + "type": "string", + "tags": [], + "label": "subtype2", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/lens/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + } + ], + "returnComment": [] + }, + { + "parentPluginId": "lens", + "id": "def-public.Visualization.getCustomLayerHeader", + "type": "Function", + "tags": [], + "label": "getCustomLayerHeader", "description": [ "\nHeader rendered as layer title. This can be used for both static and dynamic content like\nfor extra configurability, such as for switch chart type" ], @@ -7189,7 +7266,7 @@ "VisualizationLayerWidgetProps", ") => React.ReactElement<", "VisualizationLayerWidgetProps", - ", string | React.JSXElementConstructor> | null) | undefined" + ", string | React.JSXElementConstructor> | undefined) | undefined" ], "path": "x-pack/plugins/lens/public/types.ts", "deprecated": false, @@ -7197,7 +7274,7 @@ "children": [ { "parentPluginId": "lens", - "id": "def-public.Visualization.LayerHeaderComponent.$1", + "id": "def-public.Visualization.getCustomLayerHeader.$1", "type": "CompoundType", "tags": [], "label": "props", @@ -9471,11 +9548,11 @@ "PointerUpdateTrigger", " | undefined; brushAxis?: ", "BrushAxis", - " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaLabel?: string | undefined; xDomain?: ", + " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaDescription?: string | undefined; ariaLabel?: string | undefined; xDomain?: ", "MakeOverridesSerializable", "<", "CustomXDomain", - " | undefined>; ariaDescription?: string | undefined; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", + " | undefined>; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", "LegendStrategy", " | undefined; onLegendItemClick?: \"ignore\" | undefined; customLegend?: \"ignore\" | undefined; onLegendItemMinusClick?: \"ignore\" | undefined; onLegendItemOut?: \"ignore\" | undefined; onLegendItemOver?: \"ignore\" | undefined; onLegendItemPlusClick?: \"ignore\" | undefined; debugState?: boolean | undefined; onProjectionClick?: \"ignore\" | undefined; onElementClick?: \"ignore\" | undefined; onElementOver?: \"ignore\" | undefined; onElementOut?: \"ignore\" | undefined; onBrushEnd?: \"ignore\" | undefined; onResize?: \"ignore\" | undefined; onWillRender?: \"ignore\" | undefined; onProjectionAreaChange?: \"ignore\" | undefined; onAnnotationClick?: \"ignore\" | undefined; resizeDebounce?: number | undefined; pointerUpdateDebounce?: number | undefined; roundHistogramBrushValues?: boolean | undefined; noResults?: React.ReactChild | React.ComponentType<{}> | undefined; legendSort?: \"ignore\" | undefined; }>> & Partial>) | undefined" ], @@ -11595,11 +11672,11 @@ "PointerUpdateTrigger", " | undefined; brushAxis?: ", "BrushAxis", - " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaLabel?: string | undefined; xDomain?: ", + " | undefined; minBrushDelta?: number | undefined; allowBrushingLastHistogramBin?: boolean | undefined; ariaDescription?: string | undefined; ariaLabel?: string | undefined; xDomain?: ", "MakeOverridesSerializable", "<", "CustomXDomain", - " | undefined>; ariaDescription?: string | undefined; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", + " | undefined>; ariaDescribedBy?: string | undefined; ariaLabelledBy?: string | undefined; ariaTableCaption?: string | undefined; legendAction?: \"ignore\" | undefined; legendStrategy?: ", "LegendStrategy", " | undefined; onLegendItemClick?: \"ignore\" | undefined; customLegend?: \"ignore\" | undefined; onLegendItemMinusClick?: \"ignore\" | undefined; onLegendItemOut?: \"ignore\" | undefined; onLegendItemOver?: \"ignore\" | undefined; onLegendItemPlusClick?: \"ignore\" | undefined; debugState?: boolean | undefined; onProjectionClick?: \"ignore\" | undefined; onElementClick?: \"ignore\" | undefined; onElementOver?: \"ignore\" | undefined; onElementOut?: \"ignore\" | undefined; onBrushEnd?: \"ignore\" | undefined; onResize?: \"ignore\" | undefined; onWillRender?: \"ignore\" | undefined; onProjectionAreaChange?: \"ignore\" | undefined; onAnnotationClick?: \"ignore\" | undefined; resizeDebounce?: number | undefined; pointerUpdateDebounce?: number | undefined; roundHistogramBrushValues?: boolean | undefined; noResults?: React.ReactChild | React.ComponentType<{}> | undefined; legendSort?: \"ignore\" | undefined; }>> | Partial Promise<{ state: { savedObjectId: string; id: string; title?: string | undefined; query?: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Query", + "text": "Query" + }, + " | undefined; version?: string | undefined; filters?: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Filter", + "text": "Filter" + }, + "[] | undefined; description?: string | undefined; executionContext?: ", + { + "pluginId": "@kbn/core-execution-context-common", + "scope": "common", + "docId": "kibKbnCoreExecutionContextCommonPluginApi", + "section": "def-common.KibanaExecutionContext", + "text": "KibanaExecutionContext" + }, + " | undefined; viewMode?: ", + { + "pluginId": "embeddable", + "scope": "common", + "docId": "kibEmbeddablePluginApi", + "section": "def-common.ViewMode", + "text": "ViewMode" + }, + " | undefined; lastReloadRequestTime?: number | undefined; hidePanelTitles?: boolean | undefined; enhancements?: ", + { + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.SerializableRecord", + "text": "SerializableRecord" + }, + " | undefined; disabledActions?: string[] | undefined; disableTriggers?: boolean | undefined; searchSessionId?: string | undefined; syncColors?: boolean | undefined; syncCursor?: boolean | undefined; syncTooltips?: boolean | undefined; timeRange?: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + " | undefined; timeslice?: [number, number] | undefined; isLayerTOCOpen?: boolean | undefined; openTOCDetails?: string[] | undefined; mapCenter?: ", + "MapCenterAndZoom", + " | undefined; mapBuffer?: ", + "MapExtent", + " | undefined; mapSettings?: Partial<", + "MapSettings", + "> | undefined; hiddenLayers?: string[] | undefined; hideFilterActions?: boolean | undefined; filterByMapExtent?: boolean | undefined; isMovementSynchronized?: boolean | undefined; }; savedObjectId: string; }>" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.saveStateToSavedObject.$1", + "type": "string", + "tags": [], + "label": "title", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.savedObjectAttributesToState", + "type": "Function", + "tags": [], + "label": "savedObjectAttributesToState", + "description": [], + "signature": [ + "() => { attributes: ", + "MapAttributes", + "; id: string; title?: string | undefined; query?: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Query", + "text": "Query" + }, + " | undefined; version?: string | undefined; filters?: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.Filter", + "text": "Filter" + }, + "[] | undefined; description?: string | undefined; executionContext?: ", + { + "pluginId": "@kbn/core-execution-context-common", + "scope": "common", + "docId": "kibKbnCoreExecutionContextCommonPluginApi", + "section": "def-common.KibanaExecutionContext", + "text": "KibanaExecutionContext" + }, + " | undefined; viewMode?: ", + { + "pluginId": "embeddable", + "scope": "common", + "docId": "kibEmbeddablePluginApi", + "section": "def-common.ViewMode", + "text": "ViewMode" + }, + " | undefined; lastReloadRequestTime?: number | undefined; hidePanelTitles?: boolean | undefined; enhancements?: ", + { + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.SerializableRecord", + "text": "SerializableRecord" + }, + " | undefined; disabledActions?: string[] | undefined; disableTriggers?: boolean | undefined; searchSessionId?: string | undefined; syncColors?: boolean | undefined; syncCursor?: boolean | undefined; syncTooltips?: boolean | undefined; timeRange?: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.TimeRange", + "text": "TimeRange" + }, + " | undefined; timeslice?: [number, number] | undefined; isLayerTOCOpen?: boolean | undefined; openTOCDetails?: string[] | undefined; mapCenter?: ", + "MapCenterAndZoom", + " | undefined; mapBuffer?: ", + "MapExtent", + " | undefined; mapSettings?: Partial<", + "MapSettings", + "> | undefined; hiddenLayers?: string[] | undefined; hideFilterActions?: boolean | undefined; filterByMapExtent?: boolean | undefined; isMovementSynchronized?: boolean | undefined; }" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.checkForDuplicateTitle", + "type": "Function", + "tags": [], + "label": "checkForDuplicateTitle", + "description": [], + "signature": [ + "(newTitle: string, isTitleDuplicateConfirmed: boolean, onTitleDuplicate: () => void) => Promise" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.checkForDuplicateTitle.$1", + "type": "string", + "tags": [], + "label": "newTitle", + "description": [], + "signature": [ + "string" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.checkForDuplicateTitle.$2", + "type": "boolean", + "tags": [], + "label": "isTitleDuplicateConfirmed", + "description": [], + "signature": [ + "boolean" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "maps", + "id": "def-public.MapEmbeddable.checkForDuplicateTitle.$3", + "type": "Function", + "tags": [], + "label": "onTitleDuplicate", + "description": [], + "signature": [ + "() => void" + ], + "path": "x-pack/plugins/maps/public/embeddable/map_embeddable.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "maps", "id": "def-public.MapEmbeddable._setMapExtentFilter", diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 39dc924b7aa87..bc261fd042eb6 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 264 | 0 | 263 | 28 | +| 273 | 0 | 272 | 31 | ## Client diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index abf9e00379083..3f0b16d79909e 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-03-26 +date: 2024-03-28 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 ce4d5f360c029..c3b2f2fc7c527 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-03-26 +date: 2024-03-28 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 537a8cad4c535..558c16d40eef1 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-03-26 +date: 2024-03-28 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 f9023d257c76e..d6c6bc8f1de1a 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-03-26 +date: 2024-03-28 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 1545d37f92938..d11f970f35d8b 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-03-26 +date: 2024-03-28 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 c97c187d1ef4e..52c95cffbcd3c 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-03-26 +date: 2024-03-28 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 60c073c727146..2c8fecaf7cdc0 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-03-26 +date: 2024-03-28 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 6d4f4d57712d5..855eea0001d6c 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-03-26 +date: 2024-03-28 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 6c96f5eceebc0..4c3e3c1dbfe75 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-03-26 +date: 2024-03-28 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 1aef805d2199c..ae33893f15cd2 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index fd1148f7782fd..fa6b020de5d84 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -1480,7 +1480,7 @@ "label": "unsafe", "description": [], "signature": [ - "{ alertDetails: { metrics: { enabled: boolean; }; logs?: { enabled: boolean; } | undefined; uptime: { enabled: boolean; }; observability?: { enabled: boolean; } | undefined; }; thresholdRule?: { enabled: boolean; } | undefined; }" + "{ alertDetails: { metrics: { enabled: boolean; }; logs?: { enabled: boolean; } | undefined; uptime: { enabled: boolean; }; observability?: { enabled: boolean; } | undefined; }; thresholdRule?: { enabled: boolean; } | undefined; ruleFormV2?: { enabled: boolean; } | undefined; }" ], "path": "x-pack/plugins/observability_solution/observability/public/plugin.ts", "deprecated": false, @@ -8576,7 +8576,7 @@ "label": "config", "description": [], "signature": [ - "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly createO11yGenericFeatureId: boolean; }" + "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; ruleFormV2: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly createO11yGenericFeatureId: boolean; }" ], "path": "x-pack/plugins/observability_solution/observability/server/routes/types.ts", "deprecated": false, @@ -8696,7 +8696,7 @@ "label": "ObservabilityConfig", "description": [], "signature": [ - "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly createO11yGenericFeatureId: boolean; }" + "{ readonly enabled: boolean; readonly unsafe: Readonly<{} & { alertDetails: Readonly<{} & { uptime: Readonly<{} & { enabled: boolean; }>; observability: Readonly<{} & { enabled: boolean; }>; metrics: Readonly<{} & { enabled: boolean; }>; logs: Readonly<{} & { enabled: boolean; }>; }>; thresholdRule: Readonly<{} & { enabled: boolean; }>; ruleFormV2: Readonly<{} & { enabled: boolean; }>; }>; readonly annotations: Readonly<{} & { index: string; enabled: boolean; }>; readonly customThresholdRule: Readonly<{} & { groupByPageSize: number; }>; readonly createO11yGenericFeatureId: boolean; }" ], "path": "x-pack/plugins/observability_solution/observability/server/index.ts", "deprecated": false, @@ -10483,6 +10483,118 @@ } ] }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmEnableServiceInventoryTableSearchBar", + "type": "Object", + "tags": [], + "label": "[apmEnableServiceInventoryTableSearchBar]", + "description": [], + "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmEnableServiceInventoryTableSearchBar.category", + "type": "Array", + "tags": [], + "label": "category", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmEnableServiceInventoryTableSearchBar.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmEnableServiceInventoryTableSearchBar.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmEnableServiceInventoryTableSearchBar.schema", + "type": "Object", + "tags": [], + "label": "schema", + "description": [], + "signature": [ + { + "pluginId": "@kbn/config-schema", + "scope": "common", + "docId": "kibKbnConfigSchemaPluginApi", + "section": "def-common.Type", + "text": "Type" + }, + "" + ], + "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmEnableServiceInventoryTableSearchBar.value", + "type": "boolean", + "tags": [], + "label": "value", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmEnableServiceInventoryTableSearchBar.requiresPageReload", + "type": "boolean", + "tags": [], + "label": "requiresPageReload", + "description": [], + "signature": [ + "false" + ], + "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observability", + "id": "def-server.uiSettings.apmEnableServiceInventoryTableSearchBar.type", + "type": "string", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"boolean\"" + ], + "path": "x-pack/plugins/observability_solution/observability/server/ui_settings.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, { "parentPluginId": "observability", "id": "def-server.uiSettings.apmAWSLambdaPriceFactor", @@ -13240,6 +13352,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "observability", + "id": "def-common.apmEnableServiceInventoryTableSearchBar", + "type": "string", + "tags": [], + "label": "apmEnableServiceInventoryTableSearchBar", + "description": [], + "signature": [ + "\"observability:apmEnableServiceInventoryTableSearchBar\"" + ], + "path": "x-pack/plugins/observability_solution/observability/common/ui_settings_keys.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "observability", "id": "def-common.apmEnableServiceMetrics", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 9880ae2b0aaef..d7daa395c1c95 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 661 | 2 | 652 | 14 | +| 670 | 2 | 661 | 14 | ## Client diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 7963f5dd081bc..3b47f502590c0 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index ef8df309a7a63..4c6d72f7123a7 100644 --- a/api_docs/observability_a_i_assistant_app.mdx +++ b/api_docs/observability_a_i_assistant_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAIAssistantApp title: "observabilityAIAssistantApp" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAIAssistantApp plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistantApp'] --- import observabilityAIAssistantAppObj from './observability_a_i_assistant_app.devdocs.json'; diff --git a/api_docs/observability_ai_assistant_management.mdx b/api_docs/observability_ai_assistant_management.mdx index b343541130f5e..e1843c2d2d0b2 100644 --- a/api_docs/observability_ai_assistant_management.mdx +++ b/api_docs/observability_ai_assistant_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/observabilityAiAssistantManagement title: "observabilityAiAssistantManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the observabilityAiAssistantManagement plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAiAssistantManagement'] --- import observabilityAiAssistantManagementObj from './observability_ai_assistant_management.devdocs.json'; diff --git a/api_docs/observability_logs_explorer.mdx b/api_docs/observability_logs_explorer.mdx index d05da01558d88..273007628ebd8 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-03-26 +date: 2024-03-28 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 52feb59e75b8e..8779e36e9e62f 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityOnboarding'] --- import observabilityOnboardingObj from './observability_onboarding.devdocs.json'; diff --git a/api_docs/observability_shared.devdocs.json b/api_docs/observability_shared.devdocs.json index bd9f27f2cd8c0..5946e3a41bebd 100644 --- a/api_docs/observability_shared.devdocs.json +++ b/api_docs/observability_shared.devdocs.json @@ -794,6 +794,166 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL", + "type": "Function", + "tags": [], + "label": "getSurveyFeedbackURL", + "description": [], + "signature": [ + "({ formUrl, formConfig, kibanaVersion, sanitizedPath, isCloudEnv, isServerlessEnv, nodeType, }: { formUrl: string; formConfig?: ", + "FormConfig", + " | undefined; kibanaVersion?: string | undefined; deploymentType?: string | undefined; sanitizedPath?: string | undefined; mlJobType?: string | undefined; isCloudEnv?: boolean | undefined; isServerlessEnv?: boolean | undefined; nodeType?: ", + "NodeType", + " | undefined; }) => string" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL.$1", + "type": "Object", + "tags": [], + "label": "{\n formUrl,\n formConfig,\n kibanaVersion,\n sanitizedPath,\n isCloudEnv,\n isServerlessEnv,\n nodeType,\n}", + "description": [], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL.$1.formUrl", + "type": "string", + "tags": [], + "label": "formUrl", + "description": [], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL.$1.formConfig", + "type": "Object", + "tags": [], + "label": "formConfig", + "description": [], + "signature": [ + "FormConfig", + " | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL.$1.kibanaVersion", + "type": "string", + "tags": [], + "label": "kibanaVersion", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL.$1.deploymentType", + "type": "string", + "tags": [], + "label": "deploymentType", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL.$1.sanitizedPath", + "type": "string", + "tags": [], + "label": "sanitizedPath", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL.$1.mlJobType", + "type": "string", + "tags": [], + "label": "mlJobType", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL.$1.isCloudEnv", + "type": "CompoundType", + "tags": [], + "label": "isCloudEnv", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL.$1.isServerlessEnv", + "type": "CompoundType", + "tags": [], + "label": "isServerlessEnv", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityShared", + "id": "def-public.getSurveyFeedbackURL.$1.nodeType", + "type": "CompoundType", + "tags": [], + "label": "nodeType", + "description": [], + "signature": [ + "NodeType", + " | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_shared/public/components/feature_feedback_button/feature_feedback_button.tsx", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "observabilityShared", "id": "def-public.HeaderMenuPortal", @@ -1522,7 +1682,7 @@ "section": "def-common.UiSettingsType", "text": "UiSettingsType" }, - ">; saveAll: () => Promise; isSaving: boolean; cleanUnsavedChanges: () => void; }" + ">; saveAll: () => Promise; isSaving: boolean; cleanUnsavedChanges: () => void; saveSingleSetting: (id: string, change: string | number | boolean | (string | number)[] | null | undefined) => Promise; }" ], "path": "x-pack/plugins/observability_solution/observability_shared/public/hooks/use_editable_settings.tsx", "deprecated": false, diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index 521ca5b25b0c2..333481d19cef3 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observ | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 333 | 1 | 328 | 20 | +| 344 | 1 | 339 | 22 | ## Client diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 726b5ff652e17..bd975da89fe0b 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-03-26 +date: 2024-03-28 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 03b0143ae710f..a356155e862ac 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-03-26 +date: 2024-03-28 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 62a73aa3d5956..99f2a303d93f7 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -15,13 +15,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Count | Plugins or Packages with a
public API | Number of teams | |--------------|----------|------------------------| -| 770 | 661 | 40 | +| 772 | 663 | 41 | ### Public API health stats | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 46281 | 233 | 35063 | 1788 | +| 46637 | 234 | 35391 | 1805 | ## Plugin Directory @@ -56,11 +56,11 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 271 | 0 | 252 | 1 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 108 | 0 | 105 | 12 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 54 | 0 | 51 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3257 | 31 | 2597 | 23 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3261 | 31 | 2601 | 23 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin provides the ability to create data views via a modal flyout inside Kibana apps | 35 | 0 | 25 | 5 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Reusable data view field editor across Kibana | 72 | 0 | 33 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data view management app | 2 | 0 | 2 | 0 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 970 | 0 | 288 | 4 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 976 | 0 | 294 | 4 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin introduces the concept of dataset quality, where users can easily get an overview on the datasets they have. | 10 | 0 | 10 | 5 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 15 | 0 | 9 | 2 | @@ -68,7 +68,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 35 | 0 | 33 | 2 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | Server APIs for the Elastic AI Assistant | 45 | 0 | 31 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 556 | 1 | 451 | 10 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 557 | 1 | 452 | 10 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 23 | 0 | 23 | 1 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 53 | 0 | 46 | 1 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 5 | 0 | 5 | 0 | @@ -78,7 +78,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 112 | 0 | 112 | 11 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 126 | 0 | 126 | 12 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'error' renderer to expressions | 17 | 0 | 15 | 2 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Expression Gauge plugin adds a `gauge` renderer and function to the expression plugin. The renderer will display the `gauge` chart. | 59 | 0 | 59 | 2 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Expression Gauge plugin adds a `gauge` renderer and function to the expression plugin. The renderer will display the `gauge` chart. | 59 | 0 | 58 | 2 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Expression Heatmap plugin adds a `heatmap` renderer and function to the expression plugin. The renderer will display the `heatmap` chart. | 112 | 0 | 108 | 2 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'image' function and renderer to expressions | 26 | 0 | 26 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Adds a `metric` renderer and function to the expression plugin. The renderer will display the `legacy metric` chart. | 51 | 0 | 51 | 2 | @@ -107,7 +107,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 151 | 0 | 111 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Image embeddable | 3 | 0 | 3 | 1 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 4 | 0 | 4 | 0 | -| | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 224 | 0 | 219 | 3 | +| | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 230 | 0 | 225 | 3 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin visualizes data from Filebeat and Metricbeat, and integrates with other Observability solutions | 37 | 0 | 34 | 6 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 4 | 0 | 4 | 0 | | inputControlVis | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Input Control visualization to Kibana | 0 | 0 | 0 | 0 | @@ -118,7 +118,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | kibanaUsageCollection | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 0 | 0 | 0 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 609 | 3 | 416 | 9 | | | [@elastic/kibana-cloud-security-posture](https://github.com/orgs/elastic/teams/kibana-cloud-security-posture) | - | 5 | 0 | 5 | 1 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 664 | 0 | 563 | 61 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Visualization editor allowing to quickly and easily configure compelling visualizations to use on dashboards and canvas workpads. Exposes components to embed visualizations and link into the Lens editor from within other apps in Kibana. | 669 | 0 | 568 | 61 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 8 | 0 | 8 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 4 | 0 | 4 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 117 | 0 | 42 | 10 | @@ -128,7 +128,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@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/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 43 | 0 | 43 | 7 | -| | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 264 | 0 | 263 | 28 | +| | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 273 | 0 | 272 | 31 | | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 60 | 0 | 60 | 0 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | Exposes utilities for accessing metrics data | 104 | 8 | 104 | 6 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the machine learning features provided by Elastic. | 151 | 3 | 65 | 97 | @@ -139,13 +139,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 3 | 0 | 3 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 661 | 2 | 652 | 14 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 670 | 2 | 661 | 14 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 227 | 1 | 225 | 25 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 21 | 0 | 21 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 14 | 0 | 14 | 0 | -| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 333 | 1 | 328 | 20 | +| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 344 | 1 | 339 | 22 | | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 23 | 0 | 23 | 7 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds a standardized Presentation panel which allows any forward ref component to interface with various Kibana systems. | 11 | 0 | 11 | 4 | @@ -165,6 +165,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the definition and helper methods around saved searches, used by discover and visualizations. | 79 | 0 | 78 | 3 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 32 | 0 | 13 | 0 | | | [@elastic/kibana-reporting-services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Kibana Screenshotting Plugin | 32 | 0 | 8 | 4 | +| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Plugin hosting shared features for connectors | 19 | 0 | 19 | 3 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 15 | 0 | 9 | 0 | | searchprofiler | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 408 | 0 | 199 | 2 | @@ -187,7 +188,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@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) | - | 27 | 0 | 10 | 0 | +| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 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 | @@ -217,7 +218,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Registers the vega visualization. Is the elastic version of vega and vega-lite libraries. | 2 | 0 | 2 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the vislib visualizations. These are the classical area/line/bar, gauge/goal and heatmap charts. We want to replace them with elastic-charts. | 1 | 0 | 1 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the new xy-axis chart using the elastic-charts library, which will eventually replace the vislib xy-axis charts including bar, area, and line. | 52 | 0 | 50 | 5 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 841 | 12 | 810 | 19 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains the shared architecture among all the legacy visualizations, e.g. the visualization type registry or the visualization embeddable. | 862 | 12 | 831 | 19 | | watcher | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | ## Package Directory @@ -226,8 +227,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] |--------------|----------------|-----------|--------------|----------|---------------|--------| | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 11 | 5 | 11 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 5 | 0 | 5 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 35 | 0 | 0 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 20 | 0 | 0 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 36 | 0 | 0 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 41 | 0 | 0 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 27 | 3 | 27 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 23 | 0 | 22 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 33 | 0 | 33 | 0 | @@ -251,7 +252,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 19 | 0 | 16 | 0 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 62 | 1 | 44 | 3 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 23 | 0 | 19 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 78 | 0 | 78 | 0 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 84 | 0 | 84 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 7 | 0 | 2 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 3 | 0 | 3 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 62 | 0 | 17 | 1 | @@ -470,14 +471,16 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | - | 13 | 0 | 5 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 35 | 0 | 34 | 0 | | | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | - | 154 | 0 | 132 | 8 | -| | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | - | 220 | 0 | 207 | 0 | +| | [@elastic/security-generative-ai](https://github.com/orgs/elastic/teams/security-generative-ai) | - | 227 | 0 | 213 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 52 | 0 | 37 | 7 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 32 | 0 | 19 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 3 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 263 | 1 | 202 | 15 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 25 | 0 | 25 | 0 | | | [@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) | - | 20 | 0 | 18 | 0 | +| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 66 | 1 | 66 | 2 | +| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 20 | 0 | 18 | 0 | +| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 189 | 0 | 180 | 7 | | | [@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) | - | 38 | 0 | 14 | 1 | @@ -506,7 +509,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 86 | 0 | 78 | 6 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 41 | 2 | 35 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 108 | 0 | 107 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 7 | 0 | 5 | 0 | +| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 7 | 0 | 5 | 0 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 193 | 0 | 190 | 6 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 172 | 0 | 172 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 27 | 0 | 1 | 2 | @@ -520,7 +523,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 23 | 0 | 7 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 8 | 0 | 2 | 3 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 45 | 0 | 0 | 0 | -| | [@elastic/appex-sharedux @elastic/kibana-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 136 | 0 | 133 | 0 | +| | [@elastic/appex-sharedux @elastic/kibana-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 137 | 0 | 134 | 0 | | | [@elastic/appex-sharedux @elastic/kibana-management](https://github.com/orgs/elastic/teams/appex-sharedux ) | - | 20 | 0 | 11 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 88 | 0 | 10 | 0 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 56 | 0 | 6 | 0 | @@ -554,7 +557,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 18 | 0 | 18 | 0 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 31 | 1 | 24 | 1 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 22 | 0 | 16 | 0 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 106 | 0 | 106 | 2 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 105 | 0 | 105 | 2 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 55 | 1 | 50 | 0 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 10 | 0 | 10 | 2 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 99 | 1 | 99 | 0 | @@ -564,14 +567,13 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 45 | 0 | 45 | 10 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 51 | 5 | 34 | 0 | | | [@elastic/security-asset-management](https://github.com/orgs/elastic/teams/security-asset-management) | - | 66 | 0 | 66 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 4 | 0 | 4 | 0 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 5 | 0 | 5 | 0 | | | [@elastic/kibana-performance-testing](https://github.com/orgs/elastic/teams/kibana-performance-testing) | - | 3 | 0 | 3 | 1 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 1 | 0 | 0 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 1 | 0 | 1 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 46 | 0 | 44 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 10 | 0 | 10 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 167 | 0 | 137 | 6 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 44 | 0 | 43 | 0 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 164 | 0 | 138 | 6 | | | [@elastic/obs-ux-infra_services-team](https://github.com/orgs/elastic/teams/obs-ux-infra_services-team) | - | 161 | 0 | 48 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 13 | 0 | 7 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 22 | 0 | 9 | 0 | @@ -602,7 +604,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-detections-response](https://github.com/orgs/elastic/teams/security-detections-response) | - | 123 | 0 | 120 | 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) | - | 81 | 0 | 81 | 0 | -| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 3219 | 0 | 3219 | 0 | +| | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | - | 3208 | 0 | 3208 | 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 | @@ -692,7 +694,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) | - | 31 | 0 | 13 | 0 | +| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 31 | 0 | 13 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 8 | 0 | 8 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 72 | 0 | 55 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 11 | 0 | 11 | 0 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 6d18cc5466bcb..278bd364a94f4 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-03-26 +date: 2024-03-28 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 0b12ce57fe549..e3d5388b11f72 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-03-26 +date: 2024-03-28 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 8b65e3b4395d2..16f1b38db06d4 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-03-26 +date: 2024-03-28 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 b3e664d6681a7..bdcea2a60c773 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-03-26 +date: 2024-03-28 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 237da900e90e6..542591c14bd46 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-03-26 +date: 2024-03-28 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 0a8b08dc7afff..7f3173cfa6510 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-03-26 +date: 2024-03-28 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 1237412b1ee20..11e2a847fa484 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-03-26 +date: 2024-03-28 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 cdd65f638a20d..2f4220aa9ccb1 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-03-26 +date: 2024-03-28 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 01cb318612b0d..1055893d93ff2 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.devdocs.json b/api_docs/saved_objects.devdocs.json index d8de5ec40ca0a..fcc9fb97a9f69 100644 --- a/api_docs/saved_objects.devdocs.json +++ b/api_docs/saved_objects.devdocs.json @@ -50,6 +50,14 @@ "plugin": "presentationUtil", "path": "src/plugins/presentation_util/public/components/saved_object_save_modal_dashboard.tsx" }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx" + }, + { + "plugin": "lens", + "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx" + }, { "plugin": "dashboard", "path": "src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx" @@ -59,12 +67,12 @@ "path": "src/plugins/dashboard/public/dashboard_container/embeddable/api/overlays/save_modal.tsx" }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx" + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx" }, { - "plugin": "lens", - "path": "x-pack/plugins/lens/public/visualizations/xy/annotations/actions/save_action.tsx" + "plugin": "dashboard", + "path": "src/plugins/dashboard/public/dashboard_actions/add_to_library_action.tsx" }, { "plugin": "discover", diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 6f024b758d091..5124c6478ac8a 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-03-26 +date: 2024-03-28 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 86e4dbb7892e9..b0427f6b02f0a 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-03-26 +date: 2024-03-28 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 81d35c80f3039..56b8f8ccf77df 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-03-26 +date: 2024-03-28 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 6cf8ee0c69b6d..3d4af71e6f463 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-03-26 +date: 2024-03-28 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 2f6dca18c473b..a872e0d8cd852 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-03-26 +date: 2024-03-28 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 83515b3f1b230..5c9213f78d96f 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-03-26 +date: 2024-03-28 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 7bc8ca7dcbe58..6c358c211a59e 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-03-26 +date: 2024-03-28 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 4417ba5bdd978..14deae5f23672 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_connectors.devdocs.json b/api_docs/search_connectors.devdocs.json new file mode 100644 index 0000000000000..ae37858d47495 --- /dev/null +++ b/api_docs/search_connectors.devdocs.json @@ -0,0 +1,301 @@ +{ + "id": "searchConnectors", + "client": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [ + { + "parentPluginId": "searchConnectors", + "id": "def-public.ConnectorDefinition", + "type": "Type", + "tags": [], + "label": "ConnectorDefinition", + "description": [], + "signature": [ + "ConnectorClientSideDefinition", + " & ", + "ConnectorServerSideDefinition" + ], + "path": "x-pack/plugins/search_connectors/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [], + "setup": { + "parentPluginId": "searchConnectors", + "id": "def-public.SearchConnectorsPluginSetup", + "type": "Interface", + "tags": [], + "label": "SearchConnectorsPluginSetup", + "description": [], + "path": "x-pack/plugins/search_connectors/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "searchConnectors", + "id": "def-public.SearchConnectorsPluginSetup.getConnectorTypes", + "type": "Function", + "tags": [], + "label": "getConnectorTypes", + "description": [], + "signature": [ + "() => ", + "ConnectorServerSideDefinition", + "[]" + ], + "path": "x-pack/plugins/search_connectors/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "searchConnectors", + "id": "def-public.SearchConnectorsPluginStart", + "type": "Interface", + "tags": [], + "label": "SearchConnectorsPluginStart", + "description": [], + "path": "x-pack/plugins/search_connectors/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "searchConnectors", + "id": "def-public.SearchConnectorsPluginStart.getConnectorTypes", + "type": "Function", + "tags": [], + "label": "getConnectorTypes", + "description": [], + "signature": [ + "() => ", + "ConnectorDefinition", + "[]" + ], + "path": "x-pack/plugins/search_connectors/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "server": { + "classes": [], + "functions": [], + "interfaces": [ + { + "parentPluginId": "searchConnectors", + "id": "def-server.ConnectorServerSideDefinition", + "type": "Interface", + "tags": [], + "label": "ConnectorServerSideDefinition", + "description": [], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "searchConnectors", + "id": "def-server.ConnectorServerSideDefinition.categories", + "type": "Array", + "tags": [], + "label": "categories", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "searchConnectors", + "id": "def-server.ConnectorServerSideDefinition.description", + "type": "string", + "tags": [], + "label": "description", + "description": [], + "signature": [ + "string | undefined" + ], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "searchConnectors", + "id": "def-server.ConnectorServerSideDefinition.iconPath", + "type": "string", + "tags": [], + "label": "iconPath", + "description": [], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "searchConnectors", + "id": "def-server.ConnectorServerSideDefinition.isBeta", + "type": "boolean", + "tags": [], + "label": "isBeta", + "description": [], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "searchConnectors", + "id": "def-server.ConnectorServerSideDefinition.isNative", + "type": "boolean", + "tags": [], + "label": "isNative", + "description": [], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "searchConnectors", + "id": "def-server.ConnectorServerSideDefinition.isTechPreview", + "type": "CompoundType", + "tags": [], + "label": "isTechPreview", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "searchConnectors", + "id": "def-server.ConnectorServerSideDefinition.keywords", + "type": "Array", + "tags": [], + "label": "keywords", + "description": [], + "signature": [ + "string[]" + ], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "searchConnectors", + "id": "def-server.ConnectorServerSideDefinition.name", + "type": "string", + "tags": [], + "label": "name", + "description": [], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "searchConnectors", + "id": "def-server.ConnectorServerSideDefinition.serviceType", + "type": "string", + "tags": [], + "label": "serviceType", + "description": [], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], + "enums": [], + "misc": [ + { + "parentPluginId": "searchConnectors", + "id": "def-server.CONNECTOR_DEFINITIONS", + "type": "Array", + "tags": [], + "label": "CONNECTOR_DEFINITIONS", + "description": [], + "signature": [ + "ConnectorServerSideDefinition", + "[]" + ], + "path": "x-pack/plugins/search_connectors/common/connectors.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [], + "setup": { + "parentPluginId": "searchConnectors", + "id": "def-server.SearchConnectorsPluginSetup", + "type": "Interface", + "tags": [], + "label": "SearchConnectorsPluginSetup", + "description": [], + "path": "x-pack/plugins/search_connectors/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "searchConnectors", + "id": "def-server.SearchConnectorsPluginSetup.getConnectorTypes", + "type": "Function", + "tags": [], + "label": "getConnectorTypes", + "description": [], + "signature": [ + "() => ", + "ConnectorServerSideDefinition", + "[]" + ], + "path": "x-pack/plugins/search_connectors/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "lifecycle": "setup", + "initialIsOpen": true + }, + "start": { + "parentPluginId": "searchConnectors", + "id": "def-server.SearchConnectorsPluginStart", + "type": "Interface", + "tags": [], + "label": "SearchConnectorsPluginStart", + "description": [], + "path": "x-pack/plugins/search_connectors/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "lifecycle": "start", + "initialIsOpen": true + } + }, + "common": { + "classes": [], + "functions": [], + "interfaces": [], + "enums": [], + "misc": [], + "objects": [] + } +} \ No newline at end of file diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx new file mode 100644 index 0000000000000..56c66c4bc7a29 --- /dev/null +++ b/api_docs/search_connectors.mdx @@ -0,0 +1,50 @@ +--- +#### +#### This document is auto-generated and is meant to be viewed inside our experimental, new docs system. +#### Reach out in #docs-engineering for more info. +#### +id: kibSearchConnectorsPluginApi +slug: /kibana-dev-docs/api/searchConnectors +title: "searchConnectors" +image: https://source.unsplash.com/400x175/?github +description: API docs for the searchConnectors plugin +date: 2024-03-28 +tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] +--- +import searchConnectorsObj from './search_connectors.devdocs.json'; + +Plugin hosting shared features for connectors + +Contact [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) for questions regarding this plugin. + +**Code health stats** + +| Public API count | Any count | Items lacking comments | Missing exports | +|-------------------|-----------|------------------------|-----------------| +| 19 | 0 | 19 | 3 | + +## Client + +### Setup + + +### Start + + +### Consts, variables and types + + +## Server + +### Setup + + +### Start + + +### Interfaces + + +### Consts, variables and types + + diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index 155148592df09..05dd5a7ed798a 100644 --- a/api_docs/search_playground.mdx +++ b/api_docs/search_playground.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchPlayground title: "searchPlayground" image: https://source.unsplash.com/400x175/?github description: API docs for the searchPlayground plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchPlayground'] --- import searchPlaygroundObj from './search_playground.devdocs.json'; diff --git a/api_docs/security.mdx b/api_docs/security.mdx index e252b983293b2..fbda39efe916e 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-03-26 +date: 2024-03-28 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 1333eedbee98c..c9983973a0249 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -3348,7 +3348,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 responseActionsSentinelOneV2Enabled: false; readonly alertsPageChartsEnabled: true; readonly alertTypeEnabled: false; readonly expandableFlyoutInCreateRuleEnabled: true; readonly expandableEventFlyoutEnabled: false; readonly expandableTimelineFlyoutEnabled: false; 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 sentinelOneDataInAnalyzerEnabled: false; readonly sentinelOneManualHostActionsEnabled: true; readonly crowdstrikeDataInAnalyzerEnabled: false; readonly jsonPrebuiltRulesDiffingEnabled: true; readonly perFieldPrebuiltRulesDiffingEnabled: true; readonly timelineEsqlTabDisabled: false; readonly analyzerDatePickersAndSourcererDisabled: 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: true; readonly responseActionsSentinelOneV1Enabled: true; readonly responseActionsSentinelOneV2Enabled: false; readonly alertsPageChartsEnabled: true; readonly alertTypeEnabled: false; readonly expandableFlyoutInCreateRuleEnabled: true; readonly expandableEventFlyoutEnabled: false; readonly expandableTimelineFlyoutEnabled: false; 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 sentinelOneDataInAnalyzerEnabled: true; readonly sentinelOneManualHostActionsEnabled: true; readonly crowdstrikeDataInAnalyzerEnabled: false; readonly jsonPrebuiltRulesDiffingEnabled: true; readonly perFieldPrebuiltRulesDiffingEnabled: true; readonly timelineEsqlTabDisabled: false; readonly analyzerDatePickersAndSourcererDisabled: 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 f049aa2ebdbaf..8e1823aa4b715 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-03-26 +date: 2024-03-28 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 71ca25aedba67..31986bf2a7232 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-03-26 +date: 2024-03-28 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 359478e93b783..9e96114b382d1 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-03-26 +date: 2024-03-28 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 2f45c3bcf15c2..cb40f5d54fcf4 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-03-26 +date: 2024-03-28 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 ebf10f5bf4d3d..f142253d70019 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-03-26 +date: 2024-03-28 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 ca398e0c2762c..dae7f2cf21e33 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-03-26 +date: 2024-03-28 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 19c32699ad166..bdc60a1673880 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-03-26 +date: 2024-03-28 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 36fd1f91ecb55..c93b47fac0f1c 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.devdocs.json b/api_docs/slo.devdocs.json index 01fb1f6b0ef0c..69ce52111e45f 100644 --- a/api_docs/slo.devdocs.json +++ b/api_docs/slo.devdocs.json @@ -1494,9 +1494,9 @@ "label": "SloConfig", "description": [], "signature": [ - "{ readonly enabled: boolean; readonly sloOrphanSummaryCleanUpTaskEnabled: boolean; }" + "{ readonly experimental?: Readonly<{} & { ruleFormV2: Readonly<{} & { enabled: boolean; }>; }> | undefined; readonly enabled: boolean; readonly sloOrphanSummaryCleanUpTaskEnabled: boolean; }" ], - "path": "x-pack/plugins/observability_solution/slo/server/index.ts", + "path": "x-pack/plugins/observability_solution/slo/common/config.ts", "deprecated": false, "trackAdoption": false, "initialIsOpen": false diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index 648883e6a1edd..42b41a3918c35 100644 --- a/api_docs/slo.mdx +++ b/api_docs/slo.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/slo title: "slo" image: https://source.unsplash.com/400x175/?github description: API docs for the slo plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'slo'] --- import sloObj from './slo.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index 1345bff60ce5e..6f2810cd60ee3 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-03-26 +date: 2024-03-28 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 7f1e779558b84..348b1f1761519 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-03-26 +date: 2024-03-28 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 1669890bc810d..2b034ff8eac2c 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-03-26 +date: 2024-03-28 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 2e28356b7f72b..4b2ed8eb9e06a 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'stackConnectors'] --- import stackConnectorsObj from './stack_connectors.devdocs.json'; diff --git a/api_docs/task_manager.mdx b/api_docs/task_manager.mdx index 73596d9c9a343..f06ce8d1a3d37 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'taskManager'] --- import taskManagerObj from './task_manager.devdocs.json'; diff --git a/api_docs/telemetry.mdx b/api_docs/telemetry.mdx index 6c8d54b346112..45c2856dfbce4 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-03-26 +date: 2024-03-28 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 3abaff98a6196..2b3f1352f25e5 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-03-26 +date: 2024-03-28 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 50b7dc0bac47f..c1462970b2a17 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-03-26 +date: 2024-03-28 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 cf453452f8516..1a1606d7c8f20 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 9fe151626366e..53d423d688b2b 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,14 +8,14 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2024-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; -Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) for questions regarding this plugin. +Contact [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) for questions regarding this plugin. **Code health stats** diff --git a/api_docs/threat_intelligence.devdocs.json b/api_docs/threat_intelligence.devdocs.json index e1e9642ed26f4..9a90f0e74658f 100644 --- a/api_docs/threat_intelligence.devdocs.json +++ b/api_docs/threat_intelligence.devdocs.json @@ -119,7 +119,7 @@ "\nGets Security Solution shared information like browerFields, indexPattern and selectedPatterns in DataView." ], "signature": [ - "SourcererDataView" + "SelectedDataView" ], "path": "x-pack/plugins/threat_intelligence/public/types.ts", "deprecated": false, diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 509374ef8563b..58196cf39199e 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'threatIntelligence'] --- import threatIntelligenceObj from './threat_intelligence.devdocs.json'; diff --git a/api_docs/timelines.mdx b/api_docs/timelines.mdx index 511fc685d22d6..0b3a165a7aa77 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-03-26 +date: 2024-03-28 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 760186ed07f12..0db4074f2be98 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-03-26 +date: 2024-03-28 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 83178c607f57c..acf4d43db70c5 100644 --- a/api_docs/triggers_actions_ui.devdocs.json +++ b/api_docs/triggers_actions_ui.devdocs.json @@ -55,7 +55,7 @@ "label": "experimentalFeatures", "description": [], "signature": [ - "{ readonly rulesListDatagrid: boolean; readonly globalAlertsPage: boolean; readonly ruleTagFilter: boolean; readonly ruleStatusFilter: boolean; readonly rulesDetailLogs: boolean; readonly ruleUseExecutionStatus: boolean; readonly ruleKqlBar: boolean; readonly isMustacheAutocompleteOn: boolean; readonly showMustacheAutocompleteSwitch: boolean; }" + "{ readonly rulesListDatagrid: boolean; readonly globalAlertsPage: boolean; readonly ruleTagFilter: boolean; readonly ruleStatusFilter: boolean; readonly rulesDetailLogs: boolean; readonly ruleUseExecutionStatus: boolean; readonly ruleKqlBar: boolean; readonly isMustacheAutocompleteOn: boolean; readonly showMustacheAutocompleteSwitch: boolean; readonly ruleFormV2: boolean; }" ], "path": "x-pack/plugins/triggers_actions_ui/public/plugin.ts", "deprecated": false, @@ -10249,7 +10249,7 @@ "label": "ExperimentalFeatures", "description": [], "signature": [ - "{ readonly rulesListDatagrid: boolean; readonly globalAlertsPage: boolean; readonly ruleTagFilter: boolean; readonly ruleStatusFilter: boolean; readonly rulesDetailLogs: boolean; readonly ruleUseExecutionStatus: boolean; readonly ruleKqlBar: boolean; readonly isMustacheAutocompleteOn: boolean; readonly showMustacheAutocompleteSwitch: boolean; }" + "{ readonly rulesListDatagrid: boolean; readonly globalAlertsPage: boolean; readonly ruleTagFilter: boolean; readonly ruleStatusFilter: boolean; readonly rulesDetailLogs: boolean; readonly ruleUseExecutionStatus: boolean; readonly ruleKqlBar: boolean; readonly isMustacheAutocompleteOn: boolean; readonly showMustacheAutocompleteSwitch: boolean; readonly ruleFormV2: boolean; }" ], "path": "x-pack/plugins/triggers_actions_ui/common/experimental_features.ts", "deprecated": false, @@ -10328,7 +10328,7 @@ "\nA list of allowed values that can be used in `xpack.trigger_actions_ui.enableExperimental`.\nThis object is then used to validate and parse the value entered." ], "signature": [ - "{ readonly rulesListDatagrid: true; readonly globalAlertsPage: false; readonly ruleTagFilter: true; readonly ruleStatusFilter: true; readonly rulesDetailLogs: true; readonly ruleUseExecutionStatus: false; readonly ruleKqlBar: false; readonly isMustacheAutocompleteOn: false; readonly showMustacheAutocompleteSwitch: false; }" + "{ readonly rulesListDatagrid: true; readonly globalAlertsPage: false; readonly ruleTagFilter: true; readonly ruleStatusFilter: true; readonly rulesDetailLogs: true; readonly ruleUseExecutionStatus: false; readonly ruleKqlBar: false; readonly isMustacheAutocompleteOn: false; readonly showMustacheAutocompleteSwitch: false; readonly ruleFormV2: false; }" ], "path": "x-pack/plugins/triggers_actions_ui/common/experimental_features.ts", "deprecated": false, diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 1d2bcd82ab507..0824104b37a32 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-03-26 +date: 2024-03-28 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 90c23dc69a686..38dd63817f552 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-03-26 +date: 2024-03-28 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 09522a4ddb7f6..2cf802fb2fef9 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-03-26 +date: 2024-03-28 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 bc1276bb3ff09..1501f219179eb 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-03-26 +date: 2024-03-28 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 248019dfd5bfe..53301621024a6 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-03-26 +date: 2024-03-28 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 d53a50b045c0f..335b3f57144b5 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-03-26 +date: 2024-03-28 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 04f148c18f6a6..0e4338b09d4e3 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-03-26 +date: 2024-03-28 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 196f2d3938217..e2ec6785d34d2 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-03-26 +date: 2024-03-28 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 2752eb10c2cae..f1755e1ccc8a3 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-03-26 +date: 2024-03-28 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 34a24849b9d51..a01363d494831 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-03-26 +date: 2024-03-28 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 04fc92575f555..31539ae10df95 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-03-26 +date: 2024-03-28 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 1781acd8726c0..59fb6a39c6362 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-03-26 +date: 2024-03-28 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 26b7c47843c69..275d5b9a8bbaa 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-03-26 +date: 2024-03-28 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 56638bd2a3f2a..9f4f1f76d559f 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-03-26 +date: 2024-03-28 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 a977432ec707e..689389b01ef0d 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-03-26 +date: 2024-03-28 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 bf5aa3e3157f4..29d3f562c3897 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-03-26 +date: 2024-03-28 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 40a44ed697516..8c0f527abc9c1 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-03-26 +date: 2024-03-28 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 42c05431f6332..da35382d4646f 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-03-26 +date: 2024-03-28 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 37f2ef34f17b7..4c8e53d529554 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-03-26 +date: 2024-03-28 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 a13b287be804a..90592f84b7c64 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-03-26 +date: 2024-03-28 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 e17bc91f91747..a39b009a662fd 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.devdocs.json b/api_docs/visualizations.devdocs.json index 7ef51b4e90a26..cadf6d0a0d97e 100644 --- a/api_docs/visualizations.devdocs.json +++ b/api_docs/visualizations.devdocs.json @@ -6800,7 +6800,7 @@ "section": "def-public.ContainerOutput", "text": "ContainerOutput" }, - "> | undefined; parentApi: (Partial<", + "> | undefined; canLinkToLibrary: (() => Promise) | undefined; canUnlinkFromLibrary: (() => Promise) | undefined; parentApi: (Partial<", { "pluginId": "@kbn/presentation-publishing", "scope": "common", @@ -6928,7 +6928,7 @@ "section": "def-common.TimeRange", "text": "TimeRange" }, - " | undefined) => void; isCompatibleWithUnifiedSearch: (() => boolean) | undefined; canLinkToLibrary: (() => Promise) | undefined; linkToLibrary: (() => Promise) | undefined; canUnlinkFromLibrary: (() => Promise) | undefined; unlinkFromLibrary: (() => Promise) | undefined; viewMode: ", + " | undefined) => void; isCompatibleWithUnifiedSearch: (() => boolean) | undefined; linkToLibrary: (() => Promise) | undefined; unlinkFromLibrary: (() => Promise) | undefined; viewMode: ", { "pluginId": "@kbn/presentation-publishing", "scope": "common", @@ -7940,6 +7940,500 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor", + "type": "Function", + "tags": [], + "label": "findAccessor", + "description": [], + "signature": [ + "(accessor: string, columns: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]) => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor.$1", + "type": "string", + "tags": [], + "label": "accessor", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor.$2", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor", + "type": "Function", + "tags": [], + "label": "findAccessor", + "description": [], + "signature": [ + "(accessor: number, columns: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]) => number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor.$1", + "type": "number", + "tags": [], + "label": "accessor", + "description": [], + "signature": [ + "number" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor.$2", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor", + "type": "Function", + "tags": [], + "label": "findAccessor", + "description": [], + "signature": [ + "(accessor: string | number, columns: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]) => number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor.$1", + "type": "CompoundType", + "tags": [], + "label": "accessor", + "description": [], + "signature": [ + "string | number" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor.$2", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor", + "type": "Function", + "tags": [], + "label": "findAccessor", + "description": [], + "signature": [ + "(accessor: string | number, columns: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]) => number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + " | undefined" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor.$1", + "type": "CompoundType", + "tags": [], + "label": "accessor", + "description": [], + "signature": [ + "string | number" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessor.$2", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessorOrFail", + "type": "Function", + "tags": [], + "label": "findAccessorOrFail", + "description": [], + "signature": [ + "(accessor: string, columns: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]) => ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessorOrFail.$1", + "type": "string", + "tags": [], + "label": "accessor", + "description": [], + "signature": [ + "string" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessorOrFail.$2", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessorOrFail", + "type": "Function", + "tags": [], + "label": "findAccessorOrFail", + "description": [], + "signature": [ + "(accessor: number, columns: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]) => number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessorOrFail.$1", + "type": "number", + "tags": [], + "label": "accessor", + "description": [], + "signature": [ + "number" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessorOrFail.$2", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessorOrFail", + "type": "Function", + "tags": [], + "label": "findAccessorOrFail", + "description": [], + "signature": [ + "(accessor: string | number, columns: ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]) => number | ", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + } + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessorOrFail.$1", + "type": "CompoundType", + "tags": [], + "label": "accessor", + "description": [], + "signature": [ + "string | number" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "visualizations", + "id": "def-common.findAccessorOrFail.$2", + "type": "Array", + "tags": [], + "label": "columns", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[]" + ], + "path": "src/plugins/visualizations/common/utils/accessors.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "visualizations", "id": "def-common.findAccessorOrFail", @@ -15146,7 +15640,7 @@ "label": "GaugeShape", "description": [], "signature": [ - "\"arc\" | \"circle\" | \"horizontalBullet\" | \"verticalBullet\"" + "\"arc\" | \"circle\" | \"horizontalBullet\" | \"verticalBullet\" | \"semiCircle\"" ], "path": "src/plugins/visualizations/common/convert_to_lens/types/configurations.ts", "deprecated": false, @@ -16256,7 +16750,7 @@ "label": "GaugeShapes", "description": [], "signature": [ - "{ readonly HORIZONTAL_BULLET: \"horizontalBullet\"; readonly VERTICAL_BULLET: \"verticalBullet\"; readonly ARC: \"arc\"; readonly CIRCLE: \"circle\"; }" + "{ readonly HORIZONTAL_BULLET: \"horizontalBullet\"; readonly VERTICAL_BULLET: \"verticalBullet\"; readonly SEMI_CIRCLE: \"semiCircle\"; readonly ARC: \"arc\"; readonly CIRCLE: \"circle\"; }" ], "path": "src/plugins/visualizations/common/convert_to_lens/constants.ts", "deprecated": false, diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 431a0e71feaa6..53e99580b8edb 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-03-26 +date: 2024-03-28 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.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 | |-------------------|-----------|------------------------|-----------------| -| 841 | 12 | 810 | 19 | +| 862 | 12 | 831 | 19 | ## Client diff --git a/dev_docs/tutorials/saved_objects.mdx b/dev_docs/tutorials/saved_objects.mdx index d977bc7d6a7b7..f93d774e663f3 100644 --- a/dev_docs/tutorials/saved_objects.mdx +++ b/dev_docs/tutorials/saved_objects.mdx @@ -246,6 +246,36 @@ That way: - SO type versions are decoupled from stack versioning - SO type versions are independent between types +### Saved object migrations on serverless + +On serverless, Kibana cannot have any downtime — even during data migrations. In order to accomplish this we rollout new versions while old versions are still running. As soon as new versions are ready to start serving, requests will be directed to them. + + + + + + +This has a few implications: + +1. A _new version_ of application code should **never** introduce a new Saved Object field and treat it as a **required** field +2. A _new version_ of application code must be **fully backward compatible** with the **previous version's (n-1) Saved Object fields** + +In order to introduce a new, required Saved Object field the following algorithm _must_ be followed: + +1. Introduce a new model version field, consider this field _optional_ in any application code that uses it +2. Provide a `data_backfill` function for the new field +3. Merge to `main` +4. Wait for the next serverless release containing your data migration changes to complete +5. Update your code marking the new field as required in interfaces +6. Merge to `main` + +At step 6 your code that was just merged to `main` will be guaranteed to find a value for the new field in Saved Objects. + + + Not waiting until your `data_backfill` has been released means that none of your SO documents will have the field populated with the value you provided in the `data_backfill` function. The new field value will be `undefined` until migrations have run which only happens _after_ application code has already started running! + + + ### Testing model versions Bugs in model version transitions cause downtime for our users and therefore have a very high impact. Follow the section in the plugin testing guide. diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc index 42916be46afe8..db9993184b26a 100644 --- a/docs/CHANGELOG.asciidoc +++ b/docs/CHANGELOG.asciidoc @@ -66,6 +66,19 @@ Review important information about the {kib} 8.x releases. For information about the {kib} 8.13.0 release, review the following information. +[float] +[[known-issues-8.13.0]] +=== Known issues + +[discrete] +[[known-179457]] +.In Canvas, an empty text element incorrectly triggers a toast notification +[%collapsible] +==== +*Details* + +In Canvas, an empty text element incorrectly triggers a "Markdown content is required in [readOnly] mode" toast notification. For more information, refer to ({kibana-pull}179457[#179457]). +==== + [float] [[breaking-changes-8.13.0]] === Breaking changes diff --git a/docs/management/connectors/pre-configured-connectors.asciidoc b/docs/management/connectors/pre-configured-connectors.asciidoc index c027220376cdf..893e2c03e93bf 100644 --- a/docs/management/connectors/pre-configured-connectors.asciidoc +++ b/docs/management/connectors/pre-configured-connectors.asciidoc @@ -148,7 +148,7 @@ xpack.actions.preconfigured: actionTypeId: .bedrock config: apiUrl: https://bedrock-runtime.us-east-1.amazonaws.com <1> - defaultModel: anthropic.claude-v2:1 <2> + defaultModel: anthropic.claude-3-sonnet-20240229-v1:0 <2> secrets: accessKey: key-value <3> secret: secret-value <4> diff --git a/docs/settings/alert-action-settings.asciidoc b/docs/settings/alert-action-settings.asciidoc index 2bfde478a494d..7bd1a09396d01 100644 --- a/docs/settings/alert-action-settings.asciidoc +++ b/docs/settings/alert-action-settings.asciidoc @@ -340,7 +340,7 @@ For a <>, specifies a string f The default model to use for requests, which varies by connector: + -- -* For an <>, current support is for the Anthropic Claude models. Defaults to `anthropic.claude-v2:1`. +* For an <>, current support is for the Anthropic Claude models. Defaults to `anthropic.claude-3-sonnet-20240229-v1:0`. * For a <>, it is optional and applicable only when `xpack.actions.preconfigured..config.apiProvider` is `OpenAI`. -- diff --git a/examples/esql_validation_example/README.md b/examples/esql_validation_example/README.md new file mode 100644 index 0000000000000..1f4232c13f4b5 --- /dev/null +++ b/examples/esql_validation_example/README.md @@ -0,0 +1,9 @@ +# esql_validation_example + +Examples of the ES|QL validation service. + +To run this example, start kibana with the `--run-examples` flag. + +```bash +yarn start --run-examples +``` \ No newline at end of file diff --git a/examples/esql_validation_example/kibana.jsonc b/examples/esql_validation_example/kibana.jsonc new file mode 100644 index 0000000000000..367f1920ce8b2 --- /dev/null +++ b/examples/esql_validation_example/kibana.jsonc @@ -0,0 +1,17 @@ +{ + "type": "plugin", + "id": "@kbn/esql-validation-example-plugin", + "owner": "@elastic/kibana-esql", + "plugin": { + "id": "esqlValidationExample", + "server": false, + "browser": true, + "configPath": [ + "esql_validation_example" + ], + "requiredPlugins": [ + "dataViews", + "developerExamples" + ] + } + } \ No newline at end of file diff --git a/examples/esql_validation_example/public/app.tsx b/examples/esql_validation_example/public/app.tsx new file mode 100644 index 0000000000000..918fbd6be79ab --- /dev/null +++ b/examples/esql_validation_example/public/app.tsx @@ -0,0 +1,178 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useEffect, useMemo, useState } from 'react'; +import { + EuiPage, + EuiPageBody, + EuiPageSection, + EuiPageHeader, + EuiSpacer, + EuiFieldText, + EuiCheckboxGroup, + EuiFormRow, + EuiSwitch, + EuiForm, + EuiCallOut, +} from '@elastic/eui'; + +import type { CoreStart } from '@kbn/core/public'; + +import { ESQLCallbacks, validateQuery } from '@kbn/esql-validation-autocomplete'; +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; +import type { StartDependencies } from './plugin'; +import { CodeSnippet } from './code_snippet'; + +export const App = (props: { core: CoreStart; plugins: StartDependencies }) => { + const [currentErrors, setErrors] = useState([]); + const [currentWarnings, setWarnings] = useState([]); + const [currentQuery, setQuery] = useState( + 'from index1 | eval var0 = round(numberField, 2) | stats by stringField' + ); + + const [ignoreErrors, setIgnoreErrors] = useState(false); + const [callbacksEnabled, setCallbacksEnabled] = useState< + Record<'sources' | 'fields' | 'policies' | 'metaFields', boolean> + >({ + sources: false, + fields: true, + policies: true, + metaFields: true, + }); + + const callbacks: ESQLCallbacks = useMemo( + () => ({ + getSources: callbacksEnabled.sources + ? async () => + ['index1', 'anotherIndex', 'dataStream'].map((name) => ({ name, hidden: false })) + : undefined, + getFieldsFor: callbacksEnabled.fields + ? async () => [ + { name: 'numberField', type: 'number' }, + { name: 'stringField', type: 'string' }, + ] + : undefined, + getMetaFields: callbacksEnabled.metaFields + ? async () => ['_version', '_id', '_index', '_source'] + : undefined, + getPolicies: callbacksEnabled.policies + ? async () => [ + { + name: 'my-policy', + sourceIndices: ['policyIndex'], + matchField: 'otherStringField', + enrichFields: ['otherNumberField'], + }, + ] + : undefined, + }), + [callbacksEnabled] + ); + + useEffect(() => { + if (currentQuery === '') { + return; + } + validateQuery( + currentQuery, + getAstAndSyntaxErrors, + { ignoreOnMissingCallbacks: ignoreErrors }, + callbacks + ).then(({ errors: validationErrors, warnings: validationWarnings }) => { + // syntax errors come with a slight different format than other validation errors + setErrors(validationErrors.map((e) => ('severity' in e ? e.message : e.text))); + setWarnings(validationWarnings.map((e) => e.text)); + }); + }, [currentQuery, ignoreErrors, callbacks]); + + const checkboxes = [ + { + id: 'sources', + label: 'getSources callback => index1, anotherIndex, dataStream', + }, + { + id: 'fields', + label: 'getFieldsFor callback => numberField, stringField', + }, + { + id: 'policies', + label: 'getPolicies callback => my-policy', + }, + { + id: 'metaFields', + label: 'getMetaFields callback => _version, _id, _index, _source', + }, + ]; + + return ( + + + + +

This app shows how to use the ES|QL validation API with all its options

+ + + + { + setCallbacksEnabled({ + ...callbacksEnabled, + [optionId]: !callbacksEnabled[optionId as keyof typeof callbacksEnabled], + }); + }} + /> + + + + + setIgnoreErrors(!ignoreErrors)} + /> + + + 0} + error={currentErrors} + > + setQuery(e.target.value)} + isInvalid={currentErrors.length > 0} + /> + + {currentWarnings.length ? ( + +

Here the list of warnings:

+
    + {currentWarnings.map((message) => ( +
  • {message}
  • + ))} +
+
+ ) : null} +
+ + +
+
+
+ ); +}; diff --git a/examples/esql_validation_example/public/code_snippet.tsx b/examples/esql_validation_example/public/code_snippet.tsx new file mode 100644 index 0000000000000..e80b52b4dd378 --- /dev/null +++ b/examples/esql_validation_example/public/code_snippet.tsx @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { EuiCodeBlock } from '@elastic/eui'; +import React from 'react'; + +interface CodeSnippetProps { + currentQuery: string; + callbacks: Record<'sources' | 'fields' | 'policies' | 'metaFields', boolean>; + ignoreErrors: boolean; +} + +function getCallbacksCode(callbacks: CodeSnippetProps['callbacks']) { + return `({ + ${ + callbacks.sources + ? `getSources: async () => + ['index1', 'anotherIndex', 'dataStream'].map((name) => ({ name, hidden: false })),` + : '' + } + ${ + callbacks.fields + ? ` + // the getFieldsFor callback gets an esql query to get the required fields + // note that the query is not optimized yet, so things like "| limit 0" + // might be appended to speed up the retrieval. + getFieldsFor: async (esqlFieldsQuery: string) => [ + { name: 'numberField', type: 'number' }, + { name: 'stringField', type: 'string' }, + ],` + : '' + } + ${ + callbacks.metaFields + ? `getMetaFields: async () => ['_version', '_id', '_index', '_source'],` + : '' + } + ${ + callbacks.policies + ? `getPolicies: async () => [ + { + name: 'my-policy', + sourceIndices: ['policyIndex'], + matchField: 'otherStringField', + enrichFields: ['otherNumberField'], + }, + ],` + : '' + } +})`.replace(/^\s*\n/gm, ''); +} + +export function CodeSnippet({ currentQuery, callbacks, ignoreErrors }: CodeSnippetProps) { + return ( + + {` +import { ESQLCallbacks, validateQuery } from '@kbn/esql-validation-autocomplete'; +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; + +const currentQuery = "${currentQuery}"; + +const callbacks: ESQLCallbacks = () => ${getCallbacksCode(callbacks)}; + +const {errors, warnings} = validateQuery( + currentQuery, + getAstAndSyntaxErrors, + { ignoreOnMissingCallbacks: ${Boolean(ignoreErrors)} }, + callbacks +); +`} + + ); +} diff --git a/examples/esql_validation_example/public/esql_validation_app.png b/examples/esql_validation_example/public/esql_validation_app.png new file mode 100644 index 0000000000000..b1dd6bc4f3263 Binary files /dev/null and b/examples/esql_validation_example/public/esql_validation_app.png differ diff --git a/packages/presentation/presentation_library/index.ts b/examples/esql_validation_example/public/index.tsx similarity index 63% rename from packages/presentation/presentation_library/index.ts rename to examples/esql_validation_example/public/index.tsx index 4d7e1e41b0671..e025b806f0596 100644 --- a/packages/presentation/presentation_library/index.ts +++ b/examples/esql_validation_example/public/index.tsx @@ -6,8 +6,6 @@ * Side Public License, v 1. */ -export { type CanLinkToLibrary, apiCanLinkToLibrary } from './interfaces/can_link_to_library'; -export { - type CanUnlinkFromLibrary, - apiCanUnlinkFromLibrary, -} from './interfaces/can_unlink_from_library'; +import { ESQLValidationExamplePlugin } from './plugin'; + +export const plugin = () => new ESQLValidationExamplePlugin(); diff --git a/examples/esql_validation_example/public/mount.tsx b/examples/esql_validation_example/public/mount.tsx new file mode 100644 index 0000000000000..2133fe83a8406 --- /dev/null +++ b/examples/esql_validation_example/public/mount.tsx @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import * as React from 'react'; +import { render, unmountComponentAtNode } from 'react-dom'; + +import type { CoreSetup, AppMountParameters } from '@kbn/core/public'; +import type { StartDependencies } from './plugin'; + +export const mount = + (coreSetup: CoreSetup) => + async ({ element }: AppMountParameters) => { + const [core, plugins] = await coreSetup.getStartServices(); + const { App } = await import('./app'); + + const i18nCore = core.i18n; + + const reactElement = ( + + + + ); + + render(reactElement, element); + return () => { + unmountComponentAtNode(element); + plugins.data.search.session.clear(); + }; + }; diff --git a/examples/esql_validation_example/public/plugin.ts b/examples/esql_validation_example/public/plugin.ts new file mode 100644 index 0000000000000..7d68daa81f89b --- /dev/null +++ b/examples/esql_validation_example/public/plugin.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Plugin, CoreSetup } from '@kbn/core/public'; +import { DataPublicPluginStart } from '@kbn/data-plugin/public'; +import { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; +import { DeveloperExamplesSetup } from '@kbn/developer-examples-plugin/public'; +import { mount } from './mount'; +import image from './esql_validation_app.png'; + +export interface SetupDependencies { + developerExamples: DeveloperExamplesSetup; +} + +export interface StartDependencies { + data: DataPublicPluginStart; + dataViews: DataViewsPublicPluginStart; +} + +export class ESQLValidationExamplePlugin + implements Plugin +{ + public setup(core: CoreSetup, { developerExamples }: SetupDependencies) { + core.application.register({ + id: 'esql_validation_example', + title: 'ES|QL Validation example', + visibleIn: [], + mount: mount(core), + }); + + developerExamples.register({ + appId: 'esql_validation_example', + title: 'ES|QL Validation', + description: 'Validate ES|QL queries using the @kbn/esql-validation-autocomplete package.', + image, + links: [ + { + label: 'README', + href: 'https://github.com/elastic/kibana/tree/main/packages/kbn-esql-validation-autocomplete/README.md', + iconType: 'logoGithub', + size: 's', + target: '_blank', + }, + ], + }); + } + + public start() {} + + public stop() {} +} diff --git a/examples/esql_validation_example/tsconfig.json b/examples/esql_validation_example/tsconfig.json new file mode 100644 index 0000000000000..84056b3524cc5 --- /dev/null +++ b/examples/esql_validation_example/tsconfig.json @@ -0,0 +1,24 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types" + }, + "include": [ + "index.ts", + "public/**/*.ts", + "public/**/*.tsx", + "server/**/*.ts", + "../../../typings/**/*" + ], + "exclude": [ + "target/**/*", + ], + "kbn_references": [ + "@kbn/core", + "@kbn/data-plugin", + "@kbn/data-views-plugin", + "@kbn/developer-examples-plugin", + "@kbn/esql-ast", + "@kbn/esql-validation-autocomplete", + ] +} diff --git a/package.json b/package.json index 3849f2ba78da1..1628778cbe832 100644 --- a/package.json +++ b/package.json @@ -140,10 +140,13 @@ "@kbn/actions-types": "link:packages/kbn-actions-types", "@kbn/advanced-settings-plugin": "link:src/plugins/advanced_settings", "@kbn/ai-assistant-management-plugin": "link:src/plugins/ai_assistant_management/selection", + "@kbn/aiops-change-point-detection": "link:x-pack/packages/ml/aiops_change_point_detection", + "@kbn/aiops-common": "link:x-pack/packages/ml/aiops_common", "@kbn/aiops-components": "link:x-pack/packages/ml/aiops_components", + "@kbn/aiops-log-pattern-analysis": "link:x-pack/packages/ml/aiops_log_pattern_analysis", + "@kbn/aiops-log-rate-analysis": "link:x-pack/packages/ml/aiops_log_rate_analysis", "@kbn/aiops-plugin": "link:x-pack/plugins/aiops", "@kbn/aiops-test-utils": "link:x-pack/packages/ml/aiops_test_utils", - "@kbn/aiops-utils": "link:x-pack/packages/ml/aiops_utils", "@kbn/alerting-api-integration-test-plugin": "link:x-pack/test/alerting_api_integration/common/plugins/alerts", "@kbn/alerting-example-plugin": "link:x-pack/examples/alerting_example", "@kbn/alerting-fixture-plugin": "link:x-pack/test/functional_with_es_ssl/plugins/alerts", @@ -164,6 +167,7 @@ "@kbn/analytics-shippers-fullstory": "link:packages/analytics/shippers/fullstory", "@kbn/apm-config-loader": "link:packages/kbn-apm-config-loader", "@kbn/apm-data-access-plugin": "link:x-pack/plugins/observability_solution/apm_data_access", + "@kbn/apm-data-view": "link:packages/kbn-apm-data-view", "@kbn/apm-plugin": "link:x-pack/plugins/observability_solution/apm", "@kbn/apm-utils": "link:packages/kbn-apm-utils", "@kbn/app-link-test-plugin": "link:test/plugin_functional/plugins/app_link_test", @@ -433,7 +437,10 @@ "@kbn/es-ui-shared-plugin": "link:src/plugins/es_ui_shared", "@kbn/eso-model-version-example": "link:examples/eso_model_version_example", "@kbn/eso-plugin": "link:x-pack/test/encrypted_saved_objects_api_integration/plugins/api_consumer_plugin", + "@kbn/esql-ast": "link:packages/kbn-esql-ast", "@kbn/esql-utils": "link:packages/kbn-esql-utils", + "@kbn/esql-validation-autocomplete": "link:packages/kbn-esql-validation-autocomplete", + "@kbn/esql-validation-example-plugin": "link:examples/esql_validation_example", "@kbn/event-annotation-common": "link:packages/kbn-event-annotation-common", "@kbn/event-annotation-components": "link:packages/kbn-event-annotation-components", "@kbn/event-annotation-listing-plugin": "link:src/plugins/event_annotation_listing", @@ -622,7 +629,6 @@ "@kbn/portable-dashboards-example": "link:examples/portable_dashboards_example", "@kbn/preboot-example-plugin": "link:examples/preboot_example", "@kbn/presentation-containers": "link:packages/presentation/presentation_containers", - "@kbn/presentation-library": "link:packages/presentation/presentation_library", "@kbn/presentation-panel-plugin": "link:src/plugins/presentation_panel", "@kbn/presentation-publishing": "link:packages/presentation/presentation_publishing", "@kbn/presentation-util-plugin": "link:src/plugins/presentation_util", @@ -1125,7 +1131,7 @@ "suricata-sid-db": "^1.0.2", "swr": "^2.2.5", "symbol-observable": "^1.2.0", - "tar": "^6.1.15", + "tar": "^6.2.1", "textarea-caret": "^3.1.0", "tinycolor2": "1.4.1", "tinygradient": "0.4.3", @@ -1497,7 +1503,7 @@ "@types/styled-components": "^5.1.0", "@types/supertest": "^2.0.12", "@types/tapable": "^1.0.6", - "@types/tar": "^6.1.5", + "@types/tar": "^6.1.11", "@types/testing-library__jest-dom": "^5.14.7", "@types/textarea-caret": "^3.0.1", "@types/tinycolor2": "^1.4.1", diff --git a/packages/core/apps/core-apps-server-internal/src/core_app.test.ts b/packages/core/apps/core-apps-server-internal/src/core_app.test.ts index 153a283fe5696..3c5cfa068765c 100644 --- a/packages/core/apps/core-apps-server-internal/src/core_app.test.ts +++ b/packages/core/apps/core-apps-server-internal/src/core_app.test.ts @@ -316,7 +316,7 @@ describe('CoreApp', () => { }); }); - it('registers expected static dirs if there are public plugins', async () => { + it('registers expected static dirs for all plugins with static dirs', async () => { const uiPlugins = emptyPlugins(); uiPlugins.public.set('some-plugin', { type: PluginType.preboot, @@ -348,6 +348,12 @@ describe('CoreApp', () => { requiredBundles: [], version: '1.0.0', }); + uiPlugins.internal.set('some-plugin-3-internal', { + publicAssetsDir: '/foo-internal', + publicTargetDir: '/bar-internal', + requiredBundles: [], + version: '1.0.0', + }); internalCoreSetup.http.staticAssets.prependServerPath.mockReturnValue('/static-assets-path'); internalCoreSetup.http.staticAssets.getPluginServerPath.mockImplementation( @@ -356,8 +362,8 @@ describe('CoreApp', () => { await coreApp.setup(internalCoreSetup, uiPlugins); expect(internalCoreSetup.http.registerStaticDir).toHaveBeenCalledTimes( - // Twice for all UI plugins + core's UI asset routes - uiPlugins.public.size * 2 + 2 + // Twice for all _internal_ UI plugins + core's UI asset routes + uiPlugins.internal.size * 2 + 2 ); expect(internalCoreSetup.http.registerStaticDir).toHaveBeenCalledWith( '/static-assets-path', @@ -383,5 +389,14 @@ describe('CoreApp', () => { '/plugins/some-plugin-2/assets/{path*}', // legacy expect.any(String) ); + + expect(internalCoreSetup.http.registerStaticDir).toHaveBeenCalledWith( + '/static-assets-path/some-plugin-3-internal/{path*}', + expect.any(String) + ); + expect(internalCoreSetup.http.registerStaticDir).toHaveBeenCalledWith( + '/plugins/some-plugin-3-internal/assets/{path*}', // legacy + expect.any(String) + ); }); }); diff --git a/packages/core/apps/core-apps-server-internal/src/core_app.ts b/packages/core/apps/core-apps-server-internal/src/core_app.ts index a65b3373b2e83..2639e15cca05e 100644 --- a/packages/core/apps/core-apps-server-internal/src/core_app.ts +++ b/packages/core/apps/core-apps-server-internal/src/core_app.ts @@ -283,9 +283,8 @@ export class CoreAppsService { ); }); - for (const [pluginName] of uiPlugins.public) { - const pluginInfo = uiPlugins.internal.get(pluginName); - if (!pluginInfo) continue; // assuming we will never hit this case; a public entry should have internal info registered + for (const [pluginName, pluginInfo] of uiPlugins.internal) { + if (!pluginInfo.publicAssetsDir) continue; /** * Serve UI from sha-scoped and not-sha-scoped paths to allow time for plugin code to migrate * Eventually we only want to serve from the sha scoped path diff --git a/packages/core/http/core-http-router-server-internal/src/request.ts b/packages/core/http/core-http-router-server-internal/src/request.ts index 307950c1fe05d..3c60b32219eaa 100644 --- a/packages/core/http/core-http-router-server-internal/src/request.ts +++ b/packages/core/http/core-http-router-server-internal/src/request.ts @@ -20,7 +20,7 @@ import { RouteMethod, validBodyOutput, IKibanaSocket, - RouteValidatorFullConfig, + RouteValidatorFullConfigRequest, KibanaRequestRoute, KibanaRequestEvents, KibanaRequestAuth, @@ -66,7 +66,7 @@ export class CoreKibanaRequest< req: RawRequest, routeSchemas: | RouteValidator - | RouteValidatorFullConfig + | RouteValidatorFullConfigRequest | undefined = undefined, withoutSecretHeaders: boolean = true ) { diff --git a/packages/core/http/core-http-router-server-internal/src/router.ts b/packages/core/http/core-http-router-server-internal/src/router.ts index b4089008593a1..07afa965b3bc0 100644 --- a/packages/core/http/core-http-router-server-internal/src/router.ts +++ b/packages/core/http/core-http-router-server-internal/src/router.ts @@ -25,7 +25,7 @@ import type { RequestHandler, VersionedRouter, } from '@kbn/core-http-server'; -import { validBodyOutput } from '@kbn/core-http-server'; +import { validBodyOutput, getRequestValidation } from '@kbn/core-http-server'; import { RouteValidator } from './validator'; import { CoreVersionedRouter } from './versioned_router'; import { CoreKibanaRequest } from './request'; @@ -67,17 +67,15 @@ function routeSchemasFromRouteConfig( } if (route.validate !== false) { - Object.entries(route.validate).forEach(([key, schema]) => { + const validation = getRequestValidation(route.validate); + Object.entries(validation).forEach(([key, schema]) => { if (!(isConfigSchema(schema) || typeof schema === 'function')) { throw new Error( `Expected a valid validation logic declared with '@kbn/config-schema' package or a RouteValidationFunction at key: [${key}].` ); } }); - } - - if (route.validate) { - return RouteValidator.from(route.validate); + return RouteValidator.from(validation); } } @@ -93,7 +91,7 @@ function validOptions( ) { const shouldNotHavePayload = ['head', 'get'].includes(method); const { options = {}, validate } = routeConfig; - const shouldValidateBody = (validate && !!validate.body) || !!options.body; + const shouldValidateBody = (validate && !!getRequestValidation(validate).body) || !!options.body; const { output } = options.body || {}; if (typeof output === 'string' && !validBodyOutput.includes(output)) { diff --git a/packages/core/http/core-http-router-server-internal/src/validator.ts b/packages/core/http/core-http-router-server-internal/src/validator.ts index 8e9f700915e1a..69cb6b253b826 100644 --- a/packages/core/http/core-http-router-server-internal/src/validator.ts +++ b/packages/core/http/core-http-router-server-internal/src/validator.ts @@ -12,7 +12,7 @@ import type { RouteValidationSpec, RouteValidationFunction, RouteValidatorConfig, - RouteValidatorFullConfig, + RouteValidatorFullConfigRequest, RouteValidationResultFactory, RouteValidatorOptions, } from '@kbn/core-http-server'; @@ -34,7 +34,7 @@ type RouteValidationResultType | undefined> = */ export class RouteValidator

{ public static from<_P = {}, _Q = {}, _B = {}>( - opts: RouteValidator<_P, _Q, _B> | RouteValidatorFullConfig<_P, _Q, _B> + opts: RouteValidator<_P, _Q, _B> | RouteValidatorFullConfigRequest<_P, _Q, _B> ) { if (opts instanceof RouteValidator) { return opts; diff --git a/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts b/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts index a22222d2de85e..b431d53183dc3 100644 --- a/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts +++ b/packages/core/http/core-http-router-server-internal/src/versioned_router/core_versioned_router.ts @@ -8,6 +8,7 @@ import type { IRouter } from '@kbn/core-http-server'; import type { VersionedRouter, VersionedRoute, VersionedRouteConfig } from '@kbn/core-http-server'; +import { omit } from 'lodash'; import { CoreVersionedRoute } from './core_versioned_route'; import type { HandlerResolutionStrategy, Method, VersionedRouterRoute } from './types'; @@ -90,7 +91,7 @@ export class CoreVersionedRouter implements VersionedRouter { return { path: route.path, method: route.method, - options: route.options, + options: omit(route.options, 'path'), handlers: route.getHandlers(), }; }); diff --git a/packages/core/http/core-http-router-server-internal/src/versioned_router/types.ts b/packages/core/http/core-http-router-server-internal/src/versioned_router/types.ts index b085593cb0a5e..b1b99d5bcaf57 100644 --- a/packages/core/http/core-http-router-server-internal/src/versioned_router/types.ts +++ b/packages/core/http/core-http-router-server-internal/src/versioned_router/types.ts @@ -22,7 +22,7 @@ export interface VersionedRouterRoute { /** @internal */ path: string; /** @internal */ - options: VersionedRouteConfig; + options: Omit, 'path'>; /** @internal */ handlers: Array<{ fn: RequestHandler; diff --git a/packages/core/http/core-http-router-server-internal/src/versioned_router/validate.ts b/packages/core/http/core-http-router-server-internal/src/versioned_router/validate.ts index 37443209e4508..ef03c1098fc45 100644 --- a/packages/core/http/core-http-router-server-internal/src/versioned_router/validate.ts +++ b/packages/core/http/core-http-router-server-internal/src/versioned_router/validate.ts @@ -6,14 +6,14 @@ * Side Public License, v 1. */ -import type { RouteValidatorFullConfig } from '@kbn/core-http-server'; +import type { RouteValidatorFullConfigRequest } from '@kbn/core-http-server'; import type { ApiVersion } from '@kbn/core-http-server'; import { RouteValidator } from '../validator'; /** Will throw if any of the validation checks fail */ export function validate( data: { body?: unknown; params?: unknown; query?: unknown }, - runtimeSchema: RouteValidatorFullConfig, + runtimeSchema: RouteValidatorFullConfigRequest, version: ApiVersion ): { body: unknown; params: unknown; query: unknown } { const validator = RouteValidator.from(runtimeSchema); diff --git a/packages/core/http/core-http-server/index.ts b/packages/core/http/core-http-server/index.ts index 82022ce77d6e3..9c6bac49bc143 100644 --- a/packages/core/http/core-http-server/index.ts +++ b/packages/core/http/core-http-server/index.ts @@ -87,7 +87,6 @@ export type { RouteValidationResultFactory, RouteValidationSpec, RouteValidatorConfig, - RouteValidatorFullConfig, RouteValidatorOptions, IRouter, RouteRegistrar, @@ -101,8 +100,12 @@ export type { LifecycleResponseFactory, RawRequest, FakeRawRequest, + RouteValidator, + RouteValidatorRequestAndResponses, + RouteValidatorFullConfigRequest, + RouteValidatorFullConfigResponse, } from './src/router'; -export { validBodyOutput, RouteValidationError } from './src/router'; +export { validBodyOutput, RouteValidationError, getRequestValidation } from './src/router'; export type { ICspConfig } from './src/csp'; diff --git a/packages/core/http/core-http-server/src/router/index.ts b/packages/core/http/core-http-server/src/router/index.ts index 628bab27db54f..8f4cf7bd9045f 100644 --- a/packages/core/http/core-http-server/src/router/index.ts +++ b/packages/core/http/core-http-server/src/router/index.ts @@ -57,8 +57,11 @@ export type { RouteValidationResultFactory, RouteValidationSpec, RouteValidatorConfig, - RouteValidatorFullConfig, + RouteValidatorFullConfigRequest, + RouteValidatorFullConfigResponse, RouteValidatorOptions, + RouteValidator, + RouteValidatorRequestAndResponses, } from './route_validator'; export { RouteValidationError } from './route_validator'; export type { IRouter, RouteRegistrar, RouterRoute } from './router'; @@ -72,3 +75,4 @@ export type { LifecycleResponseFactory, } from './response_factory'; export type { RawRequest, FakeRawRequest } from './raw_request'; +export { getRequestValidation, isFullValidatorContainer } from './utils'; diff --git a/packages/core/http/core-http-server/src/router/route.ts b/packages/core/http/core-http-server/src/router/route.ts index 62ec27dbc12b0..2b54a0774e521 100644 --- a/packages/core/http/core-http-server/src/router/route.ts +++ b/packages/core/http/core-http-server/src/router/route.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { RouteValidatorFullConfig } from './route_validator'; +import type { RouteValidator } from './route_validator'; /** * The set of valid body.output @@ -159,6 +159,9 @@ export interface RouteConfigOptions { */ idleSocket?: number; }; + + /** Human-friendly description of this endpoint */ + description?: string; } /** @@ -237,7 +240,7 @@ export interface RouteConfig { * }); * ``` */ - validate: RouteValidatorFullConfig | false; + validate: RouteValidator | false; /** * Additional route options {@link RouteConfigOptions}. diff --git a/packages/core/http/core-http-server/src/router/route_validator.ts b/packages/core/http/core-http-server/src/router/route_validator.ts index 87e05e58bf12d..2717117298673 100644 --- a/packages/core/http/core-http-server/src/router/route_validator.ts +++ b/packages/core/http/core-http-server/src/router/route_validator.ts @@ -126,5 +126,33 @@ export interface RouteValidatorOptions { * Route validations config and options merged into one object * @public */ -export type RouteValidatorFullConfig = RouteValidatorConfig & +export type RouteValidatorFullConfigRequest = RouteValidatorConfig & RouteValidatorOptions; + +/** + * Map of status codes to response schemas. + * @public + */ +export interface RouteValidatorFullConfigResponse { + [statusCode: number]: { body: ObjectType | Type }; + unsafe?: { + body?: boolean; + }; +} + +/** + * An alternative form to register both request schema and all response schemas. + * @public + */ +export interface RouteValidatorRequestAndResponses { + request: RouteValidatorFullConfigRequest; + response?: RouteValidatorFullConfigResponse; +} + +/** + * Type container for schemas used in route related validations + * @public + */ +export type RouteValidator = + | RouteValidatorFullConfigRequest + | RouteValidatorRequestAndResponses; diff --git a/packages/core/http/core-http-server/src/router/router.ts b/packages/core/http/core-http-server/src/router/router.ts index cf1f87a9f86bb..dd7bbf24120ea 100644 --- a/packages/core/http/core-http-server/src/router/router.ts +++ b/packages/core/http/core-http-server/src/router/router.ts @@ -13,6 +13,7 @@ import type { RouteConfig, RouteMethod } from './route'; import type { RequestHandler, RequestHandlerWrapper } from './request_handler'; import type { RequestHandlerContextBase } from './request_handler_context'; import type { RouteConfigOptions } from './route'; +import { RouteValidator } from './route_validator'; /** * Route handler common definition @@ -123,6 +124,7 @@ export interface RouterRoute { method: RouteMethod; path: string; options: RouteConfigOptions; + validationSchemas?: RouteValidator | false; handler: ( req: Request, responseToolkit: ResponseToolkit diff --git a/packages/core/http/core-http-server/src/router/utils.test.ts b/packages/core/http/core-http-server/src/router/utils.test.ts new file mode 100644 index 0000000000000..4ead53898bb8c --- /dev/null +++ b/packages/core/http/core-http-server/src/router/utils.test.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { ObjectType } from '@kbn/config-schema'; +import type { RouteValidator } from './route_validator'; +import { getRequestValidation, isFullValidatorContainer } from './utils'; + +type Validator = RouteValidator; + +describe('isFullValidatorContainer', () => { + it('correctly identifies RouteValidatorRequestAndResponses', () => { + const fullValidatorContainer: Validator = { + request: { + body: {} as ObjectType, + }, + response: {}, + }; + + expect(isFullValidatorContainer(fullValidatorContainer)).toBe(true); + expect(isFullValidatorContainer({})).toBe(false); + }); +}); + +describe('getRequestValidation', () => { + it('correctly extracts validation config', () => { + const validationDummy = { + body: {} as unknown as ObjectType, + }; + const fullValidatorContainer: Validator = { + request: validationDummy, + response: {}, + }; + const fullValidator: Validator = validationDummy; + + expect(getRequestValidation(fullValidatorContainer)).toBe(validationDummy); + expect(getRequestValidation(fullValidator)).toBe(validationDummy); + }); +}); diff --git a/packages/core/http/core-http-server/src/router/utils.ts b/packages/core/http/core-http-server/src/router/utils.ts new file mode 100644 index 0000000000000..c09e4e624ef31 --- /dev/null +++ b/packages/core/http/core-http-server/src/router/utils.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { + RouteValidator, + RouteValidatorFullConfigRequest, + RouteValidatorRequestAndResponses, +} from './route_validator'; + +type AnyRouteValidator = RouteValidator; + +/** + * {@link RouteValidator} is a union type of all possible ways that validation + * configuration can be registered. This helper utility narrows down the type + * by indicating whether it is {@link RouteValidatorRequestAndResponses} or not. + * @public + */ +export function isFullValidatorContainer( + value: AnyRouteValidator +): value is RouteValidatorRequestAndResponses { + return 'request' in value; +} + +/** + * Extracts {@link RouteValidatorFullConfigRequest} from the validation container. + * This utility is intended to be used by code introspecting router validation configuration. + * @public + */ +export function getRequestValidation( + value: RouteValidator +): RouteValidatorFullConfigRequest { + return isFullValidatorContainer(value) ? value.request : value; +} diff --git a/packages/core/http/core-http-server/src/versioning/types.ts b/packages/core/http/core-http-server/src/versioning/types.ts index f295fbaf0e534..e6527d3b0fc3e 100644 --- a/packages/core/http/core-http-server/src/versioning/types.ts +++ b/packages/core/http/core-http-server/src/versioning/types.ts @@ -15,7 +15,7 @@ import type { RequestHandler, IKibanaResponse, RouteConfigOptions, - RouteValidatorFullConfig, + RouteValidatorFullConfigRequest, RequestHandlerContextBase, RouteValidationFunction, } from '../..'; @@ -186,7 +186,7 @@ export interface VersionedRouter { } /** @public */ -export type VersionedRouteRequestValidation = RouteValidatorFullConfig; +export type VersionedRouteRequestValidation = RouteValidatorFullConfigRequest; /** @public */ export interface VersionedRouteResponseValidation { diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/index.ts index 2a0da30136a7b..49ae09a16e7bb 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/index.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/index.ts @@ -61,4 +61,3 @@ export { type DocumentsTransformFailed, type DocumentsTransformSuccess, } from './src/core'; -export { MIGRATION_CLIENT_OPTIONS } from './src/run_resilient_migrator'; diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/clone_index.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/clone_index.test.ts index 1fcf778602454..4fc54c0a26936 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/clone_index.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/clone_index.test.ts @@ -67,7 +67,7 @@ describe('cloneIndex', () => { }, }, "target": "my_target_index", - "timeout": "60s", + "timeout": "300s", "wait_for_active_shards": "all", } `); diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/constants.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/constants.ts index 8432e60bf2329..81ded4c7c986f 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/constants.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/constants.ts @@ -16,7 +16,7 @@ * reverse proxies like ELB ignore TCP keep-alive packets so unless there's a * request or response sent over the socket it will be dropped after 60s. */ -export const DEFAULT_TIMEOUT = '60s'; +export const DEFAULT_TIMEOUT = '300s'; /** Allocate 1 replica if there are enough data nodes, otherwise continue with 0 */ export const INDEX_AUTO_EXPAND_REPLICAS = '0-1'; /** ES rule of thumb: shards should be several GB to 10's of GB, so Kibana is unlikely to cross that limit */ diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.test.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.test.ts index d34970e902e31..bb7e4e87db6b7 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.test.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.test.ts @@ -69,7 +69,7 @@ describe('createIndex', () => { "refresh_interval": "1s", }, }, - "timeout": "60s", + "timeout": "300s", "wait_for_active_shards": "all", } `); @@ -104,7 +104,7 @@ describe('createIndex', () => { }, }, }, - "timeout": "60s", + "timeout": "300s", "wait_for_active_shards": "all", } `); diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.ts index df4239390ee39..aea970f1bf5f9 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/actions/create_index.ts @@ -49,6 +49,7 @@ export interface CreateIndexParams { esCapabilities: ElasticsearchCapabilities; aliases?: string[]; timeout?: string; + waitForIndexStatusTimeout?: string; } export type CreateIndexSuccessResponse = 'create_index_succeeded' | 'index_already_exists'; @@ -70,6 +71,7 @@ export const createIndex = ({ esCapabilities, aliases = [], timeout = DEFAULT_TIMEOUT, + waitForIndexStatusTimeout = DEFAULT_TIMEOUT, }: CreateIndexParams): TaskEither.TaskEither< RetryableEsClientError | IndexNotGreenTimeout | ClusterShardLimitExceeded, CreateIndexSuccessResponse @@ -150,7 +152,7 @@ export const createIndex = ({ waitForIndexStatus({ client, index: indexName, - timeout: DEFAULT_TIMEOUT, + timeout: waitForIndexStatusTimeout, status: 'green', }), TaskEither.map(() => res) diff --git a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.ts b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.ts index 5973728e2a99a..4c31fa495ca3c 100644 --- a/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.ts +++ b/packages/core/saved-objects/core-saved-objects-migration-server-internal/src/run_resilient_migrator.ts @@ -42,7 +42,6 @@ import type { AliasAction } from './actions'; * retries. This way we get exponential back-off and logging for failed * actions. */ -export const MIGRATION_CLIENT_OPTIONS = { maxRetries: 0, requestTimeout: 120_000 }; export interface RunResilientMigratorParams { client: ElasticsearchClient; @@ -114,17 +113,11 @@ export async function runResilientMigrator({ logger, esCapabilities, }); - const migrationClient = client.child(MIGRATION_CLIENT_OPTIONS); + return migrationStateActionMachine({ initialState, logger, - next: next( - migrationClient, - transformRawDocs, - readyToReindex, - doneReindexing, - updateRelocationAliases - ), + next: next(client, transformRawDocs, readyToReindex, doneReindexing, updateRelocationAliases), model, abort: async (state?: State) => { // At this point, we could reject this migrator's defers and unblock other migrators diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/index.ts b/packages/core/saved-objects/core-saved-objects-server-internal/index.ts index f7d6fa7918031..fb1aa8c697524 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/index.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/index.ts @@ -6,7 +6,11 @@ * Side Public License, v 1. */ -export { SavedObjectsService, CoreSavedObjectsRouteHandlerContext } from './src'; +export { + MIGRATION_CLIENT_OPTIONS, + SavedObjectsService, + CoreSavedObjectsRouteHandlerContext, +} from './src'; export type { InternalSavedObjectsServiceStart, InternalSavedObjectsServiceSetup, diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/constants.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/constants.ts new file mode 100644 index 0000000000000..4fb968253b22c --- /dev/null +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/constants.ts @@ -0,0 +1,12 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * Defines settings for the elasticsearch-js client used for the SO migrations + */ +export const MIGRATION_CLIENT_OPTIONS = { maxRetries: 0, requestTimeout: 310_000 }; diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/index.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/index.ts index d655be11f2642..5a8bc898583c1 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/src/index.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/index.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +export { MIGRATION_CLIENT_OPTIONS } from './constants'; export { SavedObjectsService } from './saved_objects_service'; export type { InternalSavedObjectsServiceStart, diff --git a/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts index 8f50176e89eb6..f51817815241d 100644 --- a/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts +++ b/packages/core/saved-objects/core-saved-objects-server-internal/src/saved_objects_service.ts @@ -65,6 +65,7 @@ import { registerCoreObjectTypes } from './object_types'; import { getSavedObjectsDeprecationsProvider } from './deprecations'; import { applyTypeDefaults } from './apply_type_defaults'; import { getAllIndices } from './utils'; +import { MIGRATION_CLIENT_OPTIONS } from './constants'; /** * @internal @@ -224,7 +225,8 @@ export class SavedObjectsService const waitForMigrationCompletion = node.roles.backgroundTasks && !node.roles.ui; const migrator = this.createMigrator( this.config.migration, - elasticsearch.client.asInternalUser, + // override the default Client settings + client.asInternalUser.child(MIGRATION_CLIENT_OPTIONS), docLinks, waitForMigrationCompletion, node, diff --git a/packages/presentation/presentation_library/interfaces/can_link_to_library.ts b/packages/kbn-apm-data-view/index.ts similarity index 52% rename from packages/presentation/presentation_library/interfaces/can_link_to_library.ts rename to packages/kbn-apm-data-view/index.ts index 7d09dd96e8b54..9984a7c058b2e 100644 --- a/packages/presentation/presentation_library/interfaces/can_link_to_library.ts +++ b/packages/kbn-apm-data-view/index.ts @@ -6,11 +6,12 @@ * Side Public License, v 1. */ -export interface CanLinkToLibrary { - canLinkToLibrary: () => Promise; - linkToLibrary: () => Promise; +const APM_STATIC_DATA_VIEW_ID_PREFIX = 'apm_static_data_view_id'; + +export function getStaticDataViewId(spaceId: string) { + return `${APM_STATIC_DATA_VIEW_ID_PREFIX}_${spaceId}`; } -export const apiCanLinkToLibrary = (api: unknown): api is CanLinkToLibrary => - typeof (api as CanLinkToLibrary).canLinkToLibrary === 'function' && - typeof (api as CanLinkToLibrary).linkToLibrary === 'function'; +export function isAPMDataView(dataViewId: string) { + return dataViewId.includes(APM_STATIC_DATA_VIEW_ID_PREFIX); +} diff --git a/packages/kbn-apm-data-view/kibana.jsonc b/packages/kbn-apm-data-view/kibana.jsonc new file mode 100644 index 0000000000000..3cbeed3811d74 --- /dev/null +++ b/packages/kbn-apm-data-view/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/apm-data-view", + "owner": "@elastic/obs-ux-infra_services-team" +} diff --git a/packages/kbn-apm-data-view/package.json b/packages/kbn-apm-data-view/package.json new file mode 100644 index 0000000000000..dd7aa9abaf42a --- /dev/null +++ b/packages/kbn-apm-data-view/package.json @@ -0,0 +1,6 @@ +{ + "name": "@kbn/apm-data-view", + "version": "1.0.0", + "license": "SSPL-1.0 OR Elastic License 2.0", + "private": true +} \ No newline at end of file diff --git a/packages/kbn-apm-data-view/tsconfig.json b/packages/kbn-apm-data-view/tsconfig.json new file mode 100644 index 0000000000000..2649fb45f0a42 --- /dev/null +++ b/packages/kbn-apm-data-view/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "node" + ] + }, + "include": [ + "**/*.ts" + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index d0a78b272128c..98c50c886c1f0 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -833,6 +833,7 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D policySecrets: `${FLEET_DOCS}agent-policy.html#agent-policy-secret-values`, remoteESOoutput: `${FLEET_DOCS}monitor-elastic-agent.html#external-elasticsearch-monitoring`, performancePresets: `${FLEET_DOCS}es-output-settings.html#es-output-settings-performance-tuning-settings`, + scalingKubernetesResourcesAndLimits: `${FLEET_DOCS}scaling-on-kubernetes.html#_specifying_resources_and_limits_in_agent_manifests`, }, ecs: { guide: `${ELASTIC_WEBSITE_URL}guide/en/ecs/current/index.html`, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index df39d8e33e77c..f51445bdac9b9 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -543,6 +543,7 @@ export interface DocLinks { policySecrets: string; remoteESOoutput: string; performancePresets: string; + scalingKubernetesResourcesAndLimits: string; }>; readonly ecs: { readonly guide: string; diff --git a/packages/kbn-esql-ast/BUILD.bazel b/packages/kbn-esql-ast/BUILD.bazel new file mode 100644 index 0000000000000..34557089d0db4 --- /dev/null +++ b/packages/kbn-esql-ast/BUILD.bazel @@ -0,0 +1,32 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") + +SRCS = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__/**", + "**/integration_tests/**", + "**/mocks/**", + "**/scripts/**", + "**/storybook/**", + "**/test_fixtures/**", + "**/test_helpers/**", + ], +) + +SHARED_DEPS = [ + "@npm//antlr4", +] + +js_library( + name = "kbn-esql-ast", + package_name = "@kbn/esql-ast", + srcs = ["package.json"] + SRCS, + deps = SHARED_DEPS, + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-esql-ast/README.md b/packages/kbn-esql-ast/README.md new file mode 100644 index 0000000000000..76232d371b9cb --- /dev/null +++ b/packages/kbn-esql-ast/README.md @@ -0,0 +1,89 @@ +# ES|QL utility library + +## Folder structure + +This library brings all the foundation data structure to enable all advanced features within an editor for ES|QL as validation, autocomplete, hover, etc... +The package is structure as follow: + +``` +src + |- antlr // => contains the ES|QL grammar files and various compilation assets + | ast_factory.ts // => binding to the Antlr that generates the AST data structure + | ast_errors.ts // => error translation utility from raw Antlr to something understandable (somewhat) + | antlr_error_listener.ts // => The ES|QL syntax error listener + | antlr_facade.ts // => getParser and getLexer utilities + | ... // => miscellaneas utilities to work with AST +``` + +### Basic usage + +#### Get AST from a query string + +This module contains the entire logic to translate from a query string into the AST data structure. +The `getAstAndSyntaxErrors` function returns the AST data structure, unless a syntax error happens in which case the `errors` array gets populated with a Syntax error. + +##### Usage + +```js +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; + +const queryString = "from index | stats 1 + avg(myColumn) "; +const { ast, errors} = await astProvider(queryString); + +if(errors){ + console.log({ syntaxErrors: errors }); +} +// do stuff with the ast +``` + +## How does it work + +The general idea of this package is to provide all ES|QL features on top of a custom compact AST definition (all data structure types defined in `./types.ts`) which is designed to be resilient to many grammar changes. +The pipeline is the following: + +``` +Antlr grammar files +=> Compiled grammar files (.ts assets in the antlr folder) +=> AST Factory (Antlr Parser tree => custom AST) +``` + +Each feature function works with the combination of the AST and the definition files: the former describe the current statement in a easy to traverse way, while the definitions describe what's the expected behaviour of each node in the AST node (i.e. what arguments should it accept? How many arguments? etc...). +While AST requires the grammar to be compiled to be updated, definitions are static files which can be dynamically updated without running the ANTLR compile task. + +#### AST + +The AST is generated by 2 files: `ast_factory.ts` and its buddy `ast_walker.ts`: +* `ast_factory.ts` is a binding to Antlr and access the Parser tree +* Parser tree is passed over to `ast_walker` to append new AST nodes + +In general Antlr is resilient to grammar errors, in the sense that it can produe a Parser tree up to the point of the error, then stops. This is useful to perform partial tasks even with broken queries and this means that a partial AST can be produced even with an invalid query. + +### Keeping ES|QL up to date + +In general when operating on changes here use the `yarn kbn watch` in a terminal window to make sure changes are correctly compiled. + +### How to add new commands/options + +When a new command/option is added to ES|QL it is done via a grammar update. +Therefore adding them requires a two step phase: +* Update the grammar with the new one + * add/fix all AST generator bindings in case of new/changed TOKENS in the `lexer` grammar file +* Update the definition files for commands/options + +To update the grammar: +1. Make sure the `lexer` and `parser` files are up to date with their ES counterparts + * an existing Kibana CI job is updating them already automatically +2. Run the script into the `package.json` to compile the ES|QL grammar. +3. open the `ast_factory.ts` file and add a new `exit` method +4. write some code in the `ast_walker/ts` to translate the Antlr Parser tree into the custom AST (there are already few utilites for that, but sometimes it is required to write some more code if the `parser` introduced a new flow) + * pro tip: use the `http://lab.antlr.org/` to visualize/debug the parser tree for a given statement (copy and paste the grammar files there) +5. if something goes wrong with new quoted/unquoted identifier token, open the `ast_helpers.ts` and check the ids of the new tokens in the `getQuotedText` and `getUnquotedText` functions - please make sure to leave a comment on the token name + +#### Debug and fix grammar changes (tokens, etc...) + +On TOKEN renaming or with subtle `lexer` grammar changes it can happens that test breaks, this can be happen for two main issues: +* A TOKEN name changed so the `ast_walker.ts` doesn't find it any more. Go there and rename the TOKEN name. +* TOKEN order changed and tests started failing. This probably generated some TOKEN id reorder and there are two functions in `ast_helpers.ts` who rely on hardcoded ids: `getQuotedText` and `getUnquotedText`. + * Note that the `getQuotedText` and `getUnquotedText` are automatically updated on grammar changes detected by the Kibana CI sync job. + * to fix this just look at the commented tokens and update the ids. If a new token add it and leave a comment to point to the new token name. + * This choice was made to reduce the bundle size, as importing the `esql_parser` adds some hundreds of Kbs to the bundle otherwise. \ No newline at end of file diff --git a/packages/kbn-esql-ast/index.ts b/packages/kbn-esql-ast/index.ts new file mode 100644 index 0000000000000..cdbde17692545 --- /dev/null +++ b/packages/kbn-esql-ast/index.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 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { + ESQLAst, + ESQLAstItem, + ESQLCommand, + ESQLCommandOption, + ESQLCommandMode, + ESQLFunction, + ESQLTimeInterval, + ESQLLocation, + ESQLMessage, + ESQLSingleAstItem, + ESQLSource, + ESQLColumn, + ESQLLiteral, + AstProviderFn, + EditorError, +} from './src/types'; + +// Low level functions to parse grammar +export { getParser, getLexer, ROOT_STATEMENT } from './src/antlr_facade'; + +/** + * ES|QL Query string -> AST data structure + * this is the foundational building block for any advanced feature + * a developer wants to build on top of the ESQL language + **/ +export { getAstAndSyntaxErrors } from './src/ast_parser'; + +export { ESQLErrorListener } from './src/antlr_error_listener'; diff --git a/packages/kbn-esql-ast/kibana.jsonc b/packages/kbn-esql-ast/kibana.jsonc new file mode 100644 index 0000000000000..18ab1197119e7 --- /dev/null +++ b/packages/kbn-esql-ast/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/esql-ast", + "owner": "@elastic/kibana-esql" + } \ No newline at end of file diff --git a/packages/kbn-esql-ast/package.json b/packages/kbn-esql-ast/package.json new file mode 100644 index 0000000000000..9783b4bc72938 --- /dev/null +++ b/packages/kbn-esql-ast/package.json @@ -0,0 +1,12 @@ +{ + "name": "@kbn/esql-ast", + "version": "1.0.0", + "private": true, + "license": "SSPL-1.0 OR Elastic License 2.0", + "scripts": { + "build:antlr4:esql": "antlr -Dlanguage=TypeScript src/antlr/esql_lexer.g4 src/antlr/esql_parser.g4 && node ./scripts/fix_generated_antlr.js && node ./scripts/esql_update_ast_script.js", + "prebuild:antlr4": "brew bundle --file=./scripts/antlr4_tools/brewfile", + "build:antlr4": "npm run build:antlr4:esql" + }, + "sideEffects": false + } \ No newline at end of file diff --git a/packages/kbn-esql-ast/scripts/antlr4_tools/.gitignore b/packages/kbn-esql-ast/scripts/antlr4_tools/.gitignore new file mode 100644 index 0000000000000..e4d4e606cb87a --- /dev/null +++ b/packages/kbn-esql-ast/scripts/antlr4_tools/.gitignore @@ -0,0 +1 @@ +brewfile.lock.json diff --git a/packages/kbn-esql-ast/scripts/antlr4_tools/README.md b/packages/kbn-esql-ast/scripts/antlr4_tools/README.md new file mode 100644 index 0000000000000..8bdba8e8d711b --- /dev/null +++ b/packages/kbn-esql-ast/scripts/antlr4_tools/README.md @@ -0,0 +1,3 @@ +## antlr4-tools + +defines a fairly quick way to get [antlr](https://github.com/antlr/antlr4) setup on any machine with brew support, simply run `brew bundle` within this directory. On running the aforementioned command, `antlr` should be become available in your path as a valid executable. diff --git a/packages/kbn-esql-ast/scripts/antlr4_tools/brewfile b/packages/kbn-esql-ast/scripts/antlr4_tools/brewfile new file mode 100644 index 0000000000000..47f89b17dbb10 --- /dev/null +++ b/packages/kbn-esql-ast/scripts/antlr4_tools/brewfile @@ -0,0 +1,2 @@ +brew "openjdk" +brew "antlr" diff --git a/packages/kbn-esql-ast/scripts/esql_update_ast_script.js b/packages/kbn-esql-ast/scripts/esql_update_ast_script.js new file mode 100644 index 0000000000000..78419d758023c --- /dev/null +++ b/packages/kbn-esql-ast/scripts/esql_update_ast_script.js @@ -0,0 +1,116 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +const { join } = require('path'); +const { ESLint } = require('eslint'); +const partition = require('lodash/partition'); +const { readdirSync, readFileSync, writeFileSync } = require('fs'); +const ora = require('ora'); +const log = ora('Updating ES|QL AST walker from antlr grammar').start(); + +async function execute() { + const generatedAntlrFolder = join(__dirname, '..', 'src', 'antlr'); + + const generatedAntlrFolderContents = readdirSync(generatedAntlrFolder); + + const tokenRegex = /public static readonly (?[A-Z_]*(UN)*QUOTED_[A-Z_]+) = (?\d+);/; + const lexerFile = generatedAntlrFolderContents.find((file) => file === 'esql_parser.ts'); + const lexerFileRows = readFileSync(join(generatedAntlrFolder, lexerFile), 'utf8') + .toString() + .split('\n'); + const tokenList = []; + for (const row of lexerFileRows) { + const match = row.match(tokenRegex); + if (match?.groups) { + tokenList.push(match.groups); + } + } + const [unquotedList, quotedList] = partition(tokenList, ({ name }) => /UNQUOTED/.test(name)); + + // now all quote/unquoted tokens are registered + // dump them into the ast_helper file + const astHelperFileFolder = join(__dirname, '..', 'src'); + const astHelperFilename = 'ast_helpers.ts'; + + try { + const astHelperContentRows = readFileSync(join(astHelperFileFolder, astHelperFilename), 'utf8') + .toString() + .split('\n'); + + const startAutoGeneratedComment = astHelperContentRows.findIndex( + (row) => row === '/* SCRIPT_MARKER_START */' + ); + const endAutoGeneratedComment = + astHelperContentRows.findIndex((row) => row === '/* SCRIPT_MARKER_END */') + 1; + + const newFunctionsContent = ` +/* SCRIPT_MARKER_START */ +function getQuotedText(ctx: ParserRuleContext) { + return [ + ${quotedList.map(({ name, value }) => `${value} /* esql_parser.${name} */`).join(', ')} + ] + .map((keyCode) => ctx.getToken(keyCode, 0)) + .filter(nonNullable)[0]; + } + +function getUnquotedText(ctx: ParserRuleContext) { + return [ + ${unquotedList.map(({ name, value }) => `${value} /* esql_parser.${name} */`).join(', ')} + + ] + .map((keyCode) => ctx.getToken(keyCode, 0)) + .filter(nonNullable)[0]; +} +/* SCRIPT_MARKER_END */ +`; + + const fileContent = astHelperContentRows + .slice(0, startAutoGeneratedComment) + .concat(newFunctionsContent.split('\n'), astHelperContentRows.slice(endAutoGeneratedComment)); + + const fileContentString = fileContent.join('\n'); + + const eslint = new ESLint({ + fix: true, + overrideConfig: { + parser: '@typescript-eslint/parser', + parserOptions: { + sourceType: 'module', + ecmaVersion: 2018, + }, + rules: { + '@kbn/imports/no_unresolvable_imports': 'off', + 'prettier/prettier': [ + 'error', + { + parser: 'typescript', + }, + ], + }, + }, + }); + + const results = await eslint.lintText(fileContentString); + + if (results.some(({ messages }) => messages.length > 0)) { + const formatter = await eslint.loadFormatter('stylish'); + const resultText = formatter.format(results); + process.exitCode = 1; + return log.fail(resultText); + } + + const filePath = join(astHelperFileFolder, astHelperFilename); + writeFileSync(filePath, results[0].output || '', { encoding: 'utf8' }); + } catch (err) { + return log.fail(err.message); + } + + log.succeed('Updated ES|QL helper from antlr grammar successfully'); +} + +execute(); diff --git a/packages/kbn-esql-ast/scripts/fix_generated_antlr.js b/packages/kbn-esql-ast/scripts/fix_generated_antlr.js new file mode 100644 index 0000000000000..6a55c7acd2fb6 --- /dev/null +++ b/packages/kbn-esql-ast/scripts/fix_generated_antlr.js @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +const { join } = require('path'); +const { readdirSync, readFileSync, writeFileSync, renameSync } = require('fs'); +const ora = require('ora'); +const log = ora('Updating generated antlr grammar').start(); + +function execute() { + const generatedAntlrFolder = join(__dirname, '..', 'src', 'antlr'); + + const generatedAntlrFolderContents = readdirSync(generatedAntlrFolder); + + // The generated TS produces some TS linting errors + // This script adds a //@ts-nocheck comment at the top of each generated file + // so that the errors can be ignored for now + generatedAntlrFolderContents + .filter((file) => { + const fileExtension = file.split('.')[1]; + return fileExtension.includes('ts'); + }) + .forEach((file) => { + try { + const fileContentRows = readFileSync(join(generatedAntlrFolder, file), 'utf8') + .toString() + .split('\n'); + + if (!/\@ts-nocheck/.test(fileContentRows[0])) { + fileContentRows.unshift('// @ts-nocheck'); + } + + const filePath = join(generatedAntlrFolder, file); + const fileContent = fileContentRows.join('\n'); + + writeFileSync(filePath, fileContent, { encoding: 'utf8' }); + } catch (err) { + return log.fail(err.message); + } + }); + + // Rename generated parserListener file to snakecase to satisfy file casing check + // There doesn't appear to be a way to fix this OOTB with antlr4 + try { + renameSync( + join(generatedAntlrFolder, `esql_parserListener.ts`), + join(generatedAntlrFolder, `esql_parser_listener.ts`) + ); + } catch (err) { + log.warn(`Unable to rename parserListener file to snake-case: ${err.message}`); + } + + log.succeed('Updated generated antlr grammar successfully'); +} + +execute(); diff --git a/packages/kbn-monaco/src/esql/antlr/.gitignore b/packages/kbn-esql-ast/src/antlr/.gitignore similarity index 100% rename from packages/kbn-monaco/src/esql/antlr/.gitignore rename to packages/kbn-esql-ast/src/antlr/.gitignore diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.g4 b/packages/kbn-esql-ast/src/antlr/esql_lexer.g4 similarity index 100% rename from packages/kbn-monaco/src/esql/antlr/esql_lexer.g4 rename to packages/kbn-esql-ast/src/antlr/esql_lexer.g4 diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.interp b/packages/kbn-esql-ast/src/antlr/esql_lexer.interp similarity index 100% rename from packages/kbn-monaco/src/esql/antlr/esql_lexer.interp rename to packages/kbn-esql-ast/src/antlr/esql_lexer.interp diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.tokens b/packages/kbn-esql-ast/src/antlr/esql_lexer.tokens similarity index 100% rename from packages/kbn-monaco/src/esql/antlr/esql_lexer.tokens rename to packages/kbn-esql-ast/src/antlr/esql_lexer.tokens diff --git a/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts b/packages/kbn-esql-ast/src/antlr/esql_lexer.ts similarity index 99% rename from packages/kbn-monaco/src/esql/antlr/esql_lexer.ts rename to packages/kbn-esql-ast/src/antlr/esql_lexer.ts index 2e17440a7aabc..5603ea84b7c00 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_lexer.ts +++ b/packages/kbn-esql-ast/src/antlr/esql_lexer.ts @@ -1,5 +1,5 @@ // @ts-nocheck -// Generated from src/esql/antlr/esql_lexer.g4 by ANTLR 4.13.1 +// Generated from src/antlr/esql_lexer.g4 by ANTLR 4.13.1 // noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols import { ATN, diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 b/packages/kbn-esql-ast/src/antlr/esql_parser.g4 similarity index 100% rename from packages/kbn-monaco/src/esql/antlr/esql_parser.g4 rename to packages/kbn-esql-ast/src/antlr/esql_parser.g4 diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.interp b/packages/kbn-esql-ast/src/antlr/esql_parser.interp similarity index 100% rename from packages/kbn-monaco/src/esql/antlr/esql_parser.interp rename to packages/kbn-esql-ast/src/antlr/esql_parser.interp diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.tokens b/packages/kbn-esql-ast/src/antlr/esql_parser.tokens similarity index 100% rename from packages/kbn-monaco/src/esql/antlr/esql_parser.tokens rename to packages/kbn-esql-ast/src/antlr/esql_parser.tokens diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts b/packages/kbn-esql-ast/src/antlr/esql_parser.ts similarity index 99% rename from packages/kbn-monaco/src/esql/antlr/esql_parser.ts rename to packages/kbn-esql-ast/src/antlr/esql_parser.ts index 434619be69900..40f3843403617 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser.ts +++ b/packages/kbn-esql-ast/src/antlr/esql_parser.ts @@ -1,5 +1,5 @@ // @ts-nocheck -// Generated from src/esql/antlr/esql_parser.g4 by ANTLR 4.13.1 +// Generated from src/antlr/esql_parser.g4 by ANTLR 4.13.1 // noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols import { diff --git a/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts b/packages/kbn-esql-ast/src/antlr/esql_parser_listener.ts similarity index 99% rename from packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts rename to packages/kbn-esql-ast/src/antlr/esql_parser_listener.ts index da84d62f08d0b..fb3741dc94a8d 100644 --- a/packages/kbn-monaco/src/esql/antlr/esql_parser_listener.ts +++ b/packages/kbn-esql-ast/src/antlr/esql_parser_listener.ts @@ -1,5 +1,5 @@ // @ts-nocheck -// Generated from src/esql/antlr/esql_parser.g4 by ANTLR 4.13.1 +// Generated from src/antlr/esql_parser.g4 by ANTLR 4.13.1 import {ParseTreeListener} from "antlr4"; diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts b/packages/kbn-esql-ast/src/antlr_error_listener.ts similarity index 75% rename from packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts rename to packages/kbn-esql-ast/src/antlr_error_listener.ts index c6c68b6e73909..0bb2912e2d235 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_error_listener.ts +++ b/packages/kbn-esql-ast/src/antlr_error_listener.ts @@ -7,10 +7,13 @@ */ import type { Recognizer, RecognitionException } from 'antlr4'; -import { ANTLRErrorListener } from '../../../common/error_listener'; -import { getPosition } from '../ast/ast_position_utils'; +import { ErrorListener } from 'antlr4'; +import type { EditorError } from './types'; +import { getPosition } from './ast_position_utils'; + +export class ESQLErrorListener extends ErrorListener { + protected errors: EditorError[] = []; -export class ESQLErrorListener extends ANTLRErrorListener { syntaxError( recognizer: Recognizer, offendingSymbol: any, @@ -31,7 +34,11 @@ export class ESQLErrorListener extends ANTLRErrorListener { startColumn, endColumn, message: textMessage, - severity: 8, // monaco.MarkerSeverity.Error, + severity: 'error', }); } + + getErrors(): EditorError[] { + return this.errors; + } } diff --git a/packages/kbn-monaco/src/esql/lib/antlr_facade.ts b/packages/kbn-esql-ast/src/antlr_facade.ts similarity index 86% rename from packages/kbn-monaco/src/esql/lib/antlr_facade.ts rename to packages/kbn-esql-ast/src/antlr_facade.ts index a7a9fb2104938..ba35dc342552b 100644 --- a/packages/kbn-monaco/src/esql/lib/antlr_facade.ts +++ b/packages/kbn-esql-ast/src/antlr_facade.ts @@ -8,9 +8,9 @@ import { CommonTokenStream, type CharStream, type ErrorListener } from 'antlr4'; -import { default as ESQLLexer } from '../antlr/esql_lexer'; -import { default as ESQLParser } from '../antlr/esql_parser'; -import { default as ESQLParserListener } from '../antlr/esql_parser_listener'; +import { default as ESQLLexer } from './antlr/esql_lexer'; +import { default as ESQLParser } from './antlr/esql_parser'; +import { default as ESQLParserListener } from './antlr/esql_parser_listener'; export const ROOT_STATEMENT = 'singleStatement'; diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts b/packages/kbn-esql-ast/src/ast_errors.ts similarity index 100% rename from packages/kbn-monaco/src/esql/lib/ast/ast_errors.ts rename to packages/kbn-esql-ast/src/ast_errors.ts diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts b/packages/kbn-esql-ast/src/ast_factory.ts similarity index 98% rename from packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts rename to packages/kbn-esql-ast/src/ast_factory.ts index a0801ddb2aded..48b9a055aec94 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_factory.ts +++ b/packages/kbn-esql-ast/src/ast_factory.ts @@ -28,8 +28,8 @@ import { type WhereCommandContext, default as esql_parser, type MetaCommandContext, -} from '../../antlr/esql_parser'; -import { default as ESQLParserListener } from '../../antlr/esql_parser_listener'; +} from './antlr/esql_parser'; +import { default as ESQLParserListener } from './antlr/esql_parser_listener'; import { createCommand, createFunction, diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts b/packages/kbn-esql-ast/src/ast_helpers.ts similarity index 99% rename from packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts rename to packages/kbn-esql-ast/src/ast_helpers.ts index 085c258596fc3..0f85e30b96c45 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_helpers.ts +++ b/packages/kbn-esql-ast/src/ast_helpers.ts @@ -16,9 +16,9 @@ import type { DecimalValueContext, IntegerValueContext, QualifiedIntegerLiteralContext, -} from '../../antlr/esql_parser'; +} from './antlr/esql_parser'; import { getPosition } from './ast_position_utils'; -import { DOUBLE_TICKS_REGEX, SINGLE_BACKTICK, TICKS_REGEX } from './shared/constants'; +import { DOUBLE_TICKS_REGEX, SINGLE_BACKTICK, TICKS_REGEX } from './constants'; import type { ESQLCommand, ESQLLiteral, diff --git a/packages/kbn-esql-ast/src/ast_parser.ts b/packages/kbn-esql-ast/src/ast_parser.ts new file mode 100644 index 0000000000000..4e7f8b3701729 --- /dev/null +++ b/packages/kbn-esql-ast/src/ast_parser.ts @@ -0,0 +1,29 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { CharStreams } from 'antlr4'; +import { ESQLErrorListener } from './antlr_error_listener'; +import { getParser, ROOT_STATEMENT } from './antlr_facade'; +import { AstListener } from './ast_factory'; +import type { ESQLAst, EditorError } from './types'; + +export async function getAstAndSyntaxErrors(text: string | undefined): Promise<{ + errors: EditorError[]; + ast: ESQLAst; +}> { + if (text == null) { + return { ast: [], errors: [] }; + } + const errorListener = new ESQLErrorListener(); + const parseListener = new AstListener(); + const parser = getParser(CharStreams.fromString(text), errorListener, parseListener); + + parser[ROOT_STATEMENT](); + + return { ...parseListener.getAst(), errors: errorListener.getErrors() }; +} diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts b/packages/kbn-esql-ast/src/ast_position_utils.ts similarity index 100% rename from packages/kbn-monaco/src/esql/lib/ast/ast_position_utils.ts rename to packages/kbn-esql-ast/src/ast_position_utils.ts diff --git a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts b/packages/kbn-esql-ast/src/ast_walker.ts similarity index 99% rename from packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts rename to packages/kbn-esql-ast/src/ast_walker.ts index f9976901cdd19..05393d7b07c16 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/ast_walker.ts +++ b/packages/kbn-esql-ast/src/ast_walker.ts @@ -57,7 +57,7 @@ import { type ValueExpressionContext, ValueExpressionDefaultContext, FromIdentifierContext, -} from '../../antlr/esql_parser'; +} from './antlr/esql_parser'; import { createSource, createColumn, @@ -499,7 +499,7 @@ export function visitByOption(ctx: StatsCommandContext, expr: FieldsContext | un } export function visitOrderExpression(ctx: OrderExpressionContext[]) { - const ast = []; + const ast: ESQLAstItem[] = []; for (const orderCtx of ctx) { const expression = collectBooleanExpression(orderCtx.booleanExpression()); if (orderCtx._ordering) { diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/constants.ts b/packages/kbn-esql-ast/src/constants.ts similarity index 100% rename from packages/kbn-monaco/src/esql/lib/ast/shared/constants.ts rename to packages/kbn-esql-ast/src/constants.ts diff --git a/packages/kbn-monaco/src/esql/lib/ast/types.ts b/packages/kbn-esql-ast/src/types.ts similarity index 85% rename from packages/kbn-monaco/src/esql/lib/ast/types.ts rename to packages/kbn-esql-ast/src/types.ts index 32057a9ee3b65..4bce46d776671 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/types.ts +++ b/packages/kbn-esql-ast/src/types.ts @@ -6,8 +6,6 @@ * Side Public License, v 1. */ -import { EditorError } from '../../../types'; - export type ESQLAst = ESQLCommand[]; export type ESQLSingleAstItem = @@ -87,6 +85,17 @@ export interface ESQLMessage { code: string; } -export type AstProviderFn = ( - text: string | undefined -) => Promise<{ ast: ESQLAst; errors: EditorError[] }>; +export type AstProviderFn = (text: string | undefined) => Promise<{ + ast: ESQLAst; + errors: EditorError[]; +}>; + +export interface EditorError { + startLineNumber: number; + endLineNumber: number; + startColumn: number; + endColumn: number; + message: string; + code?: string; + severity: 'error' | 'warning' | number; +} diff --git a/packages/kbn-esql-ast/tsconfig.json b/packages/kbn-esql-ast/tsconfig.json new file mode 100644 index 0000000000000..a53bf973e2373 --- /dev/null +++ b/packages/kbn-esql-ast/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*", + "**/*.ts", + ], + "kbn_references": [], + "exclude": [ + "target/**/*", + ] +} diff --git a/packages/kbn-esql-utils/kibana.jsonc b/packages/kbn-esql-utils/kibana.jsonc index 4dd00764681a5..959a5d947b2b8 100644 --- a/packages/kbn-esql-utils/kibana.jsonc +++ b/packages/kbn-esql-utils/kibana.jsonc @@ -1,5 +1,5 @@ { "type": "shared-common", "id": "@kbn/esql-utils", - "owner": "@elastic/kibana-visualizations" + "owner": "@elastic/kibana-esql" } diff --git a/packages/kbn-esql-validation-autocomplete/BUILD.bazel b/packages/kbn-esql-validation-autocomplete/BUILD.bazel new file mode 100644 index 0000000000000..366eaa3d1a66f --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/BUILD.bazel @@ -0,0 +1,33 @@ +load("@build_bazel_rules_nodejs//:index.bzl", "js_library") + +SRCS = glob( + [ + "**/*.ts", + ], + exclude = [ + "**/*.config.js", + "**/*.mock.*", + "**/*.test.*", + "**/*.stories.*", + "**/__snapshots__/**", + "**/integration_tests/**", + "**/mocks/**", + "**/scripts/**", + "**/storybook/**", + "**/test_fixtures/**", + "**/test_helpers/**", + ], +) + +SHARED_DEPS = [ + "//packages/kbn-i18n", + "@npm//js-levenshtein", +] + +js_library( + name = "kbn-esql-validation-autocomplete", + package_name = "@kbn/esql-validation-autocomplete", + srcs = ["package.json"] + SRCS, + deps = SHARED_DEPS, + visibility = ["//visibility:public"], +) diff --git a/packages/kbn-esql-validation-autocomplete/README.md b/packages/kbn-esql-validation-autocomplete/README.md new file mode 100644 index 0000000000000..e521bbe7839d7 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/README.md @@ -0,0 +1,191 @@ +# ES|QL utility library + +## Folder structure + +This library enables all the advanced features for ES|QL, as validation, autocomplete, hover, etc... +The package is structure as follow: + +``` +src + | autocomplete // => the autocomplete/suggest service logic + | code_actions // => the quick fixes service logic + | definitions // => static assets to define all components behaviour of a ES|QL query: commands, functions, etc... + | validation // => the validation logic +``` + +### Basic usage + +#### Validation + +This module contains the validation logic useful to perform a full check of an ES|QL query string. +The validation service can be gracefully degraded leveraging the `ignoreOnMissingCallbacks` option when it is not possible to pass all callbacks: this is useful in environments where it is not possible to connect to a ES instance to retrieve more metadata, while preserving most of the validation value. +For instance, not passing the `getSources` callback will report all index mentioned in the ES|QL with the `Unknown index [...]` error, but with the `ignoreOnMissingCallbacks` option enabled this type of errors will be muted. + +##### Usage + +```js +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; +import { validateQuery } from '@kbn/esql-validation-autocomplete'; + +// define all callbacks +const myCallbacks = { + getSources: async () => [{name: 'index', hidden: false}], + ... +}; + +// Full validation performed +const { errors, warnings } = await validateQuery("from index | stats 1 + avg(myColumn)", getAstAndSyntaxErrors, undefined, myCallbacks); +``` + +If not all callbacks are available it is possible to gracefully degradate the validation experience with the `ignoreOnMissingCallbacks` option: + +```js +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; +import { validateQuery } from '@kbn/esql-validation-autocomplete'; + +// define only the getSources callback +const myCallbacks = { + getSources: async () => [{name: 'index', hidden: false}], +}; + +// ignore errors that might be triggered by the lack of some callbacks (i.e. "Unknown columns", etc...) +const { errors, warnings } = await validateQuery( + "from index | stats 1 + avg(myColumn)", + getAstAndSyntaxErrors, + { ignoreOnMissingCallbacks: true }, + myCallbacks +); +``` + +#### Autocomplete + +This is the complete logic for the ES|QL autocomplete language, it is completely indepedent from the actual editor (i.e. Monaco) and the suggestions reported need to be wrapped against the specific editor shape. + +```js +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; +import { suggest } from '@kbn/esql-validation-autocomplete'; + +const queryString = "from index | stats 1 + avg(myColumn) "; +const myCallbacks = { + getSources: async () => [{name: 'index', hidden: false}], + ... +}; + +const suggestions = await suggest( + queryString, + queryString.length - 1, // the cursor position in a single line context + { triggerCharacter: " "; triggerKind: 1 }, // kind = 0 is a programmatic trigger, while other values are ignored + getAstAndSyntaxErrors, + myCallbacks +); + +// Log the actual text to be injected as suggestion +console.log(suggestions.map(({text}) => text)); + +// for Monaco editor it is required to map each suggestion with the editor specific type +suggestions.map( s => ({ + label: s.label, + insertText: s.text, + insertTextRules: asSnippet + ? monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet + : undefined, + ... + })) +``` + +Note that the autocomplete service will work as best effort with invalid queries, trying to correct them on the fly before generating the suggestions. In case an invalid query cannot be handled an empty suggestion result set will be returned. + +#### Quick fixes + +This feature provides a list of suggestions to propose as fixes for a subset of validation errors. +The feature works in combination with the validation service. + +```js +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; +import { validateQuery, getActions } from '@kbn/esql-validation-autocomplete'; + +const queryString = "from index2 | stats 1 + avg(myColumn)" + +const myCallbacks = { + getSources: async () => [{name: 'index', hidden: false}], + ... +}; +const { errors, warnings } = await validateQuery(queryString, getAstAndSyntaxErrors, undefined, myCallbacks); + +const {title, edits} = await getActions( + queryString, + errors, + getAstAndSyntaxErrors, + myCallbacks +); + +// log the title of the fix suggestion and the proposed change +// in this example it should suggest to change from "index2" to "index" +console.log({ title, edits }); +``` + +### getAstContext + +This is an important function in order to build more features on top of the existing one. +For instance to show contextual information on Hover the `getAstContext` function can be leveraged to get the correct context for the cursor position: + +```js +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; +import { getAstContext } from '@kbn/esql-validation-autocomplete'; + +const queryString = "from index2 | stats 1 + avg(myColumn)"; +const offset = queryString.indexOf("avg"); + +const astContext = getAstContext(queryString, getAstAndSyntaxErrors(queryString), offset); + +if(astContext.type === "function"){ + const fnNode = astContext.node; + const fnDefinition = getFunctionDefinition(fnNode.name); + + // show something like "avg( field: number ): number" + console.log(getFunctionSignature(fnDefinition)); +} +``` + + +### How does it work + +The general idea of this package is to provide all ES|QL features on top of a custom compact AST definition (all data structure types defined in `@kbn/esql-ast`) which is designed to be resilient to many grammar changes. +The pipeline is the following: + +``` +Antlr grammar files +=> Compiled grammar files (.ts assets in the antlr folder) +=> AST Factory (Antlr Parser tree => custom AST) +=> featureFn( AST, Definitions, ESQLCallbacks ) +``` + +Each feature function works with the combination of the AST and the definition files: the former describe the current statement in a easy to traverse way, while the definitions describe what's the expected behaviour of each node in the AST node (i.e. what arguments should it accept? How many arguments? etc...). +ESQLCallbacks are a set of utilities to retrieve context metadata like fields/index/policies list and policies metadata. + +While AST requires the grammar to be compiled to be updated, definitions are static files which can be dynamically updated without running the ANTLR compile task. + +#### Validation + +Validation takes an AST as input and generates a list of messages to show to the user. +The validation function leverages the definition files to check if the current AST is respecting the defined behaviour. +Most of the logic rely purely on the definitions, but in some specific cases some ad-hoc conditions are defined within the code for specific commands/options. +The validation test suite generates a set of fixtures at the end of its execution, which are then re-used for other test suites (i.e. some FTR integration tests) as `esql_validation_meta_tests.json`. + +#### Autocomplete + +The autocomplete/suggest task takes a query as input together with the current cursor position, then produces internally an AST to work with, to generate a list of suggestions for the given query. +Note that autocomplete works most of the time with incomplete/invalid queries, so some logic to manipulate the query into something valid (see the `EDITOR_MARKER` or the `countBracketsUnclosed` functions for more). + +Once the AST is produced there's a `getAstContext` function that finds the cursor position node (and its parent command), together with some hint like the type of current context: `expression`, `function`, `newCommand`, `option`. +The most complex case is the `expression` as it can cover a moltitude of cases. The function is highly commented in order to identify the specific cases, but there's probably some obscure area still to comment/clarify. + +### Adding new commands/options/functions/erc... + +To update the definitions: +1. open either approriate definition file within the `definitions` folder and add a new entry to the relative array +2. write new tests for validation and autocomplete + * if a new function is added tests are automatically generated fro both validation and autocomplete with some standard checks + * if a new function requires a new field types, make sure to add the new type to the initial part of the test file + * this will be automatically picked up by the test generator to produce new test cases + * if a new function requires a new type of test, make sure to write it manually \ No newline at end of file diff --git a/packages/kbn-esql-validation-autocomplete/index.ts b/packages/kbn-esql-validation-autocomplete/index.ts new file mode 100644 index 0000000000000..ade1b1fd9f73b --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/index.ts @@ -0,0 +1,76 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export type { SuggestionRawDefinition, ItemKind } from './src/autocomplete/types'; +export type { CodeAction } from './src/code_actions/types'; +export type { + FunctionDefinition, + CommandDefinition, + CommandOptionsDefinition, + CommandModeDefinition, + Literals, +} from './src/definitions/types'; +export type { ESQLCallbacks } from './src/shared/types'; + +/** + * High level functions + */ + +// Given an the query string, its AST and the cursor position, it returns the node and some context information +export { getAstContext } from './src/shared/context'; +// Validation function +export { validateQuery } from './src/validation/validation'; +// Autocomplete function +export { suggest } from './src/autocomplete/autocomplete'; +// Quick fixes function +export { getActions } from './src/code_actions/actions'; + +/** + * Some utility functions that can be useful to build more feature + * for the ES|QL language + */ +export type { + ValidationErrors, + ESQLVariable, + ESQLRealField, + ESQLPolicy, + ErrorTypes as ESQLValidationErrorTypes, +} from './src/validation/types'; +export { collectVariables } from './src/shared/variables'; +export { + getAllFunctions, + isSupportedFunction, + getFunctionDefinition, + getCommandDefinition, + getAllCommands, + getCommandOption, + getColumnHit, + columnExists, + shouldBeQuotedText, + printFunctionSignature, + isEqualType, + isSourceItem, + isSettingItem, + isFunctionItem, + isOptionItem, + isColumnItem, + isLiteralItem, + isTimeIntervalItem, + isAssignment, + isExpression, + isAssignmentComplete, + isSingleItem, +} from './src/shared/helpers'; +export { ENRICH_MODES } from './src/definitions/settings'; +export { getFunctionSignatures } from './src/definitions/helpers'; + +export { + getFieldsByTypeHelper, + getPolicyHelper, + getSourcesHelper, +} from './src/shared/resources_helpers'; diff --git a/packages/presentation/presentation_library/jest.config.js b/packages/kbn-esql-validation-autocomplete/jest.config.js similarity index 81% rename from packages/presentation/presentation_library/jest.config.js rename to packages/kbn-esql-validation-autocomplete/jest.config.js index 3c6a5dd815b69..a9f9d1421b634 100644 --- a/packages/presentation/presentation_library/jest.config.js +++ b/packages/kbn-esql-validation-autocomplete/jest.config.js @@ -8,6 +8,6 @@ module.exports = { preset: '@kbn/test', - rootDir: '../../..', - roots: ['/packages/presentation/presentation_library'], + rootDir: '../..', + roots: ['/packages/kbn-esql-validation-autocomplete'], }; diff --git a/packages/kbn-esql-validation-autocomplete/kibana.jsonc b/packages/kbn-esql-validation-autocomplete/kibana.jsonc new file mode 100644 index 0000000000000..b7c1d12d48cd1 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/kibana.jsonc @@ -0,0 +1,5 @@ +{ + "type": "shared-common", + "id": "@kbn/esql-validation-autocomplete", + "owner": "@elastic/kibana-esql" + } \ No newline at end of file diff --git a/packages/kbn-esql-validation-autocomplete/package.json b/packages/kbn-esql-validation-autocomplete/package.json new file mode 100644 index 0000000000000..1589e4aaba238 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/package.json @@ -0,0 +1,7 @@ +{ + "name": "@kbn/esql-validation-autocomplete", + "version": "1.0.0", + "private": true, + "license": "SSPL-1.0 OR Elastic License 2.0", + "sideEffects": false + } \ No newline at end of file diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.test.ts similarity index 94% rename from packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts rename to packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.test.ts index fc0508fc1582d..b31ca967c55fb 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.test.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.test.ts @@ -6,12 +6,7 @@ * Side Public License, v 1. */ -import { monaco } from '../../../../monaco_imports'; -import { CharStreams } from 'antlr4'; import { suggest } from './autocomplete'; -import { getParser, ROOT_STATEMENT } from '../../antlr_facade'; -import { ESQLErrorListener } from '../../monaco/esql_error_listener'; -import { AstListener } from '../ast_factory'; import { evalFunctionsDefinitions } from '../definitions/functions'; import { builtinFunctions } from '../definitions/builtin'; import { statsAggregationFunctionDefinitions } from '../definitions/aggs'; @@ -19,6 +14,7 @@ import { chronoLiterals, timeLiterals } from '../definitions/literals'; import { commandDefinitions } from '../definitions/commands'; import { TRIGGER_SUGGESTION_COMMAND } from './factories'; import { camelCase } from 'lodash'; +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; const triggerCharacters = [',', '(', '=', ' ']; @@ -180,13 +176,6 @@ function createCustomCallbackMocks( }; } -function createModelAndPosition(text: string, offset: number) { - return { - model: { getValue: () => text } as monaco.editor.ITextModel, - position: { lineNumber: 1, column: offset } as monaco.Position, - }; -} - function createSuggestContext(text: string, triggerCharacter?: string) { if (triggerCharacter) { return { triggerCharacter, triggerKind: 1 }; // any number is fine here @@ -209,16 +198,6 @@ function getPolicyFields(policyName: string) { } describe('autocomplete', () => { - const getAstAndErrors = async (text: string) => { - const errorListener = new ESQLErrorListener(); - const parseListener = new AstListener(); - const parser = getParser(CharStreams.fromString(text), errorListener, parseListener); - - parser[ROOT_STATEMENT](); - - return { ...parseListener.getAst(), errors: [] }; - }; - type TestArgs = [ string, string[], @@ -244,7 +223,7 @@ describe('autocomplete', () => { const context = createSuggestContext(statement, triggerCharacterString); const offset = typeof triggerCharacter === 'string' - ? statement.lastIndexOf(context.triggerCharacter) + 2 + ? statement.lastIndexOf(context.triggerCharacter) + 1 : triggerCharacter; const testFn = only ? test.only : skip ? test.skip : test; @@ -254,20 +233,20 @@ describe('autocomplete', () => { )}"]`, async () => { const callbackMocks = createCustomCallbackMocks(...customCallbacksArgs); - const { model, position } = createModelAndPosition(statement, offset); const suggestions = await suggest( - model, - position, + statement, + offset, context, - async (text) => (text ? await getAstAndErrors(text) : { ast: [], errors: [] }), + async (text) => (text ? await getAstAndSyntaxErrors(text) : { ast: [], errors: [] }), callbackMocks ); - expect( - suggestions - // simulate the editor behaviour for sorting suggestions - .sort((a, b) => (a.sortText || '').localeCompare(b.sortText || '')) - .map((i) => i.insertText) - ).toEqual(expected); + const suggestionInertTextSorted = suggestions + // simulate the editor behaviour for sorting suggestions + .sort((a, b) => (a.sortText || '').localeCompare(b.sortText || '')) + .map((i) => i.text); + for (const [index, receivedSuggestion] of suggestionInertTextSorted.entries()) { + expect(receivedSuggestion).toEqual(expected[index]); + } } ); }; @@ -340,11 +319,11 @@ describe('autocomplete', () => { testSuggestions('from a,', suggestedIndexes); 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); - testSuggestions('from a, b metadata ', ['_index', '_score'], 19); - testSuggestions('from a, b [metadata _index, ]', ['_score'], 27); - testSuggestions('from a, b metadata _index, ', ['_score'], 26); + testSuggestions('from index', suggestedIndexes, 5 /* space before index */); + testSuggestions('from a, b [metadata ]', ['_index', '_score'], ' ]'); + testSuggestions('from a, b metadata ', ['_index', '_score'], ' '); + testSuggestions('from a, b [metadata _index, ]', ['_score'], ' ]'); + testSuggestions('from a, b metadata _index, ', ['_score'], ' '); }); describe('show', () => { @@ -645,7 +624,7 @@ describe('autocomplete', () => { evalMath: true, }), ], - 32 + '(' ); testSuggestions('from a | eval var0=round(b), var1=round(c) | stats ', [ @@ -657,18 +636,14 @@ describe('autocomplete', () => { ]); // smoke testing with suggestions not at the end of the string - testSuggestions( - 'from a | stats a = min(b) | sort b', - ['by $0', ',', '|'], - 27 /* " " after min(b) */ - ); + testSuggestions('from a | stats a = min(b) | sort b', ['by $0', ',', '|'], ') '); testSuggestions( 'from a | stats avg(b) by stringField', [ ...getFieldNamesByType('number'), ...getFunctionSignaturesByReturnType('eval', 'number', { evalMath: true }), ], - 21 /* b column in avg */ + '(b' ); // while nested functions are not suggested, complete them should be possible via suggestions @@ -712,7 +687,7 @@ describe('autocomplete', () => { 'round', ]), ], - 27 + '(' ); testSuggestions( 'from a | stats avg(round(', @@ -722,7 +697,7 @@ describe('autocomplete', () => { 'round', ]), ], - 26 + '(' ); testSuggestions( 'from a | stats avg(', @@ -740,7 +715,7 @@ describe('autocomplete', () => { 'round', ]), ], - 26 + '(' ); }); @@ -1159,12 +1134,11 @@ describe('autocomplete', () => { const statement = 'from a | drop stringField | eval var0 = abs(numberField) '; const triggerOffset = statement.lastIndexOf(' '); const context = createSuggestContext(statement, statement[triggerOffset]); - const { model, position } = createModelAndPosition(statement, triggerOffset + 2); await suggest( - model, - position, + statement, + triggerOffset + 1, context, - async (text) => (text ? await getAstAndErrors(text) : { ast: [], errors: [] }), + async (text) => (text ? await getAstAndSyntaxErrors(text) : { ast: [], errors: [] }), callbackMocks ); expect(callbackMocks.getFieldsFor).toHaveBeenCalledWith({ @@ -1176,12 +1150,11 @@ describe('autocomplete', () => { const statement = 'from a | drop | eval var0 = abs(numberField) '; const triggerOffset = statement.lastIndexOf('p') + 1; // drop const context = createSuggestContext(statement, statement[triggerOffset]); - const { model, position } = createModelAndPosition(statement, triggerOffset + 2); await suggest( - model, - position, + statement, + triggerOffset + 1, context, - async (text) => (text ? await getAstAndErrors(text) : { ast: [], errors: [] }), + async (text) => (text ? await getAstAndSyntaxErrors(text) : { ast: [], errors: [] }), callbackMocks ); expect(callbackMocks.getFieldsFor).toHaveBeenCalledWith({ query: 'from a' }); @@ -1193,12 +1166,11 @@ describe('autocomplete', () => { const callbackMocks = createCustomCallbackMocks(undefined, undefined, undefined); const triggerOffset = statement.lastIndexOf(' ') + 1; // drop const context = createSuggestContext(statement, statement[triggerOffset]); - const { model, position } = createModelAndPosition(statement, triggerOffset + 2); return suggest( - model, - position, + statement, + triggerOffset + 1, context, - async (text) => (text ? await getAstAndErrors(text) : { ast: [], errors: [] }), + async (text) => (text ? await getAstAndSyntaxErrors(text) : { ast: [], errors: [] }), callbackMocks ); } @@ -1207,12 +1179,14 @@ describe('autocomplete', () => { // test that all functions will retrigger suggestions expect( suggestions - .filter(({ kind }) => kind === 1) + .filter(({ kind }) => kind === 'Function') .every(({ command }) => command === TRIGGER_SUGGESTION_COMMAND) ).toBeTruthy(); // now test that non-function won't retrigger expect( - suggestions.filter(({ kind }) => kind !== 1).every(({ command }) => command == null) + suggestions + .filter(({ kind }) => kind !== 'Function') + .every(({ command }) => command == null) ).toBeTruthy(); }); it('should trigger further suggestions for commands', async () => { diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts similarity index 97% rename from packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts rename to packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts index ea849879567b5..84c5f59f49c31 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/autocomplete.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts @@ -7,9 +7,15 @@ */ import uniqBy from 'lodash/uniqBy'; -import type { monaco } from '../../../../monaco_imports'; -import type { AutocompleteCommandDefinition } from './types'; -import { nonNullable } from '../ast_helpers'; +import type { + AstProviderFn, + ESQLAstItem, + ESQLCommand, + ESQLCommandOption, + ESQLFunction, + ESQLSingleAstItem, +} from '@kbn/esql-ast'; +import type { EditorContext, SuggestionRawDefinition } from './types'; import { columnExists, getColumnHit, @@ -32,19 +38,11 @@ import { isSettingItem, isSourceItem, isTimeIntervalItem, - monacoPositionToOffset, getAllFunctions, isSingleItem, + nonNullable, } from '../shared/helpers'; import { collectVariables, excludeVariablesFromCurrentCommand } from '../shared/variables'; -import type { - AstProviderFn, - ESQLAstItem, - ESQLCommand, - ESQLCommandOption, - ESQLFunction, - ESQLSingleAstItem, -} from '../types'; import type { ESQLPolicy, ESQLRealField, ESQLVariable, ReferenceMaps } from '../validation/types'; import { colonCompleteItem, @@ -82,13 +80,13 @@ import { import { ESQLCallbacks } from '../shared/types'; import { getFunctionsToIgnoreForStats, isAggFunctionUsedAlready } from './helper'; -type GetSourceFn = () => Promise; +type GetSourceFn = () => Promise; type GetFieldsByTypeFn = ( type: string | string[], ignored?: string[] -) => Promise; +) => Promise; type GetFieldsMapFn = () => Promise>; -type GetPoliciesFn = () => Promise; +type GetPoliciesFn = () => Promise; type GetPolicyMetadataFn = (name: string) => Promise; type GetMetaFieldsFn = () => Promise; @@ -147,15 +145,12 @@ function countBracketsUnclosed(bracketType: '(' | '[', text: string) { } export async function suggest( - model: monaco.editor.ITextModel, - position: monaco.Position, - context: monaco.languages.CompletionContext, + fullText: string, + offset: number, + context: EditorContext, astProvider: AstProviderFn, resourceRetriever?: ESQLCallbacks -): Promise { - // take the full text but then slice it to the current position - const fullText = model.getValue(); - const offset = monacoPositionToOffset(fullText, position); +): Promise { const innerText = fullText.substring(0, offset); let finalText = innerText; @@ -564,7 +559,7 @@ async function getExpressionSuggestionsByType( const references = { fields: fieldsMap, variables: anyVariables }; - const suggestions: AutocompleteCommandDefinition[] = []; + const suggestions: SuggestionRawDefinition[] = []; // in this flow there's a clear plan here from argument definitions so try to follow it if (argDef) { @@ -877,8 +872,8 @@ async function getExpressionSuggestionsByType( } } // Due to some logic overlapping functions can be repeated - // so dedupe here based on insertText string (it can differ from name) - return uniqBy(suggestions, (suggestion) => suggestion.insertText); + // so dedupe here based on text string (it can differ from name) + return uniqBy(suggestions, (suggestion) => suggestion.text); } async function getBuiltinFunctionNextArgument( @@ -965,7 +960,7 @@ async function getBuiltinFunctionNextArgument( return suggestions; } -function pushItUpInTheList(suggestions: AutocompleteCommandDefinition[], shouldPromote: boolean) { +function pushItUpInTheList(suggestions: SuggestionRawDefinition[], shouldPromote: boolean) { if (!shouldPromote) { return suggestions; } @@ -996,9 +991,9 @@ async function getFieldsOrFunctionsSuggestions( ignoreFn?: string[]; ignoreFields?: string[]; } = {} -): Promise { +): Promise { const filteredFieldsByType = pushItUpInTheList( - (await (fields ? getFieldsByType(types, ignoreFields) : [])) as AutocompleteCommandDefinition[], + (await (fields ? getFieldsByType(types, ignoreFields) : [])) as SuggestionRawDefinition[], functions ); @@ -1058,7 +1053,7 @@ async function getFunctionArgsSuggestions( getFieldsByType: GetFieldsByTypeFn, getFieldsMap: GetFieldsMapFn, getPolicyMetadata: GetPolicyMetadataFn -): Promise { +): Promise { const fnDefinition = getFunctionDefinition(node.name); // early exit on no hit if (!fnDefinition) { @@ -1183,19 +1178,18 @@ async function getFunctionArgsSuggestions( suggestion !== commaCompleteItem ? { ...suggestion, - insertText: + text: hasMoreMandatoryArgs && fnDefinition.type !== 'builtin' - ? `${suggestion.insertText},` - : suggestion.insertText, + ? `${suggestion.text},` + : suggestion.text, } : suggestion ); } - return suggestions.map(({ insertText, ...rest }) => ({ + return suggestions.map(({ text, ...rest }) => ({ ...rest, - insertText: - hasMoreMandatoryArgs && fnDefinition.type !== 'builtin' ? `${insertText},` : insertText, + text: hasMoreMandatoryArgs && fnDefinition.type !== 'builtin' ? `${text},` : text, })); } diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/complete_items.ts similarity index 70% rename from packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts rename to packages/kbn-esql-validation-autocomplete/src/autocomplete/complete_items.ts index 5b2d66c309b0f..8dcb8bff6dbc6 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/complete_items.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/complete_items.ts @@ -7,36 +7,36 @@ */ import { i18n } from '@kbn/i18n'; -import type { AutocompleteCommandDefinition } from './types'; +import type { SuggestionRawDefinition } from './types'; import { statsAggregationFunctionDefinitions } from '../definitions/aggs'; import { builtinFunctions } from '../definitions/builtin'; import { evalFunctionsDefinitions } from '../definitions/functions'; import { getAllCommands } from '../shared/helpers'; import { - getAutocompleteFunctionDefinition, - getAutocompleteBuiltinDefinition, - getAutocompleteCommandDefinition, + getSuggestionFunctionDefinition, + getSuggestionBuiltinDefinition, + getSuggestionCommandDefinition, TRIGGER_SUGGESTION_COMMAND, buildConstantsDefinitions, } from './factories'; -export const mathCommandDefinition: AutocompleteCommandDefinition[] = evalFunctionsDefinitions.map( - getAutocompleteFunctionDefinition +export const mathCommandDefinition: SuggestionRawDefinition[] = evalFunctionsDefinitions.map( + getSuggestionFunctionDefinition ); -export const aggregationFunctionsDefinitions: AutocompleteCommandDefinition[] = - statsAggregationFunctionDefinitions.map(getAutocompleteFunctionDefinition); +export const aggregationFunctionsDefinitions: SuggestionRawDefinition[] = + statsAggregationFunctionDefinitions.map(getSuggestionFunctionDefinition); export function getAssignmentDefinitionCompletitionItem() { const assignFn = builtinFunctions.find(({ name }) => name === '=')!; - return getAutocompleteBuiltinDefinition(assignFn); + return getSuggestionBuiltinDefinition(assignFn); } export const getNextTokenForNot = ( command: string, option: string | undefined, argType: string -): AutocompleteCommandDefinition[] => { +): SuggestionRawDefinition[] => { const compatibleFunctions = builtinFunctions.filter( ({ name, supportedCommands, supportedOptions, ignoreAsSuggestion }) => !ignoreAsSuggestion && @@ -47,14 +47,14 @@ export const getNextTokenForNot = ( // suggest IS, LIKE, RLIKE and TRUE/FALSE return compatibleFunctions .filter(({ name }) => name === 'like' || name === 'rlike' || name === 'in') - .map(getAutocompleteBuiltinDefinition); + .map(getSuggestionBuiltinDefinition); } if (argType === 'boolean') { // suggest IS, NOT and TRUE/FALSE return [ ...compatibleFunctions .filter(({ name }) => name === 'in') - .map(getAutocompleteBuiltinDefinition), + .map(getSuggestionBuiltinDefinition), ...buildConstantsDefinitions(['true', 'false']), ]; } @@ -67,7 +67,7 @@ export const getBuiltinCompatibleFunctionDefinition = ( argType: string, returnTypes?: string[], { skipAssign }: { skipAssign?: boolean } = {} -): AutocompleteCommandDefinition[] => { +): SuggestionRawDefinition[] => { const compatibleFunctions = builtinFunctions.filter( ({ name, supportedCommands, supportedOptions, signatures, ignoreAsSuggestion }) => !ignoreAsSuggestion && @@ -80,7 +80,7 @@ export const getBuiltinCompatibleFunctionDefinition = ( ) ); if (!returnTypes) { - return compatibleFunctions.map(getAutocompleteBuiltinDefinition); + return compatibleFunctions.map(getSuggestionBuiltinDefinition); } return compatibleFunctions .filter((mathDefinition) => @@ -88,29 +88,29 @@ export const getBuiltinCompatibleFunctionDefinition = ( (signature) => returnTypes[0] === 'any' || returnTypes.includes(signature.returnType) ) ) - .map(getAutocompleteBuiltinDefinition); + .map(getSuggestionBuiltinDefinition); }; -export const commandAutocompleteDefinitions: AutocompleteCommandDefinition[] = getAllCommands().map( - getAutocompleteCommandDefinition +export const commandAutocompleteDefinitions: SuggestionRawDefinition[] = getAllCommands().map( + getSuggestionCommandDefinition ); function buildCharCompleteItem( label: string, detail: string, { sortText, quoted }: { sortText?: string; quoted: boolean } = { quoted: false } -): AutocompleteCommandDefinition { +): SuggestionRawDefinition { return { label, - insertText: quoted ? `"${label}"` : label, - kind: 11, + text: quoted ? `"${label}"` : label, + kind: 'Operator', detail, sortText, }; } export const pipeCompleteItem = buildCharCompleteItem( '|', - i18n.translate('monaco.esql.autocomplete.pipeDoc', { + i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.pipeDoc', { defaultMessage: 'Pipe (|)', }), { sortText: 'C', quoted: false } @@ -118,7 +118,7 @@ export const pipeCompleteItem = buildCharCompleteItem( export const commaCompleteItem = buildCharCompleteItem( ',', - i18n.translate('monaco.esql.autocomplete.commaDoc', { + i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.commaDoc', { defaultMessage: 'Comma (,)', }), { sortText: 'B', quoted: false } @@ -126,25 +126,25 @@ export const commaCompleteItem = buildCharCompleteItem( export const colonCompleteItem = buildCharCompleteItem( ':', - i18n.translate('monaco.esql.autocomplete.colonDoc', { + i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.colonDoc', { defaultMessage: 'Colon (:)', }), { sortText: 'A', quoted: true } ); export const semiColonCompleteItem = buildCharCompleteItem( ';', - i18n.translate('monaco.esql.autocomplete.semiColonDoc', { + i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.semiColonDoc', { defaultMessage: 'Semi colon (;)', }), { sortText: 'A', quoted: true } ); -export const listCompleteItem: AutocompleteCommandDefinition = { +export const listCompleteItem: SuggestionRawDefinition = { label: '( ... )', - insertText: '( $0 )', - insertTextRules: 4, - kind: 11, - detail: i18n.translate('monaco.esql.autocomplete.listDoc', { + text: '( $0 )', + asSnippet: true, + kind: 'Operator', + detail: i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.listDoc', { defaultMessage: 'List of items ( ...)', }), sortText: 'A', diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/documentation_util.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/documentation_util.ts similarity index 79% rename from packages/kbn-monaco/src/esql/lib/ast/autocomplete/documentation_util.ts rename to packages/kbn-esql-validation-autocomplete/src/autocomplete/documentation_util.ts index 0166c94210f8d..0e46046320430 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/documentation_util.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/documentation_util.ts @@ -8,13 +8,19 @@ import { i18n } from '@kbn/i18n'; -const declarationLabel = i18n.translate('monaco.esql.autocomplete.declarationLabel', { - defaultMessage: 'Declaration:', -}); +const declarationLabel = i18n.translate( + 'kbn-esql-validation-autocomplete.esql.autocomplete.declarationLabel', + { + defaultMessage: 'Declaration:', + } +); -const examplesLabel = i18n.translate('monaco.esql.autocomplete.examplesLabel', { - defaultMessage: 'Examples:', -}); +const examplesLabel = i18n.translate( + 'kbn-esql-validation-autocomplete.esql.autocomplete.examplesLabel', + { + defaultMessage: 'Examples:', + } +); /** @internal */ export const buildFunctionDocumentation = ( diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/factories.ts similarity index 66% rename from packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts rename to packages/kbn-esql-validation-autocomplete/src/autocomplete/factories.ts index a51a754ef1b2e..1c03619c3876f 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/factories.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/factories.ts @@ -7,7 +7,7 @@ */ import { i18n } from '@kbn/i18n'; -import { AutocompleteCommandDefinition } from './types'; +import { SuggestionRawDefinition } from './types'; import { statsAggregationFunctionDefinitions } from '../definitions/aggs'; import { evalFunctionsDefinitions } from '../definitions/functions'; import { getFunctionSignatures, getCommandSignature } from '../definitions/helpers'; @@ -35,13 +35,13 @@ function getSafeInsertText(text: string, options: { dashSupported?: boolean } = : text; } -export function getAutocompleteFunctionDefinition(fn: FunctionDefinition) { +export function getSuggestionFunctionDefinition(fn: FunctionDefinition): SuggestionRawDefinition { const fullSignatures = getFunctionSignatures(fn); return { label: fullSignatures[0].declaration, - insertText: `${fn.name}($0)`, - insertTextRules: 4, // monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, - kind: 1, + text: `${fn.name}($0)`, + asSnippet: true, + kind: 'Function', detail: fn.description, documentation: { value: buildFunctionDocumentation(fullSignatures), @@ -53,15 +53,13 @@ export function getAutocompleteFunctionDefinition(fn: FunctionDefinition) { }; } -export function getAutocompleteBuiltinDefinition( - fn: FunctionDefinition -): AutocompleteCommandDefinition { +export function getSuggestionBuiltinDefinition(fn: FunctionDefinition): SuggestionRawDefinition { const hasArgs = fn.signatures.some(({ params }) => params.length > 1); return { label: fn.name, - insertText: hasArgs ? `${fn.name} $0` : fn.name, - ...(hasArgs ? { insertTextRules: 4 } : {}), // monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, - kind: 11, + text: hasArgs ? `${fn.name} $0` : fn.name, + ...(hasArgs ? { insertTextRules: 4 } : {}), // kbn-esql-validation-autocomplete.languages.CompletionItemInsertTextRule.InsertAsSnippet, + kind: 'Operator', detail: fn.description, documentation: { value: '', @@ -76,14 +74,14 @@ export const getCompatibleFunctionDefinition = ( option: string | undefined, returnTypes?: string[], ignored: string[] = [] -): AutocompleteCommandDefinition[] => { +): SuggestionRawDefinition[] => { const fnSupportedByCommand = allFunctions.filter( ({ name, supportedCommands, supportedOptions }) => (option ? supportedOptions?.includes(option) : supportedCommands.includes(command)) && !ignored.includes(name) ); if (!returnTypes) { - return fnSupportedByCommand.map(getAutocompleteFunctionDefinition); + return fnSupportedByCommand.map(getSuggestionFunctionDefinition); } return fnSupportedByCommand .filter((mathDefinition) => @@ -91,21 +89,21 @@ export const getCompatibleFunctionDefinition = ( (signature) => returnTypes[0] === 'any' || returnTypes.includes(signature.returnType) ) ) - .map(getAutocompleteFunctionDefinition); + .map(getSuggestionFunctionDefinition); }; -export function getAutocompleteCommandDefinition( +export function getSuggestionCommandDefinition( command: CommandDefinition -): AutocompleteCommandDefinition { +): SuggestionRawDefinition { const commandDefinition = getCommandDefinition(command.name); const commandSignature = getCommandSignature(commandDefinition); return { label: commandDefinition.name, - insertText: commandDefinition.signature.params.length + text: commandDefinition.signature.params.length ? `${commandDefinition.name} $0` : commandDefinition.name, - insertTextRules: 4, // monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, - kind: 0, + asSnippet: true, + kind: 'Method', detail: commandDefinition.description, documentation: { value: buildDocumentation(commandSignature.declaration, commandSignature.examples), @@ -115,34 +113,37 @@ export function getAutocompleteCommandDefinition( }; } -export const buildFieldsDefinitions = (fields: string[]): AutocompleteCommandDefinition[] => +export const buildFieldsDefinitions = (fields: string[]): SuggestionRawDefinition[] => fields.map((label) => ({ label, - insertText: getSafeInsertText(label), - kind: 4, - detail: i18n.translate('monaco.esql.autocomplete.fieldDefinition', { + text: getSafeInsertText(label), + kind: 'Variable', + detail: i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.fieldDefinition', { defaultMessage: `Field specified by the input table`, }), sortText: 'D', })); -export const buildVariablesDefinitions = (variables: string[]): AutocompleteCommandDefinition[] => +export const buildVariablesDefinitions = (variables: string[]): SuggestionRawDefinition[] => variables.map((label) => ({ label, - insertText: label, - kind: 4, - detail: i18n.translate('monaco.esql.autocomplete.variableDefinition', { - defaultMessage: `Variable specified by the user within the ES|QL query`, - }), + text: label, + kind: 'Variable', + detail: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.autocomplete.variableDefinition', + { + defaultMessage: `Variable specified by the user within the ES|QL query`, + } + ), sortText: 'D', })); -export const buildSourcesDefinitions = (sources: string[]): AutocompleteCommandDefinition[] => +export const buildSourcesDefinitions = (sources: string[]): SuggestionRawDefinition[] => sources.map((label) => ({ label, - insertText: getSafeInsertText(label, { dashSupported: true }), - kind: 21, - detail: i18n.translate('monaco.esql.autocomplete.sourceDefinition', { + text: getSafeInsertText(label, { dashSupported: true }), + kind: 'Reference', + detail: i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.sourceDefinition', { defaultMessage: `Index`, }), sortText: 'A', @@ -151,25 +152,25 @@ export const buildSourcesDefinitions = (sources: string[]): AutocompleteCommandD export const buildConstantsDefinitions = ( userConstants: string[], detail?: string -): AutocompleteCommandDefinition[] => +): SuggestionRawDefinition[] => userConstants.map((label) => ({ label, - insertText: label, - kind: 14, + text: label, + kind: 'Constant', detail: detail ?? - i18n.translate('monaco.esql.autocomplete.constantDefinition', { + i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.constantDefinition', { defaultMessage: `Constant`, }), sortText: 'A', })); -export const buildNewVarDefinition = (label: string): AutocompleteCommandDefinition => { +export const buildNewVarDefinition = (label: string): SuggestionRawDefinition => { return { label, - insertText: `${label} =`, - kind: 21, - detail: i18n.translate('monaco.esql.autocomplete.newVarDoc', { + text: `${label} =`, + kind: 'Variable', + detail: i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.newVarDoc', { defaultMessage: 'Define a new variable', }), sortText: '1', @@ -178,12 +179,12 @@ export const buildNewVarDefinition = (label: string): AutocompleteCommandDefinit export const buildPoliciesDefinitions = ( policies: Array<{ name: string; sourceIndices: string[] }> -): AutocompleteCommandDefinition[] => +): SuggestionRawDefinition[] => policies.map(({ name: label, sourceIndices }) => ({ label, - insertText: getSafeInsertText(label, { dashSupported: true }), - kind: 5, - detail: i18n.translate('monaco.esql.autocomplete.policyDefinition', { + text: getSafeInsertText(label, { dashSupported: true }), + kind: 'Class', + detail: i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.policyDefinition', { defaultMessage: `Policy defined on {count, plural, one {index} other {indices}}: {indices}`, values: { count: sourceIndices.length, @@ -196,17 +197,20 @@ export const buildPoliciesDefinitions = ( export const buildMatchingFieldsDefinition = ( matchingField: string, fields: string[] -): AutocompleteCommandDefinition[] => +): SuggestionRawDefinition[] => fields.map((label) => ({ label, - insertText: label, - kind: 4, - detail: i18n.translate('monaco.esql.autocomplete.matchingFieldDefinition', { - defaultMessage: `Use to match on {matchingField} on the policy`, - values: { - matchingField, - }, - }), + text: label, + kind: 'Variable', + detail: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.autocomplete.matchingFieldDefinition', + { + defaultMessage: `Use to match on {matchingField} on the policy`, + values: { + matchingField, + }, + } + ), sortText: 'D', })); @@ -214,16 +218,16 @@ export const buildOptionDefinition = ( option: CommandOptionsDefinition, isAssignType: boolean = false ) => { - const completeItem: AutocompleteCommandDefinition = { + const completeItem: SuggestionRawDefinition = { label: option.name, - insertText: option.name, - kind: 21, + text: option.name, + kind: 'Reference', detail: option.description, sortText: '1', }; if (isAssignType || option.signature.params.length) { - completeItem.insertText = isAssignType ? `${option.name} = $0` : `${option.name} $0`; - completeItem.insertTextRules = 4; // monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet; + completeItem.text = isAssignType ? `${option.name} = $0` : `${option.name} $0`; + completeItem.asSnippet = true; completeItem.command = TRIGGER_SUGGESTION_COMMAND; } return completeItem; @@ -231,32 +235,35 @@ export const buildOptionDefinition = ( export const buildSettingDefinitions = ( setting: CommandModeDefinition -): AutocompleteCommandDefinition[] => { +): SuggestionRawDefinition[] => { // for now there's just a single setting with one argument return setting.values.map(({ name, description }) => ({ label: `${setting.prefix || ''}${name}`, - insertText: `${setting.prefix || ''}${name}:$0`, - insertTextRules: 4, // monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, - kind: 21, + text: `${setting.prefix || ''}${name}:$0`, + asSnippet: true, + kind: 'Reference', detail: description ? `${setting.description} - ${description}` : setting.description, sortText: 'D', command: TRIGGER_SUGGESTION_COMMAND, })); }; -export const buildNoPoliciesAvailableDefinition = (): AutocompleteCommandDefinition => ({ - label: i18n.translate('monaco.esql.autocomplete.noPoliciesLabel', { +export const buildNoPoliciesAvailableDefinition = (): SuggestionRawDefinition => ({ + label: i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.noPoliciesLabel', { defaultMessage: 'No available policy', }), - insertText: '', - kind: 26, - detail: i18n.translate('monaco.esql.autocomplete.noPoliciesLabelsFound', { - defaultMessage: 'Click to create', - }), + text: '', + kind: 'Issue', + detail: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.autocomplete.noPoliciesLabelsFound', + { + defaultMessage: 'Click to create', + } + ), sortText: 'D', command: { id: 'esql.policies.create', - title: i18n.translate('monaco.esql.autocomplete.createNewPolicy', { + title: i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.createNewPolicy', { defaultMessage: 'Click to create', }), }, @@ -271,7 +278,7 @@ function getUnitDuration(unit: number = 1) { } export function getCompatibleLiterals(commandName: string, types: string[], names?: string[]) { - const suggestions: AutocompleteCommandDefinition[] = []; + const suggestions: SuggestionRawDefinition[] = []; if (types.includes('number') && commandName === 'limit') { // suggest 10/50/100 suggestions.push(...buildConstantsDefinitions(['10', '100', '1000'], '')); @@ -294,7 +301,7 @@ export function getCompatibleLiterals(commandName: string, types: string[], name suggestions.push( ...buildConstantsDefinitions( [commandName === 'grok' ? '"%{WORD:firstWord}"' : '"%{firstWord}"'], - i18n.translate('monaco.esql.autocomplete.aPatternString', { + i18n.translate('kbn-esql-validation-autocomplete.esql.autocomplete.aPatternString', { defaultMessage: 'A pattern string', }) ) diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/helper.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts similarity index 94% rename from packages/kbn-monaco/src/esql/lib/ast/autocomplete/helper.ts rename to packages/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts index b362a3f01e67f..11b853c2d3cf0 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/helper.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ +import type { ESQLAstItem, ESQLCommand, ESQLFunction } from '@kbn/esql-ast'; 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); diff --git a/packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts new file mode 100644 index 0000000000000..b4a6e62f24b8e --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +// This is a subset of the Monaco's editor CompletitionItemKind type +export type ItemKind = + | 'Method' + | 'Function' + | 'Field' + | 'Variable' + | 'Class' + | 'Operator' + | 'Value' + | 'Constant' + | 'Keyword' + | 'Text' + | 'Reference' + | 'Snippet' + | 'Issue'; + +export interface SuggestionRawDefinition { + /* The label to show on the suggestion UI for the entry */ + label: string; + /* The actual text to insert into the editor */ + text: string; + /** + * Should the text be inserted as a snippet? + * That is usually used for special behaviour like moving the cursor in a specific position + * after inserting the text. + * i.e. 'fnName( $0 )' will insert fnName( ) and move the cursor where $0 is. + * */ + asSnippet?: boolean; + /** + * This is useful to identify the suggestion type and apply different styles to it. + */ + kind: ItemKind; + /** + * A very short description for the suggestion entry that can be shown on the UI next to the label + */ + detail: string; + /** + * A longer description for the suggestion entry that can be shown on demand on the UI. + */ + documentation?: { value: string }; + /** + * A string to use for sorting the suggestion within the suggestions list + */ + sortText?: string; + /** + * Suggestions can trigger a command by id. This is useful to trigger specific actions in some contexts + */ + command?: { + title: string; + id: string; + }; +} + +export interface EditorContext { + /** The actual char that triggered the suggestion (1 single char) */ + triggerCharacter?: string; + /** The type of trigger id. triggerKind = 0 is a programmatic trigger, while any other non-zero value is currently ignored. */ + triggerKind: number; +} diff --git a/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.test.ts b/packages/kbn-esql-validation-autocomplete/src/code_actions/actions.test.ts similarity index 81% rename from packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.test.ts rename to packages/kbn-esql-validation-autocomplete/src/code_actions/actions.test.ts index c3e21a4c43bed..5cc6e5ae3950b 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.test.ts +++ b/packages/kbn-esql-validation-autocomplete/src/code_actions/actions.test.ts @@ -6,17 +6,11 @@ * Side Public License, v 1. */ -import { EditorError } from '../../../../types'; -import { CharStreams } from 'antlr4'; import { getActions } from './actions'; -import { getParser, ROOT_STATEMENT } from '../../antlr_facade'; -import { ESQLErrorListener } from '../../monaco/esql_error_listener'; -import { AstListener } from '../ast_factory'; -import { wrapAsMonacoMessage } from '../shared/monaco_utils'; -import { ESQLAst } from '../types'; -import { validateAst } from '../validation/validation'; -import { monaco } from '../../../../monaco_imports'; +import { validateQuery } from '../validation/validation'; import { getAllFunctions } from '../shared/helpers'; +import { wrapAsEditorMessage } from './testing_utils'; +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; function getCallbackMocks() { return { @@ -67,38 +61,6 @@ function getCallbackMocks() { }; } -const getAstAndErrors = async ( - text: string | undefined -): Promise<{ - errors: EditorError[]; - ast: ESQLAst; -}> => { - if (text == null) { - return { ast: [], errors: [] }; - } - const errorListener = new ESQLErrorListener(); - const parseListener = new AstListener(); - const parser = getParser(CharStreams.fromString(text), errorListener, parseListener); - - parser[ROOT_STATEMENT](); - - return { ...parseListener.getAst(), errors: errorListener.getErrors() }; -}; - -function createModelAndRange(text: string) { - return { - model: { getValue: () => text } as monaco.editor.ITextModel, - range: {} as monaco.Range, - }; -} - -function createMonacoContext(errors: EditorError[]): monaco.languages.CodeActionContext { - return { - markers: errors, - trigger: 1, - }; -} - /** * There are different wats to test the code here: one is a direct unit test of the feature, another is * an integration test passing from the query statement validation. The latter is more realistic, but @@ -111,17 +73,18 @@ function testQuickFixesFn( { only, skip }: { only?: boolean; skip?: boolean } = {} ) { const testFn = only ? it.only : skip ? it.skip : it; - const { model, range } = createModelAndRange(statement); testFn(`${statement} => ["${expectedFixes.join('","')}"]`, async () => { const callbackMocks = getCallbackMocks(); - const { errors } = await validateAst(statement, getAstAndErrors, callbackMocks); - - const monacoErrors = wrapAsMonacoMessage('error', statement, errors); - const context = createMonacoContext(monacoErrors); - const actions = await getActions(model, range, context, getAstAndErrors, callbackMocks); - const edits = actions.map( - ({ edit }) => (edit?.edits[0] as monaco.languages.IWorkspaceTextEdit).textEdit.text + const { errors } = await validateQuery( + statement, + getAstAndSyntaxErrors, + undefined, + callbackMocks ); + + const monacoErrors = wrapAsEditorMessage('error', errors); + const actions = await getActions(statement, monacoErrors, getAstAndSyntaxErrors, callbackMocks); + const edits = actions.map(({ edits: actionEdits }) => actionEdits[0].text); expect(edits).toEqual( !options || !options.equalityCheck || options.equalityCheck === 'equal' ? expectedFixes @@ -300,12 +263,15 @@ describe('quick fixes logic', () => { it('should not crash if callback functions are not passed', async () => { const callbackMocks = getCallbackMocks(); const statement = `from a | eval b = a | enrich policy | dissect stringField "%{firstWord}"`; - const { model, range } = createModelAndRange(statement); - const { errors } = await validateAst(statement, getAstAndErrors, callbackMocks); - const monacoErrors = wrapAsMonacoMessage('error', statement, errors); - const context = createMonacoContext(monacoErrors); + const { errors } = await validateQuery( + statement, + getAstAndSyntaxErrors, + undefined, + callbackMocks + ); + const monacoErrors = wrapAsEditorMessage('error', errors); try { - await getActions(model, range, context, getAstAndErrors, { + await getActions(statement, monacoErrors, getAstAndSyntaxErrors, { getFieldsFor: undefined, getSources: undefined, getPolicies: undefined, @@ -319,12 +285,15 @@ describe('quick fixes logic', () => { it('should not crash no callbacks are passed', async () => { const callbackMocks = getCallbackMocks(); const statement = `from a | eval b = a | enrich policy | dissect stringField "%{firstWord}"`; - const { model, range } = createModelAndRange(statement); - const { errors } = await validateAst(statement, getAstAndErrors, callbackMocks); - const monacoErrors = wrapAsMonacoMessage('error', statement, errors); - const context = createMonacoContext(monacoErrors); + const { errors } = await validateQuery( + statement, + getAstAndSyntaxErrors, + undefined, + callbackMocks + ); + const monacoErrors = wrapAsEditorMessage('error', errors); try { - await getActions(model, range, context, getAstAndErrors, undefined); + await getActions(statement, monacoErrors, getAstAndSyntaxErrors, undefined); } catch { fail('Should not throw'); } diff --git a/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts b/packages/kbn-esql-validation-autocomplete/src/code_actions/actions.ts similarity index 79% rename from packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts rename to packages/kbn-esql-validation-autocomplete/src/code_actions/actions.ts index bb2b5170d1c7b..dc356669b2847 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/code_actions/actions.ts +++ b/packages/kbn-esql-validation-autocomplete/src/code_actions/actions.ts @@ -7,7 +7,7 @@ */ import { i18n } from '@kbn/i18n'; import levenshtein from 'js-levenshtein'; -import type { monaco } from '../../../../monaco_imports'; +import type { AstProviderFn, ESQLAst, ESQLCommand, EditorError } from '@kbn/esql-ast'; import { getFieldsByTypeHelper, getPolicyHelper, @@ -20,23 +20,9 @@ import { shouldBeQuotedText, } from '../shared/helpers'; 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; -type GetPoliciesFn = () => Promise; -type GetPolicyFieldsFn = (name: string) => Promise; -type GetMetaFieldsFn = () => Promise; - -interface Callbacks { - getSources: GetSourceFn; - getFieldsByType: GetFieldsByTypeFn; - getPolicies: GetPoliciesFn; - getPolicyFields: GetPolicyFieldsFn; - getMetaFields: GetMetaFieldsFn; -} +import type { CodeAction, Callbacks } from './types'; function getFieldsByTypeRetriever(queryString: string, resourceRetriever?: ESQLCallbacks) { const helpers = getFieldsByTypeHelper(queryString, resourceRetriever); @@ -96,29 +82,17 @@ export const getCompatibleFunctionDefinitions = ( return fnSupportedByCommand.map(({ name }) => name); }; -function createAction( - title: string, - solution: string, - error: monaco.editor.IMarkerData, - uri: monaco.Uri -) { +function createAction(title: string, solution: string, error: EditorError): CodeAction { return { title, diagnostics: [error], kind: 'quickfix', - edit: { - edits: [ - { - resource: uri, - textEdit: { - range: error, - text: solution, - }, - versionId: undefined, - }, - ], - }, - isPreferred: true, + edits: [ + { + range: error, + text: solution, + }, + ], }; } @@ -136,8 +110,7 @@ async function getSpellingPossibilities(fn: () => Promise, errorText: } async function getSpellingActionForColumns( - error: monaco.editor.IMarkerData, - uri: monaco.Uri, + error: EditorError, queryString: string, ast: ESQLAst, { getFieldsByType, getPolicies, getPolicyFields }: Callbacks @@ -156,16 +129,15 @@ async function getSpellingActionForColumns( } return availableFields; }, errorText); - return wrapIntoSpellingChangeAction(error, uri, possibleFields); + return wrapIntoSpellingChangeAction(error, possibleFields); } async function getQuotableActionForColumns( - error: monaco.editor.IMarkerData, - uri: monaco.Uri, + error: EditorError, queryString: string, ast: ESQLAst, { getFieldsByType }: Callbacks -) { +): Promise { const commandEndIndex = ast.find((command) => command.location.max > error.endColumn)?.location .max; // the error received is unknwonColumn here, but look around the column to see if there's more @@ -189,22 +161,21 @@ async function getQuotableActionForColumns( const errorText = queryString .substring(error.startColumn - 1, error.endColumn + possibleUnquotedText.length) .trimEnd(); - const actions = []; + const actions: CodeAction[] = []; if (shouldBeQuotedText(errorText)) { const availableFields = new Set(await getFieldsByType('any')); const solution = `\`${errorText.replace(SINGLE_TICK_REGEX, DOUBLE_BACKTICK)}\``; if (availableFields.has(errorText) || availableFields.has(solution)) { actions.push( createAction( - i18n.translate('monaco.esql.quickfix.replaceWithSolution', { + i18n.translate('kbn-esql-validation-autocomplete.esql.quickfix.replaceWithSolution', { defaultMessage: 'Did you mean {solution} ?', values: { solution, }, }), solution, - { ...error, endColumn: error.startColumn + errorText.length }, // override the location - uri + { ...error, endColumn: error.startColumn + errorText.length } // override the location ) ); } @@ -213,8 +184,7 @@ async function getQuotableActionForColumns( } async function getSpellingActionForIndex( - error: monaco.editor.IMarkerData, - uri: monaco.Uri, + error: EditorError, queryString: string, ast: ESQLAst, { getSources }: Callbacks @@ -230,24 +200,22 @@ async function getSpellingActionForIndex( } return sources; }, errorText); - return wrapIntoSpellingChangeAction(error, uri, possibleSources); + return wrapIntoSpellingChangeAction(error, possibleSources); } async function getSpellingActionForPolicies( - error: monaco.editor.IMarkerData, - uri: monaco.Uri, + error: EditorError, queryString: string, ast: ESQLAst, { getPolicies }: Callbacks ) { const errorText = queryString.substring(error.startColumn - 1, error.endColumn - 1); const possiblePolicies = await getSpellingPossibilities(getPolicies, errorText); - return wrapIntoSpellingChangeAction(error, uri, possiblePolicies); + return wrapIntoSpellingChangeAction(error, possiblePolicies); } async function getSpellingActionForFunctions( - error: monaco.editor.IMarkerData, - uri: monaco.Uri, + error: EditorError, queryString: string, ast: ESQLAst ) { @@ -268,26 +236,23 @@ async function getSpellingActionForFunctions( ); return wrapIntoSpellingChangeAction( error, - uri, possibleSolutions.map((fn) => `${fn}${errorText.substring(errorText.lastIndexOf('('))}`) ); } async function getSpellingActionForMetadata( - error: monaco.editor.IMarkerData, - uri: monaco.Uri, + error: EditorError, queryString: string, ast: ESQLAst, { getMetaFields }: Callbacks ) { const errorText = queryString.substring(error.startColumn - 1, error.endColumn - 1); const possibleMetafields = await getSpellingPossibilities(getMetaFields, errorText); - return wrapIntoSpellingChangeAction(error, uri, possibleMetafields); + return wrapIntoSpellingChangeAction(error, possibleMetafields); } async function getSpellingActionForEnrichMode( - error: monaco.editor.IMarkerData, - uri: monaco.Uri, + error: EditorError, queryString: string, ast: ESQLAst, _callbacks: Callbacks @@ -308,38 +273,33 @@ async function getSpellingActionForEnrichMode( if (!possibleEnrichModes.length) { possibleEnrichModes.push(...allModes); } - return wrapIntoSpellingChangeAction(error, uri, possibleEnrichModes); + return wrapIntoSpellingChangeAction(error, possibleEnrichModes); } function wrapIntoSpellingChangeAction( - error: monaco.editor.IMarkerData, - uri: monaco.Uri, + error: EditorError, possibleSolution: string[] -): monaco.languages.CodeAction[] { +): CodeAction[] { return possibleSolution.map((solution) => createAction( // @TODO: workout why the tooltip is truncating the title here - i18n.translate('monaco.esql.quickfix.replaceWithSolution', { + i18n.translate('kbn-esql-validation-autocomplete.esql.quickfix.replaceWithSolution', { defaultMessage: 'Did you mean {solution} ?', values: { solution, }, }), solution, - error, - uri + error ) ); } -function extractQuotedText(rawText: string, error: monaco.editor.IMarkerData) { +function extractQuotedText(rawText: string, error: EditorError) { return rawText.substring(error.startColumn - 2, error.endColumn); } -function inferCodeFromError( - error: monaco.editor.IMarkerData & { owner?: string }, - rawText: string -) { +function inferCodeFromError(error: EditorError & { owner?: string }, rawText: string) { if (error.message.endsWith('expecting STRING')) { const value = extractQuotedText(rawText, error); return /^'(.)*'$/.test(value) ? 'wrongQuotes' : undefined; @@ -347,17 +307,15 @@ function inferCodeFromError( } export async function getActions( - model: monaco.editor.ITextModel, - range: monaco.Range, - context: monaco.languages.CodeActionContext, + innerText: string, + markers: EditorError[], astProvider: AstProviderFn, resourceRetriever?: ESQLCallbacks -): Promise { - const actions: monaco.languages.CodeAction[] = []; - if (context.markers.length === 0) { +): Promise { + const actions: CodeAction[] = []; + if (markers.length === 0) { return actions; } - const innerText = model.getValue(); const { ast } = await astProvider(innerText); const queryForFields = buildQueryForFieldsFromSource(innerText, ast); @@ -377,30 +335,23 @@ export async function getActions( // Markers are sent only on hover and are limited to the hovered area // so unless there are multiple error/markers for the same area, there's just one // in some cases, like syntax + semantic errors (i.e. unquoted fields eval field-1 ), there might be more than one - for (const error of context.markers) { + for (const error of markers) { const code = error.code ?? inferCodeFromError(error, innerText); switch (code) { case 'unknownColumn': const [columnsSpellChanges, columnsQuotedChanges] = await Promise.all([ - getSpellingActionForColumns(error, model.uri, innerText, ast, callbacks), - getQuotableActionForColumns(error, model.uri, innerText, ast, callbacks), + getSpellingActionForColumns(error, innerText, ast, callbacks), + getQuotableActionForColumns(error, innerText, ast, callbacks), ]); actions.push(...(columnsQuotedChanges.length ? columnsQuotedChanges : columnsSpellChanges)); break; case 'unknownIndex': - const indexSpellChanges = await getSpellingActionForIndex( - error, - model.uri, - innerText, - ast, - callbacks - ); + const indexSpellChanges = await getSpellingActionForIndex(error, innerText, ast, callbacks); actions.push(...indexSpellChanges); break; case 'unknownPolicy': const policySpellChanges = await getSpellingActionForPolicies( error, - model.uri, innerText, ast, callbacks @@ -408,18 +359,12 @@ export async function getActions( actions.push(...policySpellChanges); break; case 'unknownFunction': - const fnsSpellChanges = await getSpellingActionForFunctions( - error, - model.uri, - innerText, - ast - ); + const fnsSpellChanges = await getSpellingActionForFunctions(error, innerText, ast); actions.push(...fnsSpellChanges); break; case 'unknownMetadataField': const metadataSpellChanges = await getSpellingActionForMetadata( error, - model.uri, innerText, ast, callbacks @@ -431,7 +376,7 @@ export async function getActions( const errorText = extractQuotedText(innerText, error); actions.push( createAction( - i18n.translate('monaco.esql.quickfix.replaceWithQuote', { + i18n.translate('kbn-esql-validation-autocomplete.esql.quickfix.replaceWithQuote', { defaultMessage: 'Change quote to " (double)', }), errorText.replaceAll("'", '"'), @@ -440,15 +385,13 @@ export async function getActions( ...error, startColumn: error.startColumn - 1, endColumn: error.startColumn + errorText.length, - }, - model.uri + } ) ); break; case 'unsupportedSettingCommandValue': const enrichModeSpellChanges = await getSpellingActionForEnrichMode( error, - model.uri, innerText, ast, callbacks diff --git a/packages/kbn-esql-validation-autocomplete/src/code_actions/testing_utils.ts b/packages/kbn-esql-validation-autocomplete/src/code_actions/testing_utils.ts new file mode 100644 index 0000000000000..6c500776966e7 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/code_actions/testing_utils.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { EditorError, ESQLMessage } from '@kbn/esql-ast'; + +export function wrapAsEditorMessage( + type: 'error' | 'warning', + messages: Array +): EditorError[] { + return messages.map((e) => { + if ('severity' in e) { + return e; + } + const startPosition = e.location ? e.location.min + 1 : 0; + const endPosition = e.location ? e.location.max + 1 : 0; + return { + message: e.text, + startColumn: startPosition, + startLineNumber: 1, + endColumn: endPosition + 1, + endLineNumber: 1, + severity: type, + _source: 'client' as const, + code: e.code, + }; + }); +} diff --git a/packages/kbn-esql-validation-autocomplete/src/code_actions/types.ts b/packages/kbn-esql-validation-autocomplete/src/code_actions/types.ts new file mode 100644 index 0000000000000..854f19ff279c1 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/code_actions/types.ts @@ -0,0 +1,33 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { EditorError } from '../types'; + +type GetSourceFn = () => Promise; +type GetFieldsByTypeFn = (type: string | string[], ignored?: string[]) => Promise; +type GetPoliciesFn = () => Promise; +type GetPolicyFieldsFn = (name: string) => Promise; +type GetMetaFieldsFn = () => Promise; + +export interface Callbacks { + getSources: GetSourceFn; + getFieldsByType: GetFieldsByTypeFn; + getPolicies: GetPoliciesFn; + getPolicyFields: GetPolicyFieldsFn; + getMetaFields: GetMetaFieldsFn; +} + +export interface CodeAction { + title: string; + diagnostics: EditorError[]; + kind: 'quickfix'; + edits: Array<{ + range: EditorError; + text: string; + }>; +} diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/aggs.ts similarity index 72% rename from packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts rename to packages/kbn-esql-validation-autocomplete/src/definitions/aggs.ts index 36615b265dbc1..94ab3106036fd 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/aggs.ts +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/aggs.ts @@ -7,7 +7,7 @@ */ import { i18n } from '@kbn/i18n'; -import { FunctionDefinition } from './types'; +import type { FunctionDefinition } from './types'; function createNumericAggDefinition({ name, @@ -48,46 +48,52 @@ function createNumericAggDefinition({ export const statsAggregationFunctionDefinitions: FunctionDefinition[] = [ { name: 'avg', - description: i18n.translate('monaco.esql.definitions.avgDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.avgDoc', { defaultMessage: 'Returns the average of the values in a field', }), }, { name: 'max', - description: i18n.translate('monaco.esql.definitions.maxDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.maxDoc', { defaultMessage: 'Returns the maximum value in a field.', }), }, { name: 'min', - description: i18n.translate('monaco.esql.definitions.minDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.minDoc', { defaultMessage: 'Returns the minimum value in a field.', }), }, { name: 'sum', - description: i18n.translate('monaco.esql.definitions.sumDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sumDoc', { defaultMessage: 'Returns the sum of the values in a field.', }), }, { name: 'median', - description: i18n.translate('monaco.esql.definitions.medianDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.medianDoc', { defaultMessage: 'Returns the 50% percentile.', }), }, { name: 'median_absolute_deviation', - description: i18n.translate('monaco.esql.definitions.medianDeviationDoc', { - defaultMessage: - 'Returns the median of each data point’s deviation from the median of the entire sample.', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.medianDeviationDoc', + { + defaultMessage: + 'Returns the median of each data point’s deviation from the median of the entire sample.', + } + ), }, { name: 'percentile', - description: i18n.translate('monaco.esql.definitions.percentiletDoc', { - defaultMessage: 'Returns the n percentile of a field.', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.percentiletDoc', + { + defaultMessage: 'Returns the n percentile of a field.', + } + ), args: [{ name: 'percentile', type: 'number', value: '90', literalOnly: true }], }, ] @@ -96,7 +102,7 @@ export const statsAggregationFunctionDefinitions: FunctionDefinition[] = [ { name: 'count', type: 'agg', - description: i18n.translate('monaco.esql.definitions.countDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.countDoc', { defaultMessage: 'Returns the count of the values in a field.', }), supportedCommands: ['stats'], @@ -119,9 +125,12 @@ export const statsAggregationFunctionDefinitions: FunctionDefinition[] = [ { name: 'count_distinct', type: 'agg', - description: i18n.translate('monaco.esql.definitions.countDistinctDoc', { - defaultMessage: 'Returns the count of distinct values in a field.', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.countDistinctDoc', + { + defaultMessage: 'Returns the count of distinct values in a field.', + } + ), supportedCommands: ['stats'], signatures: [ { @@ -140,9 +149,12 @@ export const statsAggregationFunctionDefinitions: FunctionDefinition[] = [ { name: 'st_centroid', type: 'agg', - description: i18n.translate('monaco.esql.definitions.stCentroidDoc', { - defaultMessage: 'Returns the count of distinct values in a field.', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.stCentroidDoc', + { + defaultMessage: 'Returns the count of distinct values in a field.', + } + ), supportedCommands: ['stats'], signatures: [ { diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/builtin.ts similarity index 71% rename from packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts rename to packages/kbn-esql-validation-autocomplete/src/definitions/builtin.ts index f5b58c823741e..668a2cd20407b 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/builtin.ts +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/builtin.ts @@ -7,7 +7,7 @@ */ import { i18n } from '@kbn/i18n'; -import { FunctionDefinition } from './types'; +import type { FunctionDefinition } from './types'; function createMathDefinition( name: string, @@ -90,28 +90,28 @@ export const builtinFunctions: FunctionDefinition[] = [ createMathDefinition( '+', ['number', 'date', ['date', 'time_literal'], ['time_literal', 'date']], - i18n.translate('monaco.esql.definition.addDoc', { + i18n.translate('kbn-esql-validation-autocomplete.esql.definition.addDoc', { defaultMessage: 'Add (+)', }) ), createMathDefinition( '-', ['number', 'date', ['date', 'time_literal'], ['time_literal', 'date']], - i18n.translate('monaco.esql.definition.subtractDoc', { + i18n.translate('kbn-esql-validation-autocomplete.esql.definition.subtractDoc', { defaultMessage: 'Subtract (-)', }) ), createMathDefinition( '*', ['number'], - i18n.translate('monaco.esql.definition.multiplyDoc', { + i18n.translate('kbn-esql-validation-autocomplete.esql.definition.multiplyDoc', { defaultMessage: 'Multiply (*)', }) ), createMathDefinition( '/', ['number'], - i18n.translate('monaco.esql.definition.divideDoc', { + i18n.translate('kbn-esql-validation-autocomplete.esql.definition.divideDoc', { defaultMessage: 'Divide (/)', }), (fnDef) => { @@ -123,13 +123,16 @@ export const builtinFunctions: FunctionDefinition[] = [ messages.push({ type: 'warning' as const, code: 'divideByZero', - text: i18n.translate('monaco.esql.divide.warning.divideByZero', { - defaultMessage: 'Cannot divide by zero: {left}/{right}', - values: { - left: left.text, - right: right.value, - }, - }), + text: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.divide.warning.divideByZero', + { + defaultMessage: 'Cannot divide by zero: {left}/{right}', + values: { + left: left.text, + right: right.value, + }, + } + ), location: fnDef.location, }); } @@ -141,7 +144,7 @@ export const builtinFunctions: FunctionDefinition[] = [ createMathDefinition( '%', ['number'], - i18n.translate('monaco.esql.definition.moduleDoc', { + i18n.translate('kbn-esql-validation-autocomplete.esql.definition.moduleDoc', { defaultMessage: 'Module (%)', }), (fnDef) => { @@ -153,13 +156,16 @@ export const builtinFunctions: FunctionDefinition[] = [ messages.push({ type: 'warning' as const, code: 'moduleByZero', - text: i18n.translate('monaco.esql.divide.warning.zeroModule', { - defaultMessage: 'Module by zero can return null value: {left}%{right}', - values: { - left: left.text, - right: right.value, - }, - }), + text: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.divide.warning.zeroModule', + { + defaultMessage: 'Module by zero can return null value: {left}%{right}', + values: { + left: left.text, + right: right.value, + }, + } + ), location: fnDef.location, }); } @@ -171,39 +177,51 @@ export const builtinFunctions: FunctionDefinition[] = [ ...[ { name: '==', - description: i18n.translate('monaco.esql.definition.equalToDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.equalToDoc', { defaultMessage: 'Equal to', }), }, { name: '!=', - description: i18n.translate('monaco.esql.definition.notEqualToDoc', { - defaultMessage: 'Not equal to', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definition.notEqualToDoc', + { + defaultMessage: 'Not equal to', + } + ), }, { name: '<', - description: i18n.translate('monaco.esql.definition.lessThanDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.lessThanDoc', { defaultMessage: 'Less than', }), }, { name: '>', - description: i18n.translate('monaco.esql.definition.greaterThanDoc', { - defaultMessage: 'Greater than', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definition.greaterThanDoc', + { + defaultMessage: 'Greater than', + } + ), }, { name: '<=', - description: i18n.translate('monaco.esql.definition.lessThanOrEqualToDoc', { - defaultMessage: 'Less than or equal to', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definition.lessThanOrEqualToDoc', + { + defaultMessage: 'Less than or equal to', + } + ), }, { name: '>=', - description: i18n.translate('monaco.esql.definition.greaterThanOrEqualToDoc', { - defaultMessage: 'Greater than or equal to', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definition.greaterThanOrEqualToDoc', + { + defaultMessage: 'Greater than or equal to', + } + ), }, ].map((op): FunctionDefinition => createComparisonDefinition(op)), ...[ @@ -211,20 +229,20 @@ export const builtinFunctions: FunctionDefinition[] = [ // new special comparison operator for strings only // { // name: '=~', - // description: i18n.translate('monaco.esql.definition.equalToCaseInsensitiveDoc', { + // description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.equalToCaseInsensitiveDoc', { // defaultMessage: 'Case insensitive equality', // }), // }, { name: 'like', - description: i18n.translate('monaco.esql.definition.likeDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.likeDoc', { defaultMessage: 'Filter data based on string patterns', }), }, { name: 'not_like', description: '' }, { name: 'rlike', - description: i18n.translate('monaco.esql.definition.rlikeDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.rlikeDoc', { defaultMessage: 'Filter data based on string regular expressions', }), }, @@ -249,7 +267,7 @@ export const builtinFunctions: FunctionDefinition[] = [ ...[ { name: 'in', - description: i18n.translate('monaco.esql.definition.inDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.inDoc', { defaultMessage: 'Tests if the value an expression takes is contained in a list of other expressions', }), @@ -295,13 +313,13 @@ export const builtinFunctions: FunctionDefinition[] = [ ...[ { name: 'and', - description: i18n.translate('monaco.esql.definition.andDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.andDoc', { defaultMessage: 'and', }), }, { name: 'or', - description: i18n.translate('monaco.esql.definition.orDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.orDoc', { defaultMessage: 'or', }), }, @@ -324,7 +342,7 @@ export const builtinFunctions: FunctionDefinition[] = [ { type: 'builtin' as const, name: 'not', - description: i18n.translate('monaco.esql.definition.notDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.notDoc', { defaultMessage: 'Not', }), supportedCommands: ['eval', 'where', 'row'], @@ -339,13 +357,13 @@ export const builtinFunctions: FunctionDefinition[] = [ ...[ { name: 'is null', - description: i18n.translate('monaco.esql.definition.isNullDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.isNullDoc', { defaultMessage: 'Predicate for NULL comparison: returns true if the value is NULL', }), }, { name: 'is not null', - description: i18n.translate('monaco.esql.definition.isNotNullDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.isNotNullDoc', { defaultMessage: 'Predicate for NULL comparison: returns true if the value is not NULL', }), }, @@ -364,7 +382,7 @@ export const builtinFunctions: FunctionDefinition[] = [ { type: 'builtin' as const, name: '=', - description: i18n.translate('monaco.esql.definition.assignDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.assignDoc', { defaultMessage: 'Assign (=)', }), supportedCommands: ['eval', 'stats', 'row', 'dissect', 'where', 'enrich'], @@ -382,7 +400,7 @@ export const builtinFunctions: FunctionDefinition[] = [ { name: 'functions', type: 'builtin', - description: i18n.translate('monaco.esql.definition.functionsDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.functionsDoc', { defaultMessage: 'Show ES|QL avaialble functions with signatures', }), supportedCommands: ['meta'], @@ -396,7 +414,7 @@ export const builtinFunctions: FunctionDefinition[] = [ { name: 'info', type: 'builtin', - description: i18n.translate('monaco.esql.definition.infoDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definition.infoDoc', { defaultMessage: 'Show information about the current ES node', }), supportedCommands: ['show'], diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/commands.ts similarity index 79% rename from packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts rename to packages/kbn-esql-validation-autocomplete/src/definitions/commands.ts index 44e48484e2c66..14e80ff5cfdf4 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/commands.ts +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/commands.ts @@ -7,6 +7,13 @@ */ import { i18n } from '@kbn/i18n'; +import type { + ESQLColumn, + ESQLCommand, + ESQLAstItem, + ESQLMessage, + ESQLFunction, +} from '@kbn/esql-ast'; import { getFunctionDefinition, isAssignment, @@ -14,8 +21,7 @@ import { isFunctionItem, isLiteralItem, } from '../shared/helpers'; -import type { ESQLColumn, ESQLCommand, ESQLAstItem, ESQLMessage, ESQLFunction } from '../types'; -import { enrichModes } from './settings'; +import { ENRICH_MODES } from './settings'; import { appendSeparatorOption, asOption, @@ -29,7 +35,7 @@ import type { CommandDefinition } from './types'; export const commandDefinitions: CommandDefinition[] = [ { name: 'row', - description: i18n.translate('monaco.esql.definitions.rowDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.rowDoc', { defaultMessage: 'Produces a row with one or more columns with values that you specify. This can be useful for testing.', }), @@ -44,7 +50,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'from', - description: i18n.translate('monaco.esql.definitions.fromDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.fromDoc', { defaultMessage: 'Retrieves data from one or more data streams, indices, or aliases. In a query or subquery, you must use the from command first and it does not need a leading pipe. For example, to retrieve data from an index:', }), @@ -58,7 +64,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'meta', - description: i18n.translate('monaco.esql.definitions.metaDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.metaDoc', { defaultMessage: 'Returns information about the ES|QL environment', }), examples: ['meta functions'], @@ -71,7 +77,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'show', - description: i18n.translate('monaco.esql.definitions.showDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.showDoc', { defaultMessage: 'Returns information about the deployment and its capabilities', }), examples: ['show info'], @@ -84,7 +90,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'stats', - description: i18n.translate('monaco.esql.definitions.statsDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.statsDoc', { defaultMessage: 'Calculates aggregate statistics, such as average, count, and sum, over the incoming search results set. Similar to SQL aggregation, if the stats command is used without a BY clause, only one row is returned, which is the aggregation over the entire incoming search results set. When you use a BY clause, one row is returned for each distinct value in the field specified in the BY clause. The stats command returns only the fields in the aggregation, and you can use a wide range of statistical functions with the stats command. When you perform more than one aggregation, separate each aggregation with a comma.', }), @@ -100,9 +106,12 @@ export const commandDefinitions: CommandDefinition[] = [ if (!command.args.length) { messages.push({ location: command.location, - text: i18n.translate('monaco.esql.validation.statsNoArguments', { - defaultMessage: 'At least one aggregation or grouping expression required in [STATS]', - }), + text: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.statsNoArguments', + { + defaultMessage: 'At least one aggregation or grouping expression required in [STATS]', + } + ), type: 'error', code: 'statsNoArguments', }); @@ -140,13 +149,16 @@ export const commandDefinitions: CommandDefinition[] = [ 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, - }, - }), + text: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.statsNoAggFunction', + { + defaultMessage: + 'At least one aggregation function required in [STATS], found [{expression}]', + values: { + expression: fn.text, + }, + } + ), type: 'error' as const, code: 'statsNoAggFunction', })) @@ -179,13 +191,16 @@ export const commandDefinitions: CommandDefinition[] = [ 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, - }, - }), + text: i18n.translate( + 'kbn-esql-validation-autocomplete.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', })) @@ -198,7 +213,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'eval', - description: i18n.translate('monaco.esql.definitions.evalDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.evalDoc', { defaultMessage: 'Calculates an expression and puts the resulting value into a search results field.', }), @@ -217,7 +232,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'rename', - description: i18n.translate('monaco.esql.definitions.renameDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.renameDoc', { defaultMessage: 'Renames an old column to a new one', }), examples: ['… | rename old as new', '… | rename old as new, a as b'], @@ -230,7 +245,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'limit', - description: i18n.translate('monaco.esql.definitions.limitDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.limitDoc', { defaultMessage: 'Returns the first search results, in search order, based on the "limit" specified.', }), @@ -244,7 +259,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'keep', - description: i18n.translate('monaco.esql.definitions.keepDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.keepDoc', { defaultMessage: 'Rearranges fields in the input table by applying the keep clauses in fields', }), examples: ['… | keep a', '… | keep a,b'], @@ -257,7 +272,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'drop', - description: i18n.translate('monaco.esql.definitions.dropDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.dropDoc', { defaultMessage: 'Drops columns', }), examples: ['… | drop a', '… | drop a,b'], @@ -274,9 +289,12 @@ export const commandDefinitions: CommandDefinition[] = [ messages.push( ...wildcardItems.map((column) => ({ location: (column as ESQLColumn).location, - text: i18n.translate('monaco.esql.validation.dropAllColumnsError', { - defaultMessage: 'Removing all fields is not allowed [*]', - }), + text: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.dropAllColumnsError', + { + defaultMessage: 'Removing all fields is not allowed [*]', + } + ), type: 'error' as const, code: 'dropAllColumnsError', })) @@ -288,9 +306,13 @@ export const commandDefinitions: CommandDefinition[] = [ if (droppingTimestamp) { messages.push({ location: (droppingTimestamp as ESQLColumn).location, - text: i18n.translate('monaco.esql.validation.dropTimestampWarning', { - defaultMessage: 'Drop [@timestamp] will remove all time filters to the search results', - }), + text: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.dropTimestampWarning', + { + defaultMessage: + 'Drop [@timestamp] will remove all time filters to the search results', + } + ), type: 'warning', code: 'dropTimestampWarning', }); @@ -300,7 +322,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'sort', - description: i18n.translate('monaco.esql.definitions.sortDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sortDoc', { defaultMessage: 'Sorts all results by the specified fields. By default, null values are treated as being larger than any other value. With an ascending sort order, null values are sorted last, and with a descending sort order, null values are sorted first. You can change that by providing NULLS FIRST or NULLS LAST', }), @@ -322,7 +344,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'where', - description: i18n.translate('monaco.esql.definitions.whereDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.whereDoc', { defaultMessage: 'Uses "predicate-expressions" to filter search results. A predicate expression, when evaluated, returns TRUE or FALSE. The where command only returns the results that evaluate to TRUE. For example, to filter results for a specific field value', }), @@ -336,7 +358,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'dissect', - description: i18n.translate('monaco.esql.definitions.dissectDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.dissectDoc', { defaultMessage: 'Extracts multiple string values from a single string input, based on a pattern', }), @@ -353,7 +375,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'grok', - description: i18n.translate('monaco.esql.definitions.grokDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.grokDoc', { defaultMessage: 'Extracts multiple string values from a single string input, based on a pattern', }), @@ -370,7 +392,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'mv_expand', - description: i18n.translate('monaco.esql.definitions.mvExpandDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvExpandDoc', { defaultMessage: 'Expands multivalued fields into one row per value, duplicating other fields', }), examples: ['row a=[1,2,3] | mv_expand a'], @@ -383,7 +405,7 @@ export const commandDefinitions: CommandDefinition[] = [ }, { name: 'enrich', - description: i18n.translate('monaco.esql.definitions.enrichDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.enrichDoc', { defaultMessage: 'Enrich table with another table. Before you can use enrich, you need to create and execute an enrich policy.', }), @@ -393,7 +415,7 @@ export const commandDefinitions: CommandDefinition[] = [ '… | enrich my-policy on pivotField with a = enrichFieldA, b = enrichFieldB', ], options: [onOption, withOption], - modes: [enrichModes], + modes: [ENRICH_MODES], signature: { multipleParams: false, params: [{ name: 'policyName', type: 'source', innerType: 'policy' }], diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts similarity index 77% rename from packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts rename to packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts index 46712fed700bd..99f373879dbb6 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/functions.ts +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts @@ -7,9 +7,9 @@ */ import { i18n } from '@kbn/i18n'; +import type { ESQLFunction } from '@kbn/esql-ast'; import { isLiteralItem } from '../shared/helpers'; -import { ESQLFunction } from '../types'; -import { FunctionDefinition } from './types'; +import type { FunctionDefinition } from './types'; const validateLogFunctions = (fnDef: ESQLFunction) => { const messages = []; @@ -20,12 +20,15 @@ const validateLogFunctions = (fnDef: ESQLFunction) => { messages.push({ type: 'warning' as const, code: 'logOfNegativeValue', - text: i18n.translate('monaco.esql.divide.warning.logOfNegativeValue', { - defaultMessage: 'Log of a negative number results in null: {value}', - values: { - value: arg.value, - }, - }), + text: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.divide.warning.logOfNegativeValue', + { + defaultMessage: 'Log of a negative number results in null: {value}', + values: { + value: arg.value, + }, + } + ), location: arg.location, }); } @@ -36,7 +39,7 @@ const validateLogFunctions = (fnDef: ESQLFunction) => { export const evalFunctionsDefinitions: FunctionDefinition[] = [ { name: 'round', - description: i18n.translate('monaco.esql.definitions.roundDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.roundDoc', { defaultMessage: 'Returns a number rounded to the decimal, specified by he closest integer value. The default is to round to an integer.', }), @@ -56,7 +59,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'abs', - description: i18n.translate('monaco.esql.definitions.absDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.absDoc', { defaultMessage: 'Returns the absolute value.', }), signatures: [ @@ -69,7 +72,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'ceil', - description: i18n.translate('monaco.esql.definitions.ceilDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.ceilDoc', { defaultMessage: 'Round a number up to the nearest integer.', }), signatures: [ @@ -82,7 +85,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'log10', - description: i18n.translate('monaco.esql.definitions.log10Doc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.log10Doc', { defaultMessage: 'Returns the log base 10.', }), signatures: [ @@ -97,7 +100,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ { name: 'log', - description: i18n.translate('monaco.esql.definitions.logDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.logDoc', { defaultMessage: 'A scalar function log(based, value) returns the logarithm of a value for a particular base, as specified in the argument', }), @@ -118,7 +121,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'pow', - description: i18n.translate('monaco.esql.definitions.powDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.powDoc', { defaultMessage: 'Returns the the value of a base (first argument) raised to a power (second argument).', }), @@ -135,7 +138,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'concat', - description: i18n.translate('monaco.esql.definitions.concatDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.concatDoc', { defaultMessage: 'Concatenates two or more strings.', }), signatures: [ @@ -149,7 +152,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'replace', - description: i18n.translate('monaco.esql.definitions.replaceDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.replaceDoc', { defaultMessage: 'The function substitutes in the string (1st argument) any match of the regular expression (2nd argument) with the replacement string (3rd argument). If any of the arguments are NULL, the result is NULL.', }), @@ -167,7 +170,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'substring', - description: i18n.translate('monaco.esql.definitions.substringDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.substringDoc', { defaultMessage: 'Returns a substring of a string, specified by a start position and an optional length.', }), @@ -185,7 +188,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'to_lower', - description: i18n.translate('monaco.esql.definitions.toLowerDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toLowerDoc', { defaultMessage: 'Returns a new string representing the input string converted to lower case.', }), signatures: [ @@ -198,7 +201,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'to_upper', - description: i18n.translate('monaco.esql.definitions.toUpperDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toUpperDoc', { defaultMessage: 'Returns a new string representing the input string converted to upper case.', }), signatures: [ @@ -211,7 +214,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'trim', - description: i18n.translate('monaco.esql.definitions.trimDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.trimDoc', { defaultMessage: 'Removes leading and trailing whitespaces from strings.', }), signatures: [ @@ -224,7 +227,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'starts_with', - description: i18n.translate('monaco.esql.definitions.startsWithDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.startsWithDoc', { defaultMessage: 'Returns a boolean that indicates whether a keyword string starts with another string.', }), @@ -241,7 +244,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'ends_with', - description: i18n.translate('monaco.esql.definitions.endsWithDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.endsWithDoc', { defaultMessage: 'Returns a boolean that indicates whether a keyword string ends with another string:', }), @@ -258,7 +261,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'split', - description: i18n.translate('monaco.esql.definitions.splitDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.splitDoc', { defaultMessage: 'Splits a single valued string into multiple strings.', }), signatures: [ @@ -275,7 +278,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ { name: 'to_string', alias: ['to_str'], - description: i18n.translate('monaco.esql.definitions.toStringDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toStringDoc', { defaultMessage: 'Converts to string.', }), signatures: [ @@ -289,7 +292,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ { name: 'to_boolean', alias: ['to_bool'], - description: i18n.translate('monaco.esql.definitions.toBooleanDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toBooleanDoc', { defaultMessage: 'Converts to boolean.', }), signatures: [ @@ -302,9 +305,12 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'to_cartesianpoint', - description: i18n.translate('monaco.esql.definitions.toCartesianPointDoc', { - defaultMessage: 'Converts an input value to a `point` value.', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.toCartesianPointDoc', + { + defaultMessage: 'Converts an input value to a `point` value.', + } + ), signatures: [ { params: [{ name: 'field', type: 'any' }], @@ -315,9 +321,12 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'to_cartesianshape', - description: i18n.translate('monaco.esql.definitions.toCartesianshapeDoc', { - defaultMessage: 'Converts an input value to a cartesian_shape value.', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.toCartesianshapeDoc', + { + defaultMessage: 'Converts an input value to a cartesian_shape value.', + } + ), signatures: [ { params: [{ name: 'field', type: 'any' }], @@ -329,7 +338,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ { name: 'to_datetime', alias: ['to_dt'], - description: i18n.translate('monaco.esql.definitions.toDateTimeDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toDateTimeDoc', { defaultMessage: 'Converts to date.', }), signatures: [ @@ -342,7 +351,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'to_degrees', - description: i18n.translate('monaco.esql.definitions.toDegreesDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toDegreesDoc', { defaultMessage: 'Coverts to degrees', }), signatures: [ @@ -356,7 +365,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ { name: 'to_double', alias: ['to_dbl'], - description: i18n.translate('monaco.esql.definitions.toDoubleDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toDoubleDoc', { defaultMessage: 'Converts to double.', }), signatures: [ @@ -369,7 +378,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'to_geopoint', - description: i18n.translate('monaco.esql.definitions.toGeopointDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toGeopointDoc', { defaultMessage: 'Converts to geo_point.', }), signatures: [ @@ -382,7 +391,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'to_geoshape', - description: i18n.translate('monaco.esql.definitions.toGeoshapeDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toGeoshapeDoc', { defaultMessage: 'Converts an input value to a geo_shape value.', }), signatures: [ @@ -396,7 +405,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ { name: 'to_integer', alias: ['to_int'], - description: i18n.translate('monaco.esql.definitions.toIntegerDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toIntegerDoc', { defaultMessage: 'Converts to integer.', }), signatures: [ @@ -409,7 +418,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'to_long', - description: i18n.translate('monaco.esql.definitions.toLongDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toLongDoc', { defaultMessage: 'Converts to long.', }), signatures: [ @@ -422,7 +431,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'to_radians', - description: i18n.translate('monaco.esql.definitions.toRadiansDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toRadiansDoc', { defaultMessage: 'Converts to radians', }), signatures: [ @@ -436,9 +445,12 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ { name: 'to_unsigned_long', alias: ['to_ul', 'to_ulong'], - description: i18n.translate('monaco.esql.definitions.toUnsignedLongDoc', { - defaultMessage: 'Converts to unsigned long.', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.toUnsignedLongDoc', + { + defaultMessage: 'Converts to unsigned long.', + } + ), signatures: [ { params: [{ name: 'field', type: 'any' }], @@ -449,7 +461,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'to_ip', - description: i18n.translate('monaco.esql.definitions.toIpDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toIpDoc', { defaultMessage: 'Converts to ip.', }), signatures: [ @@ -463,7 +475,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ { name: 'to_version', alias: ['to_ver'], - description: i18n.translate('monaco.esql.definitions.toVersionDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.toVersionDoc', { defaultMessage: 'Converts to version.', }), signatures: [ @@ -481,9 +493,12 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'date_extract', - description: i18n.translate('monaco.esql.definitions.dateExtractDoc', { - defaultMessage: `Extracts parts of a date, like year, month, day, hour. The supported field types are those provided by java.time.temporal.ChronoField`, - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateExtractDoc', + { + defaultMessage: `Extracts parts of a date, like year, month, day, hour. The supported field types are those provided by java.time.temporal.ChronoField`, + } + ), signatures: [ { params: [ @@ -502,7 +517,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'date_format', - description: i18n.translate('monaco.esql.definitions.dateFormatDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.dateFormatDoc', { defaultMessage: `Returns a string representation of a date in the provided format. If no format is specified, the "yyyy-MM-dd'T'HH:mm:ss.SSSZ" format is used.`, }), signatures: [ @@ -518,7 +533,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'date_trunc', - description: i18n.translate('monaco.esql.definitions.dateTruncDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.dateTruncDoc', { defaultMessage: `Rounds down a date to the closest interval. Intervals can be expressed using the timespan literal syntax.`, }), signatures: [ @@ -534,7 +549,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'date_parse', - description: i18n.translate('monaco.esql.definitions.dateParseDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.dateParseDoc', { defaultMessage: `Parse dates from strings.`, }), signatures: [ @@ -552,7 +567,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'auto_bucket', - description: i18n.translate('monaco.esql.definitions.autoBucketDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.autoBucketDoc', { defaultMessage: `Automatically bucket dates based on a given range and bucket target.`, }), signatures: [ @@ -582,7 +597,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'case', - description: i18n.translate('monaco.esql.definitions.caseDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.caseDoc', { defaultMessage: 'Accepts pairs of conditions and values. The function returns the value that belongs to the first condition that evaluates to `true`. If the number of arguments is odd, the last argument is the default value which is returned when no condition matches.', }), @@ -602,7 +617,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'length', - description: i18n.translate('monaco.esql.definitions.lengthDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.lengthDoc', { defaultMessage: 'Returns the character length of a string.', }), signatures: [ @@ -615,7 +630,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'acos', - description: i18n.translate('monaco.esql.definitions.acosDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.acosDoc', { defaultMessage: 'Inverse cosine trigonometric function', }), signatures: [ @@ -628,7 +643,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'asin', - description: i18n.translate('monaco.esql.definitions.asinDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.asinDoc', { defaultMessage: 'Inverse sine trigonometric function', }), signatures: [ @@ -641,7 +656,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'atan', - description: i18n.translate('monaco.esql.definitions.atanDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.atanDoc', { defaultMessage: 'Inverse tangent trigonometric function', }), signatures: [ @@ -654,7 +669,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'atan2', - description: i18n.translate('monaco.esql.definitions.atan2Doc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.atan2Doc', { defaultMessage: 'The angle between the positive x-axis and the ray from the origin to the point (x , y) in the Cartesian plane', }), @@ -671,7 +686,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'coalesce', - description: i18n.translate('monaco.esql.definitions.coalesceDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.coalesceDoc', { defaultMessage: 'Returns the first non-null value.', }), signatures: [ @@ -685,7 +700,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'cos', - description: i18n.translate('monaco.esql.definitions.cosDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.cosDoc', { defaultMessage: 'Cosine trigonometric function', }), signatures: [ @@ -698,7 +713,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'cosh', - description: i18n.translate('monaco.esql.definitions.coshDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.coshDoc', { defaultMessage: 'Cosine hyperbolic function', }), signatures: [ @@ -711,7 +726,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'floor', - description: i18n.translate('monaco.esql.definitions.floorDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.floorDoc', { defaultMessage: 'Round a number down to the nearest integer.', }), signatures: [ @@ -724,7 +739,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'greatest', - description: i18n.translate('monaco.esql.definitions.greatestDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.greatestDoc', { defaultMessage: 'Returns the maximum value from many columns.', }), signatures: [ @@ -738,7 +753,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'least', - description: i18n.translate('monaco.esql.definitions.leastDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.leastDoc', { defaultMessage: 'Returns the minimum value from many columns.', }), signatures: [ @@ -752,7 +767,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'left', - description: i18n.translate('monaco.esql.definitions.leftDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.leftDoc', { defaultMessage: 'Return the substring that extracts length chars from the string starting from the left.', }), @@ -769,7 +784,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'ltrim', - description: i18n.translate('monaco.esql.definitions.ltrimDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.ltrimDoc', { defaultMessage: 'Removes leading whitespaces from strings.', }), signatures: [ @@ -782,7 +797,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'now', - description: i18n.translate('monaco.esql.definitions.nowDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.nowDoc', { defaultMessage: 'Returns current date and time.', }), signatures: [ @@ -795,7 +810,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'right', - description: i18n.translate('monaco.esql.definitions.rightDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.rightDoc', { defaultMessage: 'Return the substring that extracts length chars from the string starting from the right.', }), @@ -812,7 +827,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'rtrim', - description: i18n.translate('monaco.esql.definitions.rtrimDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.rtrimDoc', { defaultMessage: 'Removes trailing whitespaces from strings.', }), signatures: [ @@ -825,7 +840,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'sin', - description: i18n.translate('monaco.esql.definitions.sinDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sinDoc', { defaultMessage: 'Sine trigonometric function.', }), signatures: [ @@ -838,7 +853,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'sinh', - description: i18n.translate('monaco.esql.definitions.sinhDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sinhDoc', { defaultMessage: 'Sine hyperbolic function.', }), signatures: [ @@ -851,7 +866,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'sqrt', - description: i18n.translate('monaco.esql.definitions.sqrtDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.sqrtDoc', { defaultMessage: 'Returns the square root of a number. ', }), signatures: [ @@ -864,7 +879,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'tan', - description: i18n.translate('monaco.esql.definitions.tanDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.tanDoc', { defaultMessage: 'Tangent trigonometric function.', }), signatures: [ @@ -877,7 +892,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'tanh', - description: i18n.translate('monaco.esql.definitions.tanhDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.tanhDoc', { defaultMessage: 'Tangent hyperbolic function.', }), signatures: [ @@ -890,7 +905,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'cidr_match', - description: i18n.translate('monaco.esql.definitions.cidrMatchDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.cidrMatchDoc', { defaultMessage: 'The function takes a first parameter of type IP, followed by one or more parameters evaluated to a CIDR specificatione.', }), @@ -911,7 +926,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'mv_avg', - description: i18n.translate('monaco.esql.definitions.mvAvgDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvAvgDoc', { defaultMessage: 'Converts a multivalued field into a single valued field containing the average of all of the values.', }), @@ -925,7 +940,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'mv_concat', - description: i18n.translate('monaco.esql.definitions.mvConcatDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvConcatDoc', { defaultMessage: 'Converts a multivalued string field into a single valued field containing the concatenation of all values separated by a delimiter', }), @@ -942,7 +957,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'mv_count', - description: i18n.translate('monaco.esql.definitions.mvCountDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvCountDoc', { defaultMessage: 'Converts a multivalued field into a single valued field containing a count of the number of values', }), @@ -956,7 +971,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'mv_dedupe', - description: i18n.translate('monaco.esql.definitions.mvDedupeDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvDedupeDoc', { defaultMessage: 'Removes duplicates from a multivalued field', }), signatures: [ @@ -969,7 +984,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'mv_first', - description: i18n.translate('monaco.esql.definitions.mvFirstDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvFirstDoc', { defaultMessage: 'Reduce a multivalued field to a single valued field containing the first value.', }), @@ -983,7 +998,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'mv_last', - description: i18n.translate('monaco.esql.definitions.mvLastDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvLastDoc', { defaultMessage: 'Reduce a multivalued field to a single valued field containing the last value.', }), @@ -997,7 +1012,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'mv_max', - description: i18n.translate('monaco.esql.definitions.mvMaxDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvMaxDoc', { defaultMessage: 'Converts a multivalued field into a single valued field containing the maximum value.', }), @@ -1011,7 +1026,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'mv_min', - description: i18n.translate('monaco.esql.definitions.mvMinDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvMinDoc', { defaultMessage: 'Converts a multivalued field into a single valued field containing the minimum value.', }), @@ -1025,7 +1040,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'mv_median', - description: i18n.translate('monaco.esql.definitions.mvMedianDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvMedianDoc', { defaultMessage: 'Converts a multivalued field into a single valued field containing the median value.', }), @@ -1039,7 +1054,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'mv_sum', - description: i18n.translate('monaco.esql.definitions.mvSumDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.mvSumDoc', { defaultMessage: 'Converts a multivalued field into a single valued field containing the sum of all of the values.', }), @@ -1053,7 +1068,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'pi', - description: i18n.translate('monaco.esql.definitions.piDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.piDoc', { defaultMessage: 'The ratio of a circle’s circumference to its diameter.', }), signatures: [ @@ -1066,7 +1081,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'e', - description: i18n.translate('monaco.esql.definitions.eDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.eDoc', { defaultMessage: 'Euler’s number.', }), signatures: [ @@ -1079,7 +1094,7 @@ export const evalFunctionsDefinitions: FunctionDefinition[] = [ }, { name: 'tau', - description: i18n.translate('monaco.esql.definitions.tauDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.tauDoc', { defaultMessage: 'The ratio of a circle’s circumference to its radius.', }), signatures: [ diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/helpers.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/helpers.ts similarity index 98% rename from packages/kbn-monaco/src/esql/lib/ast/definitions/helpers.ts rename to packages/kbn-esql-validation-autocomplete/src/definitions/helpers.ts index a8f403ef0f330..89485f2174a42 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/helpers.ts +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/helpers.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { CommandDefinition, FunctionDefinition } from './types'; +import type { CommandDefinition, FunctionDefinition } from './types'; /** * Given a function definition, this function will return a list of function signatures diff --git a/packages/kbn-esql-validation-autocomplete/src/definitions/literals.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/literals.ts new file mode 100644 index 0000000000000..9369414378385 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/literals.ts @@ -0,0 +1,190 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import type { Literals } from './types'; + +export const timeLiterals: Literals[] = [ + { + name: 'year', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.year', + { + defaultMessage: 'Year', + } + ), + }, + { + name: 'years', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.years', + { + defaultMessage: 'Years (Plural)', + } + ), + }, + { + name: 'month', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.month', + { + defaultMessage: 'Month', + } + ), + }, + { + name: 'months', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.months', + { + defaultMessage: 'Months (Plural)', + } + ), + }, + { + name: 'week', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.week', + { + defaultMessage: 'Week', + } + ), + }, + { + name: 'weeks', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.weeks', + { + defaultMessage: 'Weeks (Plural)', + } + ), + }, + { + name: 'day', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.day', + { + defaultMessage: 'Day', + } + ), + }, + { + name: 'days', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.days', + { + defaultMessage: 'Days (Plural)', + } + ), + }, + { + name: 'hour', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.hour', + { + defaultMessage: 'Hour', + } + ), + }, + { + name: 'hours', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.hours', + { + defaultMessage: 'Hours (Plural)', + } + ), + }, + { + name: 'minute', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.minute', + { + defaultMessage: 'Minute', + } + ), + }, + { + name: 'minutes', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.minutes', + { + defaultMessage: 'Minutes (Plural)', + } + ), + }, + { + name: 'second', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.second', + { + defaultMessage: 'Second', + } + ), + }, + { + name: 'seconds', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.seconds', + { + defaultMessage: 'Seconds (Plural)', + } + ), + }, + { + name: 'millisecond', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.millisecond', + { + defaultMessage: 'Millisecond', + } + ), + }, + { + name: 'milliseconds', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.dateDurationDefinition.milliseconds', + { + defaultMessage: 'Milliseconds (Plural)', + } + ), + }, +]; + +export const chronoLiterals: Literals[] = [ + 'ALIGNED_DAY_OF_WEEK_IN_MONTH', + 'ALIGNED_DAY_OF_WEEK_IN_YEAR', + 'ALIGNED_WEEK_OF_MONTH', + 'ALIGNED_WEEK_OF_YEAR', + 'AMPM_OF_DAY', + 'CLOCK_HOUR_OF_AMPM', + 'CLOCK_HOUR_OF_DAY', + 'DAY_OF_MONTH', + 'DAY_OF_WEEK', + 'DAY_OF_YEAR', + 'EPOCH_DAY', + 'ERA', + 'HOUR_OF_AMPM', + 'HOUR_OF_DAY', + 'INSTANT_SECONDS', + 'MICRO_OF_DAY', + 'MICRO_OF_SECOND', + 'MILLI_OF_DAY', + 'MILLI_OF_SECOND', + 'MINUTE_OF_DAY', + 'MINUTE_OF_HOUR', + 'MONTH_OF_YEAR', + 'NANO_OF_DAY', + 'NANO_OF_SECOND', + 'OFFSET_SECONDS', + 'PROLEPTIC_MONTH', + 'SECOND_OF_DAY', + 'SECOND_OF_MINUTE', + 'YEAR', + 'YEAR_OF_ERA', +].map((name) => ({ name: `"${name}"`, description: '' })); diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/options.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/options.ts similarity index 60% rename from packages/kbn-monaco/src/esql/lib/ast/definitions/options.ts rename to packages/kbn-esql-validation-autocomplete/src/definitions/options.ts index cac6978970ce0..f8b41be1b1ae4 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/options.ts +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/options.ts @@ -7,13 +7,14 @@ */ import { i18n } from '@kbn/i18n'; +import type { ESQLCommandOption, ESQLMessage } from '@kbn/esql-ast'; import { isColumnItem, isLiteralItem } from '../shared/helpers'; -import { ESQLCommandOption, ESQLMessage } from '../types'; -import { CommandOptionsDefinition } from './types'; +import { getMessageFromId } from '../validation/errors'; +import type { CommandOptionsDefinition } from './types'; export const byOption: CommandOptionsDefinition = { name: 'by', - description: i18n.translate('monaco.esql.definitions.byDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.byDoc', { defaultMessage: 'By', }), signature: { @@ -25,7 +26,7 @@ export const byOption: CommandOptionsDefinition = { export const metadataOption: CommandOptionsDefinition = { name: 'metadata', - description: i18n.translate('monaco.esql.definitions.metadataDoc', { + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.metadataDoc', { defaultMessage: 'Metadata', }), signature: { @@ -38,33 +39,29 @@ export const metadataOption: CommandOptionsDefinition = { const messages: ESQLMessage[] = []; // need to test the parent command here if (/\[metadata/i.test(command.text)) { - messages.push({ - location: option.location, - text: i18n.translate('monaco.esql.validation.metadataBracketsDeprecation', { - defaultMessage: "Square brackets '[]' need to be removed from FROM METADATA declaration", - }), - type: 'warning', - code: 'metadataBracketsDeprecation', - }); + messages.push( + getMessageFromId({ + messageId: 'metadataBracketsDeprecation', + values: {}, + locations: option.location, + }) + ); } const fields = option.args.filter(isColumnItem); const metadataFieldsAvailable = references as unknown as Set; if (metadataFieldsAvailable.size > 0) { for (const field of fields) { if (!metadataFieldsAvailable.has(field.name)) { - messages.push({ - location: field.location, - text: i18n.translate('monaco.esql.validation.wrongMetadataArgumentType', { - defaultMessage: - 'Metadata field [{value}] is not available. Available metadata fields are: [{availableFields}]', + messages.push( + getMessageFromId({ + messageId: 'unknownMetadataField', values: { value: field.name, availableFields: Array.from(metadataFieldsAvailable).join(', '), }, - }), - type: 'error', - code: 'unknownMetadataField', - }); + locations: field.location, + }) + ); } } } @@ -74,7 +71,9 @@ export const metadataOption: CommandOptionsDefinition = { export const asOption: CommandOptionsDefinition = { name: 'as', - description: i18n.translate('monaco.esql.definitions.asDoc', { defaultMessage: 'As' }), + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.asDoc', { + defaultMessage: 'As', + }), signature: { multipleParams: false, params: [ @@ -87,7 +86,9 @@ export const asOption: CommandOptionsDefinition = { export const onOption: CommandOptionsDefinition = { name: 'on', - description: i18n.translate('monaco.esql.definitions.onDoc', { defaultMessage: 'On' }), + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.onDoc', { + defaultMessage: 'On', + }), signature: { multipleParams: false, params: [{ name: 'matchingColumn', type: 'column' }], @@ -97,7 +98,9 @@ export const onOption: CommandOptionsDefinition = { export const withOption: CommandOptionsDefinition = { name: 'with', - description: i18n.translate('monaco.esql.definitions.withDoc', { defaultMessage: 'With' }), + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.withDoc', { + defaultMessage: 'With', + }), signature: { multipleParams: true, params: [{ name: 'assignment', type: 'any' }], @@ -107,10 +110,13 @@ export const withOption: CommandOptionsDefinition = { export const appendSeparatorOption: CommandOptionsDefinition = { name: 'append_separator', - description: i18n.translate('monaco.esql.definitions.appendSeparatorDoc', { - defaultMessage: - 'The character(s) that separate the appended fields. Default to empty string ("").', - }), + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.appendSeparatorDoc', + { + defaultMessage: + 'The character(s) that separate the appended fields. Default to empty string ("").', + } + ), signature: { multipleParams: false, params: [{ name: 'separator', type: 'string' }], @@ -125,18 +131,13 @@ export const appendSeparatorOption: CommandOptionsDefinition = { (!isLiteralItem(firstArg) || firstArg.literalType !== 'string') ) { const value = 'value' in firstArg ? firstArg.value : firstArg.name; - messages.push({ - location: firstArg.location, - text: i18n.translate('monaco.esql.validation.wrongDissectOptionArgumentType', { - defaultMessage: - 'Invalid value for DISSECT append_separator: expected a string, but was [{value}]', - values: { - value, - }, - }), - type: 'error', - code: 'wrongDissectOptionArgumentType', - }); + messages.push( + getMessageFromId({ + messageId: 'wrongDissectOptionArgumentType', + values: { value }, + locations: firstArg.location, + }) + ); } return messages; }, diff --git a/packages/kbn-esql-validation-autocomplete/src/definitions/settings.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/settings.ts new file mode 100644 index 0000000000000..a038142ab20f3 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/settings.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import type { CommandModeDefinition } from './types'; + +export const ENRICH_MODES: CommandModeDefinition = { + name: 'ccq.mode', + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.ccqModeDoc', { + defaultMessage: 'Cross-clusters query mode', + }), + prefix: '_', + values: [ + { + name: 'any', + description: i18n.translate('kbn-esql-validation-autocomplete.esql.definitions.ccqAnyDoc', { + defaultMessage: 'Enrich takes place on any cluster', + }), + }, + { + name: 'coordinator', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.ccqCoordinatorDoc', + { + defaultMessage: 'Enrich takes place on the coordinating cluster receiving an ES|QL', + } + ), + }, + { + name: 'remote', + description: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.definitions.ccqRemoteDoc', + { + defaultMessage: 'Enrich takes place on the cluster hosting the target index.', + } + ), + }, + ], +}; diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/types.ts similarity index 98% rename from packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts rename to packages/kbn-esql-validation-autocomplete/src/definitions/types.ts index 4667c0504982f..111846f1f515f 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/types.ts +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/types.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { ESQLCommand, ESQLCommandOption, ESQLFunction, ESQLMessage } from '../types'; +import type { ESQLCommand, ESQLCommandOption, ESQLFunction, ESQLMessage } from '@kbn/esql-ast'; export interface FunctionDefinition { type: 'builtin' | 'agg' | 'eval'; diff --git a/packages/kbn-esql-validation-autocomplete/src/shared/constants.ts b/packages/kbn-esql-validation-autocomplete/src/shared/constants.ts new file mode 100644 index 0000000000000..ed4e854f95e97 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/shared/constants.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export const EDITOR_MARKER = 'marker_esql_editor'; + +export const TICKS_REGEX = /^`{1}|`{1}$/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/context.ts b/packages/kbn-esql-validation-autocomplete/src/shared/context.ts similarity index 81% rename from packages/kbn-monaco/src/esql/lib/ast/shared/context.ts rename to packages/kbn-esql-validation-autocomplete/src/shared/context.ts index b9b8219e149fe..2a9ae25a1d4e5 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/context.ts +++ b/packages/kbn-esql-validation-autocomplete/src/shared/context.ts @@ -6,7 +6,6 @@ * Side Public License, v 1. */ -import { enrichModes } from '../definitions/settings'; import type { ESQLAstItem, ESQLSingleAstItem, @@ -15,7 +14,8 @@ import type { ESQLCommand, ESQLCommandOption, ESQLCommandMode, -} from '../types'; +} from '@kbn/esql-ast'; +import { ENRICH_MODES } from '../definitions/settings'; import { EDITOR_MARKER } from './constants'; import { isOptionItem, @@ -136,7 +136,20 @@ function isBuiltinFunction(node: ESQLFunction) { return getFunctionDefinition(node.name)?.type === 'builtin'; } -export function getAstContext(innerText: string, ast: ESQLAst, offset: number) { +/** + * Given a ES|QL query string, its AST and the cursor position, + * it returns the type of context for the position ("list", "function", "option", "setting", "expression", "newCommand") + * plus the whole hierarchy of nodes (command, option, setting and actual position node) context. + * + * Type details: + * * "list": the cursor is inside a "in" list of values (i.e. `a in (1, 2, )`) + * * "function": the cursor is inside a function call (i.e. `fn()`) + * * "option": the cursor is inside a command option (i.e. `command ... by `) + * * "setting": the cursor is inside a setting (i.e. `command _`) + * * "expression": the cursor is inside a command expression (i.e. `command ... ` or `command a = ... `) + * * "newCommand": the cursor is at the beginning of a new command (i.e. `command1 | command2 | `) + */ +export function getAstContext(queryString: string, ast: ESQLAst, offset: number) { const { command, option, setting, node } = findAstPosition(ast, offset); if (node) { if (node.type === 'function') { @@ -154,13 +167,12 @@ export function getAstContext(innerText: string, ast: ESQLAst, offset: number) { return { type: 'option' as const, command, node, option, setting }; } // for now it's only an enrich thing - if (node.type === 'source' && node.text === enrichModes.prefix) { + if (node.type === 'source' && node.text === ENRICH_MODES.prefix) { // command _ return { type: 'setting' as const, command, node, option, setting }; } } - - if (!command || (innerText.length <= offset && getLastCharFromTrimmed(innerText) === '|')) { + if (!command || (queryString.length <= offset && getLastCharFromTrimmed(queryString) === '|')) { // // ... | return { type: 'newCommand' as const, command: undefined, node, option, setting }; } diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts b/packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts similarity index 94% rename from packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts rename to packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts index 8fea0aa83ec9e..8eab378214a47 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/helpers.ts +++ b/packages/kbn-esql-validation-autocomplete/src/shared/helpers.ts @@ -6,8 +6,17 @@ * Side Public License, v 1. */ -import type { monaco } from '../../../../monaco_imports'; -import { AutocompleteCommandDefinition } from '../autocomplete/types'; +import type { + ESQLAstItem, + ESQLColumn, + ESQLCommandMode, + ESQLCommandOption, + ESQLFunction, + ESQLLiteral, + ESQLSingleAstItem, + ESQLSource, + ESQLTimeInterval, +} from '@kbn/esql-ast'; import { statsAggregationFunctionDefinitions } from '../definitions/aggs'; import { builtinFunctions } from '../definitions/builtin'; import { commandDefinitions } from '../definitions/commands'; @@ -22,25 +31,19 @@ import { withOption, appendSeparatorOption, } from '../definitions/options'; -import { +import type { CommandDefinition, CommandOptionsDefinition, FunctionDefinition, SignatureArgType, } from '../definitions/types'; -import { - ESQLAstItem, - ESQLColumn, - ESQLCommandMode, - ESQLCommandOption, - ESQLFunction, - ESQLLiteral, - ESQLSingleAstItem, - ESQLSource, - ESQLTimeInterval, -} from '../types'; -import { ESQLRealField, ESQLVariable, ReferenceMaps } from '../validation/types'; +import type { ESQLRealField, ESQLVariable, ReferenceMaps } from '../validation/types'; import { removeMarkerArgFromArgsList } from './context'; +import type { ReasonTypes } from './types'; + +export function nonNullable(v: T): v is NonNullable { + return v != null; +} export function isSingleItem(arg: ESQLAstItem): arg is ESQLSingleAstItem { return arg && !Array.isArray(arg); @@ -114,22 +117,10 @@ export function isComma(char: string) { return char === ','; } -export function isSourceCommand({ label }: AutocompleteCommandDefinition) { +export function isSourceCommand({ label }: { label: string }) { return ['from', 'row', 'show'].includes(String(label)); } -// From Monaco position to linear offset -export function monacoPositionToOffset(expression: string, position: monaco.Position): number { - const lines = expression.split(/\n/); - return lines - .slice(0, position.lineNumber) - .reduce( - (prev, current, index) => - prev + (index === position.lineNumber - 1 ? position.column - 1 : current.length + 1), - 0 - ); -} - let fnLookups: Map | undefined; let commandLookups: Map | undefined; @@ -150,8 +141,6 @@ function buildFunctionLookup() { return fnLookups; } -type ReasonTypes = 'missingCommand' | 'unsupportedFunction' | 'unknownFunction'; - export function isSupportedFunction( name: string, parentCommand?: string, diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/resources_helpers.ts b/packages/kbn-esql-validation-autocomplete/src/shared/resources_helpers.ts similarity index 98% rename from packages/kbn-monaco/src/esql/lib/ast/shared/resources_helpers.ts rename to packages/kbn-esql-validation-autocomplete/src/shared/resources_helpers.ts index c02d5db099f2b..e44d874f8674c 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/resources_helpers.ts +++ b/packages/kbn-esql-validation-autocomplete/src/shared/resources_helpers.ts @@ -6,9 +6,9 @@ * Side Public License, v 1. */ +import type { ESQLAst } from '@kbn/esql-ast'; import type { ESQLCallbacks } from './types'; import type { ESQLRealField } from '../validation/types'; -import type { ESQLAst } from '../types'; export function buildQueryUntilPreviousCommand(ast: ESQLAst, queryString: string) { const prevCommand = ast[Math.max(ast.length - 2, 0)]; diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/types.ts b/packages/kbn-esql-validation-autocomplete/src/shared/types.ts similarity index 90% rename from packages/kbn-monaco/src/esql/lib/ast/shared/types.ts rename to packages/kbn-esql-validation-autocomplete/src/shared/types.ts index 7c6eaf74f1282..c64585b2bab55 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/types.ts +++ b/packages/kbn-esql-validation-autocomplete/src/shared/types.ts @@ -18,6 +18,6 @@ export interface ESQLCallbacks { {}, { name: string; sourceIndices: string[]; matchField: string; enrichFields: string[] } >; - getPolicyFields?: CallbackFn; - getPolicyMatchingField?: CallbackFn; } + +export type ReasonTypes = 'missingCommand' | 'unsupportedFunction' | 'unknownFunction'; diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/variables.ts b/packages/kbn-esql-validation-autocomplete/src/shared/variables.ts similarity index 99% rename from packages/kbn-monaco/src/esql/lib/ast/shared/variables.ts rename to packages/kbn-esql-validation-autocomplete/src/shared/variables.ts index f6f8d1cfaf3dd..9debf8a67083f 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/variables.ts +++ b/packages/kbn-esql-validation-autocomplete/src/shared/variables.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { ESQLAstItem, ESQLCommand, ESQLCommandOption, ESQLFunction } from '../types'; +import type { ESQLAstItem, ESQLCommand, ESQLCommandOption, ESQLFunction } from '@kbn/esql-ast'; import type { ESQLVariable, ESQLRealField } from '../validation/types'; import { DOUBLE_BACKTICK, EDITOR_MARKER, SINGLE_BACKTICK } from './constants'; import { diff --git a/packages/kbn-esql-validation-autocomplete/src/types.ts b/packages/kbn-esql-validation-autocomplete/src/types.ts new file mode 100644 index 0000000000000..c2cbdac1aaafb --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/types.ts @@ -0,0 +1,17 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export interface EditorError { + startLineNumber: number; + endLineNumber: number; + startColumn: number; + endColumn: number; + message: string; + code?: string; + severity: 'error' | 'warning' | number; +} diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/.gitignore b/packages/kbn-esql-validation-autocomplete/src/validation/.gitignore similarity index 100% rename from packages/kbn-monaco/src/esql/lib/ast/validation/.gitignore rename to packages/kbn-esql-validation-autocomplete/src/validation/.gitignore diff --git a/packages/kbn-esql-validation-autocomplete/src/validation/errors.ts b/packages/kbn-esql-validation-autocomplete/src/validation/errors.ts new file mode 100644 index 0000000000000..b7e02f10683f3 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/validation/errors.ts @@ -0,0 +1,391 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { i18n } from '@kbn/i18n'; +import type { ESQLLocation, ESQLMessage } from '@kbn/esql-ast'; +import type { ErrorTypes, ErrorValues } from './types'; + +function getMessageAndTypeFromId({ + messageId, + values, +}: { + messageId: K; + values: ErrorValues; +}): { message: string; type?: 'error' | 'warning' } { + // Use a less strict type instead of doing a typecast on each message type + const out = values as unknown as Record; + // i18n validation wants to the values prop to be declared inline, so need to unpack and redeclare again all props + switch (messageId) { + case 'wrongArgumentType': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.wrongArgumentType', + { + defaultMessage: + 'Argument of [{name}] must be [{argType}], found value [{value}] type [{givenType}]', + values: { + name: out.name, + argType: out.argType, + value: out.value, + givenType: out.givenType, + }, + } + ), + }; + case 'unknownColumn': + return { + message: i18n.translate('kbn-esql-validation-autocomplete.esql.validation.unknownColumn', { + defaultMessage: 'Unknown column [{name}]', + values: { name: out.name }, + }), + }; + case 'unknownIndex': + return { + message: i18n.translate('kbn-esql-validation-autocomplete.esql.validation.unknownIndex', { + defaultMessage: 'Unknown index [{name}]', + values: { name: out.name }, + }), + }; + case 'unknownFunction': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.missingFunction', + { + defaultMessage: 'Unknown function [{name}]', + values: { name: out.name }, + } + ), + }; + case 'wrongArgumentNumber': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.wrongArgumentExactNumber', + { + defaultMessage: + 'Error: [{fn}] function expects exactly {numArgs, plural, one {one argument} other {{numArgs} arguments}}, got {passedArgs}.', + values: { + fn: out.fn, + numArgs: out.numArgs, + passedArgs: out.passedArgs, + }, + } + ), + }; + case 'wrongArgumentNumberTooMany': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.wrongArgumentTooManyNumber', + { + defaultMessage: + 'Error: [{fn}] function expects {extraArgs, plural, =0 {} other {no more than }}{numArgs, plural, one {one argument} other {{numArgs} arguments}}, got {passedArgs}.', + values: { + fn: out.fn, + numArgs: out.numArgs, + passedArgs: out.passedArgs, + extraArgs: out.extraArgs, + }, + } + ), + }; + case 'wrongArgumentNumberTooFew': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.wrongArgumentTooFewNumber', + { + defaultMessage: + 'Error: [{fn}] function expects {missingArgs, plural, =0 {} other {at least }}{numArgs, plural, one {one argument} other {{numArgs} arguments}}, got {passedArgs}.', + values: { + fn: out.fn, + numArgs: out.numArgs, + passedArgs: out.passedArgs, + missingArgs: out.missingArgs, + }, + } + ), + }; + case 'noNestedArgumentSupport': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.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: out.name, argType: out.argType }, + } + ), + }; + case 'shadowFieldType': + return { + message: i18n.translate('kbn-esql-validation-autocomplete.esql.validation.typeOverwrite', { + defaultMessage: + 'Column [{field}] of type {fieldType} has been overwritten as new type: {newType}', + values: { field: out.field, fieldType: out.fieldType, newType: out.newType }, + }), + type: 'warning', + }; + case 'unsupportedColumnTypeForCommand': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.unsupportedColumnTypeForCommand', + { + defaultMessage: + '{command} only supports {type} {typeCount, plural, one {type} other {types}} values, found [{column}] of type [{givenType}]', + values: { + command: out.command, + type: out.type, + typeCount: out.typeCount, + column: out.column, + givenType: out.givenType, + }, + } + ), + }; + case 'unknownOption': + return { + message: i18n.translate('kbn-esql-validation-autocomplete.esql.validation.unknownOption', { + defaultMessage: 'Invalid option for {command}: [{option}]', + values: { + command: out.command, + option: out.option, + }, + }), + }; + case 'unsupportedFunctionForCommand': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.unsupportedFunctionForCommand', + { + defaultMessage: '{command} does not support function {name}', + values: { + command: out.command, + name: out.name, + }, + } + ), + }; + case 'unsupportedFunctionForCommandOption': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.unsupportedFunctionforCommandOption', + { + defaultMessage: '{command} {option} does not support function {name}', + values: { + command: out.command, + option: out.option, + name: out.name, + }, + } + ), + }; + case 'unknownInterval': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.unknownInterval', + { + defaultMessage: `Unexpected time interval qualifier: '{value}'`, + values: { + value: out.value, + }, + } + ), + }; + case 'unsupportedTypeForCommand': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.unsupportedTypeForCommand', + { + defaultMessage: '{command} does not support [{type}] in expression [{value}]', + values: { + command: out.command, + type: out.type, + value: out.value, + }, + } + ), + }; + case 'unknownPolicy': + return { + message: i18n.translate('kbn-esql-validation-autocomplete.esql.validation.unknownPolicy', { + defaultMessage: 'Unknown policy [{name}]', + values: { + name: out.name, + }, + }), + }; + case 'unknownAggregateFunction': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.unknowAggregateFunction', + { + defaultMessage: + 'Expected an aggregate function or group but got [{value}] of type [{type}]', + values: { + type: out.type, + value: out.value, + }, + } + ), + }; + case 'wildcardNotSupportedForCommand': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.wildcardNotSupportedForCommand', + { + defaultMessage: 'Using wildcards (*) in {command} is not allowed [{value}]', + values: { + command: out.command, + value: out.value, + }, + } + ), + }; + case 'noWildcardSupportAsArg': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.wildcardNotSupportedForFunction', + { + defaultMessage: 'Using wildcards (*) in {name} is not allowed', + values: { + name: out.name, + }, + } + ), + }; + case 'unsupportedFieldType': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.unsupportedFieldType', + { + defaultMessage: + 'Field [{field}] cannot be retrieved, it is unsupported or not indexed; returning null', + values: { + field: out.field, + }, + } + ), + type: 'warning', + }; + case 'unsupportedSetting': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.unsupportedSetting', + { + defaultMessage: 'Unsupported setting [{setting}], expected [{expected}]', + values: { + setting: out.setting, + expected: out.expected, + }, + } + ), + type: 'error', + }; + case 'unsupportedSettingCommandValue': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.unsupportedSettingValue', + { + defaultMessage: + 'Unrecognized value [{value}] for {command}, mode needs to be one of [{expected}]', + values: { + expected: out.expected, + value: out.value, + command: out.command, + }, + } + ), + type: 'error', + }; + case 'expectedConstant': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.expectedConstantValue', + { + defaultMessage: 'Argument of [{fn}] must be a constant, received [{given}]', + values: { + given: out.given, + fn: out.fn, + }, + } + ), + type: 'error', + }; + case 'metadataBracketsDeprecation': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.metadataBracketsDeprecation', + { + defaultMessage: + "Square brackets '[]' need to be removed from FROM METADATA declaration", + } + ), + type: 'warning', + }; + case 'unknownMetadataField': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.wrongMetadataArgumentType', + { + defaultMessage: + 'Metadata field [{value}] is not available. Available metadata fields are: [{availableFields}]', + values: { + value: out.value, + availableFields: out.availableFields, + }, + } + ), + type: 'error', + }; + case 'wrongDissectOptionArgumentType': + return { + message: i18n.translate( + 'kbn-esql-validation-autocomplete.esql.validation.wrongDissectOptionArgumentType', + { + defaultMessage: + 'Invalid value for DISSECT append_separator: expected a string, but was [{value}]', + values: { + value: out.value, + }, + } + ), + type: 'error', + }; + } + return { message: '' }; +} + +export function getMessageFromId({ + locations, + ...payload +}: { + messageId: K; + values: ErrorValues; + locations: ESQLLocation; +}): ESQLMessage { + const { message, type = 'error' } = getMessageAndTypeFromId(payload); + return createMessage(type, message, locations, payload.messageId); +} + +export function createMessage( + type: 'error' | 'warning', + message: string, + location: ESQLLocation, + messageId: string +) { + return { + type, + text: message, + location, + code: messageId, + }; +} + +export function getUnknownTypeLabel() { + return i18n.translate('kbn-esql-validation-autocomplete.esql.validation.unknownColumnType', { + defaultMessage: 'Unknown type', + }); +} diff --git a/packages/kbn-esql-validation-autocomplete/src/validation/esql_validation_meta_tests.json b/packages/kbn-esql-validation-autocomplete/src/validation/esql_validation_meta_tests.json new file mode 100644 index 0000000000000..0db7e695f8a62 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/validation/esql_validation_meta_tests.json @@ -0,0 +1,12644 @@ +{ + "indexes": [ + "a_index", + "index", + "other_index", + ".secret_index", + "my-index", + "unsupported_index" + ], + "fields": [ + { + "name": "numberField", + "type": "number" + }, + { + "name": "dateField", + "type": "date" + }, + { + "name": "booleanField", + "type": "boolean" + }, + { + "name": "ipField", + "type": "ip" + }, + { + "name": "stringField", + "type": "string" + }, + { + "name": "cartesianPointField", + "type": "cartesian_point" + }, + { + "name": "geoPointField", + "type": "geo_point" + }, + { + "name": "any#Char$Field", + "type": "number" + }, + { + "name": "kubernetes.something.something", + "type": "number" + }, + { + "name": "@timestamp", + "type": "date" + }, + { + "name": "otherStringField", + "type": "keyword" + } + ], + "enrichFields": [ + { + "name": "otherField", + "type": "string" + }, + { + "name": "yetAnotherField", + "type": "number" + }, + { + "name": "otherStringField", + "type": "keyword" + } + ], + "policies": [ + { + "name": "policy", + "sourceIndices": [ + "enrich_index" + ], + "matchField": "otherStringField", + "enrichFields": [ + "otherField", + "yetAnotherField" + ] + }, + { + "name": "policy$", + "sourceIndices": [ + "enrich_index" + ], + "matchField": "otherStringField", + "enrichFields": [ + "otherField", + "yetAnotherField" + ] + } + ], + "unsupported_field": [ + { + "name": "unsupported_field", + "type": "unsupported" + } + ], + "testCases": [ + { + "query": "eval", + "error": [ + "SyntaxError: mismatched input 'eval' expecting {'explain', 'from', 'meta', 'row', 'show'}" + ], + "warning": [] + }, + { + "query": "stats", + "error": [ + "SyntaxError: mismatched input 'stats' expecting {'explain', 'from', 'meta', 'row', 'show'}" + ], + "warning": [] + }, + { + "query": "rename", + "error": [ + "SyntaxError: mismatched input 'rename' expecting {'explain', 'from', 'meta', 'row', 'show'}" + ], + "warning": [] + }, + { + "query": "limit", + "error": [ + "SyntaxError: mismatched input 'limit' expecting {'explain', 'from', 'meta', 'row', 'show'}" + ], + "warning": [] + }, + { + "query": "keep", + "error": [ + "SyntaxError: mismatched input 'keep' expecting {'explain', 'from', 'meta', 'row', 'show'}" + ], + "warning": [] + }, + { + "query": "drop", + "error": [ + "SyntaxError: mismatched input 'drop' expecting {'explain', 'from', 'meta', 'row', 'show'}" + ], + "warning": [] + }, + { + "query": "mv_expand", + "error": [ + "SyntaxError: mismatched input 'mv_expand' expecting {'explain', 'from', 'meta', 'row', 'show'}" + ], + "warning": [] + }, + { + "query": "dissect", + "error": [ + "SyntaxError: mismatched input 'dissect' expecting {'explain', 'from', 'meta', 'row', 'show'}" + ], + "warning": [] + }, + { + "query": "grok", + "error": [ + "SyntaxError: mismatched input 'grok' expecting {'explain', 'from', 'meta', 'row', 'show'}" + ], + "warning": [] + }, + { + "query": "f", + "error": [ + "SyntaxError: mismatched input 'f' expecting {'explain', 'from', 'meta', 'row', 'show'}" + ], + "warning": [] + }, + { + "query": "from ", + "error": [ + "SyntaxError: missing {QUOTED_IDENTIFIER, FROM_UNQUOTED_IDENTIFIER} at ''" + ], + "warning": [] + }, + { + "query": "from index,", + "error": [ + "SyntaxError: missing {QUOTED_IDENTIFIER, FROM_UNQUOTED_IDENTIFIER} at ''" + ], + "warning": [] + }, + { + "query": "from assignment = 1", + "error": [ + "SyntaxError: mismatched input '=' expecting ", + "Unknown index [assignment]" + ], + "warning": [] + }, + { + "query": "from index", + "error": [], + "warning": [] + }, + { + "query": "FROM index", + "error": [], + "warning": [] + }, + { + "query": "FrOm index", + "error": [], + "warning": [] + }, + { + "query": "from `index`", + "error": [], + "warning": [] + }, + { + "query": "from index, other_index", + "error": [], + "warning": [] + }, + { + "query": "from index, missingIndex", + "error": [ + "Unknown index [missingIndex]" + ], + "warning": [] + }, + { + "query": "from fn()", + "error": [ + "Unknown index [fn()]" + ], + "warning": [] + }, + { + "query": "from average()", + "error": [ + "Unknown index [average()]" + ], + "warning": [] + }, + { + "query": "from index [METADATA _id]", + "error": [], + "warning": [ + "Square brackets '[]' need to be removed from FROM METADATA declaration" + ] + }, + { + "query": "from index [metadata _id]", + "error": [], + "warning": [ + "Square brackets '[]' need to be removed from FROM METADATA declaration" + ] + }, + { + "query": "from index [METADATA _id, _source]", + "error": [], + "warning": [ + "Square brackets '[]' need to be removed from FROM METADATA declaration" + ] + }, + { + "query": "from index [METADATA _id, _source2]", + "error": [ + "Metadata field [_source2] is not available. Available metadata fields are: [_id, _source]" + ], + "warning": [ + "Square brackets '[]' need to be removed from FROM METADATA declaration" + ] + }, + { + "query": "from index [metadata _id, _source] [METADATA _id2]", + "error": [ + "SyntaxError: mismatched input '[' expecting " + ], + "warning": [ + "Square brackets '[]' need to be removed from FROM METADATA declaration" + ] + }, + { + "query": "from remote-ccs:indexes [METADATA _id]", + "error": [], + "warning": [ + "Square brackets '[]' need to be removed from FROM METADATA declaration" + ] + }, + { + "query": "from *:indexes [METADATA _id]", + "error": [], + "warning": [ + "Square brackets '[]' need to be removed from FROM METADATA declaration" + ] + }, + { + "query": "from index METADATA _id", + "error": [], + "warning": [] + }, + { + "query": "from index metadata _id", + "error": [], + "warning": [] + }, + { + "query": "from index METADATA _id, _source", + "error": [], + "warning": [] + }, + { + "query": "from index METADATA _id, _source2", + "error": [ + "Metadata field [_source2] is not available. Available metadata fields are: [_id, _source]" + ], + "warning": [] + }, + { + "query": "from index metadata _id, _source METADATA _id2", + "error": [ + "SyntaxError: mismatched input 'METADATA' expecting " + ], + "warning": [] + }, + { + "query": "from remote-ccs:indexes METADATA _id", + "error": [], + "warning": [] + }, + { + "query": "from *:indexes METADATA _id", + "error": [], + "warning": [] + }, + { + "query": "from index (metadata _id)", + "error": [ + "SyntaxError: mismatched input '(metadata' expecting " + ], + "warning": [] + }, + { + "query": "from ind*, other*", + "error": [], + "warning": [] + }, + { + "query": "from index*", + "error": [], + "warning": [] + }, + { + "query": "from *a_i*dex*", + "error": [], + "warning": [] + }, + { + "query": "from in*ex*", + "error": [], + "warning": [] + }, + { + "query": "from *n*ex", + "error": [], + "warning": [] + }, + { + "query": "from *n*ex*", + "error": [], + "warning": [] + }, + { + "query": "from i*d*x*", + "error": [], + "warning": [] + }, + { + "query": "from i*d*x", + "error": [], + "warning": [] + }, + { + "query": "from i***x*", + "error": [], + "warning": [] + }, + { + "query": "from i****", + "error": [], + "warning": [] + }, + { + "query": "from i**", + "error": [], + "warning": [] + }, + { + "query": "from index**", + "error": [], + "warning": [] + }, + { + "query": "from *ex", + "error": [], + "warning": [] + }, + { + "query": "from *ex*", + "error": [], + "warning": [] + }, + { + "query": "from in*ex", + "error": [], + "warning": [] + }, + { + "query": "from ind*ex", + "error": [], + "warning": [] + }, + { + "query": "from indexes*", + "error": [ + "Unknown index [indexes*]" + ], + "warning": [] + }, + { + "query": "from remote-*:indexes*", + "error": [], + "warning": [] + }, + { + "query": "from remote-*:indexes", + "error": [], + "warning": [] + }, + { + "query": "from remote-ccs:indexes", + "error": [], + "warning": [] + }, + { + "query": "from a_index, remote-ccs:indexes", + "error": [], + "warning": [] + }, + { + "query": "from .secret_index", + "error": [], + "warning": [] + }, + { + "query": "from my-index", + "error": [], + "warning": [] + }, + { + "query": "from numberField", + "error": [ + "Unknown index [numberField]" + ], + "warning": [] + }, + { + "query": "from policy", + "error": [ + "Unknown index [policy]" + ], + "warning": [] + }, + { + "query": "row", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "row missing_column", + "error": [ + "Unknown column [missing_column]" + ], + "warning": [] + }, + { + "query": "row fn()", + "error": [ + "Unknown function [fn]" + ], + "warning": [] + }, + { + "query": "row missing_column, missing_column2", + "error": [ + "Unknown column [missing_column]", + "Unknown column [missing_column2]" + ], + "warning": [] + }, + { + "query": "row a=1", + "error": [], + "warning": [] + }, + { + "query": "row a=1, missing_column", + "error": [ + "Unknown column [missing_column]" + ], + "warning": [] + }, + { + "query": "row a=1, b = average()", + "error": [ + "Unknown function [average]" + ], + "warning": [] + }, + { + "query": "row a = [1, 2, 3]", + "error": [], + "warning": [] + }, + { + "query": "row a = [true, false]", + "error": [], + "warning": [] + }, + { + "query": "row a = [\"a\", \"b\"]", + "error": [], + "warning": [] + }, + { + "query": "row a = null", + "error": [], + "warning": [] + }, + { + "query": "row a = (1)", + "error": [], + "warning": [] + }, + { + "query": "row a = (1, 2, 3)", + "error": [ + "SyntaxError: no viable alternative at input '(1,'", + "SyntaxError: extraneous input ')' expecting " + ], + "warning": [] + }, + { + "query": "row a=NOT true", + "error": [], + "warning": [] + }, + { + "query": "row NOT true", + "error": [], + "warning": [] + }, + { + "query": "row a=NOT false", + "error": [], + "warning": [] + }, + { + "query": "row NOT false", + "error": [], + "warning": [] + }, + { + "query": "row var = 1 in ", + "error": [ + "SyntaxError: mismatched input '' expecting '('" + ], + "warning": [] + }, + { + "query": "row var = 1 in (", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + "Error: [in] function expects exactly 2 arguments, got 1." + ], + "warning": [] + }, + { + "query": "row var = 1 not in ", + "error": [ + "SyntaxError: mismatched input '' expecting '('" + ], + "warning": [] + }, + { + "query": "row var = 1 in (1, 2, 3)", + "error": [], + "warning": [] + }, + { + "query": "row var = 5 in (1, 2, 3)", + "error": [], + "warning": [] + }, + { + "query": "row var = 5 not in (1, 2, 3)", + "error": [], + "warning": [] + }, + { + "query": "row var = 1 in (1, 2, 3, round(5))", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" in (\"a\", \"b\", \"c\")", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" in (\"a\", \"b\", \"c\")", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" not in (\"a\", \"b\", \"c\")", + "error": [], + "warning": [] + }, + { + "query": "row var = 1 in (\"a\", \"b\", \"c\")", + "error": [ + "Argument of [in] must be [number[]], found value [(\"a\", \"b\", \"c\")] type [(string, string, string)]" + ], + "warning": [] + }, + { + "query": "row var = 5 in (\"a\", \"b\", \"c\")", + "error": [ + "Argument of [in] must be [number[]], found value [(\"a\", \"b\", \"c\")] type [(string, string, string)]" + ], + "warning": [] + }, + { + "query": "row var = 5 not in (\"a\", \"b\", \"c\")", + "error": [ + "Argument of [not_in] must be [number[]], found value [(\"a\", \"b\", \"c\")] type [(string, string, string)]" + ], + "warning": [] + }, + { + "query": "row var = 5 not in (1, 2, 3, \"a\")", + "error": [ + "Argument of [not_in] must be [number[]], found value [(1, 2, 3, \"a\")] type [(number, number, number, string)]" + ], + "warning": [] + }, + { + "query": "row var = abs(5)", + "error": [], + "warning": [] + }, + { + "query": "row abs(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = abs(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = abs(\"a\")", + "error": [ + "Argument of [abs] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = acos(5)", + "error": [], + "warning": [] + }, + { + "query": "row acos(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = acos(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = acos(\"a\")", + "error": [ + "Argument of [acos] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = asin(5)", + "error": [], + "warning": [] + }, + { + "query": "row asin(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = asin(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = asin(\"a\")", + "error": [ + "Argument of [asin] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = atan(5)", + "error": [], + "warning": [] + }, + { + "query": "row atan(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = atan(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = atan(\"a\")", + "error": [ + "Argument of [atan] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = atan2(5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row atan2(5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row var = atan2(to_integer(\"a\"), to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = atan2(\"a\", \"a\")", + "error": [ + "Argument of [atan2] must be [number], found value [\"a\"] type [string]", + "Argument of [atan2] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = auto_bucket(now(), 5, \"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row auto_bucket(now(), 5, \"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = auto_bucket(now(), 5, 5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row auto_bucket(now(), 5, 5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row var = case(true, \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row case(true, \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = ceil(5)", + "error": [], + "warning": [] + }, + { + "query": "row ceil(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = ceil(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = ceil(\"a\")", + "error": [ + "Argument of [ceil] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = cidr_match(to_ip(\"127.0.0.1\"), \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row cidr_match(to_ip(\"127.0.0.1\"), \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = cidr_match(to_ip(\"a\"), to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = cidr_match(\"a\", 5)", + "error": [ + "Argument of [cidr_match] must be [ip], found value [\"a\"] type [string]", + "Argument of [cidr_match] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = coalesce(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row coalesce(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = concat(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row concat(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = concat(to_string(\"a\"), to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = concat(5, 5)", + "error": [ + "Argument of [concat] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = cos(5)", + "error": [], + "warning": [] + }, + { + "query": "row cos(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = cos(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = cos(\"a\")", + "error": [ + "Argument of [cos] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = cosh(5)", + "error": [], + "warning": [] + }, + { + "query": "row cosh(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = cosh(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = cosh(\"a\")", + "error": [ + "Argument of [cosh] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", now())", + "error": [], + "warning": [] + }, + { + "query": "row date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", now())", + "error": [], + "warning": [] + }, + { + "query": "row var = date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", to_datetime(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = date_extract(\"a\", \"a\")", + "error": [ + "Argument of [date_extract] must be [chrono_literal], found value [\"a\"] type [string]", + "Argument of [date_extract] must be [date], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = date_format(now(), \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row date_format(now(), \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = date_format(to_datetime(\"a\"), to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = date_format(\"a\", 5)", + "error": [ + "Argument of [date_format] must be [date], found value [\"a\"] type [string]", + "Argument of [date_format] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = date_parse(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row date_parse(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = date_parse(to_string(\"a\"), to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = date_parse(5, 5)", + "error": [ + "Argument of [date_parse] must be [string], found value [5] type [number]", + "Argument of [date_parse] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = date_trunc(1 year, now())", + "error": [], + "warning": [] + }, + { + "query": "row date_trunc(1 year, now())", + "error": [], + "warning": [] + }, + { + "query": "row var = date_trunc(1 year, to_datetime(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = date_trunc(\"a\", \"a\")", + "error": [ + "Argument of [date_trunc] must be [time_literal], found value [\"a\"] type [string]", + "Argument of [date_trunc] must be [date], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = e()", + "error": [], + "warning": [] + }, + { + "query": "row e()", + "error": [], + "warning": [] + }, + { + "query": "row var = e()", + "error": [], + "warning": [] + }, + { + "query": "row var = e()", + "error": [], + "warning": [] + }, + { + "query": "row var = ends_with(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row ends_with(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = ends_with(to_string(\"a\"), to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = ends_with(5, 5)", + "error": [ + "Argument of [ends_with] must be [string], found value [5] type [number]", + "Argument of [ends_with] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = floor(5)", + "error": [], + "warning": [] + }, + { + "query": "row floor(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = floor(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = floor(\"a\")", + "error": [ + "Argument of [floor] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = greatest(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row greatest(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = least(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row least(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = left(\"a\", 5)", + "error": [], + "warning": [] + }, + { + "query": "row left(\"a\", 5)", + "error": [], + "warning": [] + }, + { + "query": "row var = left(to_string(\"a\"), to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = left(5, \"a\")", + "error": [ + "Argument of [left] must be [string], found value [5] type [number]", + "Argument of [left] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = length(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row length(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = length(to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = length(5)", + "error": [ + "Argument of [length] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = log(5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row log(5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row var = log(to_integer(\"a\"), to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = log(\"a\", \"a\")", + "error": [ + "Argument of [log] must be [number], found value [\"a\"] type [string]", + "Argument of [log] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = log10(5)", + "error": [], + "warning": [] + }, + { + "query": "row log10(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = log10(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = log10(\"a\")", + "error": [ + "Argument of [log10] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = ltrim(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row ltrim(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = ltrim(to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = ltrim(5)", + "error": [ + "Argument of [ltrim] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = mv_avg(5)", + "error": [], + "warning": [] + }, + { + "query": "row mv_avg(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_avg(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_avg(\"a\")", + "error": [ + "Argument of [mv_avg] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = mv_concat(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row mv_concat(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_concat(to_string(\"a\"), to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_concat(5, 5)", + "error": [ + "Argument of [mv_concat] must be [string], found value [5] type [number]", + "Argument of [mv_concat] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = mv_count(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row mv_count(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_dedupe(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row mv_dedupe(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_first(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row mv_first(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_last(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row mv_last(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_max(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row mv_max(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_median(5)", + "error": [], + "warning": [] + }, + { + "query": "row mv_median(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_median(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_median(\"a\")", + "error": [ + "Argument of [mv_median] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = mv_min(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row mv_min(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_sum(5)", + "error": [], + "warning": [] + }, + { + "query": "row mv_sum(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_sum(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = mv_sum(\"a\")", + "error": [ + "Argument of [mv_sum] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = now()", + "error": [], + "warning": [] + }, + { + "query": "row now()", + "error": [], + "warning": [] + }, + { + "query": "row var = now()", + "error": [], + "warning": [] + }, + { + "query": "row var = now()", + "error": [], + "warning": [] + }, + { + "query": "row var = pi()", + "error": [], + "warning": [] + }, + { + "query": "row pi()", + "error": [], + "warning": [] + }, + { + "query": "row var = pi()", + "error": [], + "warning": [] + }, + { + "query": "row var = pi()", + "error": [], + "warning": [] + }, + { + "query": "row var = pow(5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row pow(5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row var = pow(to_integer(\"a\"), to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = pow(\"a\", \"a\")", + "error": [ + "Argument of [pow] must be [number], found value [\"a\"] type [string]", + "Argument of [pow] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = replace(\"a\", \"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row replace(\"a\", \"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = replace(to_string(\"a\"), to_string(\"a\"), to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = replace(5, 5, 5)", + "error": [ + "Argument of [replace] must be [string], found value [5] type [number]", + "Argument of [replace] must be [string], found value [5] type [number]", + "Argument of [replace] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = right(\"a\", 5)", + "error": [], + "warning": [] + }, + { + "query": "row right(\"a\", 5)", + "error": [], + "warning": [] + }, + { + "query": "row var = right(to_string(\"a\"), to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = right(5, \"a\")", + "error": [ + "Argument of [right] must be [string], found value [5] type [number]", + "Argument of [right] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = round(5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row round(5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row var = round(to_integer(\"a\"), to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = round(\"a\", \"a\")", + "error": [ + "Argument of [round] must be [number], found value [\"a\"] type [string]", + "Argument of [round] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = rtrim(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row rtrim(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = rtrim(to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = rtrim(5)", + "error": [ + "Argument of [rtrim] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = sin(5)", + "error": [], + "warning": [] + }, + { + "query": "row sin(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = sin(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = sin(\"a\")", + "error": [ + "Argument of [sin] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = sinh(5)", + "error": [], + "warning": [] + }, + { + "query": "row sinh(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = sinh(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = sinh(\"a\")", + "error": [ + "Argument of [sinh] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = split(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row split(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = split(to_string(\"a\"), to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = split(5, 5)", + "error": [ + "Argument of [split] must be [string], found value [5] type [number]", + "Argument of [split] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = sqrt(5)", + "error": [], + "warning": [] + }, + { + "query": "row sqrt(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = sqrt(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = sqrt(\"a\")", + "error": [ + "Argument of [sqrt] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = starts_with(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row starts_with(\"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = starts_with(to_string(\"a\"), to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = starts_with(5, 5)", + "error": [ + "Argument of [starts_with] must be [string], found value [5] type [number]", + "Argument of [starts_with] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = substring(\"a\", 5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row substring(\"a\", 5, 5)", + "error": [], + "warning": [] + }, + { + "query": "row var = substring(to_string(\"a\"), to_integer(\"a\"), to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = substring(5, \"a\", \"a\")", + "error": [ + "Argument of [substring] must be [string], found value [5] type [number]", + "Argument of [substring] must be [number], found value [\"a\"] type [string]", + "Argument of [substring] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = tan(5)", + "error": [], + "warning": [] + }, + { + "query": "row tan(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = tan(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = tan(\"a\")", + "error": [ + "Argument of [tan] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = tanh(5)", + "error": [], + "warning": [] + }, + { + "query": "row tanh(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = tanh(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = tanh(\"a\")", + "error": [ + "Argument of [tanh] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = tau()", + "error": [], + "warning": [] + }, + { + "query": "row tau()", + "error": [], + "warning": [] + }, + { + "query": "row var = tau()", + "error": [], + "warning": [] + }, + { + "query": "row var = tau()", + "error": [], + "warning": [] + }, + { + "query": "row var = to_boolean(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_boolean(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_bool(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_cartesianpoint(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_cartesianpoint(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_cartesianshape(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_cartesianshape(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_datetime(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_datetime(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_dt(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_degrees(5)", + "error": [], + "warning": [] + }, + { + "query": "row to_degrees(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = to_degrees(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = to_degrees(\"a\")", + "error": [ + "Argument of [to_degrees] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = to_double(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_double(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_dbl(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_geopoint(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_geopoint(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_geoshape(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_geoshape(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_integer(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_integer(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_int(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_ip(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_ip(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_long(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_long(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_lower(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_lower(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_lower(to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = to_lower(5)", + "error": [ + "Argument of [to_lower] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = to_radians(5)", + "error": [], + "warning": [] + }, + { + "query": "row to_radians(5)", + "error": [], + "warning": [] + }, + { + "query": "row var = to_radians(to_integer(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = to_radians(\"a\")", + "error": [ + "Argument of [to_radians] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = to_string(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_string(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_str(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_unsigned_long(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_unsigned_long(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_ul(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_ulong(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_upper(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_upper(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_upper(to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = to_upper(5)", + "error": [ + "Argument of [to_upper] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = to_version(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_version(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_ver(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_version(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row to_version(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = to_ver(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = trim(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row trim(\"a\")", + "error": [], + "warning": [] + }, + { + "query": "row var = trim(to_string(\"a\"))", + "error": [], + "warning": [] + }, + { + "query": "row var = trim(5)", + "error": [ + "Argument of [trim] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = 5 > 0", + "error": [], + "warning": [] + }, + { + "query": "row var = NOT 5 > 0", + "error": [], + "warning": [] + }, + { + "query": "row var = (numberField > 0)", + "error": [ + "Unknown column [numberField]" + ], + "warning": [] + }, + { + "query": "row var = (NOT (5 > 0))", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" > 0", + "error": [ + "Argument of [>] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = 5 >= 0", + "error": [], + "warning": [] + }, + { + "query": "row var = NOT 5 >= 0", + "error": [], + "warning": [] + }, + { + "query": "row var = (numberField >= 0)", + "error": [ + "Unknown column [numberField]" + ], + "warning": [] + }, + { + "query": "row var = (NOT (5 >= 0))", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" >= 0", + "error": [ + "Argument of [>=] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = 5 < 0", + "error": [], + "warning": [] + }, + { + "query": "row var = NOT 5 < 0", + "error": [], + "warning": [] + }, + { + "query": "row var = (numberField < 0)", + "error": [ + "Unknown column [numberField]" + ], + "warning": [] + }, + { + "query": "row var = (NOT (5 < 0))", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" < 0", + "error": [ + "Argument of [<] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = 5 <= 0", + "error": [], + "warning": [] + }, + { + "query": "row var = NOT 5 <= 0", + "error": [], + "warning": [] + }, + { + "query": "row var = (numberField <= 0)", + "error": [ + "Unknown column [numberField]" + ], + "warning": [] + }, + { + "query": "row var = (NOT (5 <= 0))", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" <= 0", + "error": [ + "Argument of [<=] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = 5 == 0", + "error": [], + "warning": [] + }, + { + "query": "row var = NOT 5 == 0", + "error": [], + "warning": [] + }, + { + "query": "row var = (numberField == 0)", + "error": [ + "Unknown column [numberField]" + ], + "warning": [] + }, + { + "query": "row var = (NOT (5 == 0))", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" == 0", + "error": [ + "Argument of [==] must be [number], found value [\"a\"] type [string]" + ], + "warning": [] + }, + { + "query": "row var = 1 + 1", + "error": [], + "warning": [] + }, + { + "query": "row var = (5 + 1)", + "error": [], + "warning": [] + }, + { + "query": "row var = 1 - 1", + "error": [], + "warning": [] + }, + { + "query": "row var = (5 - 1)", + "error": [], + "warning": [] + }, + { + "query": "row var = 1 * 1", + "error": [], + "warning": [] + }, + { + "query": "row var = (5 * 1)", + "error": [], + "warning": [] + }, + { + "query": "row var = 1 / 1", + "error": [], + "warning": [] + }, + { + "query": "row var = (5 / 1)", + "error": [], + "warning": [] + }, + { + "query": "row var = 1 % 1", + "error": [], + "warning": [] + }, + { + "query": "row var = (5 % 1)", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" NOT like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "row var = NOT \"a\" like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "row var = NOT \"a\" NOT like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "row var = 5 like \"?a\"", + "error": [ + "Argument of [like] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = 5 NOT like \"?a\"", + "error": [ + "Argument of [not_like] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = NOT 5 like \"?a\"", + "error": [ + "Argument of [like] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = NOT 5 NOT like \"?a\"", + "error": [ + "Argument of [not_like] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = \"a\" rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "row var = \"a\" NOT rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "row var = NOT \"a\" rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "row var = NOT \"a\" NOT rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "row var = 5 rlike \"?a\"", + "error": [ + "Argument of [rlike] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = 5 NOT rlike \"?a\"", + "error": [ + "Argument of [not_rlike] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = NOT 5 rlike \"?a\"", + "error": [ + "Argument of [rlike] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row var = NOT 5 NOT rlike \"?a\"", + "error": [ + "Argument of [not_rlike] must be [string], found value [5] type [number]" + ], + "warning": [] + }, + { + "query": "row 1 anno", + "error": [ + "ROW does not support [date_period] in expression [1 anno]" + ], + "warning": [] + }, + { + "query": "row var = 1 anno", + "error": [ + "Unexpected time interval qualifier: 'anno'" + ], + "warning": [] + }, + { + "query": "row now() + 1 anno", + "error": [ + "Unexpected time interval qualifier: 'anno'" + ], + "warning": [] + }, + { + "query": "row 1 year", + "error": [ + "ROW does not support [date_period] in expression [1 year]" + ], + "warning": [] + }, + { + "query": "row 1 year", + "error": [ + "ROW does not support [date_period] in expression [1 year]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 year", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 YEAR", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Year", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 year", + "error": [], + "warning": [] + }, + { + "query": "row 1 year + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 year] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 year", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 year] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 year", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 year] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 year", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 year] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 years", + "error": [ + "ROW does not support [date_period] in expression [1 years]" + ], + "warning": [] + }, + { + "query": "row 1 years", + "error": [ + "ROW does not support [date_period] in expression [1 years]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 years", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 YEARS", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Years", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 years", + "error": [], + "warning": [] + }, + { + "query": "row 1 years + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 years] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 years", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 years] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 years", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 years] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 years", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 years] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 month", + "error": [ + "ROW does not support [date_period] in expression [1 month]" + ], + "warning": [] + }, + { + "query": "row 1 month", + "error": [ + "ROW does not support [date_period] in expression [1 month]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 month", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 MONTH", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Month", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 month", + "error": [], + "warning": [] + }, + { + "query": "row 1 month + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 month] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 month", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 month] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 month", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 month] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 month", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 month] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 months", + "error": [ + "ROW does not support [date_period] in expression [1 months]" + ], + "warning": [] + }, + { + "query": "row 1 months", + "error": [ + "ROW does not support [date_period] in expression [1 months]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 months", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 MONTHS", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Months", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 months", + "error": [], + "warning": [] + }, + { + "query": "row 1 months + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 months] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 months", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 months] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 months", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 months] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 months", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 months] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 week", + "error": [ + "ROW does not support [date_period] in expression [1 week]" + ], + "warning": [] + }, + { + "query": "row 1 week", + "error": [ + "ROW does not support [date_period] in expression [1 week]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 week", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 WEEK", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Week", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 week", + "error": [], + "warning": [] + }, + { + "query": "row 1 week + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 week] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 week", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 week] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 week", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 week] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 week", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 week] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 weeks", + "error": [ + "ROW does not support [date_period] in expression [1 weeks]" + ], + "warning": [] + }, + { + "query": "row 1 weeks", + "error": [ + "ROW does not support [date_period] in expression [1 weeks]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 weeks", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 WEEKS", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Weeks", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 weeks", + "error": [], + "warning": [] + }, + { + "query": "row 1 weeks + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 weeks] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 weeks", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 weeks] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 weeks", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 weeks] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 weeks", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 weeks] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 day", + "error": [ + "ROW does not support [date_period] in expression [1 day]" + ], + "warning": [] + }, + { + "query": "row 1 day", + "error": [ + "ROW does not support [date_period] in expression [1 day]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 day", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 DAY", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Day", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 day", + "error": [], + "warning": [] + }, + { + "query": "row 1 day + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 day] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 day", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 day] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 day", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 day] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 day", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 day] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 days", + "error": [ + "ROW does not support [date_period] in expression [1 days]" + ], + "warning": [] + }, + { + "query": "row 1 days", + "error": [ + "ROW does not support [date_period] in expression [1 days]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 days", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 DAYS", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Days", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 days", + "error": [], + "warning": [] + }, + { + "query": "row 1 days + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 days] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 days", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 days] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 days", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 days] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 days", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 days] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 hour", + "error": [ + "ROW does not support [date_period] in expression [1 hour]" + ], + "warning": [] + }, + { + "query": "row 1 hour", + "error": [ + "ROW does not support [date_period] in expression [1 hour]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 hour", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 HOUR", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Hour", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 hour", + "error": [], + "warning": [] + }, + { + "query": "row 1 hour + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 hour] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 hour", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 hour] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 hour", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 hour] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 hour", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 hour] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 hours", + "error": [ + "ROW does not support [date_period] in expression [1 hours]" + ], + "warning": [] + }, + { + "query": "row 1 hours", + "error": [ + "ROW does not support [date_period] in expression [1 hours]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 hours", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 HOURS", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Hours", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 hours", + "error": [], + "warning": [] + }, + { + "query": "row 1 hours + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 hours] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 hours", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 hours] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 hours", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 hours] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 hours", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 hours] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 minute", + "error": [ + "ROW does not support [date_period] in expression [1 minute]" + ], + "warning": [] + }, + { + "query": "row 1 minute", + "error": [ + "ROW does not support [date_period] in expression [1 minute]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 minute", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 MINUTE", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Minute", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 minute", + "error": [], + "warning": [] + }, + { + "query": "row 1 minute + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 minute] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 minute", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 minute] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 minute", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 minute] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 minute", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 minute] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 minutes", + "error": [ + "ROW does not support [date_period] in expression [1 minutes]" + ], + "warning": [] + }, + { + "query": "row 1 minutes", + "error": [ + "ROW does not support [date_period] in expression [1 minutes]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 minutes", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 MINUTES", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Minutes", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 minutes", + "error": [], + "warning": [] + }, + { + "query": "row 1 minutes + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 minutes] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 minutes", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 minutes] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 minutes", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 minutes] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 minutes", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 minutes] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 second", + "error": [ + "ROW does not support [date_period] in expression [1 second]" + ], + "warning": [] + }, + { + "query": "row 1 second", + "error": [ + "ROW does not support [date_period] in expression [1 second]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 second", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 SECOND", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Second", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 second", + "error": [], + "warning": [] + }, + { + "query": "row 1 second + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 second] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 second", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 second] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 second", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 second] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 second", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 second] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 seconds", + "error": [ + "ROW does not support [date_period] in expression [1 seconds]" + ], + "warning": [] + }, + { + "query": "row 1 seconds", + "error": [ + "ROW does not support [date_period] in expression [1 seconds]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 seconds", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 SECONDS", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Seconds", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 seconds", + "error": [], + "warning": [] + }, + { + "query": "row 1 seconds + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 seconds] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 seconds", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 seconds] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 seconds", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 seconds] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 seconds", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 seconds] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 millisecond", + "error": [ + "ROW does not support [date_period] in expression [1 millisecond]" + ], + "warning": [] + }, + { + "query": "row 1 millisecond", + "error": [ + "ROW does not support [date_period] in expression [1 millisecond]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 millisecond", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 MILLISECOND", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Millisecond", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 millisecond", + "error": [], + "warning": [] + }, + { + "query": "row 1 millisecond + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 millisecond] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 millisecond", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 millisecond] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 millisecond", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 millisecond] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 millisecond", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 millisecond] type [duration]" + ], + "warning": [] + }, + { + "query": "row 1 milliseconds", + "error": [ + "ROW does not support [date_period] in expression [1 milliseconds]" + ], + "warning": [] + }, + { + "query": "row 1 milliseconds", + "error": [ + "ROW does not support [date_period] in expression [1 milliseconds]" + ], + "warning": [] + }, + { + "query": "row var = now() - 1 milliseconds", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 MILLISECONDS", + "error": [], + "warning": [] + }, + { + "query": "row var = now() - 1 Milliseconds", + "error": [], + "warning": [] + }, + { + "query": "row var = now() + 1 milliseconds", + "error": [], + "warning": [] + }, + { + "query": "row 1 milliseconds + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 milliseconds] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() * 1 milliseconds", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 milliseconds] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() / 1 milliseconds", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 milliseconds] type [duration]" + ], + "warning": [] + }, + { + "query": "row var = now() % 1 milliseconds", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 milliseconds] type [duration]" + ], + "warning": [] + }, + { + "query": "meta", + "error": [ + "SyntaxError: missing 'functions' at ''" + ], + "warning": [] + }, + { + "query": "meta functions", + "error": [], + "warning": [] + }, + { + "query": "meta functions()", + "error": [ + "SyntaxError: token recognition error at: '('", + "SyntaxError: token recognition error at: ')'" + ], + "warning": [] + }, + { + "query": "meta functions blah", + "error": [ + "SyntaxError: token recognition error at: 'b'", + "SyntaxError: token recognition error at: 'l'", + "SyntaxError: token recognition error at: 'a'", + "SyntaxError: token recognition error at: 'h'" + ], + "warning": [] + }, + { + "query": "meta info", + "error": [ + "SyntaxError: token recognition error at: 'i'", + "SyntaxError: token recognition error at: 'n'", + "SyntaxError: token recognition error at: 'fo'", + "SyntaxError: missing 'functions' at ''" + ], + "warning": [] + }, + { + "query": "show", + "error": [ + "SyntaxError: missing 'info' at ''" + ], + "warning": [] + }, + { + "query": "show functions", + "error": [ + "SyntaxError: token recognition error at: 'f'", + "SyntaxError: token recognition error at: 'u'", + "SyntaxError: token recognition error at: 'n'", + "SyntaxError: token recognition error at: 'c'", + "SyntaxError: token recognition error at: 't'", + "SyntaxError: token recognition error at: 'io'", + "SyntaxError: token recognition error at: 'n'", + "SyntaxError: token recognition error at: 's'", + "SyntaxError: missing 'info' at ''" + ], + "warning": [] + }, + { + "query": "show info", + "error": [], + "warning": [] + }, + { + "query": "show numberField", + "error": [ + "SyntaxError: token recognition error at: 'n'", + "SyntaxError: token recognition error at: 'u'", + "SyntaxError: token recognition error at: 'm'", + "SyntaxError: token recognition error at: 'b'", + "SyntaxError: token recognition error at: 'e'", + "SyntaxError: token recognition error at: 'r'", + "SyntaxError: token recognition error at: 'F'", + "SyntaxError: token recognition error at: 'ie'", + "SyntaxError: token recognition error at: 'l'", + "SyntaxError: token recognition error at: 'd'", + "SyntaxError: missing 'info' at ''" + ], + "warning": [] + }, + { + "query": "from index | limit ", + "error": [ + "SyntaxError: missing INTEGER_LITERAL at ''" + ], + "warning": [] + }, + { + "query": "from index | limit 4 ", + "error": [], + "warning": [] + }, + { + "query": "from index | limit 4.5", + "error": [ + "SyntaxError: mismatched input '4.5' expecting INTEGER_LITERAL" + ], + "warning": [] + }, + { + "query": "from index | limit a", + "error": [ + "SyntaxError: mismatched input 'a' expecting INTEGER_LITERAL" + ], + "warning": [] + }, + { + "query": "from index | limit numberField", + "error": [ + "SyntaxError: mismatched input 'numberField' expecting INTEGER_LITERAL" + ], + "warning": [] + }, + { + "query": "from index | limit stringField", + "error": [ + "SyntaxError: mismatched input 'stringField' expecting INTEGER_LITERAL" + ], + "warning": [] + }, + { + "query": "from index | limit 4", + "error": [], + "warning": [] + }, + { + "query": "from index | keep ", + "error": [ + "SyntaxError: missing ID_PATTERN at ''" + ], + "warning": [] + }, + { + "query": "from index | keep stringField, numberField, dateField", + "error": [], + "warning": [] + }, + { + "query": "from index | keep `stringField`, `numberField`, `dateField`", + "error": [], + "warning": [] + }, + { + "query": "from index | keep 4.5", + "error": [ + "SyntaxError: token recognition error at: '4'", + "SyntaxError: token recognition error at: '5'", + "SyntaxError: missing ID_PATTERN at '.'", + "SyntaxError: missing ID_PATTERN at ''" + ], + "warning": [] + }, + { + "query": "from index | keep `4.5`", + "error": [ + "Unknown column [4.5]" + ], + "warning": [] + }, + { + "query": "from index | keep missingField, numberField, dateField", + "error": [ + "Unknown column [missingField]" + ], + "warning": [] + }, + { + "query": "from index | keep `any#Char$Field`", + "error": [], + "warning": [] + }, + { + "query": "from index | project ", + "error": [ + "SyntaxError: mismatched input 'project' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}" + ], + "warning": [] + }, + { + "query": "from index | project stringField, numberField, dateField", + "error": [ + "SyntaxError: mismatched input 'project' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}" + ], + "warning": [] + }, + { + "query": "from index | PROJECT stringField, numberField, dateField", + "error": [ + "SyntaxError: mismatched input 'PROJECT' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}" + ], + "warning": [] + }, + { + "query": "from index | project missingField, numberField, dateField", + "error": [ + "SyntaxError: mismatched input 'project' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}" + ], + "warning": [] + }, + { + "query": "from index | keep s*", + "error": [], + "warning": [] + }, + { + "query": "from index | keep *Field", + "error": [], + "warning": [] + }, + { + "query": "from index | keep s*Field", + "error": [], + "warning": [] + }, + { + "query": "from index | keep string*Field", + "error": [], + "warning": [] + }, + { + "query": "from index | keep s*, n*", + "error": [], + "warning": [] + }, + { + "query": "from index | keep m*", + "error": [ + "Unknown column [m*]" + ], + "warning": [] + }, + { + "query": "from index | keep *m", + "error": [ + "Unknown column [*m]" + ], + "warning": [] + }, + { + "query": "from index | keep d*m", + "error": [ + "Unknown column [d*m]" + ], + "warning": [] + }, + { + "query": "from unsupported_index | keep unsupported_field", + "error": [], + "warning": [ + "Field [unsupported_field] cannot be retrieved, it is unsupported or not indexed; returning null" + ] + }, + { + "query": "FROM index | STATS ROUND(AVG(numberField * 1.5)), COUNT(*), MIN(numberField * 10) | KEEP `MIN(numberField * 10)`", + "error": [], + "warning": [] + }, + { + "query": "FROM index | STATS COUNT(*), MIN(numberField * 10), MAX(numberField)| KEEP `COUNT(*)`", + "error": [], + "warning": [] + }, + { + "query": "from index | drop ", + "error": [ + "SyntaxError: missing ID_PATTERN at ''" + ], + "warning": [] + }, + { + "query": "from index | drop stringField, numberField, dateField", + "error": [], + "warning": [] + }, + { + "query": "from index | drop 4.5", + "error": [ + "SyntaxError: token recognition error at: '4'", + "SyntaxError: token recognition error at: '5'", + "SyntaxError: missing ID_PATTERN at '.'", + "SyntaxError: missing ID_PATTERN at ''" + ], + "warning": [] + }, + { + "query": "from index | drop missingField, numberField, dateField", + "error": [ + "Unknown column [missingField]" + ], + "warning": [] + }, + { + "query": "from index | drop `any#Char$Field`", + "error": [], + "warning": [] + }, + { + "query": "from index | drop s*", + "error": [], + "warning": [] + }, + { + "query": "from index | drop s**Field", + "error": [], + "warning": [] + }, + { + "query": "from index | drop *Field*", + "error": [], + "warning": [] + }, + { + "query": "from index | drop s*F*d", + "error": [], + "warning": [] + }, + { + "query": "from index | drop *Field", + "error": [], + "warning": [] + }, + { + "query": "from index | drop s*Field", + "error": [], + "warning": [] + }, + { + "query": "from index | drop string*Field", + "error": [], + "warning": [] + }, + { + "query": "from index | drop s*, n*", + "error": [], + "warning": [] + }, + { + "query": "from index | drop m*", + "error": [ + "Unknown column [m*]" + ], + "warning": [] + }, + { + "query": "from index | drop *m", + "error": [ + "Unknown column [*m]" + ], + "warning": [] + }, + { + "query": "from index | drop d*m", + "error": [ + "Unknown column [d*m]" + ], + "warning": [] + }, + { + "query": "from index | drop *", + "error": [ + "Removing all fields is not allowed [*]" + ], + "warning": [] + }, + { + "query": "from index | drop stringField, *", + "error": [ + "Removing all fields is not allowed [*]" + ], + "warning": [] + }, + { + "query": "from index | drop @timestamp", + "error": [], + "warning": [ + "Drop [@timestamp] will remove all time filters to the search results" + ] + }, + { + "query": "from index | drop stringField, @timestamp", + "error": [], + "warning": [ + "Drop [@timestamp] will remove all time filters to the search results" + ] + }, + { + "query": "FROM index | STATS ROUND(AVG(numberField * 1.5)), COUNT(*), MIN(numberField * 10) | DROP `MIN(numberField * 10)`", + "error": [], + "warning": [] + }, + { + "query": "FROM index | STATS COUNT(*), MIN(numberField * 10), MAX(numberField)| DROP `COUNT(*)`", + "error": [], + "warning": [] + }, + { + "query": "from a_index | mv_expand ", + "error": [ + "SyntaxError: missing {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} at ''" + ], + "warning": [] + }, + { + "query": "from a_index | mv_expand stringField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | mv_expand numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | mv_expand dateField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | mv_expand booleanField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | mv_expand ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | mv_expand numberField, b", + "error": [ + "SyntaxError: token recognition error at: ','", + "SyntaxError: extraneous input 'b' expecting " + ], + "warning": [] + }, + { + "query": "row a = \"a\" | mv_expand a", + "error": [], + "warning": [] + }, + { + "query": "row a = [1, 2, 3] | mv_expand a", + "error": [], + "warning": [] + }, + { + "query": "row a = [true, false] | mv_expand a", + "error": [], + "warning": [] + }, + { + "query": "row a = [\"a\", \"b\"] | mv_expand a", + "error": [], + "warning": [] + }, + { + "query": "from a_index | rename", + "error": [ + "SyntaxError: mismatched input '' expecting ID_PATTERN" + ], + "warning": [] + }, + { + "query": "from a_index | rename stringField", + "error": [ + "SyntaxError: mismatched input '' expecting 'as'" + ], + "warning": [] + }, + { + "query": "from a_index | rename a", + "error": [ + "SyntaxError: mismatched input '' expecting 'as'", + "Unknown column [a]" + ], + "warning": [] + }, + { + "query": "from a_index | rename stringField as", + "error": [ + "SyntaxError: missing ID_PATTERN at ''" + ], + "warning": [] + }, + { + "query": "from a_index | rename missingField as", + "error": [ + "SyntaxError: missing ID_PATTERN at ''", + "Unknown column [missingField]" + ], + "warning": [] + }, + { + "query": "from a_index | rename stringField as b", + "error": [], + "warning": [] + }, + { + "query": "from a_index | rename stringField AS b", + "error": [], + "warning": [] + }, + { + "query": "from a_index | rename stringField As b", + "error": [], + "warning": [] + }, + { + "query": "from a_index | rename stringField As b, b AS c", + "error": [], + "warning": [] + }, + { + "query": "from a_index | rename fn() as a", + "error": [ + "SyntaxError: token recognition error at: '('", + "SyntaxError: token recognition error at: ')'", + "Unknown column [fn]", + "Unknown column [a]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField + 1 | rename `numberField + 1` as a", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) | rename `avg(numberField)` as avg0", + "error": [], + "warning": [] + }, + { + "query": "from a_index |eval numberField + 1 | rename `numberField + 1` as ", + "error": [ + "SyntaxError: missing ID_PATTERN at ''" + ], + "warning": [] + }, + { + "query": "from a_index | rename s* as strings", + "error": [ + "Using wildcards (*) in RENAME is not allowed [s*]", + "Unknown column [strings]" + ], + "warning": [] + }, + { + "query": "row a = 10 | rename a as `this``is fine`", + "error": [], + "warning": [] + }, + { + "query": "row a = 10 | rename a as this is fine", + "error": [ + "SyntaxError: mismatched input 'is' expecting " + ], + "warning": [] + }, + { + "query": "from a_index | dissect", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField", + "error": [ + "SyntaxError: missing STRING at ''" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField 2", + "error": [ + "SyntaxError: mismatched input '2' expecting STRING" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField .", + "error": [ + "SyntaxError: mismatched input '' expecting {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + "Unknown column [stringField.]" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField %a", + "error": [ + "SyntaxError: mismatched input '%' expecting STRING", + "SyntaxError: mismatched input '' expecting '='" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField \"%{firstWord}\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | dissect numberField \"%{firstWord}\"", + "error": [ + "DISSECT only supports string type values, found [numberField] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField \"%{firstWord}\" option ", + "error": [ + "SyntaxError: mismatched input '' expecting '='" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField \"%{firstWord}\" option = ", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', 'null', '?', 'true', '+', '-', OPENING_BRACKET}", + "Invalid option for DISSECT: [option]" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField \"%{firstWord}\" option = 1", + "error": [ + "Invalid option for DISSECT: [option]" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField \"%{firstWord}\" append_separator = \"-\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | dissect stringField \"%{firstWord}\" ignore_missing = true", + "error": [ + "Invalid option for DISSECT: [ignore_missing]" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField \"%{firstWord}\" append_separator = true", + "error": [ + "Invalid value for DISSECT append_separator: expected a string, but was [true]" + ], + "warning": [] + }, + { + "query": "from a_index | dissect stringField \"%{firstWord}\" | keep firstWord", + "error": [], + "warning": [] + }, + { + "query": "from a_index | grok", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | grok stringField", + "error": [ + "SyntaxError: missing STRING at ''" + ], + "warning": [] + }, + { + "query": "from a_index | grok stringField 2", + "error": [ + "SyntaxError: mismatched input '2' expecting STRING" + ], + "warning": [] + }, + { + "query": "from a_index | grok stringField .", + "error": [ + "SyntaxError: mismatched input '' expecting {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + "Unknown column [stringField.]" + ], + "warning": [] + }, + { + "query": "from a_index | grok stringField %a", + "error": [ + "SyntaxError: mismatched input '%' expecting STRING" + ], + "warning": [] + }, + { + "query": "from a_index | grok stringField \"%{firstWord}\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | grok numberField \"%{firstWord}\"", + "error": [ + "GROK only supports string type values, found [numberField] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | grok stringField \"%{firstWord}\" | keep firstWord", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where b", + "error": [ + "Unknown column [b]" + ], + "warning": [] + }, + { + "query": "from a_index | where true", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT true", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where false", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT false", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT 1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where +1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT +1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 * 1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT 1 * 1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where -1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT -1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 / 1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT 1 / 1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1.0 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT 1.0 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1.5 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT 1.5 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where (numberField > 0)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where (NOT (numberField > 0))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField > 0", + "error": [ + "Argument of [>] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where numberField >= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT numberField >= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where (numberField >= 0)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where (NOT (numberField >= 0))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 >= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField >= 0", + "error": [ + "Argument of [>=] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where numberField < 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT numberField < 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where (numberField < 0)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where (NOT (numberField < 0))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 < 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField < 0", + "error": [ + "Argument of [<] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where numberField <= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT numberField <= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where (numberField <= 0)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where (NOT (numberField <= 0))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 <= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField <= 0", + "error": [ + "Argument of [<=] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where numberField == 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT numberField == 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where (numberField == 0)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where (NOT (numberField == 0))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 == 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField == 0", + "error": [ + "Argument of [==] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where - numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where - round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + - numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 - numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where - numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where - round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + - numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 - numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where + numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where + round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + + numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where + numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where + round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + + numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where not booleanField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where -- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where -- round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + -- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 -- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where -+ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where -+ round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + -+ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 -+ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where +- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where +- round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + +- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 +- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ++ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ++ round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + ++ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 ++ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where not not booleanField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where --- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where --- round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + --- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 --- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where -+- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where -+- round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + -+- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 -+- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where +-+ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where +-+ round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + +-+ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 +-+ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where +++ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where +++ round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + +++ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 +++ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where not not not booleanField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ---- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ---- round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + ---- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 ---- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where -+-+ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where -+-+ round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + -+-+ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 -+-+ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where +-+- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where +-+- round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + +-+- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 +-+- numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ++++ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ++++ round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 + ++++ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where 1 ++++ numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where not not not not booleanField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where *+ numberField", + "error": [ + "SyntaxError: extraneous input '*' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | where /+ numberField", + "error": [ + "SyntaxError: extraneous input '/' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | where %+ numberField", + "error": [ + "SyntaxError: extraneous input '%' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | where numberField =~ 0", + "error": [ + "Argument of [=~] must be [string], found value [numberField] type [number]", + "Argument of [=~] must be [string], found value [0] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where NOT numberField =~ 0", + "error": [ + "Argument of [=~] must be [string], found value [numberField] type [number]", + "Argument of [=~] must be [string], found value [0] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where (numberField =~ 0)", + "error": [ + "Argument of [=~] must be [string], found value [numberField] type [number]", + "Argument of [=~] must be [string], found value [0] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where (NOT (numberField =~ 0))", + "error": [ + "Argument of [=~] must be [string], found value [numberField] type [number]", + "Argument of [=~] must be [string], found value [0] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where 1 =~ 0", + "error": [ + "Argument of [=~] must be [string], found value [1] type [number]", + "Argument of [=~] must be [string], found value [0] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval stringField =~ 0", + "error": [ + "Argument of [=~] must be [string], found value [0] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where stringField like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where stringField NOT like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT stringField like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT stringField NOT like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField like \"?a\"", + "error": [ + "Argument of [like] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where numberField NOT like \"?a\"", + "error": [ + "Argument of [not_like] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where NOT numberField like \"?a\"", + "error": [ + "Argument of [like] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where NOT numberField NOT like \"?a\"", + "error": [ + "Argument of [not_like] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where stringField rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where stringField NOT rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT stringField rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where NOT stringField NOT rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField rlike \"?a\"", + "error": [ + "Argument of [rlike] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where numberField NOT rlike \"?a\"", + "error": [ + "Argument of [not_rlike] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where NOT numberField rlike \"?a\"", + "error": [ + "Argument of [rlike] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where NOT numberField NOT rlike \"?a\"", + "error": [ + "Argument of [not_rlike] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where cidr_match(ipField)", + "error": [ + "Error: [cidr_match] function expects at least 2 arguments, got 1." + ], + "warning": [] + }, + { + "query": "from a_index | eval cidr = \"172.0.0.1/30\" | where cidr_match(ipField, \"172.0.0.1/30\", cidr)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where numberField Is nOt NuLL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where dateField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where dateField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where dateField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where dateField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where dateField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where dateField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where dateField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where dateField Is nOt NuLL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where booleanField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where booleanField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where booleanField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where booleanField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where booleanField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where booleanField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where booleanField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where booleanField Is nOt NuLL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ipField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ipField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ipField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ipField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ipField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ipField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ipField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ipField Is nOt NuLL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where stringField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where stringField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where stringField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where stringField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where stringField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where stringField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where stringField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where stringField Is nOt NuLL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where cartesianPointField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where cartesianPointField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where cartesianPointField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where cartesianPointField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where cartesianPointField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where cartesianPointField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where cartesianPointField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where cartesianPointField Is nOt NuLL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where geoPointField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where geoPointField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where geoPointField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where geoPointField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where geoPointField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where geoPointField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where geoPointField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where geoPointField Is nOt NuLL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where avg(numberField)", + "error": [ + "WHERE does not support function avg" + ], + "warning": [] + }, + { + "query": "from a_index | where avg(numberField) > 0", + "error": [ + "WHERE does not support function avg" + ], + "warning": [] + }, + { + "query": "from a_index | where max(numberField)", + "error": [ + "WHERE does not support function max" + ], + "warning": [] + }, + { + "query": "from a_index | where max(numberField) > 0", + "error": [ + "WHERE does not support function max" + ], + "warning": [] + }, + { + "query": "from a_index | where min(numberField)", + "error": [ + "WHERE does not support function min" + ], + "warning": [] + }, + { + "query": "from a_index | where min(numberField) > 0", + "error": [ + "WHERE does not support function min" + ], + "warning": [] + }, + { + "query": "from a_index | where sum(numberField)", + "error": [ + "WHERE does not support function sum" + ], + "warning": [] + }, + { + "query": "from a_index | where sum(numberField) > 0", + "error": [ + "WHERE does not support function sum" + ], + "warning": [] + }, + { + "query": "from a_index | where median(numberField)", + "error": [ + "WHERE does not support function median" + ], + "warning": [] + }, + { + "query": "from a_index | where median(numberField) > 0", + "error": [ + "WHERE does not support function median" + ], + "warning": [] + }, + { + "query": "from a_index | where median_absolute_deviation(numberField)", + "error": [ + "WHERE does not support function median_absolute_deviation" + ], + "warning": [] + }, + { + "query": "from a_index | where median_absolute_deviation(numberField) > 0", + "error": [ + "WHERE does not support function median_absolute_deviation" + ], + "warning": [] + }, + { + "query": "from a_index | where percentile(numberField, 5)", + "error": [ + "WHERE does not support function percentile" + ], + "warning": [] + }, + { + "query": "from a_index | where percentile(numberField, 5) > 0", + "error": [ + "WHERE does not support function percentile" + ], + "warning": [] + }, + { + "query": "from a_index | where count(stringField)", + "error": [ + "WHERE does not support function count" + ], + "warning": [] + }, + { + "query": "from a_index | where count(stringField) > 0", + "error": [ + "WHERE does not support function count" + ], + "warning": [] + }, + { + "query": "from a_index | where count_distinct(stringField, numberField)", + "error": [ + "WHERE does not support function count_distinct" + ], + "warning": [] + }, + { + "query": "from a_index | where count_distinct(stringField, numberField) > 0", + "error": [ + "WHERE does not support function count_distinct" + ], + "warning": [] + }, + { + "query": "from a_index | where abs(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where abs(stringField) > 0", + "error": [ + "Argument of [abs] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where acos(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where acos(stringField) > 0", + "error": [ + "Argument of [acos] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where asin(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where asin(stringField) > 0", + "error": [ + "Argument of [asin] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where atan(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where atan(stringField) > 0", + "error": [ + "Argument of [atan] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where atan2(numberField, numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where atan2(stringField, stringField) > 0", + "error": [ + "Argument of [atan2] must be [number], found value [stringField] type [string]", + "Argument of [atan2] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where ceil(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where ceil(stringField) > 0", + "error": [ + "Argument of [ceil] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(concat(stringField, stringField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(concat(numberField, numberField)) > 0", + "error": [ + "Argument of [concat] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where cos(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where cos(stringField) > 0", + "error": [ + "Argument of [cos] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where cosh(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where cosh(stringField) > 0", + "error": [ + "Argument of [cosh] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where e() > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where e() > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where floor(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where floor(stringField) > 0", + "error": [ + "Argument of [floor] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(left(stringField, numberField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(left(numberField, stringField)) > 0", + "error": [ + "Argument of [left] must be [string], found value [numberField] type [number]", + "Argument of [left] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(stringField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(numberField) > 0", + "error": [ + "Argument of [length] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where log(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where log(stringField, stringField) > 0", + "error": [ + "Argument of [log] must be [number], found value [stringField] type [string]", + "Argument of [log] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where log10(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where log10(stringField) > 0", + "error": [ + "Argument of [log10] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(ltrim(stringField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(ltrim(numberField)) > 0", + "error": [ + "Argument of [ltrim] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where mv_avg(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where mv_avg(stringField) > 0", + "error": [ + "Argument of [mv_avg] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(mv_concat(stringField, stringField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(mv_concat(numberField, numberField)) > 0", + "error": [ + "Argument of [mv_concat] must be [string], found value [numberField] type [number]", + "Argument of [mv_concat] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where mv_median(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where mv_median(stringField) > 0", + "error": [ + "Argument of [mv_median] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where mv_sum(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where mv_sum(stringField) > 0", + "error": [ + "Argument of [mv_sum] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where pi() > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where pi() > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where pow(numberField, numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where pow(stringField, stringField) > 0", + "error": [ + "Argument of [pow] must be [number], found value [stringField] type [string]", + "Argument of [pow] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(replace(stringField, stringField, stringField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(replace(numberField, numberField, numberField)) > 0", + "error": [ + "Argument of [replace] must be [string], found value [numberField] type [number]", + "Argument of [replace] must be [string], found value [numberField] type [number]", + "Argument of [replace] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(right(stringField, numberField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(right(numberField, stringField)) > 0", + "error": [ + "Argument of [right] must be [string], found value [numberField] type [number]", + "Argument of [right] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where round(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where round(stringField, stringField) > 0", + "error": [ + "Argument of [round] must be [number], found value [stringField] type [string]", + "Argument of [round] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(rtrim(stringField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(rtrim(numberField)) > 0", + "error": [ + "Argument of [rtrim] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where sin(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where sin(stringField) > 0", + "error": [ + "Argument of [sin] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where sinh(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where sinh(stringField) > 0", + "error": [ + "Argument of [sinh] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(split(stringField, stringField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(split(numberField, numberField)) > 0", + "error": [ + "Argument of [split] must be [string], found value [numberField] type [number]", + "Argument of [split] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where sqrt(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where sqrt(stringField) > 0", + "error": [ + "Argument of [sqrt] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(substring(stringField, numberField, numberField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(substring(numberField, stringField, stringField)) > 0", + "error": [ + "Argument of [substring] must be [string], found value [numberField] type [number]", + "Argument of [substring] must be [number], found value [stringField] type [string]", + "Argument of [substring] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where tan(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where tan(stringField) > 0", + "error": [ + "Argument of [tan] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where tanh(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where tanh(stringField) > 0", + "error": [ + "Argument of [tanh] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where tau() > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where tau() > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where to_degrees(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where to_degrees(stringField) > 0", + "error": [ + "Argument of [to_degrees] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(to_lower(stringField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(to_lower(numberField)) > 0", + "error": [ + "Argument of [to_lower] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where to_radians(numberField) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where to_radians(stringField) > 0", + "error": [ + "Argument of [to_radians] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(to_upper(stringField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(to_upper(numberField)) > 0", + "error": [ + "Argument of [to_upper] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | where length(trim(stringField)) > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | where length(trim(numberField)) > 0", + "error": [ + "Argument of [trim] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval ", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | eval stringField ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval b = stringField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField + 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField + ", + "error": [ + "SyntaxError: no viable alternative at input 'numberField + '" + ], + "warning": [] + }, + { + "query": "from a_index | eval stringField + 1", + "error": [ + "Argument of [+] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval a=b", + "error": [ + "Unknown column [b]" + ], + "warning": [] + }, + { + "query": "from a_index | eval a=b, ", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + "Unknown column [b]" + ], + "warning": [] + }, + { + "query": "from a_index | eval a=round", + "error": [ + "Unknown column [round]" + ], + "warning": [] + }, + { + "query": "from a_index | eval a=round(", + "error": [ + "SyntaxError: no viable alternative at input 'round('" + ], + "warning": [] + }, + { + "query": "from a_index | eval a=round(numberField) ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=round(numberField), ", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | eval a=round(numberField) + round(numberField) ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=round(numberField) + round(stringField) ", + "error": [ + "Argument of [round] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval a=round(numberField) + round(stringField), numberField ", + "error": [ + "Argument of [round] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval a=round(numberField) + round(numberField), numberField ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=round(numberField) + round(numberField), b = numberField ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=[1, 2, 3]", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=[true, false]", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=[\"a\", \"b\"]", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval dateField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval dateField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval dateField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval dateField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval dateField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval dateField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval dateField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval booleanField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval booleanField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval booleanField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval booleanField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval booleanField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval booleanField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval booleanField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ipField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ipField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ipField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ipField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ipField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ipField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ipField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cartesianPointField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cartesianPointField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cartesianPointField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cartesianPointField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cartesianPointField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cartesianPointField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cartesianPointField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval geoPointField IS NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval geoPointField IS null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval geoPointField is null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval geoPointField is NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval geoPointField IS NOT NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval geoPointField IS NOT null", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval geoPointField IS not NULL", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval - numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=- round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + - numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 - numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval - numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=- round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + - numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 - numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval + numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+ round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + + numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval + numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+ round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + + numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval not booleanField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval -- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=-- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=-- round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + -- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 -- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval -+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=-+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=-+ round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + -+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 -+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval +- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+- round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + +- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 +- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=++ round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + ++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 ++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval not not booleanField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval --- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=--- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=--- round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + --- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 --- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval -+- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=-+- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=-+- round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + -+- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 -+- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval +-+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+-+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+-+ round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + +-+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 +-+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval +++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+++ round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + +++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 +++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval not not not booleanField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ---- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=---- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=---- round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + ---- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 ---- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval -+-+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=-+-+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=-+-+ round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + -+-+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 -+-+ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval +-+- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+-+- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=+-+- round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + +-+- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 +-+- numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ++++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=++++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval a=++++ round(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + ++++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 ++++ numberField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval not not not not booleanField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval *+ numberField", + "error": [ + "SyntaxError: extraneous input '*' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | eval /+ numberField", + "error": [ + "SyntaxError: extraneous input '/' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | eval %+ numberField", + "error": [ + "SyntaxError: extraneous input '%' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = avg(numberField)", + "error": [ + "EVAL does not support function avg" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = avg(numberField) > 0", + "error": [ + "EVAL does not support function avg" + ], + "warning": [] + }, + { + "query": "from a_index | eval avg(numberField)", + "error": [ + "EVAL does not support function avg" + ], + "warning": [] + }, + { + "query": "from a_index | eval avg(numberField) > 0", + "error": [ + "EVAL does not support function avg" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = max(numberField)", + "error": [ + "EVAL does not support function max" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = max(numberField) > 0", + "error": [ + "EVAL does not support function max" + ], + "warning": [] + }, + { + "query": "from a_index | eval max(numberField)", + "error": [ + "EVAL does not support function max" + ], + "warning": [] + }, + { + "query": "from a_index | eval max(numberField) > 0", + "error": [ + "EVAL does not support function max" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = min(numberField)", + "error": [ + "EVAL does not support function min" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = min(numberField) > 0", + "error": [ + "EVAL does not support function min" + ], + "warning": [] + }, + { + "query": "from a_index | eval min(numberField)", + "error": [ + "EVAL does not support function min" + ], + "warning": [] + }, + { + "query": "from a_index | eval min(numberField) > 0", + "error": [ + "EVAL does not support function min" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = sum(numberField)", + "error": [ + "EVAL does not support function sum" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = sum(numberField) > 0", + "error": [ + "EVAL does not support function sum" + ], + "warning": [] + }, + { + "query": "from a_index | eval sum(numberField)", + "error": [ + "EVAL does not support function sum" + ], + "warning": [] + }, + { + "query": "from a_index | eval sum(numberField) > 0", + "error": [ + "EVAL does not support function sum" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = median(numberField)", + "error": [ + "EVAL does not support function median" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = median(numberField) > 0", + "error": [ + "EVAL does not support function median" + ], + "warning": [] + }, + { + "query": "from a_index | eval median(numberField)", + "error": [ + "EVAL does not support function median" + ], + "warning": [] + }, + { + "query": "from a_index | eval median(numberField) > 0", + "error": [ + "EVAL does not support function median" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = median_absolute_deviation(numberField)", + "error": [ + "EVAL does not support function median_absolute_deviation" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = median_absolute_deviation(numberField) > 0", + "error": [ + "EVAL does not support function median_absolute_deviation" + ], + "warning": [] + }, + { + "query": "from a_index | eval median_absolute_deviation(numberField)", + "error": [ + "EVAL does not support function median_absolute_deviation" + ], + "warning": [] + }, + { + "query": "from a_index | eval median_absolute_deviation(numberField) > 0", + "error": [ + "EVAL does not support function median_absolute_deviation" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = percentile(numberField, 5)", + "error": [ + "EVAL does not support function percentile" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = percentile(numberField, 5) > 0", + "error": [ + "EVAL does not support function percentile" + ], + "warning": [] + }, + { + "query": "from a_index | eval percentile(numberField, 5)", + "error": [ + "EVAL does not support function percentile" + ], + "warning": [] + }, + { + "query": "from a_index | eval percentile(numberField, 5) > 0", + "error": [ + "EVAL does not support function percentile" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = count(stringField)", + "error": [ + "EVAL does not support function count" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = count(stringField) > 0", + "error": [ + "EVAL does not support function count" + ], + "warning": [] + }, + { + "query": "from a_index | eval count(stringField)", + "error": [ + "EVAL does not support function count" + ], + "warning": [] + }, + { + "query": "from a_index | eval count(stringField) > 0", + "error": [ + "EVAL does not support function count" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = count_distinct(stringField, numberField)", + "error": [ + "EVAL does not support function count_distinct" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = count_distinct(stringField, numberField) > 0", + "error": [ + "EVAL does not support function count_distinct" + ], + "warning": [] + }, + { + "query": "from a_index | eval count_distinct(stringField, numberField)", + "error": [ + "EVAL does not support function count_distinct" + ], + "warning": [] + }, + { + "query": "from a_index | eval count_distinct(stringField, numberField) > 0", + "error": [ + "EVAL does not support function count_distinct" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = st_centroid(cartesianPointField)", + "error": [ + "EVAL does not support function st_centroid" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = st_centroid(cartesianPointField) > 0", + "error": [ + "EVAL does not support function st_centroid" + ], + "warning": [] + }, + { + "query": "from a_index | eval st_centroid(cartesianPointField)", + "error": [ + "EVAL does not support function st_centroid" + ], + "warning": [] + }, + { + "query": "from a_index | eval st_centroid(cartesianPointField) > 0", + "error": [ + "EVAL does not support function st_centroid" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = st_centroid(geoPointField)", + "error": [ + "EVAL does not support function st_centroid" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = st_centroid(geoPointField) > 0", + "error": [ + "EVAL does not support function st_centroid" + ], + "warning": [] + }, + { + "query": "from a_index | eval st_centroid(geoPointField)", + "error": [ + "EVAL does not support function st_centroid" + ], + "warning": [] + }, + { + "query": "from a_index | eval st_centroid(geoPointField) > 0", + "error": [ + "EVAL does not support function st_centroid" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = abs(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval abs(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = abs(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval abs(stringField)", + "error": [ + "Argument of [abs] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval abs(numberField, extraArg)", + "error": [ + "Error: [abs] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = abs(*)", + "error": [ + "Using wildcards (*) in abs is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = acos(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval acos(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = acos(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval acos(stringField)", + "error": [ + "Argument of [acos] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval acos(numberField, extraArg)", + "error": [ + "Error: [acos] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = acos(*)", + "error": [ + "Using wildcards (*) in acos is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = asin(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval asin(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = asin(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval asin(stringField)", + "error": [ + "Argument of [asin] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval asin(numberField, extraArg)", + "error": [ + "Error: [asin] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = asin(*)", + "error": [ + "Using wildcards (*) in asin is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = atan(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval atan(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = atan(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval atan(stringField)", + "error": [ + "Argument of [atan] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval atan(numberField, extraArg)", + "error": [ + "Error: [atan] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = atan(*)", + "error": [ + "Using wildcards (*) in atan is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = atan2(numberField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval atan2(numberField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = atan2(to_integer(stringField), to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval atan2(stringField, stringField)", + "error": [ + "Argument of [atan2] must be [number], found value [stringField] type [string]", + "Argument of [atan2] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval atan2(numberField, numberField, extraArg)", + "error": [ + "Error: [atan2] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = auto_bucket(dateField, numberField, \"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval auto_bucket(dateField, numberField, \"a\", \"a\")", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval auto_bucket(dateField, numberField, stringField, stringField)", + "error": [ + "Argument of [auto_bucket] must be a constant, received [stringField]", + "Argument of [auto_bucket] must be a constant, received [stringField]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = auto_bucket(dateField, numberField, 5, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval auto_bucket(dateField, numberField, 5, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval auto_bucket(dateField, numberField, numberField, numberField)", + "error": [ + "Argument of [auto_bucket] must be a constant, received [numberField]", + "Argument of [auto_bucket] must be a constant, received [numberField]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = case(booleanField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval case(booleanField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = ceil(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ceil(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = ceil(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ceil(stringField)", + "error": [ + "Argument of [ceil] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval ceil(numberField, extraArg)", + "error": [ + "Error: [ceil] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = ceil(*)", + "error": [ + "Using wildcards (*) in ceil is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = cidr_match(ipField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cidr_match(ipField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = cidr_match(to_ip(stringField), to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cidr_match(stringField, numberField)", + "error": [ + "Argument of [cidr_match] must be [ip], found value [stringField] type [string]", + "Argument of [cidr_match] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = coalesce(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval coalesce(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = concat(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval concat(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = concat(to_string(stringField), to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval concat(numberField, numberField)", + "error": [ + "Argument of [concat] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = cos(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cos(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = cos(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cos(stringField)", + "error": [ + "Argument of [cos] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval cos(numberField, extraArg)", + "error": [ + "Error: [cos] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = cos(*)", + "error": [ + "Using wildcards (*) in cos is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = cosh(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cosh(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = cosh(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval cosh(stringField)", + "error": [ + "Argument of [cosh] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval cosh(numberField, extraArg)", + "error": [ + "Error: [cosh] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = cosh(*)", + "error": [ + "Using wildcards (*) in cosh is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", dateField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", dateField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", to_datetime(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval date_extract(stringField, stringField)", + "error": [ + "Argument of [date_extract] must be [chrono_literal], found value [stringField] type [string]", + "Argument of [date_extract] must be [date], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", dateField, extraArg)", + "error": [ + "Error: [date_extract] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = date_format(dateField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval date_format(dateField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = date_format(to_datetime(stringField), to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval date_format(stringField, numberField)", + "error": [ + "Argument of [date_format] must be [date], found value [stringField] type [string]", + "Argument of [date_format] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval date_format(dateField, stringField, extraArg)", + "error": [ + "Error: [date_format] function expects no more than 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = date_parse(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval date_parse(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = date_parse(to_string(stringField), to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval date_parse(numberField, numberField)", + "error": [ + "Argument of [date_parse] must be [string], found value [numberField] type [number]", + "Argument of [date_parse] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval date_parse(stringField, stringField, extraArg)", + "error": [ + "Error: [date_parse] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = date_trunc(1 year, dateField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval date_trunc(1 year, dateField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = date_trunc(1 year, to_datetime(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval date_trunc(stringField, stringField)", + "error": [ + "Argument of [date_trunc] must be [time_literal], found value [stringField] type [string]", + "Argument of [date_trunc] must be [date], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval date_trunc(1 year, dateField, extraArg)", + "error": [ + "Error: [date_trunc] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = e()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval e()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = e()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval e()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval e(extraArg)", + "error": [ + "Error: [e] function expects exactly 0 arguments, got 1." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = ends_with(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ends_with(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = ends_with(to_string(stringField), to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ends_with(numberField, numberField)", + "error": [ + "Argument of [ends_with] must be [string], found value [numberField] type [number]", + "Argument of [ends_with] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval ends_with(stringField, stringField, extraArg)", + "error": [ + "Error: [ends_with] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = floor(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval floor(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = floor(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval floor(stringField)", + "error": [ + "Argument of [floor] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval floor(numberField, extraArg)", + "error": [ + "Error: [floor] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = floor(*)", + "error": [ + "Using wildcards (*) in floor is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = greatest(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval greatest(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = least(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval least(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = left(stringField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval left(stringField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = left(to_string(stringField), to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval left(numberField, stringField)", + "error": [ + "Argument of [left] must be [string], found value [numberField] type [number]", + "Argument of [left] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval left(stringField, numberField, extraArg)", + "error": [ + "Error: [left] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = length(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval length(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = length(to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval length(numberField)", + "error": [ + "Argument of [length] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval length(stringField, extraArg)", + "error": [ + "Error: [length] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = length(*)", + "error": [ + "Using wildcards (*) in length is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = log(numberField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval log(numberField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = log(to_integer(stringField), to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval log(stringField, stringField)", + "error": [ + "Argument of [log] must be [number], found value [stringField] type [string]", + "Argument of [log] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval log(numberField, numberField, extraArg)", + "error": [ + "Error: [log] function expects no more than 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = log10(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval log10(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = log10(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval log10(stringField)", + "error": [ + "Argument of [log10] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval log10(numberField, extraArg)", + "error": [ + "Error: [log10] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = log10(*)", + "error": [ + "Using wildcards (*) in log10 is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = ltrim(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ltrim(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = ltrim(to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval ltrim(numberField)", + "error": [ + "Argument of [ltrim] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval ltrim(stringField, extraArg)", + "error": [ + "Error: [ltrim] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = ltrim(*)", + "error": [ + "Using wildcards (*) in ltrim is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_avg(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_avg(stringField)", + "error": [ + "Argument of [mv_avg] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval mv_avg(numberField, extraArg)", + "error": [ + "Error: [mv_avg] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_avg(*)", + "error": [ + "Using wildcards (*) in mv_avg is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_concat(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_concat(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_concat(to_string(stringField), to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_concat(numberField, numberField)", + "error": [ + "Argument of [mv_concat] must be [string], found value [numberField] type [number]", + "Argument of [mv_concat] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval mv_concat(stringField, stringField, extraArg)", + "error": [ + "Error: [mv_concat] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_count(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_count(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_count(*)", + "error": [ + "Using wildcards (*) in mv_count is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_dedupe(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_dedupe(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_dedupe(*)", + "error": [ + "Using wildcards (*) in mv_dedupe is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_first(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_first(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_first(*)", + "error": [ + "Using wildcards (*) in mv_first is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_last(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_last(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_last(*)", + "error": [ + "Using wildcards (*) in mv_last is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_max(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_max(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_max(*)", + "error": [ + "Using wildcards (*) in mv_max is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_median(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_median(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_median(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_median(stringField)", + "error": [ + "Argument of [mv_median] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval mv_median(numberField, extraArg)", + "error": [ + "Error: [mv_median] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_median(*)", + "error": [ + "Using wildcards (*) in mv_median is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_min(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_min(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_min(*)", + "error": [ + "Using wildcards (*) in mv_min is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_sum(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_sum(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_sum(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval mv_sum(stringField)", + "error": [ + "Argument of [mv_sum] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval mv_sum(numberField, extraArg)", + "error": [ + "Error: [mv_sum] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = mv_sum(*)", + "error": [ + "Using wildcards (*) in mv_sum is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval now()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = now()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval now()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval now(extraArg)", + "error": [ + "Error: [now] function expects exactly 0 arguments, got 1." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = pi()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval pi()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = pi()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval pi()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval pi(extraArg)", + "error": [ + "Error: [pi] function expects exactly 0 arguments, got 1." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = pow(numberField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval pow(numberField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = pow(to_integer(stringField), to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval pow(stringField, stringField)", + "error": [ + "Argument of [pow] must be [number], found value [stringField] type [string]", + "Argument of [pow] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval pow(numberField, numberField, extraArg)", + "error": [ + "Error: [pow] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = replace(stringField, stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval replace(stringField, stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = replace(to_string(stringField), to_string(stringField), to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval replace(numberField, numberField, numberField)", + "error": [ + "Argument of [replace] must be [string], found value [numberField] type [number]", + "Argument of [replace] must be [string], found value [numberField] type [number]", + "Argument of [replace] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval replace(stringField, stringField, stringField, extraArg)", + "error": [ + "Error: [replace] function expects exactly 3 arguments, got 4." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = right(stringField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval right(stringField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = right(to_string(stringField), to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval right(numberField, stringField)", + "error": [ + "Argument of [right] must be [string], found value [numberField] type [number]", + "Argument of [right] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval right(stringField, numberField, extraArg)", + "error": [ + "Error: [right] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = round(numberField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval round(numberField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = round(to_integer(stringField), to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval round(stringField, stringField)", + "error": [ + "Argument of [round] must be [number], found value [stringField] type [string]", + "Argument of [round] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval round(numberField, numberField, extraArg)", + "error": [ + "Error: [round] function expects no more than 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = rtrim(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval rtrim(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = rtrim(to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval rtrim(numberField)", + "error": [ + "Argument of [rtrim] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval rtrim(stringField, extraArg)", + "error": [ + "Error: [rtrim] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = rtrim(*)", + "error": [ + "Using wildcards (*) in rtrim is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = sin(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval sin(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = sin(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval sin(stringField)", + "error": [ + "Argument of [sin] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval sin(numberField, extraArg)", + "error": [ + "Error: [sin] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = sin(*)", + "error": [ + "Using wildcards (*) in sin is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = sinh(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval sinh(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = sinh(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval sinh(stringField)", + "error": [ + "Argument of [sinh] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval sinh(numberField, extraArg)", + "error": [ + "Error: [sinh] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = sinh(*)", + "error": [ + "Using wildcards (*) in sinh is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = split(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval split(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = split(to_string(stringField), to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval split(numberField, numberField)", + "error": [ + "Argument of [split] must be [string], found value [numberField] type [number]", + "Argument of [split] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval split(stringField, stringField, extraArg)", + "error": [ + "Error: [split] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = sqrt(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval sqrt(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = sqrt(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval sqrt(stringField)", + "error": [ + "Argument of [sqrt] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval sqrt(numberField, extraArg)", + "error": [ + "Error: [sqrt] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = sqrt(*)", + "error": [ + "Using wildcards (*) in sqrt is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = starts_with(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval starts_with(stringField, stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = starts_with(to_string(stringField), to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval starts_with(numberField, numberField)", + "error": [ + "Argument of [starts_with] must be [string], found value [numberField] type [number]", + "Argument of [starts_with] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval starts_with(stringField, stringField, extraArg)", + "error": [ + "Error: [starts_with] function expects exactly 2 arguments, got 3." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = substring(stringField, numberField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval substring(stringField, numberField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = substring(to_string(stringField), to_integer(stringField), to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval substring(numberField, stringField, stringField)", + "error": [ + "Argument of [substring] must be [string], found value [numberField] type [number]", + "Argument of [substring] must be [number], found value [stringField] type [string]", + "Argument of [substring] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval substring(stringField, numberField, numberField, extraArg)", + "error": [ + "Error: [substring] function expects exactly 3 arguments, got 4." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = tan(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval tan(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = tan(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval tan(stringField)", + "error": [ + "Argument of [tan] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval tan(numberField, extraArg)", + "error": [ + "Error: [tan] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = tan(*)", + "error": [ + "Using wildcards (*) in tan is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = tanh(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval tanh(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = tanh(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval tanh(stringField)", + "error": [ + "Argument of [tanh] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval tanh(numberField, extraArg)", + "error": [ + "Error: [tanh] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = tanh(*)", + "error": [ + "Using wildcards (*) in tanh is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = tau()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval tau()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = tau()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval tau()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval tau(extraArg)", + "error": [ + "Error: [tau] function expects exactly 0 arguments, got 1." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_boolean(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_boolean(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_bool(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_boolean(*)", + "error": [ + "Using wildcards (*) in to_boolean is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_cartesianpoint(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_cartesianpoint(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_cartesianpoint(*)", + "error": [ + "Using wildcards (*) in to_cartesianpoint is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_cartesianshape(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_cartesianshape(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_cartesianshape(*)", + "error": [ + "Using wildcards (*) in to_cartesianshape is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_datetime(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_datetime(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_dt(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_datetime(*)", + "error": [ + "Using wildcards (*) in to_datetime is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_degrees(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_degrees(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_degrees(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_degrees(stringField)", + "error": [ + "Argument of [to_degrees] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval to_degrees(numberField, extraArg)", + "error": [ + "Error: [to_degrees] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_degrees(*)", + "error": [ + "Using wildcards (*) in to_degrees is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_double(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_double(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_dbl(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_double(*)", + "error": [ + "Using wildcards (*) in to_double is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_geopoint(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_geopoint(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_geopoint(*)", + "error": [ + "Using wildcards (*) in to_geopoint is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_geoshape(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_geoshape(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_geoshape(*)", + "error": [ + "Using wildcards (*) in to_geoshape is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_integer(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_integer(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_int(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_integer(*)", + "error": [ + "Using wildcards (*) in to_integer is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_ip(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_ip(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_ip(*)", + "error": [ + "Using wildcards (*) in to_ip is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_long(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_long(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_long(*)", + "error": [ + "Using wildcards (*) in to_long is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_lower(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_lower(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_lower(to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_lower(numberField)", + "error": [ + "Argument of [to_lower] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval to_lower(stringField, extraArg)", + "error": [ + "Error: [to_lower] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_lower(*)", + "error": [ + "Using wildcards (*) in to_lower is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_radians(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_radians(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_radians(to_integer(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_radians(stringField)", + "error": [ + "Argument of [to_radians] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval to_radians(numberField, extraArg)", + "error": [ + "Error: [to_radians] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_radians(*)", + "error": [ + "Using wildcards (*) in to_radians is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_string(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_string(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_str(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_string(*)", + "error": [ + "Using wildcards (*) in to_string is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_unsigned_long(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_unsigned_long(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_ul(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_ulong(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_unsigned_long(*)", + "error": [ + "Using wildcards (*) in to_unsigned_long is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_upper(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_upper(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_upper(to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_upper(numberField)", + "error": [ + "Argument of [to_upper] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval to_upper(stringField, extraArg)", + "error": [ + "Error: [to_upper] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_upper(*)", + "error": [ + "Using wildcards (*) in to_upper is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_version(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_version(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_ver(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_version(*)", + "error": [ + "Using wildcards (*) in to_version is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = to_version(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval to_version(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_ver(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = to_version(*)", + "error": [ + "Using wildcards (*) in to_version is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = trim(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval trim(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = trim(to_string(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval trim(numberField)", + "error": [ + "Argument of [trim] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval trim(stringField, extraArg)", + "error": [ + "Error: [trim] function expects exactly one argument, got 2." + ], + "warning": [] + }, + { + "query": "from a_index | eval var = trim(*)", + "error": [ + "Using wildcards (*) in trim is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | eval log10(-1)", + "error": [], + "warning": [ + "Log of a negative number results in null: -1" + ] + }, + { + "query": "from a_index | eval log(-1)", + "error": [], + "warning": [ + "Log of a negative number results in null: -1" + ] + }, + { + "query": "from a_index | eval log(-1, 20)", + "error": [], + "warning": [ + "Log of a negative number results in null: -1" + ] + }, + { + "query": "from a_index | eval log(-1, -20)", + "error": [], + "warning": [ + "Log of a negative number results in null: -1", + "Log of a negative number results in null: -20" + ] + }, + { + "query": "from a_index | eval var0 = log(-1, -20)", + "error": [], + "warning": [ + "Log of a negative number results in null: -1", + "Log of a negative number results in null: -20" + ] + }, + { + "query": "from a_index | eval numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval NOT numberField > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (numberField > 0)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (NOT (numberField > 0))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 > 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField > 0", + "error": [ + "Argument of [>] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField >= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval NOT numberField >= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (numberField >= 0)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (NOT (numberField >= 0))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 >= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField >= 0", + "error": [ + "Argument of [>=] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField < 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval NOT numberField < 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (numberField < 0)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (NOT (numberField < 0))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 < 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField < 0", + "error": [ + "Argument of [<] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField <= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval NOT numberField <= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (numberField <= 0)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (NOT (numberField <= 0))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 <= 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField <= 0", + "error": [ + "Argument of [<=] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField == 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval NOT numberField == 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (numberField == 0)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (NOT (numberField == 0))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 == 0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField == 0", + "error": [ + "Argument of [==] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField + 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (numberField + 1)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 + 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField - 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (numberField - 1)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 - 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField * 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (numberField * 1)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 * 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField / 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (numberField / 1)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 / 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField % 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval (numberField % 1)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 % 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1/0", + "error": [], + "warning": [ + "Cannot divide by zero: 1/0" + ] + }, + { + "query": "from a_index | eval var = 1/0", + "error": [], + "warning": [ + "Cannot divide by zero: 1/0" + ] + }, + { + "query": "from a_index | eval 1 + 1/0", + "error": [], + "warning": [ + "Cannot divide by zero: 1/0" + ] + }, + { + "query": "from a_index | eval 1%0", + "error": [], + "warning": [ + "Module by zero can return null value: 1%0" + ] + }, + { + "query": "from a_index | eval var = 1%0", + "error": [], + "warning": [ + "Module by zero can return null value: 1%0" + ] + }, + { + "query": "from a_index | eval 1 + 1%0", + "error": [], + "warning": [ + "Module by zero can return null value: 1%0" + ] + }, + { + "query": "from a_index | eval stringField like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField NOT like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval NOT stringField like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval NOT stringField NOT like \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField like \"?a\"", + "error": [ + "Argument of [like] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField NOT like \"?a\"", + "error": [ + "Argument of [not_like] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval NOT numberField like \"?a\"", + "error": [ + "Argument of [like] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval NOT numberField NOT like \"?a\"", + "error": [ + "Argument of [not_like] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval stringField rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField NOT rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval NOT stringField rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval NOT stringField NOT rlike \"?a\"", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField rlike \"?a\"", + "error": [ + "Argument of [rlike] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField NOT rlike \"?a\"", + "error": [ + "Argument of [not_rlike] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval NOT numberField rlike \"?a\"", + "error": [ + "Argument of [rlike] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval NOT numberField NOT rlike \"?a\"", + "error": [ + "Argument of [not_rlike] must be [string], found value [numberField] type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 in (1, 2, 3)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField in (1, 2, 3)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField not in (1, 2, 3)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval numberField not in (1, 2, 3, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 in (1, 2, 3, round(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval \"a\" in (\"a\", \"b\", \"c\")", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField in (\"a\", \"b\", \"c\")", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField not in (\"a\", \"b\", \"c\")", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval stringField not in (\"a\", \"b\", \"c\", stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 in (\"a\", \"b\", \"c\")", + "error": [ + "Argument of [in] must be [number[]], found value [(\"a\", \"b\", \"c\")] type [(string, string, string)]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField in (\"a\", \"b\", \"c\")", + "error": [ + "Argument of [in] must be [number[]], found value [(\"a\", \"b\", \"c\")] type [(string, string, string)]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField not in (\"a\", \"b\", \"c\")", + "error": [ + "Argument of [not_in] must be [number[]], found value [(\"a\", \"b\", \"c\")] type [(string, string, string)]" + ], + "warning": [] + }, + { + "query": "from a_index | eval numberField not in (1, 2, 3, stringField)", + "error": [ + "Argument of [not_in] must be [number[]], found value [(1, 2, 3, stringField)] type [(number, number, number, string)]" + ], + "warning": [] + }, + { + "query": "from a_index | eval avg(numberField)", + "error": [ + "EVAL does not support function avg" + ], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) | eval `avg(numberField)` + 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval not", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + "Error: [not] function expects exactly one argument, got 0." + ], + "warning": [] + }, + { + "query": "from a_index | eval in", + "error": [ + "SyntaxError: mismatched input 'in' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | eval stringField in stringField", + "error": [ + "SyntaxError: missing '(' at 'stringField'", + "SyntaxError: mismatched input '' expecting {',', ')'}" + ], + "warning": [] + }, + { + "query": "from a_index | eval stringField in stringField)", + "error": [ + "SyntaxError: missing '(' at 'stringField'", + "Error: [in] function expects exactly 2 arguments, got 1." + ], + "warning": [] + }, + { + "query": "from a_index | eval stringField not in stringField", + "error": [ + "SyntaxError: missing '(' at 'stringField'", + "SyntaxError: mismatched input '' expecting {',', ')'}" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 anno", + "error": [ + "EVAL does not support [date_period] in expression [1 anno]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = 1 anno", + "error": [ + "Unexpected time interval qualifier: 'anno'" + ], + "warning": [] + }, + { + "query": "from a_index | eval now() + 1 anno", + "error": [ + "Unexpected time interval qualifier: 'anno'" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 year", + "error": [ + "EVAL does not support [date_period] in expression [1 year]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 year", + "error": [ + "EVAL does not support [date_period] in expression [1 year]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 year", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 year", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 YEAR", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Year", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 year", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 year + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 year] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 year", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 year] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 year", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 year] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 year", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 year] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 years", + "error": [ + "EVAL does not support [date_period] in expression [1 years]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 years", + "error": [ + "EVAL does not support [date_period] in expression [1 years]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 years", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 years", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 YEARS", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Years", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 years", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 years + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 years] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 years", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 years] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 years", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 years] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 years", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 years] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 month", + "error": [ + "EVAL does not support [date_period] in expression [1 month]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 month", + "error": [ + "EVAL does not support [date_period] in expression [1 month]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 month", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 month", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 MONTH", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Month", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 month", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 month + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 month] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 month", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 month] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 month", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 month] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 month", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 month] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 months", + "error": [ + "EVAL does not support [date_period] in expression [1 months]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 months", + "error": [ + "EVAL does not support [date_period] in expression [1 months]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 months", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 months", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 MONTHS", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Months", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 months", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 months + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 months] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 months", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 months] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 months", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 months] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 months", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 months] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 week", + "error": [ + "EVAL does not support [date_period] in expression [1 week]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 week", + "error": [ + "EVAL does not support [date_period] in expression [1 week]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 week", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 week", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 WEEK", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Week", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 week", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 week + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 week] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 week", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 week] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 week", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 week] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 week", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 week] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 weeks", + "error": [ + "EVAL does not support [date_period] in expression [1 weeks]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 weeks", + "error": [ + "EVAL does not support [date_period] in expression [1 weeks]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 weeks", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 weeks", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 WEEKS", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Weeks", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 weeks", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 weeks + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 weeks] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 weeks", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 weeks] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 weeks", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 weeks] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 weeks", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 weeks] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 day", + "error": [ + "EVAL does not support [date_period] in expression [1 day]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 day", + "error": [ + "EVAL does not support [date_period] in expression [1 day]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 day", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 day", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 DAY", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Day", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 day", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 day + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 day] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 day", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 day] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 day", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 day] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 day", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 day] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 days", + "error": [ + "EVAL does not support [date_period] in expression [1 days]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 days", + "error": [ + "EVAL does not support [date_period] in expression [1 days]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 days", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 days", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 DAYS", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Days", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 days", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 days + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 days] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 days", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 days] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 days", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 days] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 days", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 days] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 hour", + "error": [ + "EVAL does not support [date_period] in expression [1 hour]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 hour", + "error": [ + "EVAL does not support [date_period] in expression [1 hour]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 hour", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 hour", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 HOUR", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Hour", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 hour", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 hour + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 hour] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 hour", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 hour] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 hour", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 hour] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 hour", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 hour] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 hours", + "error": [ + "EVAL does not support [date_period] in expression [1 hours]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 hours", + "error": [ + "EVAL does not support [date_period] in expression [1 hours]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 hours", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 hours", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 HOURS", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Hours", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 hours", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 hours + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 hours] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 hours", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 hours] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 hours", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 hours] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 hours", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 hours] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 minute", + "error": [ + "EVAL does not support [date_period] in expression [1 minute]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 minute", + "error": [ + "EVAL does not support [date_period] in expression [1 minute]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 minute", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 minute", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 MINUTE", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Minute", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 minute", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 minute + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 minute] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 minute", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 minute] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 minute", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 minute] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 minute", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 minute] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 minutes", + "error": [ + "EVAL does not support [date_period] in expression [1 minutes]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 minutes", + "error": [ + "EVAL does not support [date_period] in expression [1 minutes]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 minutes", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 minutes", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 MINUTES", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Minutes", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 minutes", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 minutes + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 minutes] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 minutes", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 minutes] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 minutes", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 minutes] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 minutes", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 minutes] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 second", + "error": [ + "EVAL does not support [date_period] in expression [1 second]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 second", + "error": [ + "EVAL does not support [date_period] in expression [1 second]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 second", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 second", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 SECOND", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Second", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 second", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 second + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 second] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 second", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 second] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 second", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 second] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 second", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 second] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 seconds", + "error": [ + "EVAL does not support [date_period] in expression [1 seconds]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 seconds", + "error": [ + "EVAL does not support [date_period] in expression [1 seconds]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 seconds", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 seconds", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 SECONDS", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Seconds", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 seconds", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 seconds + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 seconds] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 seconds", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 seconds] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 seconds", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 seconds] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 seconds", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 seconds] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 millisecond", + "error": [ + "EVAL does not support [date_period] in expression [1 millisecond]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 millisecond", + "error": [ + "EVAL does not support [date_period] in expression [1 millisecond]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 millisecond", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 millisecond", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 MILLISECOND", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Millisecond", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 millisecond", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 millisecond + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 millisecond] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 millisecond", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 millisecond] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 millisecond", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 millisecond] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 millisecond", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 millisecond] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 milliseconds", + "error": [ + "EVAL does not support [date_period] in expression [1 milliseconds]" + ], + "warning": [] + }, + { + "query": "from a_index | eval 1 milliseconds", + "error": [ + "EVAL does not support [date_period] in expression [1 milliseconds]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() - 1 milliseconds", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 milliseconds", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 MILLISECONDS", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField - 1 Milliseconds", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval var = dateField + 1 milliseconds", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval 1 milliseconds + 1 year", + "error": [ + "Argument of [+] must be [date], found value [1 milliseconds] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() * 1 milliseconds", + "error": [ + "Argument of [*] must be [number], found value [now()] type [date]", + "Argument of [*] must be [number], found value [1 milliseconds] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() / 1 milliseconds", + "error": [ + "Argument of [/] must be [number], found value [now()] type [date]", + "Argument of [/] must be [number], found value [1 milliseconds] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | eval var = now() % 1 milliseconds", + "error": [ + "Argument of [%] must be [number], found value [now()] type [date]", + "Argument of [%] must be [number], found value [1 milliseconds] type [duration]" + ], + "warning": [] + }, + { + "query": "from a_index | stats ", + "error": [ + "At least one aggregation or grouping expression required in [STATS]" + ], + "warning": [] + }, + { + "query": "from a_index | stats by stringField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats by ", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | stats numberField ", + "error": [ + "Expected an aggregate function or group but got [numberField] of type [FieldAttribute]" + ], + "warning": [] + }, + { + "query": "from a_index | stats numberField=", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | stats numberField=5 by ", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) by wrongField", + "error": [ + "Unknown column [wrongField]" + ], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) by wrongField + 1", + "error": [ + "Unknown column [wrongField]" + ], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) by var0 = wrongField + 1", + "error": [ + "Unknown column [wrongField]" + ], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) by 1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) by percentile(numberField)", + "error": [ + "STATS BY does not support function percentile" + ], + "warning": [] + }, + { + "query": "from a_index | stats count(`numberField`)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats count(`numberField`) | keep `count(``numberField``)` ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats count(`numberField`) | drop `count(``numberField``)` ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats count(`numberField`) | eval `count(``numberField``)` ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) by stringField, percentile(numberField) by ipField", + "error": [ + "SyntaxError: mismatched input 'by' expecting ", + "STATS BY does not support function percentile" + ], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), percentile(numberField, 50) by ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), percentile(numberField, 50) BY ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) + percentile(numberField, 50) BY ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) - percentile(numberField, 50) BY ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) * percentile(numberField, 50) BY ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) / percentile(numberField, 50) BY ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) % percentile(numberField, 50) BY ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats count(* + 1) BY ipField", + "error": [ + "SyntaxError: no viable alternative at input 'count(* +'" + ], + "warning": [] + }, + { + "query": "from a_index | stats count(* + round(numberField)) BY ipField", + "error": [ + "SyntaxError: no viable alternative at input 'count(* +'" + ], + "warning": [] + }, + { + "query": "from a_index | stats count(round(*)) BY ipField", + "error": [ + "Using wildcards (*) in round is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | stats count(count(*)) BY ipField", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [count(*)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats numberField + 1", + "error": [ + "At least one aggregation function required in [STATS], found [numberField+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats 5 + avg(numberField) +1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 +1 + avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 +1 + numberField", + "error": [ + "At least one aggregation function required in [STATS], found [5+1+numberField]" + ], + "warning": [] + }, + { + "query": "from a_index | stats 5 + numberField +1", + "error": [ + "At least one aggregation function required in [STATS], found [5+numberField+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats 5 + numberField +1, var0 = sum(numberField)", + "error": [ + "At least one aggregation function required in [STATS], found [5+numberField+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round( sum(numberField) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round( sum(numberField) ) + round( sum(numberField) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round( numberField + sum(numberField) )", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(numberField+sum(numberField))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round( numberField + sum(numberField) ), var0 = sum(numberField)", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(numberField+sum(numberField))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var0 = round( numberField + sum(numberField) ), var1 = sum(numberField)", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(numberField+sum(numberField))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round( sum(numberField + numberField) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round( sum(numberField + round(numberField)) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round( sum(numberField + round(numberField)) ) + round( sum(numberField + round(numberField)) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(round( numberField ) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(round( numberField ) ) + sum(round( numberField ) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 + avg(numberField) +1+1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 +1+1 + avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 +1+1 + numberField", + "error": [ + "At least one aggregation function required in [STATS], found [5+1+1+numberField]" + ], + "warning": [] + }, + { + "query": "from a_index | stats 5 + numberField +1+1", + "error": [ + "At least one aggregation function required in [STATS], found [5+numberField+1+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats 5 + numberField +1+1, var0 = sum(numberField)", + "error": [ + "At least one aggregation function required in [STATS], found [5+numberField+1+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round(round( sum(numberField) ))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round( sum(numberField) )) + round(round( sum(numberField) ))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round( numberField + sum(numberField) ))", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(round(numberField+sum(numberField)))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round(round( numberField + sum(numberField) )), var0 = sum(numberField)", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(round(numberField+sum(numberField)))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var0 = round(round( numberField + sum(numberField) )), var1 = sum(numberField)", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(round(numberField+sum(numberField)))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round(round( sum(numberField + numberField) ))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round( sum(numberField + round(numberField)) ))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round( sum(numberField + round(numberField)) )) + round(round( sum(numberField + round(numberField)) ))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(round(round( numberField )) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(round(round( numberField )) ) + sum(round(round( numberField )) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 + avg(numberField) +1+1+1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 +1+1+1 + avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 +1+1+1 + numberField", + "error": [ + "At least one aggregation function required in [STATS], found [5+1+1+1+numberField]" + ], + "warning": [] + }, + { + "query": "from a_index | stats 5 + numberField +1+1+1", + "error": [ + "At least one aggregation function required in [STATS], found [5+numberField+1+1+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats 5 + numberField +1+1+1, var0 = sum(numberField)", + "error": [ + "At least one aggregation function required in [STATS], found [5+numberField+1+1+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round( sum(numberField) )))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round( sum(numberField) ))) + round(round(round( sum(numberField) )))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round( numberField + sum(numberField) )))", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(round(round(numberField+sum(numberField))))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round( numberField + sum(numberField) ))), var0 = sum(numberField)", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(round(round(numberField+sum(numberField))))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var0 = round(round(round( numberField + sum(numberField) ))), var1 = sum(numberField)", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(round(round(numberField+sum(numberField))))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round( sum(numberField + numberField) )))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round( sum(numberField + round(numberField)) )))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round( sum(numberField + round(numberField)) ))) + round(round(round( sum(numberField + round(numberField)) )))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(round(round(round( numberField ))) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(round(round(round( numberField ))) ) + sum(round(round(round( numberField ))) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 + avg(numberField) +1+1+1+1", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 +1+1+1+1 + avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 +1+1+1+1 + numberField", + "error": [ + "At least one aggregation function required in [STATS], found [5+1+1+1+1+numberField]" + ], + "warning": [] + }, + { + "query": "from a_index | stats 5 + numberField +1+1+1+1", + "error": [ + "At least one aggregation function required in [STATS], found [5+numberField+1+1+1+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats 5 + numberField +1+1+1+1, var0 = sum(numberField)", + "error": [ + "At least one aggregation function required in [STATS], found [5+numberField+1+1+1+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round(round( sum(numberField) ))))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round(round( sum(numberField) )))) + round(round(round(round( sum(numberField) ))))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round(round( numberField + sum(numberField) ))))", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(round(round(round(numberField+sum(numberField)))))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round(round( numberField + sum(numberField) )))), var0 = sum(numberField)", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(round(round(round(numberField+sum(numberField)))))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var0 = round(round(round(round( numberField + sum(numberField) )))), var1 = sum(numberField)", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [round(round(round(round(numberField+sum(numberField)))))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round(round( sum(numberField + numberField) ))))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round(round( sum(numberField + round(numberField)) ))))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(round(round(round( sum(numberField + round(numberField)) )))) + round(round(round(round( sum(numberField + round(numberField)) ))))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(round(round(round(round( numberField )))) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(round(round(round(round( numberField )))) ) + sum(round(round(round(round( numberField )))) )", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats 5 + numberField + 1", + "error": [ + "At least one aggregation function required in [STATS], found [5+numberField+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats numberField + 1 by ipField", + "error": [ + "At least one aggregation function required in [STATS], found [numberField+1]" + ], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), percentile(numberField, 50) + 1 by ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats count(*)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats count()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = count(*)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = count()", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = avg(numberField), count(*)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = avg(fn(number)), count(*)", + "error": [ + "Unknown function [fn]" + ], + "warning": [] + }, + { + "query": "from a_index | STATS sum( numberField ) + abs( numberField ) ", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [sum(numberField)+abs(numberField)]" + ], + "warning": [] + }, + { + "query": "from a_index | STATS abs( numberField + sum( numberField )) ", + "error": [ + "Cannot combine aggregation and non-aggregation values in [STATS], found [abs(numberField+sum(numberField))]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(avg(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(avg(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(avg(numberField)) + avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(avg(numberField)) + avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = avg(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), avg(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = avg(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = avg(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField) by round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = avg(numberField) by var1 = round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), avg(numberField) by round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = avg(numberField) by var1 = round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), avg(numberField) by round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = avg(numberField) by var1 = round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = avg(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats avg(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats avg(stringField)", + "error": [ + "Argument of [avg] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = avg(*)", + "error": [ + "Using wildcards (*) in avg is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = max(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats max(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(max(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(max(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(max(numberField)) + max(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(max(numberField)) + max(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats max(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = max(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), max(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = max(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats max(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = max(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), max(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = max(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats max(numberField) by round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = max(numberField) by var1 = round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), max(numberField) by round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = max(numberField) by var1 = round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), max(numberField) by round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = max(numberField) by var1 = round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = max(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats max(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats max(stringField)", + "error": [ + "Argument of [max] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = max(*)", + "error": [ + "Using wildcards (*) in max is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = min(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats min(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(min(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(min(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(min(numberField)) + min(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(min(numberField)) + min(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats min(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = min(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), min(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = min(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats min(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = min(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), min(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = min(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats min(numberField) by round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = min(numberField) by var1 = round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), min(numberField) by round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = min(numberField) by var1 = round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), min(numberField) by round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = min(numberField) by var1 = round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = min(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats min(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats min(stringField)", + "error": [ + "Argument of [min] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = min(*)", + "error": [ + "Using wildcards (*) in min is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = sum(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(sum(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(sum(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(sum(numberField)) + sum(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(sum(numberField)) + sum(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = sum(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), sum(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = sum(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = sum(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), sum(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = sum(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats sum(numberField) by round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = sum(numberField) by var1 = round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), sum(numberField) by round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = sum(numberField) by var1 = round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), sum(numberField) by round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = sum(numberField) by var1 = round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = sum(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats sum(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats sum(stringField)", + "error": [ + "Argument of [sum] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = sum(*)", + "error": [ + "Using wildcards (*) in sum is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = median(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats median(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(median(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(median(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(median(numberField)) + median(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(median(numberField)) + median(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats median(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = median(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), median(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = median(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats median(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = median(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), median(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = median(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats median(numberField) by round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = median(numberField) by var1 = round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), median(numberField) by round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = median(numberField) by var1 = round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), median(numberField) by round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = median(numberField) by var1 = round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = median(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats median(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats median(stringField)", + "error": [ + "Argument of [median] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = median(*)", + "error": [ + "Using wildcards (*) in median is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = median_absolute_deviation(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats median_absolute_deviation(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(median_absolute_deviation(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(median_absolute_deviation(numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(median_absolute_deviation(numberField)) + median_absolute_deviation(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(median_absolute_deviation(numberField)) + median_absolute_deviation(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats median_absolute_deviation(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = median_absolute_deviation(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), median_absolute_deviation(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = median_absolute_deviation(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats median_absolute_deviation(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = median_absolute_deviation(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), median_absolute_deviation(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = median_absolute_deviation(numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats median_absolute_deviation(numberField) by round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = median_absolute_deviation(numberField) by var1 = round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), median_absolute_deviation(numberField) by round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = median_absolute_deviation(numberField) by var1 = round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), median_absolute_deviation(numberField) by round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = median_absolute_deviation(numberField) by var1 = round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = median_absolute_deviation(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats median_absolute_deviation(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats median_absolute_deviation(stringField)", + "error": [ + "Argument of [median_absolute_deviation] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = median_absolute_deviation(*)", + "error": [ + "Using wildcards (*) in median_absolute_deviation is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = percentile(numberField, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats percentile(numberField, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(percentile(numberField, 5))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(percentile(numberField, 5))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(percentile(numberField, 5)) + percentile(numberField, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(percentile(numberField, 5)) + percentile(numberField, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats percentile(numberField, numberField)", + "error": [ + "Argument of [percentile] must be a constant, received [numberField]" + ], + "warning": [] + }, + { + "query": "from a_index | stats percentile(numberField / 2, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = percentile(numberField / 2, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), percentile(numberField / 2, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = percentile(numberField / 2, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats percentile(numberField, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = percentile(numberField, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), percentile(numberField, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = percentile(numberField, 5)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats percentile(numberField, 5) by round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var0 = percentile(numberField, 5) by var1 = round(numberField / 2)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), percentile(numberField, 5) by round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = percentile(numberField, 5) by var1 = round(numberField / 2), ipField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), percentile(numberField, 5) by round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats avg(numberField), var0 = percentile(numberField, 5) by var1 = round(numberField / 2), numberField / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = percentile(avg(numberField), 5)", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats percentile(avg(numberField), 5)", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats percentile(stringField, 5)", + "error": [ + "Argument of [percentile] must be [number], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = count(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats count(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(count(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(count(stringField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(count(stringField)) + count(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(count(stringField)) + count(stringField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = count_distinct(stringField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats count_distinct(stringField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(count_distinct(stringField, numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(count_distinct(stringField, numberField))", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = round(count_distinct(stringField, numberField)) + count_distinct(stringField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats round(count_distinct(stringField, numberField)) + count_distinct(stringField, numberField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = st_centroid(cartesianPointField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats st_centroid(cartesianPointField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = st_centroid(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats st_centroid(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats st_centroid(stringField)", + "error": [ + "Argument of [st_centroid] must be [cartesian_point], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = st_centroid(*)", + "error": [ + "Using wildcards (*) in st_centroid is not allowed" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = st_centroid(geoPointField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats st_centroid(geoPointField)", + "error": [], + "warning": [] + }, + { + "query": "from a_index | stats var = st_centroid(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats st_centroid(avg(numberField))", + "error": [ + "Aggregate function's parameters must be an attribute, literal or a non-aggregation function; found [avg(numberField)] of type [number]" + ], + "warning": [] + }, + { + "query": "from a_index | stats st_centroid(stringField)", + "error": [ + "Argument of [st_centroid] must be [cartesian_point], found value [stringField] type [string]" + ], + "warning": [] + }, + { + "query": "from a_index | stats var = st_centroid(*)", + "error": [ + "Using wildcards (*) in st_centroid is not allowed" + ], + "warning": [] + }, + { + "query": "FROM index\n | EVAL numberField * 3.281\n | STATS avg_numberField = AVG(`numberField * 3.281`)", + "error": [], + "warning": [] + }, + { + "query": "FROM index | STATS AVG(numberField) by round(numberField) + 1 | EVAL `round(numberField) + 1` / 2", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort ", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | sort \"field\" ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort wrongField ", + "error": [ + "Unknown column [wrongField]" + ], + "warning": [] + }, + { + "query": "from a_index | sort numberField, ", + "error": [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}" + ], + "warning": [] + }, + { + "query": "from a_index | sort numberField, stringField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort \"field\" desc ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort numberField desc ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort numberField desc nulls ", + "error": [ + "SyntaxError: missing {'first', 'last'} at ''" + ], + "warning": [] + }, + { + "query": "from a_index | sort numberField desc nulls first", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort numberField desc first", + "error": [ + "SyntaxError: extraneous input 'first' expecting " + ], + "warning": [] + }, + { + "query": "from a_index | sort numberField desc nulls last", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort numberField desc last", + "error": [ + "SyntaxError: extraneous input 'last' expecting " + ], + "warning": [] + }, + { + "query": "from a_index | sort \"field\" asc ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort numberField asc ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort numberField asc nulls ", + "error": [ + "SyntaxError: missing {'first', 'last'} at ''" + ], + "warning": [] + }, + { + "query": "from a_index | sort numberField asc nulls first", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort numberField asc first", + "error": [ + "SyntaxError: extraneous input 'first' expecting " + ], + "warning": [] + }, + { + "query": "from a_index | sort numberField asc nulls last", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort numberField asc last", + "error": [ + "SyntaxError: extraneous input 'last' expecting " + ], + "warning": [] + }, + { + "query": "from a_index | sort numberField nulls first", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort numberField first", + "error": [ + "SyntaxError: extraneous input 'first' expecting " + ], + "warning": [] + }, + { + "query": "from a_index | sort numberField nulls last", + "error": [], + "warning": [] + }, + { + "query": "from a_index | sort numberField last", + "error": [ + "SyntaxError: extraneous input 'last' expecting " + ], + "warning": [] + }, + { + "query": "row a = 1 | stats COUNT(*) | sort `COUNT(*)`", + "error": [], + "warning": [] + }, + { + "query": "ROW a = 1 | STATS couNt(*) | SORT `couNt(*)`", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich", + "error": [ + "SyntaxError: missing ENRICH_POLICY_NAME at ''" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _", + "error": [ + "Unknown policy [_]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _:", + "error": [ + "SyntaxError: token recognition error at: ':'", + "Unknown policy [_]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _:policy", + "error": [ + "Unrecognized value [_] for ENRICH, mode needs to be one of [_ANY, _COORDINATOR, _REMOTE]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich :policy", + "error": [ + "SyntaxError: token recognition error at: ':'" + ], + "warning": [] + }, + { + "query": "from a_index | enrich any:", + "error": [ + "SyntaxError: token recognition error at: ':'", + "Unknown policy [any]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _any:", + "error": [ + "SyntaxError: token recognition error at: ':'", + "Unknown policy [_any]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich any:policy", + "error": [ + "Unrecognized value [any] for ENRICH, mode needs to be one of [_ANY, _COORDINATOR, _REMOTE]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich `this``is fine`", + "error": [ + "SyntaxError: mismatched input '`this``is fine`' expecting ENRICH_POLICY_NAME" + ], + "warning": [] + }, + { + "query": "from a_index | enrich this is fine", + "error": [ + "SyntaxError: mismatched input 'is' expecting ", + "Unknown policy [this]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _any:policy ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich _any : policy ", + "error": [ + "SyntaxError: token recognition error at: ':'", + "SyntaxError: extraneous input 'policy' expecting ", + "Unknown policy [_any]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _any: policy ", + "error": [ + "SyntaxError: token recognition error at: ':'", + "SyntaxError: extraneous input 'policy' expecting ", + "Unknown policy [_any]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _any:policy ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich _ANY:policy ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich _coordinator:policy ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich _coordinator : policy ", + "error": [ + "SyntaxError: token recognition error at: ':'", + "SyntaxError: extraneous input 'policy' expecting ", + "Unknown policy [_coordinator]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _coordinator: policy ", + "error": [ + "SyntaxError: token recognition error at: ':'", + "SyntaxError: extraneous input 'policy' expecting ", + "Unknown policy [_coordinator]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _coordinator:policy ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich _COORDINATOR:policy ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich _remote:policy ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich _remote : policy ", + "error": [ + "SyntaxError: token recognition error at: ':'", + "SyntaxError: extraneous input 'policy' expecting ", + "Unknown policy [_remote]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _remote: policy ", + "error": [ + "SyntaxError: token recognition error at: ':'", + "SyntaxError: extraneous input 'policy' expecting ", + "Unknown policy [_remote]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich _remote:policy ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich _REMOTE:policy ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich _unknown:policy", + "error": [ + "Unrecognized value [_unknown] for ENRICH, mode needs to be one of [_ANY, _COORDINATOR, _REMOTE]" + ], + "warning": [] + }, + { + "query": "from a_index |enrich missing-policy ", + "error": [ + "Unknown policy [missing-policy]" + ], + "warning": [] + }, + { + "query": "from a_index |enrich policy on ", + "error": [ + "SyntaxError: missing ID_PATTERN at ''" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy on b ", + "error": [ + "Unknown column [b]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy on `this``is fine`", + "error": [ + "Unknown column [this`is fine]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy on this is fine", + "error": [ + "SyntaxError: mismatched input 'is' expecting ", + "Unknown column [this]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy on stringField with ", + "error": [ + "SyntaxError: mismatched input '' expecting ID_PATTERN" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy on stringField with var0 ", + "error": [ + "Unknown column [var0]" + ], + "warning": [] + }, + { + "query": "from a_index |enrich policy on numberField with var0 = ", + "error": [ + "SyntaxError: missing ID_PATTERN at ''", + "Unknown column [var0]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy on stringField with var0 = c ", + "error": [ + "Unknown column [var0]", + "Unknown column [c]" + ], + "warning": [] + }, + { + "query": "from a_index |enrich policy on numberField with var0 = , ", + "error": [ + "SyntaxError: missing ID_PATTERN at ','", + "SyntaxError: mismatched input '' expecting ID_PATTERN", + "Unknown column [var0]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy on stringField with var0 = otherField, var1 ", + "error": [ + "Unknown column [var1]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy on stringField with var0 = otherField ", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich policy on stringField with var0 = otherField, yetAnotherField ", + "error": [], + "warning": [] + }, + { + "query": "from a_index |enrich policy on numberField with var0 = otherField, var1 = ", + "error": [ + "SyntaxError: missing ID_PATTERN at ''", + "Unknown column [var1]" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy on stringField with var0 = otherField, var1 = yetAnotherField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich policy on stringField with var0 = otherField, `this``is fine` = yetAnotherField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich policy with ", + "error": [ + "SyntaxError: mismatched input '' expecting ID_PATTERN" + ], + "warning": [] + }, + { + "query": "from a_index | enrich policy with otherField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich policy | eval otherField", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich policy with var0 = otherField | eval var0", + "error": [], + "warning": [] + }, + { + "query": "from a_index | enrich my-pol*", + "error": [ + "Using wildcards (*) in ENRICH is not allowed [my-pol*]" + ], + "warning": [] + }, + { + "query": "from a_index | eval stringField = 5", + "error": [], + "warning": [ + "Column [stringField] of type string has been overwritten as new type: number" + ] + }, + { + "query": "from a_index | eval numberField = \"5\"", + "error": [], + "warning": [ + "Column [numberField] of type number has been overwritten as new type: string" + ] + }, + { + "query": "from a_index | eval round(numberField) + 1 | eval `round(numberField) + 1` + 1 | keep ```round(numberField) + 1`` + 1`", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval round(numberField) + 1 | eval `round(numberField) + 1` + 1 | eval ```round(numberField) + 1`` + 1` + 1 | keep ```````round(numberField) + 1```` + 1`` + 1`", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval round(numberField) + 1 | eval `round(numberField) + 1` + 1 | eval ```round(numberField) + 1`` + 1` + 1 | eval ```````round(numberField) + 1```` + 1`` + 1` + 1 | keep ```````````````round(numberField) + 1```````` + 1```` + 1`` + 1`", + "error": [], + "warning": [] + }, + { + "query": "from a_index | eval round(numberField) + 1 | eval `round(numberField) + 1` + 1 | eval ```round(numberField) + 1`` + 1` + 1 | eval ```````round(numberField) + 1```` + 1`` + 1` + 1 | eval ```````````````round(numberField) + 1```````` + 1```` + 1`` + 1` + 1 | keep ```````````````````````````````round(numberField) + 1```````````````` + 1```````` + 1```` + 1`` + 1`", + "error": [], + "warning": [] + } + ] +} \ No newline at end of file diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts b/packages/kbn-esql-validation-autocomplete/src/validation/helpers.ts similarity index 97% rename from packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts rename to packages/kbn-esql-validation-autocomplete/src/validation/helpers.ts index e7999e4e63a9a..a60d705d0d0d3 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/helpers.ts +++ b/packages/kbn-esql-validation-autocomplete/src/validation/helpers.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import type { ESQLAst } from '../types'; +import type { ESQLAst } from '@kbn/esql-ast'; import type { ESQLPolicy } from './types'; export function buildQueryForFieldsFromSource(queryString: string, ast: ESQLAst) { diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/resources.ts b/packages/kbn-esql-validation-autocomplete/src/validation/resources.ts similarity index 95% rename from packages/kbn-monaco/src/esql/lib/ast/validation/resources.ts rename to packages/kbn-esql-validation-autocomplete/src/validation/resources.ts index ac2307455d257..4f8552db72e72 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/resources.ts +++ b/packages/kbn-esql-validation-autocomplete/src/validation/resources.ts @@ -6,15 +6,14 @@ * Side Public License, v 1. */ -import { nonNullable } from '../ast_helpers'; -import { createMapFromList, isSourceItem } from '../shared/helpers'; +import type { ESQLCommand } from '@kbn/esql-ast'; +import { createMapFromList, isSourceItem, nonNullable } from '../shared/helpers'; import { getFieldsByTypeHelper, getPolicyHelper, getSourcesHelper, } from '../shared/resources_helpers'; import type { ESQLCallbacks } from '../shared/types'; -import type { ESQLCommand } from '../types'; import { buildQueryForFieldsForStringSources, buildQueryForFieldsFromSource, diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts b/packages/kbn-esql-validation-autocomplete/src/validation/types.ts similarity index 89% rename from packages/kbn-monaco/src/esql/lib/ast/validation/types.ts rename to packages/kbn-esql-validation-autocomplete/src/validation/types.ts index dd3cf92248734..0aec2b79eaa89 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/types.ts +++ b/packages/kbn-esql-validation-autocomplete/src/validation/types.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { EditorError } from '../../../../types'; -import { ESQLMessage, ESQLLocation } from '../types'; +import type { ESQLMessage, ESQLLocation } from '@kbn/esql-ast'; +import type { EditorError } from '../types'; export interface ESQLVariable { name: string; @@ -152,6 +152,18 @@ export interface ValidationErrors { message: string; type: { fn: string; given: string }; }; + metadataBracketsDeprecation: { + message: string; + type: {}; + }; + unknownMetadataField: { + message: string; + type: { value: string; availableFields: string }; + }; + wrongDissectOptionArgumentType: { + message: string; + type: { value: string | number }; + }; } export type ErrorTypes = keyof ValidationErrors; @@ -161,3 +173,7 @@ export interface ValidationResult { errors: Array; warnings: ESQLMessage[]; } + +export interface ValidationOptions { + ignoreOnMissingCallbacks?: boolean; +} diff --git a/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts b/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts new file mode 100644 index 0000000000000..1d934731b9725 --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts @@ -0,0 +1,2596 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { join } from 'path'; +import { writeFile, readFile } from 'fs/promises'; +import { ignoreErrorsMap, validateQuery } from './validation'; +import { evalFunctionsDefinitions } from '../definitions/functions'; +import { getFunctionSignatures } from '../definitions/helpers'; +import { FunctionDefinition } from '../definitions/types'; +import { chronoLiterals, timeLiterals } from '../definitions/literals'; +import { statsAggregationFunctionDefinitions } from '../definitions/aggs'; +import capitalize from 'lodash/capitalize'; +import { camelCase } from 'lodash'; +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; +import { nonNullable } from '../shared/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'], + }, +]; + +const NESTING_LEVELS = 4; +const NESTED_DEPTHS = Array(NESTING_LEVELS) + .fill(0) + .map((_, i) => i + 1); + +function getCallbackMocks() { + return { + getFieldsFor: jest.fn(async ({ query }) => { + if (/enrich/.test(query)) { + return enrichFields; + } + if (/unsupported_index/.test(query)) { + return unsupported_field; + } + if (/dissect|grok/.test(query)) { + return [{ name: 'firstWord', type: 'string' }]; + } + return fields; + }), + getSources: jest.fn(async () => + indexes.map((name) => ({ + name, + hidden: name.startsWith('.'), + })) + ), + getPolicies: jest.fn(async () => policies), + getMetaFields: jest.fn(async () => ['_id', '_source']), + }; +} + +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')!; +const toIpSignature = evalFunctionsDefinitions.find(({ name }) => name === 'to_ip')!; +const toGeoPointSignature = evalFunctionsDefinitions.find(({ name }) => name === 'to_geopoint')!; +const toCartesianPointSignature = evalFunctionsDefinitions.find( + ({ name }) => name === 'to_cartesianpoint' +)!; + +const toAvgSignature = statsAggregationFunctionDefinitions.find(({ name }) => name === 'avg')!; + +const nestedFunctions = { + number: prepareNestedFunction(toInteger), + string: prepareNestedFunction(toStringSignature), + date: prepareNestedFunction(toDateSignature), + boolean: prepareNestedFunction(toBooleanSignature), + ip: prepareNestedFunction(toIpSignature), + geo_point: prepareNestedFunction(toGeoPointSignature), + cartesian_point: prepareNestedFunction(toCartesianPointSignature), +}; + +const literals = { + chrono_literal: chronoLiterals[0].name, + time_literal: timeLiterals[0].name, +}; +function getLiteralType(typeString: 'chrono_literal' | 'time_literal') { + if (typeString === 'chrono_literal') { + return literals[typeString]; + } + return `1 ${literals[typeString]}`; +} +function getFieldName( + typeString: string, + { useNestedFunction, isStats }: { useNestedFunction: boolean; isStats: boolean } +) { + if (useNestedFunction && isStats) { + return prepareNestedFunction(toAvgSignature); + } + return useNestedFunction && typeString in nestedFunctions + ? nestedFunctions[typeString as keyof typeof nestedFunctions] + : `${camelCase(typeString)}Field`; +} + +function getMultiValue(type: string) { + if (/string|any/.test(type)) { + return `["a", "b", "c"]`; + } + if (/number/.test(type)) { + return `[1, 2, 3]`; + } + return `[true, false]`; +} + +function prepareNestedFunction(fnSignature: FunctionDefinition): string { + return getFunctionSignatures( + { + ...fnSignature, + signatures: [ + { + ...fnSignature?.signatures[0]!, + params: getFieldMapping(fnSignature?.signatures[0]!.params), + }, + ], + }, + { withTypes: false } + )[0].declaration; +} +function getFieldMapping( + params: FunctionDefinition['signatures'][number]['params'], + { useNestedFunction, useLiterals }: { useNestedFunction: boolean; useLiterals: boolean } = { + useNestedFunction: false, + useLiterals: true, + } +) { + 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: fieldName, + type, + ...rest, + }; + } + if (/literal$/.test(typeString) && useLiterals) { + return { + name: getLiteralType(typeString as 'chrono_literal' | 'time_literal'), + type, + ...rest, + }; + } + if (/[]$/.test(typeString)) { + return { + name: getMultiValue(typeString), + type, + ...rest, + }; + } + return { name: 'stringField', type, ...rest }; + }); +} + +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 canBeFieldButNotString = Boolean( + fieldTypes.filter((t) => t !== 'string').includes(type) && + signatures.every(({ params: fnParams }) => fnParams[i].type !== 'string') + ); + const canBeFieldButNotNumber = + fieldTypes.filter((t) => t !== 'number').includes(type) && + signatures.every(({ params: fnParams }) => fnParams[i].type !== 'number'); + const isLiteralType = /literal$/.test(type); + // 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 testCases: Array<{ query: string; error: string[]; warning: string[] }> = []; + + describe('Full validation performed', () => { + afterAll(async () => { + const targetFolder = join(__dirname, 'esql_validation_meta_tests.json'); + try { + await writeFile( + targetFolder, + JSON.stringify( + { + indexes, + fields: fields.concat([{ name: policies[0].matchField, type: 'keyword' }]), + enrichFields: enrichFields.concat([ + { name: policies[0].matchField, type: 'keyword' }, + ]), + policies, + unsupported_field, + testCases, + }, + null, + 2 + ) + ); + } catch (e) { + throw new Error(`Error writing test cases to ${targetFolder}: ${e.message}`); + } + }); + + function testErrorsAndWarningsFn( + statement: string, + expectedErrors: string[] = [], + expectedWarnings: string[] = [], + { only, skip }: { only?: boolean; skip?: boolean } = {} + ) { + const testFn = only ? it.only : skip ? it.skip : it; + testCases.push({ + query: statement, + error: expectedErrors, + warning: expectedWarnings, + }); + + testFn( + `${statement} => ${expectedErrors.length} errors, ${expectedWarnings.length} warnings`, + async () => { + const callbackMocks = getCallbackMocks(); + const { warnings, errors } = await validateQuery( + statement, + getAstAndSyntaxErrors, + undefined, + callbackMocks + ); + expect(errors.map((e) => ('message' in e ? e.message : e.text))).toEqual(expectedErrors); + expect(warnings.map((w) => w.text)).toEqual(expectedWarnings); + } + ); + } + + type TestArgs = [string, string[], string[]?]; + + // Make only and skip work with our custom wrapper + const testErrorsAndWarnings = Object.assign(testErrorsAndWarningsFn, { + skip: (...args: TestArgs) => { + const warningArgs = [[]].slice(args.length - 2); + return testErrorsAndWarningsFn( + ...((args.length > 1 ? [...args, ...warningArgs] : args) as TestArgs), + { + skip: true, + } + ); + }, + only: (...args: TestArgs) => { + const warningArgs = [[]].slice(args.length - 2); + return testErrorsAndWarningsFn( + ...((args.length > 1 ? [...args, ...warningArgs] : args) as TestArgs), + { + only: true, + } + ); + }, + }); + + describe('ESQL query should start with a source command', () => { + ['eval', 'stats', 'rename', 'limit', 'keep', 'drop', 'mv_expand', 'dissect', 'grok'].map( + (command) => + testErrorsAndWarnings(command, [ + `SyntaxError: mismatched input '${command}' expecting {'explain', 'from', 'meta', 'row', 'show'}`, + ]) + ); + }); + + describe('from', () => { + testErrorsAndWarnings('f', [ + `SyntaxError: mismatched input 'f' expecting {'explain', 'from', 'meta', 'row', 'show'}`, + ]); + testErrorsAndWarnings(`from `, [ + "SyntaxError: missing {QUOTED_IDENTIFIER, FROM_UNQUOTED_IDENTIFIER} at ''", + ]); + testErrorsAndWarnings(`from index,`, [ + "SyntaxError: missing {QUOTED_IDENTIFIER, FROM_UNQUOTED_IDENTIFIER} at ''", + ]); + testErrorsAndWarnings(`from assignment = 1`, [ + "SyntaxError: mismatched input '=' expecting ", + 'Unknown index [assignment]', + ]); + testErrorsAndWarnings(`from index`, []); + testErrorsAndWarnings(`FROM index`, []); + testErrorsAndWarnings(`FrOm index`, []); + testErrorsAndWarnings('from `index`', []); + + testErrorsAndWarnings(`from index, other_index`, []); + testErrorsAndWarnings(`from index, missingIndex`, ['Unknown index [missingIndex]']); + testErrorsAndWarnings(`from fn()`, ['Unknown index [fn()]']); + testErrorsAndWarnings(`from average()`, ['Unknown index [average()]']); + for (const isWrapped of [true, false]) { + function setWrapping(option: string) { + return isWrapped ? `[${option}]` : option; + } + function addBracketsWarning() { + return isWrapped + ? ["Square brackets '[]' need to be removed from FROM METADATA declaration"] + : []; + } + testErrorsAndWarnings( + `from index ${setWrapping('METADATA _id')}`, + [], + addBracketsWarning() + ); + testErrorsAndWarnings( + `from index ${setWrapping('metadata _id')}`, + [], + addBracketsWarning() + ); + + testErrorsAndWarnings( + `from index ${setWrapping('METADATA _id, _source')}`, + [], + addBracketsWarning() + ); + testErrorsAndWarnings( + `from index ${setWrapping('METADATA _id, _source2')}`, + [ + 'Metadata field [_source2] is not available. Available metadata fields are: [_id, _source]', + ], + addBracketsWarning() + ); + testErrorsAndWarnings( + `from index ${setWrapping('metadata _id, _source')} ${setWrapping('METADATA _id2')}`, + [ + isWrapped + ? "SyntaxError: mismatched input '[' expecting " + : "SyntaxError: mismatched input 'METADATA' expecting ", + ], + addBracketsWarning() + ); + + testErrorsAndWarnings( + `from remote-ccs:indexes ${setWrapping('METADATA _id')}`, + [], + addBracketsWarning() + ); + testErrorsAndWarnings( + `from *:indexes ${setWrapping('METADATA _id')}`, + [], + addBracketsWarning() + ); + } + testErrorsAndWarnings(`from index (metadata _id)`, [ + "SyntaxError: mismatched input '(metadata' expecting ", + ]); + testErrorsAndWarnings(`from ind*, other*`, []); + testErrorsAndWarnings(`from index*`, []); + testErrorsAndWarnings(`from *a_i*dex*`, []); + testErrorsAndWarnings(`from in*ex*`, []); + testErrorsAndWarnings(`from *n*ex`, []); + testErrorsAndWarnings(`from *n*ex*`, []); + testErrorsAndWarnings(`from i*d*x*`, []); + testErrorsAndWarnings(`from i*d*x`, []); + testErrorsAndWarnings(`from i***x*`, []); + testErrorsAndWarnings(`from i****`, []); + testErrorsAndWarnings(`from i**`, []); + testErrorsAndWarnings(`from index**`, []); + testErrorsAndWarnings(`from *ex`, []); + testErrorsAndWarnings(`from *ex*`, []); + testErrorsAndWarnings(`from in*ex`, []); + testErrorsAndWarnings(`from ind*ex`, []); + testErrorsAndWarnings(`from indexes*`, ['Unknown index [indexes*]']); + + testErrorsAndWarnings(`from remote-*:indexes*`, []); + testErrorsAndWarnings(`from remote-*:indexes`, []); + testErrorsAndWarnings(`from remote-ccs:indexes`, []); + 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]']); + }); + + describe('row', () => { + testErrorsAndWarnings('row', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + testErrorsAndWarnings('row missing_column', ['Unknown column [missing_column]']); + testErrorsAndWarnings('row fn()', ['Unknown function [fn]']); + testErrorsAndWarnings('row missing_column, missing_column2', [ + 'Unknown column [missing_column]', + 'Unknown column [missing_column2]', + ]); + testErrorsAndWarnings('row a=1', []); + testErrorsAndWarnings('row a=1, missing_column', ['Unknown column [missing_column]']); + testErrorsAndWarnings('row a=1, b = average()', ['Unknown function [average]']); + testErrorsAndWarnings('row a = [1, 2, 3]', []); + testErrorsAndWarnings('row a = [true, false]', []); + testErrorsAndWarnings('row a = ["a", "b"]', []); + testErrorsAndWarnings('row a = null', []); + testErrorsAndWarnings('row a = (1)', []); + testErrorsAndWarnings('row a = (1, 2, 3)', [ + "SyntaxError: no viable alternative at input '(1,'", + "SyntaxError: extraneous input ')' expecting ", + ]); + for (const bool of ['true', 'false']) { + testErrorsAndWarnings(`row a=NOT ${bool}`, []); + testErrorsAndWarnings(`row NOT ${bool}`, []); + } + + testErrorsAndWarnings('row var = 1 in ', [ + "SyntaxError: mismatched input '' expecting '('", + ]); + testErrorsAndWarnings('row var = 1 in (', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + 'Error: [in] function expects exactly 2 arguments, got 1.', + ]); + testErrorsAndWarnings('row var = 1 not in ', [ + "SyntaxError: mismatched input '' expecting '('", + ]); + testErrorsAndWarnings('row var = 1 in (1, 2, 3)', []); + testErrorsAndWarnings('row var = 5 in (1, 2, 3)', []); + testErrorsAndWarnings('row var = 5 not in (1, 2, 3)', []); + testErrorsAndWarnings('row var = 1 in (1, 2, 3, round(5))', []); + testErrorsAndWarnings('row var = "a" in ("a", "b", "c")', []); + testErrorsAndWarnings('row var = "a" in ("a", "b", "c")', []); + testErrorsAndWarnings('row var = "a" not in ("a", "b", "c")', []); + testErrorsAndWarnings('row var = 1 in ("a", "b", "c")', [ + 'Argument of [in] must be [number[]], found value [("a", "b", "c")] type [(string, string, string)]', + ]); + testErrorsAndWarnings('row var = 5 in ("a", "b", "c")', [ + 'Argument of [in] must be [number[]], found value [("a", "b", "c")] type [(string, string, string)]', + ]); + testErrorsAndWarnings('row var = 5 not in ("a", "b", "c")', [ + 'Argument of [not_in] must be [number[]], found value [("a", "b", "c")] type [(string, string, string)]', + ]); + testErrorsAndWarnings('row var = 5 not in (1, 2, 3, "a")', [ + 'Argument of [not_in] must be [number[]], found value [(1, 2, 3, "a")] type [(number, number, number, string)]', + ]); + + function tweakSignatureForRowCommand(signature: string) { + /** + * row has no access to any field, so replace it with literal + * or functions (for dates) + */ + return signature + .replace(/numberField/g, '5') + .replace(/stringField/g, '"a"') + .replace(/dateField/g, 'now()') + .replace(/booleanField/g, 'true') + .replace(/ipField/g, 'to_ip("127.0.0.1")'); + } + + for (const { name, alias, signatures, ...defRest } of evalFunctionsDefinitions) { + for (const { params, ...signRest } of signatures) { + const fieldMapping = getFieldMapping(params); + const signatureStringCorrect = tweakSignatureForRowCommand( + getFunctionSignatures( + { name, ...defRest, signatures: [{ params: fieldMapping, ...signRest }] }, + { withTypes: false } + )[0].declaration + ); + + testErrorsAndWarnings(`row var = ${signatureStringCorrect}`, []); + testErrorsAndWarnings(`row ${signatureStringCorrect}`, []); + + if (alias) { + for (const otherName of alias) { + const signatureStringWithAlias = tweakSignatureForRowCommand( + getFunctionSignatures( + { + name: otherName, + ...defRest, + signatures: [{ params: fieldMapping, ...signRest }], + }, + { withTypes: false } + )[0].declaration + ); + + testErrorsAndWarnings(`row var = ${signatureStringWithAlias}`, []); + } + } + + // Skip functions that have only arguments of type "any", as it is not possible to pass "the wrong type". + // auto_bucket and to_version functions are a bit harder to test exactly a combination of argument and predict the + // the right error message + if ( + params.every(({ type }) => type !== 'any') && + !['auto_bucket', 'to_version'].includes(name) + ) { + // now test nested functions + const fieldMappingWithNestedFunctions = getFieldMapping(params, { + useNestedFunction: true, + useLiterals: true, + }); + const signatureString = tweakSignatureForRowCommand( + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithNestedFunctions, ...signRest }], + }, + { withTypes: false } + )[0].declaration + ); + + testErrorsAndWarnings(`row var = ${signatureString}`, []); + + const { wrongFieldMapping, expectedErrors } = generateWrongMappingForArgs( + name, + signatures, + params, + { stringField: '"a"', numberField: '5', booleanField: 'true' } + ); + const wrongSignatureString = tweakSignatureForRowCommand( + getFunctionSignatures( + { name, ...defRest, signatures: [{ params: wrongFieldMapping, ...signRest }] }, + { withTypes: false } + )[0].declaration + ); + testErrorsAndWarnings(`row var = ${wrongSignatureString}`, expectedErrors); + } + } + } + for (const op of ['>', '>=', '<', '<=', '==']) { + testErrorsAndWarnings(`row var = 5 ${op} 0`, []); + testErrorsAndWarnings(`row var = NOT 5 ${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]`, + ]); + } + for (const op of ['+', '-', '*', '/', '%']) { + testErrorsAndWarnings(`row var = 1 ${op} 1`, []); + testErrorsAndWarnings(`row var = (5 ${op} 1)`, []); + } + + for (const op of ['like', 'rlike']) { + testErrorsAndWarnings(`row var = "a" ${op} "?a"`, []); + testErrorsAndWarnings(`row var = "a" NOT ${op} "?a"`, []); + testErrorsAndWarnings(`row var = NOT "a" ${op} "?a"`, []); + testErrorsAndWarnings(`row var = NOT "a" NOT ${op} "?a"`, []); + testErrorsAndWarnings(`row var = 5 ${op} "?a"`, [ + `Argument of [${op}] must be [string], found value [5] type [number]`, + ]); + testErrorsAndWarnings(`row var = 5 NOT ${op} "?a"`, [ + `Argument of [not_${op}] must be [string], found value [5] type [number]`, + ]); + testErrorsAndWarnings(`row var = NOT 5 ${op} "?a"`, [ + `Argument of [${op}] must be [string], found value [5] type [number]`, + ]); + testErrorsAndWarnings(`row var = NOT 5 NOT ${op} "?a"`, [ + `Argument of [not_${op}] must be [string], found value [5] type [number]`, + ]); + } + + describe('date math', () => { + testErrorsAndWarnings('row 1 anno', [ + 'ROW does not support [date_period] in expression [1 anno]', + ]); + testErrorsAndWarnings('row var = 1 anno', ["Unexpected time interval qualifier: 'anno'"]); + testErrorsAndWarnings('row now() + 1 anno', ["Unexpected time interval qualifier: 'anno'"]); + for (const timeLiteral of timeLiterals) { + testErrorsAndWarnings(`row 1 ${timeLiteral.name}`, [ + `ROW does not support [date_period] in expression [1 ${timeLiteral.name}]`, + ]); + testErrorsAndWarnings(`row 1 ${timeLiteral.name}`, [ + `ROW does not support [date_period] in expression [1 ${timeLiteral.name}]`, + ]); + + // this is not possible for now + // testErrorsAndWarnings(`row var = 1 ${timeLiteral.name}`, [ + // `Row does not support [date_period] in expression [1 ${timeLiteral.name}]`, + // ]); + testErrorsAndWarnings(`row var = now() - 1 ${timeLiteral.name}`, []); + testErrorsAndWarnings(`row var = now() - 1 ${timeLiteral.name.toUpperCase()}`, []); + testErrorsAndWarnings(`row var = now() - 1 ${capitalize(timeLiteral.name)}`, []); + testErrorsAndWarnings(`row var = now() + 1 ${timeLiteral.name}`, []); + testErrorsAndWarnings(`row 1 ${timeLiteral.name} + 1 year`, [ + `Argument of [+] must be [date], found value [1 ${timeLiteral.name}] type [duration]`, + ]); + for (const op of ['*', '/', '%']) { + testErrorsAndWarnings(`row 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]`, + ]); + } + } + }); + }); + + describe('meta', () => { + testErrorsAndWarnings('meta', ["SyntaxError: missing 'functions' at ''"]); + testErrorsAndWarnings('meta functions', []); + testErrorsAndWarnings('meta functions()', [ + "SyntaxError: token recognition error at: '('", + "SyntaxError: token recognition error at: ')'", + ]); + testErrorsAndWarnings('meta functions blah', [ + "SyntaxError: token recognition error at: 'b'", + "SyntaxError: token recognition error at: 'l'", + "SyntaxError: token recognition error at: 'a'", + "SyntaxError: token recognition error at: 'h'", + ]); + testErrorsAndWarnings('meta info', [ + "SyntaxError: token recognition error at: 'i'", + "SyntaxError: token recognition error at: 'n'", + "SyntaxError: token recognition error at: 'fo'", + "SyntaxError: missing 'functions' at ''", + ]); + }); + + describe('show', () => { + testErrorsAndWarnings('show', ["SyntaxError: missing 'info' at ''"]); + testErrorsAndWarnings('show functions', [ + "SyntaxError: token recognition error at: 'f'", + "SyntaxError: token recognition error at: 'u'", + "SyntaxError: token recognition error at: 'n'", + "SyntaxError: token recognition error at: 'c'", + "SyntaxError: token recognition error at: 't'", + "SyntaxError: token recognition error at: 'io'", + "SyntaxError: token recognition error at: 'n'", + "SyntaxError: token recognition error at: 's'", + "SyntaxError: missing 'info' at ''", + ]); + testErrorsAndWarnings('show info', []); + testErrorsAndWarnings('show numberField', [ + "SyntaxError: token recognition error at: 'n'", + "SyntaxError: token recognition error at: 'u'", + "SyntaxError: token recognition error at: 'm'", + "SyntaxError: token recognition error at: 'b'", + "SyntaxError: token recognition error at: 'e'", + "SyntaxError: token recognition error at: 'r'", + "SyntaxError: token recognition error at: 'F'", + "SyntaxError: token recognition error at: 'ie'", + "SyntaxError: token recognition error at: 'l'", + "SyntaxError: token recognition error at: 'd'", + "SyntaxError: missing 'info' at ''", + ]); + }); + + describe('limit', () => { + testErrorsAndWarnings('from index | limit ', [ + `SyntaxError: missing INTEGER_LITERAL at ''`, + ]); + testErrorsAndWarnings('from index | limit 4 ', []); + testErrorsAndWarnings('from index | limit 4.5', [ + "SyntaxError: mismatched input '4.5' expecting INTEGER_LITERAL", + ]); + testErrorsAndWarnings('from index | limit a', [ + "SyntaxError: mismatched input 'a' expecting INTEGER_LITERAL", + ]); + testErrorsAndWarnings('from index | limit numberField', [ + "SyntaxError: mismatched input 'numberField' expecting INTEGER_LITERAL", + ]); + testErrorsAndWarnings('from index | limit stringField', [ + "SyntaxError: mismatched input 'stringField' expecting INTEGER_LITERAL", + ]); + testErrorsAndWarnings('from index | limit 4', []); + }); + + describe('keep', () => { + 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 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', [ + 'Unknown column [missingField]', + ]); + testErrorsAndWarnings('from index | keep `any#Char$Field`', []); + testErrorsAndWarnings('from index | project ', [ + "SyntaxError: mismatched input 'project' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}", + ]); + testErrorsAndWarnings('from index | project stringField, numberField, dateField', [ + "SyntaxError: mismatched input 'project' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}", + ]); + testErrorsAndWarnings('from index | PROJECT stringField, numberField, dateField', [ + "SyntaxError: mismatched input 'PROJECT' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}", + ]); + testErrorsAndWarnings('from index | project missingField, numberField, dateField', [ + "SyntaxError: mismatched input 'project' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}", + ]); + testErrorsAndWarnings('from index | keep s*', []); + testErrorsAndWarnings('from index | keep *Field', []); + testErrorsAndWarnings('from index | keep s*Field', []); + testErrorsAndWarnings('from index | keep string*Field', []); + testErrorsAndWarnings('from index | keep s*, n*', []); + testErrorsAndWarnings('from index | keep m*', ['Unknown column [m*]']); + testErrorsAndWarnings('from index | keep *m', ['Unknown column [*m]']); + testErrorsAndWarnings('from index | keep d*m', ['Unknown column [d*m]']); + testErrorsAndWarnings( + 'from unsupported_index | keep unsupported_field', + [], + [ + '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 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 ID_PATTERN at '.'", + "SyntaxError: missing ID_PATTERN at ''", + ]); + testErrorsAndWarnings('from index | drop missingField, numberField, dateField', [ + 'Unknown column [missingField]', + ]); + testErrorsAndWarnings('from index | drop `any#Char$Field`', []); + testErrorsAndWarnings('from index | drop s*', []); + testErrorsAndWarnings('from index | drop s**Field', []); + testErrorsAndWarnings('from index | drop *Field*', []); + testErrorsAndWarnings('from index | drop s*F*d', []); + testErrorsAndWarnings('from index | drop *Field', []); + testErrorsAndWarnings('from index | drop s*Field', []); + testErrorsAndWarnings('from index | drop string*Field', []); + testErrorsAndWarnings('from index | drop s*, n*', []); + testErrorsAndWarnings('from index | drop m*', ['Unknown column [m*]']); + testErrorsAndWarnings('from index | drop *m', ['Unknown column [*m]']); + testErrorsAndWarnings('from index | drop d*m', ['Unknown column [d*m]']); + testErrorsAndWarnings('from index | drop *', ['Removing all fields is not allowed [*]']); + testErrorsAndWarnings('from index | drop stringField, *', [ + 'Removing all fields is not allowed [*]', + ]); + testErrorsAndWarnings( + 'from index | drop @timestamp', + [], + ['Drop [@timestamp] will remove all time filters to the search results'] + ); + testErrorsAndWarnings( + 'from index | drop stringField, @timestamp', + [], + ['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_index | mv_expand ', [ + "SyntaxError: missing {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} at ''", + ]); + for (const type of ['string', 'number', 'date', 'boolean', 'ip']) { + testErrorsAndWarnings(`from a_index | mv_expand ${type}Field`, []); + } + + testErrorsAndWarnings('from a_index | mv_expand numberField, b', [ + "SyntaxError: token recognition error at: ','", + "SyntaxError: extraneous input 'b' expecting ", + ]); + + testErrorsAndWarnings('row a = "a" | mv_expand a', []); + testErrorsAndWarnings('row a = [1, 2, 3] | mv_expand a', []); + testErrorsAndWarnings('row a = [true, false] | mv_expand a', []); + testErrorsAndWarnings('row a = ["a", "b"] | mv_expand a', []); + }); + + describe('rename', () => { + testErrorsAndWarnings('from a_index | rename', [ + "SyntaxError: mismatched input '' expecting ID_PATTERN", + ]); + testErrorsAndWarnings('from a_index | rename stringField', [ + "SyntaxError: mismatched input '' expecting 'as'", + ]); + testErrorsAndWarnings('from a_index | rename a', [ + "SyntaxError: mismatched input '' expecting 'as'", + 'Unknown column [a]', + ]); + testErrorsAndWarnings('from a_index | rename stringField as', [ + "SyntaxError: missing ID_PATTERN at ''", + ]); + testErrorsAndWarnings('from a_index | rename missingField as', [ + "SyntaxError: missing ID_PATTERN at ''", + 'Unknown column [missingField]', + ]); + 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_index | eval numberField + 1 | rename `numberField + 1` as a', + [] + ); + 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_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: mismatched input 'is' expecting ", + ]); + }); + + describe('dissect', () => { + testErrorsAndWarnings('from a_index | dissect', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + testErrorsAndWarnings('from a_index | dissect stringField', [ + "SyntaxError: missing STRING at ''", + ]); + testErrorsAndWarnings('from a_index | dissect stringField 2', [ + "SyntaxError: mismatched input '2' expecting STRING", + ]); + testErrorsAndWarnings('from a_index | dissect stringField .', [ + "SyntaxError: mismatched input '' expecting {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + 'Unknown column [stringField.]', + ]); + testErrorsAndWarnings('from a_index | dissect stringField %a', [ + "SyntaxError: mismatched input '%' expecting STRING", + "SyntaxError: mismatched input '' expecting '='", + ]); + // Do not try to validate the dissect pattern string + 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_index | dissect stringField "%{firstWord}" option ', [ + "SyntaxError: mismatched input '' expecting '='", + ]); + testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option = ', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', 'null', '?', 'true', '+', '-', OPENING_BRACKET}", + 'Invalid option for DISSECT: [option]', + ]); + testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option = 1', [ + 'Invalid option for DISSECT: [option]', + ]); + 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_index | grok', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + testErrorsAndWarnings('from a_index | grok stringField', [ + "SyntaxError: missing STRING at ''", + ]); + testErrorsAndWarnings('from a_index | grok stringField 2', [ + "SyntaxError: mismatched input '2' expecting STRING", + ]); + testErrorsAndWarnings('from a_index | grok stringField .', [ + "SyntaxError: mismatched input '' expecting {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + 'Unknown column [stringField.]', + ]); + testErrorsAndWarnings('from a_index | grok stringField %a', [ + "SyntaxError: mismatched input '%' expecting STRING", + ]); + // Do not try to validate the grok pattern string + 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_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_index | where b', ['Unknown column [b]']); + for (const cond of ['true', 'false']) { + 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_index | where ${nValue} > 0`, []); + testErrorsAndWarnings(`from a_index | where NOT ${nValue} > 0`, []); + } + for (const op of ['>', '>=', '<', '<=', '==']) { + 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]`, + ]); + } + + for (const nesting of NESTED_DEPTHS) { + for (const evenOp of ['-', '+']) { + for (const oddOp of ['-', '+']) { + // This builds a combination of +/- operators + // i.e. ---- something, -+-+ something, +-+- something, etc... + const unaryCombination = Array(nesting) + .fill('- ') + .map((_, i) => (i % 2 ? oddOp : evenOp)) + .join(''); + 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_index | where 1 ${unaryCombination} numberField > 0`, []); + } + } + testErrorsAndWarnings( + `from a_index | where ${Array(nesting).fill('not ').join('')} booleanField`, + [] + ); + } + for (const wrongOp of ['*', '/', '%']) { + 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}`, + ]); + } + + // Skip these tests until the insensitive case equality gets restored back + testErrorsAndWarnings.skip(`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.skip(`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.skip(`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.skip(`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.skip(`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.skip(`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_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_index | where numberField NOT ${op} "?a"`, [ + `Argument of [not_${op}] must be [string], found value [numberField] type [number]`, + ]); + testErrorsAndWarnings(`from a_index | where NOT numberField ${op} "?a"`, [ + `Argument of [${op}] must be [string], found value [numberField] type [number]`, + ]); + 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_index | where cidr_match(ipField)`, [ + `Error: [cidr_match] function expects at least 2 arguments, got 1.`, + ]); + testErrorsAndWarnings( + `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_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`, []); + } + + for (const { + name, + alias, + signatures, + ...defRest + } of statsAggregationFunctionDefinitions.filter( + ({ name: fnName, signatures: statsSignatures }) => + statsSignatures.some(({ returnType, params }) => ['number'].includes(returnType)) + )) { + for (const { params, ...signRest } of signatures) { + const fieldMapping = getFieldMapping(params); + + testErrorsAndWarnings( + `from a_index | where ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMapping, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + [`WHERE does not support function ${name}`] + ); + + testErrorsAndWarnings( + `from a_index | where ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMapping, ...signRest }], + }, + { withTypes: false } + )[0].declaration + } > 0`, + [`WHERE does not support function ${name}`] + ); + } + } + + // Test that all functions work in where + const numericOrStringFunctions = evalFunctionsDefinitions.filter(({ name, signatures }) => { + return signatures.some( + ({ returnType, params }) => + ['number', 'string'].includes(returnType) && + params.every(({ type }) => ['number', 'string'].includes(type)) + ); + }); + for (const { name, signatures, ...rest } of numericOrStringFunctions) { + const supportedSignatures = signatures.filter(({ returnType }) => + ['number', 'string'].includes(returnType) + ); + for (const { params, returnType, ...restSign } of supportedSignatures) { + const correctMapping = params + .filter(({ optional }) => !optional) + .map(({ type }) => + ['number', 'string'].includes(Array.isArray(type) ? type.join(', ') : type) + ? { name: `${type}Field`, type } + : { name: `numberField`, type } + ); + testErrorsAndWarnings( + `from a_index | where ${returnType !== 'number' ? 'length(' : ''}${ + // hijacking a bit this function to produce a function call + getFunctionSignatures( + { + name, + ...rest, + signatures: [{ params: correctMapping, returnType, ...restSign }], + }, + { withTypes: false } + )[0].declaration + }${returnType !== 'number' ? ')' : ''} > 0`, + [] + ); + + const { wrongFieldMapping, expectedErrors } = generateWrongMappingForArgs( + name, + signatures, + params, + { stringField: 'stringField', numberField: 'numberField', booleanField: 'booleanField' } + ); + testErrorsAndWarnings( + `from a_index | where ${returnType !== 'number' ? 'length(' : ''}${ + // hijacking a bit this function to produce a function call + getFunctionSignatures( + { + name, + ...rest, + signatures: [{ params: wrongFieldMapping, returnType, ...restSign }], + }, + { withTypes: false } + )[0].declaration + }${returnType !== 'number' ? ')' : ''} > 0`, + expectedErrors + ); + } + } + }); + + describe('eval', () => { + testErrorsAndWarnings('from a_index | eval ', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + 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: no viable alternative at input 'numberField + '", + ]); + testErrorsAndWarnings('from a_index | eval stringField + 1', [ + 'Argument of [+] must be [number], found value [stringField] type [string]', + ]); + testErrorsAndWarnings('from a_index | eval a=b', ['Unknown column [b]']); + testErrorsAndWarnings('from a_index | eval a=b, ', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + 'Unknown column [b]', + ]); + testErrorsAndWarnings('from a_index | eval a=round', ['Unknown column [round]']); + testErrorsAndWarnings('from a_index | eval a=round(', [ + "SyntaxError: no viable alternative at input 'round('", + ]); + testErrorsAndWarnings('from a_index | eval a=round(numberField) ', []); + testErrorsAndWarnings('from a_index | eval a=round(numberField), ', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + 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_index | eval a=round(numberField) + round(stringField), numberField ', + ['Argument of [round] must be [number], found value [stringField] type [string]'] + ); + testErrorsAndWarnings( + 'from a_index | eval a=round(numberField) + round(numberField), numberField ', + [] + ); + testErrorsAndWarnings( + 'from a_index | eval a=round(numberField) + round(numberField), b = numberField ', + [] + ); + + 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_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 NESTED_DEPTHS) { + for (const evenOp of ['-', '+']) { + for (const oddOp of ['-', '+']) { + // This builds a combination of +/- operators + // i.e. ---- something, -+-+ something, +-+- something, etc... + const unaryCombination = Array(nesting) + .fill('- ') + .map((_, i) => (i % 2 ? oddOp : evenOp)) + .join(''); + 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_index | eval 1 ${unaryCombination} numberField`, []); + } + } + + testErrorsAndWarnings( + `from a_index | eval ${Array(nesting).fill('not ').join('')} booleanField`, + [] + ); + } + + for (const wrongOp of ['*', '/', '%']) { + 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}`, + ]); + } + + for (const { name, alias, signatures, ...defRest } of statsAggregationFunctionDefinitions) { + for (const { params, ...signRest } of signatures) { + const fieldMapping = getFieldMapping(params); + testErrorsAndWarnings( + `from a_index | eval var = ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMapping, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + [`EVAL does not support function ${name}`] + ); + + testErrorsAndWarnings( + `from a_index | eval var = ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMapping, ...signRest }], + }, + { withTypes: false } + )[0].declaration + } > 0`, + [`EVAL does not support function ${name}`] + ); + + testErrorsAndWarnings( + `from a_index | eval ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMapping, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + [`EVAL does not support function ${name}`] + ); + + testErrorsAndWarnings( + `from a_index | eval ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMapping, ...signRest }], + }, + { withTypes: false } + )[0].declaration + } > 0`, + [`EVAL does not support function ${name}`] + ); + } + } + + for (const { name, alias, signatures, ...defRest } of evalFunctionsDefinitions) { + for (const { params, ...signRest } of signatures) { + const fieldMapping = getFieldMapping(params); + testErrorsAndWarnings( + `from a_index | eval var = ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMapping, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + [] + ); + testErrorsAndWarnings( + `from a_index | eval ${ + getFunctionSignatures( + { name, ...defRest, signatures: [{ params: fieldMapping, ...signRest }] }, + { 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, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + fieldReplacedType.map( + (type) => `Argument of [${name}] must be a constant, received [${type}Field]` + ) + ); + } + + if (alias) { + for (const otherName of alias) { + const signatureStringWithAlias = getFunctionSignatures( + { + name: otherName, + ...defRest, + signatures: [{ params: fieldMapping, ...signRest }], + }, + { withTypes: false } + )[0].declaration; + + testErrorsAndWarnings(`from a_index | eval var = ${signatureStringWithAlias}`, []); + } + } + + // Skip functions that have only arguments of type "any", as it is not possible to pass "the wrong type". + // auto_bucket and to_version functions are a bit harder to test exactly a combination of argument and predict the + // the right error message + if ( + params.every(({ type }) => type !== 'any') && + !['auto_bucket', 'to_version'].includes(name) + ) { + // now test nested functions + const fieldMappingWithNestedFunctions = getFieldMapping(params, { + useNestedFunction: true, + useLiterals: true, + }); + testErrorsAndWarnings( + `from a_index | eval var = ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithNestedFunctions, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }` + ); + + const { wrongFieldMapping, expectedErrors } = generateWrongMappingForArgs( + name, + signatures, + params, + { + stringField: 'stringField', + numberField: 'numberField', + booleanField: 'booleanField', + } + ); + testErrorsAndWarnings( + `from a_index | eval ${ + getFunctionSignatures( + { name, ...defRest, signatures: [{ params: wrongFieldMapping, ...signRest }] }, + { withTypes: false } + )[0].declaration + }`, + expectedErrors + ); + + if (!signRest.minParams) { + // test that additional args are spotted + const fieldMappingWithOneExtraArg = getFieldMapping(params).concat({ + name: 'extraArg', + type: 'number', + }); + const refSignature = signatures[0]; + // get the expected args from the first signature in case of errors + const minNumberOfArgs = refSignature.params.filter( + ({ optional }) => !optional + ).length; + const fullNumberOfArgs = refSignature.params.length; + const hasOptionalArgs = minNumberOfArgs < fullNumberOfArgs; + const hasTooManyArgs = fieldMappingWithOneExtraArg.length > fullNumberOfArgs; + + // the validation engine tries to be smart about signatures with optional args + let messageQuantifier = 'exactly '; + if (hasOptionalArgs && hasTooManyArgs) { + messageQuantifier = 'no more than '; + } + if (!hasOptionalArgs && !hasTooManyArgs) { + messageQuantifier = 'at least '; + } + testErrorsAndWarnings( + `from a_index | eval ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithOneExtraArg, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + [ + `Error: [${name}] function expects ${messageQuantifier}${ + fullNumberOfArgs === 1 + ? 'one argument' + : fullNumberOfArgs === 0 + ? '0 arguments' + : `${fullNumberOfArgs} arguments` + }, got ${fieldMappingWithOneExtraArg.length}.`, + ] + ); + } + } + + // test that wildcard won't work as arg + if (fieldMapping.length === 1 && !signRest.minParams) { + const fieldMappingWithWildcard = [...fieldMapping]; + fieldMappingWithWildcard[0].name = '*'; + + testErrorsAndWarnings( + `from a_index | eval var = ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithWildcard, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + [`Using wildcards (*) in ${name} is not allowed`] + ); + } + } + } + testErrorsAndWarnings( + 'from a_index | eval log10(-1)', + [], + ['Log of a negative number results in null: -1'] + ); + testErrorsAndWarnings( + 'from a_index | eval log(-1)', + [], + ['Log of a negative number results in null: -1'] + ); + testErrorsAndWarnings( + 'from a_index | eval log(-1, 20)', + [], + ['Log of a negative number results in null: -1'] + ); + testErrorsAndWarnings( + 'from a_index | eval log(-1, -20)', + [], + [ + 'Log of a negative number results in null: -1', + 'Log of a negative number results in null: -20', + ] + ); + testErrorsAndWarnings( + 'from a_index | eval var0 = log(-1, -20)', + [], + [ + 'Log of a negative number results in null: -1', + 'Log of a negative number results in null: -20', + ] + ); + for (const op of ['>', '>=', '<', '<=', '==']) { + 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_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_index | eval ${divideByZeroExpr}`, + [], + ['Cannot divide by zero: 1/0'] + ); + } + for (const divideByZeroExpr of ['1%0', 'var = 1%0', '1 + 1%0']) { + testErrorsAndWarnings( + `from a_index | eval ${divideByZeroExpr}`, + [], + ['Module by zero can return null value: 1%0'] + ); + } + for (const op of ['like', 'rlike']) { + 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_index | eval numberField NOT ${op} "?a"`, [ + `Argument of [not_${op}] must be [string], found value [numberField] type [number]`, + ]); + testErrorsAndWarnings(`from a_index | eval NOT numberField ${op} "?a"`, [ + `Argument of [${op}] must be [string], found value [numberField] type [number]`, + ]); + 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_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_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_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_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_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: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + 'Error: [not] function expects exactly one argument, got 0.', + ]); + testErrorsAndWarnings('from a_index | eval in', [ + "SyntaxError: mismatched input 'in' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + + testErrorsAndWarnings('from a_index | eval stringField in stringField', [ + "SyntaxError: missing '(' at 'stringField'", + "SyntaxError: mismatched input '' expecting {',', ')'}", + ]); + + testErrorsAndWarnings('from a_index | eval stringField in stringField)', [ + "SyntaxError: missing '(' at 'stringField'", + 'Error: [in] function expects exactly 2 arguments, got 1.', + ]); + testErrorsAndWarnings('from a_index | eval stringField not in stringField', [ + "SyntaxError: missing '(' at 'stringField'", + "SyntaxError: mismatched input '' expecting {',', ')'}", + ]); + + describe('date math', () => { + testErrorsAndWarnings('from a_index | eval 1 anno', [ + 'EVAL does not support [date_period] in expression [1 anno]', + ]); + testErrorsAndWarnings('from a_index | eval var = 1 anno', [ + "Unexpected time interval qualifier: 'anno'", + ]); + testErrorsAndWarnings('from a_index | eval now() + 1 anno', [ + "Unexpected time interval qualifier: 'anno'", + ]); + for (const timeLiteral of timeLiterals) { + testErrorsAndWarnings(`from a_index | eval 1 ${timeLiteral.name}`, [ + `EVAL does not support [date_period] in expression [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_index | eval var = 1 ${timeLiteral.name}`, [ + // `Eval does not support [date_period] in expression [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_index | eval var = dateField - 1 ${timeLiteral.name.toUpperCase()}`, + [] + ); + testErrorsAndWarnings( + `from a_index | eval var = dateField - 1 ${capitalize(timeLiteral.name)}`, + [] + ); + 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_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]`, + ]); + } + } + }); + }); + + describe('stats', () => { + testErrorsAndWarnings('from a_index | stats ', [ + 'At least one aggregation or grouping expression required in [STATS]', + ]); + testErrorsAndWarnings('from a_index | stats by stringField', []); + testErrorsAndWarnings('from a_index | stats by ', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + testErrorsAndWarnings('from a_index | stats numberField ', [ + 'Expected an aggregate function or group but got [numberField] of type [FieldAttribute]', + ]); + testErrorsAndWarnings('from a_index | stats numberField=', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + testErrorsAndWarnings('from a_index | stats numberField=5 by ', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + testErrorsAndWarnings('from a_index | stats avg(numberField) by wrongField', [ + 'Unknown column [wrongField]', + ]); + testErrorsAndWarnings('from a_index | stats avg(numberField) by wrongField + 1', [ + 'Unknown column [wrongField]', + ]); + testErrorsAndWarnings('from a_index | stats avg(numberField) by var0 = wrongField + 1', [ + 'Unknown column [wrongField]', + ]); + 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_index | stats count(`numberField`)', []); + + for (const subCommand of ['keep', 'drop', 'eval']) { + testErrorsAndWarnings( + `from a_index | stats count(\`numberField\`) | ${subCommand} \`count(\`\`numberField\`\`)\` `, + [] + ); + } + + testErrorsAndWarnings( + 'from a_index | stats avg(numberField) by stringField, percentile(numberField) by ipField', + [ + "SyntaxError: mismatched input 'by' expecting ", + 'STATS BY does not support function percentile', + ] + ); + + testErrorsAndWarnings( + 'from a_index | stats avg(numberField), percentile(numberField, 50) by ipField', + [] + ); + + testErrorsAndWarnings( + 'from a_index | stats avg(numberField), percentile(numberField, 50) BY ipField', + [] + ); + for (const op of ['+', '-', '*', '/', '%']) { + testErrorsAndWarnings( + `from a_index | stats avg(numberField) ${op} percentile(numberField, 50) BY ipField`, + [] + ); + } + testErrorsAndWarnings('from a_index | stats count(* + 1) BY ipField', [ + "SyntaxError: no viable alternative at input 'count(* +'", + ]); + testErrorsAndWarnings('from a_index | stats count(* + round(numberField)) BY ipField', [ + "SyntaxError: no viable alternative at input 'count(* +'", + ]); + testErrorsAndWarnings('from a_index | stats count(round(*)) BY ipField', [ + 'Using wildcards (*) in round is not allowed', + ]); + 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_index | stats numberField + 1', [ + 'At least one aggregation function required in [STATS], found [numberField+1]', + ]); + + for (const nesting of NESTED_DEPTHS) { + 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_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_index | stats 5 + numberField + 1', [ + 'At least one aggregation function required in [STATS], found [5+numberField+1]', + ]); + + testErrorsAndWarnings('from a_index | stats numberField + 1 by ipField', [ + 'At least one aggregation function required in [STATS], found [numberField+1]', + ]); + + testErrorsAndWarnings( + 'from a_index | stats avg(numberField), percentile(numberField, 50) + 1 by ipField', + [] + ); + + 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 { params, ...signRest } of signatures) { + const fieldMapping = getFieldMapping(params); + + const correctSignature = getFunctionSignatures( + { name, ...defRest, signatures: [{ params: fieldMapping, ...signRest }] }, + { withTypes: false } + )[0].declaration; + testErrorsAndWarnings(`from a_index | stats var = ${correctSignature}`, []); + testErrorsAndWarnings(`from a_index | stats ${correctSignature}`, []); + + if (signRest.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, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + fieldReplacedType.map( + (type) => `Argument of [${name}] must be a constant, received [${type}Field]` + ) + ); + } + + if (alias) { + for (const otherName of alias) { + const signatureStringWithAlias = getFunctionSignatures( + { + name: otherName, + ...defRest, + signatures: [{ params: fieldMapping, ...signRest }], + }, + { withTypes: false } + )[0].declaration; + + testErrorsAndWarnings(`from a_index | stats var = ${signatureStringWithAlias}`, []); + } + } + + // test only numeric functions for now + if (params[0].type === 'number') { + const nestedBuiltin = 'numberField / 2'; + const fieldMappingWithNestedBuiltinFunctions = getFieldMapping(params); + fieldMappingWithNestedBuiltinFunctions[0].name = nestedBuiltin; + + const fnSignatureWithBuiltinString = getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithNestedBuiltinFunctions, ...signRest }], + }, + { withTypes: false } + )[0].declaration; + // from a_index | STATS aggFn( numberField / 2 ) + testErrorsAndWarnings(`from a_index | stats ${fnSignatureWithBuiltinString}`, []); + testErrorsAndWarnings( + `from a_index | stats var0 = ${fnSignatureWithBuiltinString}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats avg(numberField), ${fnSignatureWithBuiltinString}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats avg(numberField), var0 = ${fnSignatureWithBuiltinString}`, + [] + ); + + const nestedEvalAndBuiltin = 'round(numberField / 2)'; + const fieldMappingWithNestedEvalAndBuiltinFunctions = getFieldMapping(params); + fieldMappingWithNestedBuiltinFunctions[0].name = nestedEvalAndBuiltin; + + const fnSignatureWithEvalAndBuiltinString = getFunctionSignatures( + { + name, + ...defRest, + signatures: [ + { params: fieldMappingWithNestedEvalAndBuiltinFunctions, ...signRest }, + ], + }, + { withTypes: false } + )[0].declaration; + // from a_index | STATS aggFn( round(numberField / 2) ) + testErrorsAndWarnings( + `from a_index | stats ${fnSignatureWithEvalAndBuiltinString}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats var0 = ${fnSignatureWithEvalAndBuiltinString}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString}`, + [] + ); + // from a_index | STATS aggFn(round(numberField / 2) ) BY round(numberField / 2) + testErrorsAndWarnings( + `from a_index | stats ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}, ipField`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}, ipField`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}, ${nestedBuiltin}`, + [] + ); + testErrorsAndWarnings( + `from a_index | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}, ${nestedBuiltin}`, + [] + ); + } + + // Skip functions that have only arguments of type "any", as it is not possible to pass "the wrong type". + // auto_bucket and to_version functions are a bit harder to test exactly a combination of argument and predict the + // the right error message + if ( + params.every(({ type }) => type !== 'any') && + !['auto_bucket', 'to_version'].includes(name) + ) { + // now test nested functions + const fieldMappingWithNestedAggsFunctions = getFieldMapping(params, { + 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_index | stats var = ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithNestedAggsFunctions, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + nestedAggsExpectedErrors + ); + testErrorsAndWarnings( + `from a_index | stats ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithNestedAggsFunctions, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + nestedAggsExpectedErrors + ); + 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_index | stats ${ + getFunctionSignatures( + { name, ...defRest, signatures: [{ params: wrongFieldMapping, ...signRest }] }, + { withTypes: false } + )[0].declaration + }`, + expectedErrors + ); + + // test that only count() accepts wildcard as arg + // just check that the function accepts only 1 arg as the parser cannot handle multiple args with * as start arg + if (fieldMapping.length === 1) { + const fieldMappingWithWildcard = [...fieldMapping]; + fieldMappingWithWildcard[0].name = '*'; + + testErrorsAndWarnings( + `from a_index | stats var = ${ + getFunctionSignatures( + { + name, + ...defRest, + signatures: [{ params: fieldMappingWithWildcard, ...signRest }], + }, + { withTypes: false } + )[0].declaration + }`, + name === 'count' ? [] : [`Using wildcards (*) in ${name} is not allowed`] + ); + } + } + } + } + testErrorsAndWarnings( + `FROM index + | EVAL numberField * 3.281 + | STATS avg_numberField = AVG(\`numberField * 3.281\`)`, + [] + ); + + testErrorsAndWarnings( + `FROM index | STATS AVG(numberField) by round(numberField) + 1 | EVAL \`round(numberField) + 1\` / 2`, + [] + ); + }); + + describe('sort', () => { + testErrorsAndWarnings('from a_index | sort ', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + testErrorsAndWarnings('from a_index | sort "field" ', []); + testErrorsAndWarnings('from a_index | sort wrongField ', ['Unknown column [wrongField]']); + testErrorsAndWarnings('from a_index | sort numberField, ', [ + "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", + ]); + testErrorsAndWarnings('from a_index | sort numberField, stringField', []); + for (const dir of ['desc', 'asc']) { + 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_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_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_index | enrich`, [ + "SyntaxError: missing ENRICH_POLICY_NAME at ''", + ]); + testErrorsAndWarnings(`from a_index | enrich _`, ['Unknown policy [_]']); + testErrorsAndWarnings(`from a_index | enrich _:`, [ + "SyntaxError: token recognition error at: ':'", + 'Unknown policy [_]', + ]); + testErrorsAndWarnings(`from a_index | enrich _:policy`, [ + 'Unrecognized value [_] for ENRICH, mode needs to be one of [_ANY, _COORDINATOR, _REMOTE]', + ]); + testErrorsAndWarnings(`from a_index | enrich :policy`, [ + "SyntaxError: token recognition error at: ':'", + ]); + testErrorsAndWarnings(`from a_index | enrich any:`, [ + "SyntaxError: token recognition error at: ':'", + 'Unknown policy [any]', + ]); + testErrorsAndWarnings(`from a_index | enrich _any:`, [ + "SyntaxError: token recognition error at: ':'", + 'Unknown policy [_any]', + ]); + testErrorsAndWarnings(`from a_index | enrich any:policy`, [ + 'Unrecognized value [any] for ENRICH, mode needs to be one of [_ANY, _COORDINATOR, _REMOTE]', + ]); + testErrorsAndWarnings(`from a_index | enrich policy `, []); + testErrorsAndWarnings('from a_index | enrich `this``is fine`', [ + "SyntaxError: mismatched input '`this``is fine`' expecting ENRICH_POLICY_NAME", + ]); + testErrorsAndWarnings('from a_index | enrich this is fine', [ + "SyntaxError: mismatched input 'is' expecting ", + 'Unknown policy [this]', + ]); + for (const value of ['any', 'coordinator', 'remote']) { + 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_index | enrich _${value}: policy `, [ + "SyntaxError: token recognition error at: ':'", + "SyntaxError: extraneous input 'policy' expecting ", + `Unknown policy [_${value}]`, + ]); + testErrorsAndWarnings(`from a_index | enrich _${camelCase(value)}:policy `, []); + testErrorsAndWarnings(`from a_index | enrich _${value.toUpperCase()}: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_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_index | enrich policy on this is fine', [ + "SyntaxError: mismatched input 'is' expecting ", + 'Unknown column [this]', + ]); + testErrorsAndWarnings(`from a_index | enrich policy on stringField with `, [ + "SyntaxError: mismatched input '' expecting ID_PATTERN", + ]); + testErrorsAndWarnings(`from a_index | enrich policy on stringField with var0 `, [ + 'Unknown column [var0]', + ]); + testErrorsAndWarnings(`from a_index |enrich policy on numberField with var0 = `, [ + "SyntaxError: missing ID_PATTERN at ''", + 'Unknown column [var0]', + ]); + 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_index | enrich policy on stringField with var0 = stringField `, [ + // `Unknown column [stringField]`, + // ]); + testErrorsAndWarnings(`from a_index |enrich policy on numberField with var0 = , `, [ + "SyntaxError: missing ID_PATTERN at ','", + "SyntaxError: mismatched input '' expecting ID_PATTERN", + 'Unknown column [var0]', + ]); + testErrorsAndWarnings( + `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_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_index | enrich policy on stringField with var0 = otherField, var1 = yetAnotherField`, + [] + ); + testErrorsAndWarnings( + 'from a_index | enrich policy on stringField with var0 = otherField, `this``is fine` = yetAnotherField', + [] + ); + testErrorsAndWarnings(`from a_index | enrich policy with `, [ + "SyntaxError: mismatched input '' expecting ID_PATTERN", + ]); + 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_index | eval stringField = 5', + [], + ['Column [stringField] of type string has been overwritten as new type: number'] + ); + testErrorsAndWarnings( + 'from a_index | eval numberField = "5"', + [], + ['Column [numberField] of type number has been overwritten as new type: string'] + ); + }); + + describe('quoting and escaping expressions', () => { + function getTicks(amount: number) { + return Array(amount).fill('`').join(''); + } + /** + * Given an initial quoted expression, build a new quoted expression + * that appends as many +1 to the previous one based on the nesting level + * i.e. given the expression `round(...) + 1` returns + * ```round(...) + 1`` + 1` (for nesting 1) + * ```````round(...) + 1```` + 1`` + 1` (for nesting 2) + * etc... + * Note how backticks double for each level + wrapping quotes + * The general rule follows an exponential curve given a nesting N: + * (`){ (2^N)-1 } ticks expression (`){ 2^N-1 } +1 (`){ 2^N-2 } +1 ... +1 + * + * Mind that nesting arg here is equivalent to N-1 + */ + function buildNestedExpression(expr: string, nesting: number) { + const openingTicks = getTicks(Math.pow(2, nesting + 1) - 1); + const firstClosingBatch = getTicks(Math.pow(2, nesting)); + const additionalPlusOneswithTicks = Array(nesting) + .fill(' + 1') + .reduce((acc, plusOneAppended, i) => { + // workout how many ticks to add: 2^N-i + const ticks = getTicks(Math.pow(2, nesting - 1 - i)); + return `${acc}${plusOneAppended}${ticks}`; + }, ''); + const ret = `${openingTicks}${expr}${firstClosingBatch}${additionalPlusOneswithTicks}`; + return ret; + } + + for (const nesting of NESTED_DEPTHS) { + // start with a quotable expression + const expr = 'round(numberField) + 1'; + const startingQuery = `from a_index | eval ${expr}`; + // now pipe for each nesting level a new eval command that appends a +1 to the previous quoted expression + const finalQuery = `${startingQuery} | ${Array(nesting) + .fill('') + .map((_, i) => { + return `eval ${buildNestedExpression(expr, i)} + 1`; + }) + .join(' | ')} | keep ${buildNestedExpression(expr, nesting)}`; + testErrorsAndWarnings(finalQuery, []); + } + }); + + describe('callbacks', () => { + it(`should not fetch source and fields list when a row command is set`, async () => { + const callbackMocks = getCallbackMocks(); + await validateQuery(`row a = 1 | eval a`, getAstAndSyntaxErrors, undefined, callbackMocks); + expect(callbackMocks.getFieldsFor).not.toHaveBeenCalled(); + expect(callbackMocks.getSources).not.toHaveBeenCalled(); + }); + + it(`should not fetch policies if no enrich command is found`, async () => { + const callbackMocks = getCallbackMocks(); + await validateQuery(`row a = 1 | eval a`, getAstAndSyntaxErrors, undefined, callbackMocks); + expect(callbackMocks.getPolicies).not.toHaveBeenCalled(); + }); + + it(`should not fetch source and fields for empty command`, async () => { + const callbackMocks = getCallbackMocks(); + await validateQuery(` `, getAstAndSyntaxErrors, undefined, callbackMocks); + expect(callbackMocks.getFieldsFor).not.toHaveBeenCalled(); + expect(callbackMocks.getSources).not.toHaveBeenCalled(); + }); + + it(`should skip initial source and fields call but still call fields for enriched policy`, async () => { + const callbackMocks = getCallbackMocks(); + await validateQuery( + `row a = 1 | eval b = a | enrich policy`, + getAstAndSyntaxErrors, + undefined, + callbackMocks + ); + expect(callbackMocks.getSources).not.toHaveBeenCalled(); + expect(callbackMocks.getPolicies).toHaveBeenCalled(); + expect(callbackMocks.getFieldsFor).toHaveBeenCalledTimes(1); + expect(callbackMocks.getFieldsFor).toHaveBeenLastCalledWith({ + query: `from enrich_index | keep otherField, yetAnotherField`, + }); + }); + + it('should call fields callbacks also for meta command', async () => { + const callbackMocks = getCallbackMocks(); + await validateQuery( + `meta functions | keep name`, + getAstAndSyntaxErrors, + undefined, + callbackMocks + ); + expect(callbackMocks.getSources).not.toHaveBeenCalled(); + expect(callbackMocks.getPolicies).not.toHaveBeenCalled(); + expect(callbackMocks.getFieldsFor).toHaveBeenCalledTimes(1); + expect(callbackMocks.getFieldsFor).toHaveBeenLastCalledWith({ + query: 'meta functions', + }); + }); + + it('should call fields callbacks also for show command', async () => { + const callbackMocks = getCallbackMocks(); + await validateQuery( + `show info | keep name`, + getAstAndSyntaxErrors, + undefined, + callbackMocks + ); + expect(callbackMocks.getSources).not.toHaveBeenCalled(); + expect(callbackMocks.getPolicies).not.toHaveBeenCalled(); + expect(callbackMocks.getFieldsFor).toHaveBeenCalledTimes(1); + expect(callbackMocks.getFieldsFor).toHaveBeenLastCalledWith({ + query: 'show info', + }); + }); + + it(`should fetch additional fields if an enrich command is found`, async () => { + const callbackMocks = getCallbackMocks(); + await validateQuery( + `from a_index | eval b = a | enrich policy`, + getAstAndSyntaxErrors, + undefined, + callbackMocks + ); + expect(callbackMocks.getSources).toHaveBeenCalled(); + expect(callbackMocks.getPolicies).toHaveBeenCalled(); + expect(callbackMocks.getFieldsFor).toHaveBeenCalledTimes(2); + expect(callbackMocks.getFieldsFor).toHaveBeenLastCalledWith({ + query: `from enrich_index | keep otherField, yetAnotherField`, + }); + }); + + it(`should not crash if no callbacks are available`, async () => { + try { + await validateQuery( + `from a_index | eval b = a | enrich policy | dissect stringField "%{firstWord}"`, + getAstAndSyntaxErrors, + undefined, + { + getFieldsFor: undefined, + getSources: undefined, + getPolicies: undefined, + getMetaFields: undefined, + } + ); + } catch { + fail('Should not throw'); + } + }); + + it(`should not crash if no callbacks are passed`, async () => { + try { + await validateQuery( + `from a_index | eval b = a | enrich policy | dissect stringField "%{firstWord}"`, + getAstAndSyntaxErrors + ); + } catch { + fail('Should not throw'); + } + }); + }); + }); + + describe('Ignoring errors based on callbacks', () => { + interface Fixtures { + testCases: Array<{ query: string; error: string[] }>; + } + + async function loadFixtures() { + // early exit if the testCases are already defined locally + if (testCases.length) { + return { testCases }; + } + const json = await readFile(join(__dirname, 'esql_validation_meta_tests.json'), 'utf8'); + const esqlPackage = JSON.parse(json); + return esqlPackage as Fixtures; + } + + function excludeErrorsByContent(excludedCallback: Array) { + const contentByCallback = { + getSources: /Unknown index/, + getPolicies: /Unknown policy/, + getFieldsFor: /Unknown column|Argument of|it is unsupported or not indexed/, + getMetaFields: /Metadata field/, + }; + return excludedCallback.map((callback) => contentByCallback[callback]) || []; + } + + function getPartialCallbackMocks(exclude?: string) { + return { + ...getCallbackMocks(), + ...(exclude ? { [exclude]: undefined } : {}), + }; + } + + let fixtures: Fixtures; + + beforeAll(async () => { + fixtures = await loadFixtures(); + }); + + it('should basically work when all callbacks are passed', async () => { + const allErrors = await Promise.all( + fixtures.testCases + .filter(({ query }) => query === 'from index [METADATA _id, _source2]') + .map(({ query }) => + validateQuery( + query, + getAstAndSyntaxErrors, + { ignoreOnMissingCallbacks: true }, + getCallbackMocks() + ) + ) + ); + for (const [index, { errors }] of Object.entries(allErrors)) { + expect(errors.map((e) => ('severity' in e ? e.message : e.text))).toEqual( + fixtures.testCases.filter(({ query }) => query === 'from index [METADATA _id, _source2]')[ + Number(index) + ].error + ); + } + }); + + // test excluding one callback at the time + it.each(['getSources', 'getFieldsFor', 'getPolicies', 'getMetaFields'] as Array< + keyof typeof ignoreErrorsMap + >)(`should not error if %s is missing`, async (excludedCallback) => { + const filteredTestCases = fixtures.testCases.filter((t) => + t.error.some((message) => + excludeErrorsByContent([excludedCallback]).every((regexp) => regexp?.test(message)) + ) + ); + const allErrors = await Promise.all( + filteredTestCases.map(({ query }) => + validateQuery( + query, + getAstAndSyntaxErrors, + { ignoreOnMissingCallbacks: true }, + getPartialCallbackMocks(excludedCallback) + ) + ) + ); + for (const { errors } of allErrors) { + expect( + errors.every(({ code }) => + ignoreErrorsMap[excludedCallback].every((ignoredCode) => ignoredCode !== code) + ) + ).toBe(true); + } + }); + + it('should work if no callback passed', async () => { + const excludedCallbacks = [ + 'getSources', + 'getPolicies', + 'getFieldsFor', + 'getMetaFields', + ] as Array; + for (const testCase of fixtures.testCases.filter((t) => + t.error.some((message) => + excludeErrorsByContent(excludedCallbacks).every((regexp) => regexp?.test(message)) + ) + )) { + const { errors } = await validateQuery(testCase.query, getAstAndSyntaxErrors, { + ignoreOnMissingCallbacks: true, + }); + expect( + errors.every(({ code }) => + Object.values(ignoreErrorsMap) + .filter(nonNullable) + .every((ignoredCode) => ignoredCode.every((i) => i !== code)) + ) + ).toBe(true); + } + }); + }); +}); diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts b/packages/kbn-esql-validation-autocomplete/src/validation/validation.ts similarity index 92% rename from packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts rename to packages/kbn-esql-validation-autocomplete/src/validation/validation.ts index 2043b79cf787b..c8e60bf4c7e96 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.ts +++ b/packages/kbn-esql-validation-autocomplete/src/validation/validation.ts @@ -7,6 +7,18 @@ */ import uniqBy from 'lodash/uniqBy'; +import type { + AstProviderFn, + ESQLAstItem, + ESQLColumn, + ESQLCommand, + ESQLCommandMode, + ESQLCommandOption, + ESQLFunction, + ESQLMessage, + ESQLSingleAstItem, + ESQLSource, +} from '@kbn/esql-ast'; import { CommandModeDefinition, CommandOptionsDefinition, @@ -41,20 +53,15 @@ import { isVariable, } from '../shared/helpers'; import { collectVariables } from '../shared/variables'; -import type { - AstProviderFn, - ESQLAstItem, - ESQLColumn, - ESQLCommand, - ESQLCommandMode, - ESQLCommandOption, - ESQLFunction, - ESQLMessage, - ESQLSingleAstItem, - ESQLSource, -} from '../types'; import { getMessageFromId, getUnknownTypeLabel } from './errors'; -import type { ESQLRealField, ESQLVariable, ReferenceMaps, ValidationResult } from './types'; +import type { + ErrorTypes, + ESQLRealField, + ESQLVariable, + ReferenceMaps, + ValidationOptions, + ValidationResult, +} from './types'; import type { ESQLCallbacks } from '../shared/types'; import { retrieveSources, @@ -820,13 +827,71 @@ function validateUnsupportedTypeFields(fields: Map) { return messages; } +export const ignoreErrorsMap: Record = { + getFieldsFor: ['unknownColumn', 'wrongArgumentType', 'unsupportedFieldType'], + getSources: ['unknownIndex'], + getPolicies: ['unknownPolicy'], + getMetaFields: ['unknownMetadataField'], +}; + +/** + * ES|QL validation public API + * It takes a query string and returns a list of messages (errors and warnings) after validate + * The astProvider is optional, but if not provided the default one from '@kbn/esql-validation-autocomplete' will be used. + * This is useful for async loading the ES|QL parser and reduce the bundle size, or to swap grammar version. + * As for the callbacks, while optional, the validation function will selectively ignore some errors types based on each callback missing. + */ +export async function validateQuery( + queryString: string, + astProvider: AstProviderFn, + options: ValidationOptions = {}, + callbacks?: ESQLCallbacks +): Promise { + const result = await validateAst(queryString, astProvider, callbacks); + // early return if we do not want to ignore errors + if (!options.ignoreOnMissingCallbacks) { + return result; + } + const { errors, warnings } = result; + const finalCallbacks = callbacks || {}; + const errorTypoesToIgnore = Object.entries(ignoreErrorsMap).reduce((acc, [key, errorCodes]) => { + if ( + !(key in finalCallbacks) || + (key in finalCallbacks && finalCallbacks[key as keyof ESQLCallbacks] == null) + ) { + for (const e of errorCodes) { + acc[e] = true; + } + } + return acc; + }, {} as Partial>); + const filteredErrors = errors + .filter((error) => { + if ('severity' in error) { + return true; + } + return !errorTypoesToIgnore[error.code as ErrorTypes]; + }) + .map((error) => + 'severity' in error + ? { + text: error.message, + code: error.code!, + type: 'error' as const, + location: { min: error.startColumn, max: error.endColumn }, + } + : error + ); + return { errors: filteredErrors, warnings }; +} + /** * This function will perform an high level validation of the * query AST. An initial syntax validation is already performed by the parser * while here it can detect things like function names, types correctness and potential warnings * @param ast A valid AST data structure */ -export async function validateAst( +async function validateAst( queryString: string, astProvider: AstProviderFn, callbacks?: ESQLCallbacks diff --git a/packages/kbn-esql-validation-autocomplete/tsconfig.json b/packages/kbn-esql-validation-autocomplete/tsconfig.json new file mode 100644 index 0000000000000..eea1faf19fa2d --- /dev/null +++ b/packages/kbn-esql-validation-autocomplete/tsconfig.json @@ -0,0 +1,21 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "outDir": "target/types", + "types": [ + "jest", + "node" + ] + }, + "include": [ + "src/**/*", + "**/*.ts", + ], + "kbn_references": [ + "@kbn/i18n", + "@kbn/esql-ast", + ], + "exclude": [ + "target/**/*", + ] +} diff --git a/packages/kbn-esql/src/antlr/.antlr/esql_lexer.interp b/packages/kbn-esql/src/antlr/.antlr/esql_lexer.interp deleted file mode 100644 index 8cd048fa4e8c3..0000000000000 --- a/packages/kbn-esql/src/antlr/.antlr/esql_lexer.interp +++ /dev/null @@ -1,307 +0,0 @@ -token literal names: -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -'by' -null -'and' -null -null -'.' -'(' -null -']' -null -null -null -null -null -null -null -'or' -')' -'_' -'info' -'functions' -null -null -'+' -'-' -'*' -'/' -'%' -'10' -null -'nulls' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -DISSECT -GROK -EVAL -EXPLAIN -FROM -ROW -STATS -WHERE -SORT -MV_EXPAND -LIMIT -PROJECT -DROP -RENAME -SHOW -ENRICH -KEEP -LINE_COMMENT -MULTILINE_COMMENT -WS -EXPLAIN_WS -EXPLAIN_LINE_COMMENT -EXPLAIN_MULTILINE_COMMENT -PIPE -STRING -INTEGER_LITERAL -DECIMAL_LITERAL -BY -DATE_LITERAL -AND -ASSIGN -COMMA -DOT -LP -OPENING_BRACKET -CLOSING_BRACKET -NOT -LIKE -RLIKE -IN -IS -AS -NULL -OR -RP -UNDERSCORE -INFO -FUNCTIONS -BOOLEAN_VALUE -COMPARISON_OPERATOR -PLUS -MINUS -ASTERISK -SLASH -PERCENT -TEN -ORDERING -NULLS_ORDERING -NULLS_ORDERING_DIRECTION -MATH_FUNCTION -UNARY_FUNCTION -WHERE_FUNCTIONS -UNQUOTED_IDENTIFIER -QUOTED_IDENTIFIER -EXPR_LINE_COMMENT -EXPR_MULTILINE_COMMENT -EXPR_WS -METADATA -SRC_UNQUOTED_IDENTIFIER -SRC_QUOTED_IDENTIFIER -SRC_LINE_COMMENT -SRC_MULTILINE_COMMENT -SRC_WS -ON -WITH -ENR_UNQUOTED_IDENTIFIER -ENR_QUOTED_IDENTIFIER -ENR_LINE_COMMENT -ENR_MULTILINE_COMMENT -ENR_WS -EXPLAIN_PIPE - -rule names: -DISSECT -GROK -EVAL -EXPLAIN -FROM -ROW -STATS -WHERE -SORT -MV_EXPAND -LIMIT -PROJECT -DROP -RENAME -SHOW -ENRICH -KEEP -LINE_COMMENT -MULTILINE_COMMENT -WS -EXPLAIN_OPENING_BRACKET -EXPLAIN_PIPE -EXPLAIN_WS -EXPLAIN_LINE_COMMENT -EXPLAIN_MULTILINE_COMMENT -PIPE -DIGIT -LETTER -ESCAPE_SEQUENCE -UNESCAPED_CHARS -EXPONENT -STRING -INTEGER_LITERAL -DECIMAL_LITERAL -BY -DATE_LITERAL -AND -ASSIGN -COMMA -DOT -LP -OPENING_BRACKET -CLOSING_BRACKET -NOT -LIKE -RLIKE -IN -IS -AS -NULL -OR -RP -UNDERSCORE -INFO -FUNCTIONS -BOOLEAN_VALUE -COMPARISON_OPERATOR -PLUS -MINUS -ASTERISK -SLASH -PERCENT -TEN -ORDERING -NULLS_ORDERING -NULLS_ORDERING_DIRECTION -MATH_FUNCTION -UNARY_FUNCTION -WHERE_FUNCTIONS -UNQUOTED_IDENTIFIER -QUOTED_IDENTIFIER -EXPR_LINE_COMMENT -EXPR_MULTILINE_COMMENT -EXPR_WS -SRC_PIPE -SRC_OPENING_BRACKET -SRC_CLOSING_BRACKET -SRC_COMMA -SRC_ASSIGN -METADATA -SRC_UNQUOTED_IDENTIFIER -SRC_UNQUOTED_IDENTIFIER_PART -SRC_QUOTED_IDENTIFIER -SRC_LINE_COMMENT -SRC_MULTILINE_COMMENT -SRC_WS -ON -WITH -ENR_PIPE -ENR_CLOSING_BRACKET -ENR_COMMA -ENR_ASSIGN -ENR_UNQUOTED_IDENTIFIER -ENR_UNQUOTED_IDENTIFIER_PART -ENR_QUOTED_IDENTIFIER -ENR_LINE_COMMENT -ENR_MULTILINE_COMMENT -ENR_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 - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE -EXPLAIN_MODE -EXPRESSION -SOURCE_IDENTIFIERS -ENRICH_IDENTIFIERS - -atn: -[4, 0, 81, 1610, 6, -1, 6, -1, 6, -1, 6, -1, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 2, 49, 7, 49, 2, 50, 7, 50, 2, 51, 7, 51, 2, 52, 7, 52, 2, 53, 7, 53, 2, 54, 7, 54, 2, 55, 7, 55, 2, 56, 7, 56, 2, 57, 7, 57, 2, 58, 7, 58, 2, 59, 7, 59, 2, 60, 7, 60, 2, 61, 7, 61, 2, 62, 7, 62, 2, 63, 7, 63, 2, 64, 7, 64, 2, 65, 7, 65, 2, 66, 7, 66, 2, 67, 7, 67, 2, 68, 7, 68, 2, 69, 7, 69, 2, 70, 7, 70, 2, 71, 7, 71, 2, 72, 7, 72, 2, 73, 7, 73, 2, 74, 7, 74, 2, 75, 7, 75, 2, 76, 7, 76, 2, 77, 7, 77, 2, 78, 7, 78, 2, 79, 7, 79, 2, 80, 7, 80, 2, 81, 7, 81, 2, 82, 7, 82, 2, 83, 7, 83, 2, 84, 7, 84, 2, 85, 7, 85, 2, 86, 7, 86, 2, 87, 7, 87, 2, 88, 7, 88, 2, 89, 7, 89, 2, 90, 7, 90, 2, 91, 7, 91, 2, 92, 7, 92, 2, 93, 7, 93, 2, 94, 7, 94, 2, 95, 7, 95, 2, 96, 7, 96, 2, 97, 7, 97, 2, 98, 7, 98, 2, 99, 7, 99, 2, 100, 7, 100, 2, 101, 7, 101, 2, 102, 7, 102, 2, 103, 7, 103, 2, 104, 7, 104, 2, 105, 7, 105, 2, 106, 7, 106, 2, 107, 7, 107, 2, 108, 7, 108, 2, 109, 7, 109, 2, 110, 7, 110, 2, 111, 7, 111, 2, 112, 7, 112, 2, 113, 7, 113, 2, 114, 7, 114, 2, 115, 7, 115, 2, 116, 7, 116, 2, 117, 7, 117, 2, 118, 7, 118, 2, 119, 7, 119, 2, 120, 7, 120, 2, 121, 7, 121, 2, 122, 7, 122, 2, 123, 7, 123, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 1, 17, 1, 17, 5, 17, 397, 8, 17, 10, 17, 12, 17, 400, 9, 17, 1, 17, 3, 17, 403, 8, 17, 1, 17, 3, 17, 406, 8, 17, 1, 17, 1, 17, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 5, 18, 415, 8, 18, 10, 18, 12, 18, 418, 9, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 19, 4, 19, 426, 8, 19, 11, 19, 12, 19, 427, 1, 19, 1, 19, 1, 20, 1, 20, 1, 20, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 1, 21, 1, 21, 1, 22, 1, 22, 1, 22, 1, 22, 1, 23, 1, 23, 1, 23, 1, 23, 1, 24, 1, 24, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 26, 1, 26, 1, 27, 1, 27, 1, 28, 1, 28, 1, 28, 1, 29, 1, 29, 1, 30, 1, 30, 3, 30, 469, 8, 30, 1, 30, 4, 30, 472, 8, 30, 11, 30, 12, 30, 473, 1, 31, 1, 31, 1, 31, 5, 31, 479, 8, 31, 10, 31, 12, 31, 482, 9, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 490, 8, 31, 10, 31, 12, 31, 493, 9, 31, 1, 31, 1, 31, 1, 31, 1, 31, 1, 31, 3, 31, 500, 8, 31, 1, 31, 3, 31, 503, 8, 31, 3, 31, 505, 8, 31, 1, 32, 4, 32, 508, 8, 32, 11, 32, 12, 32, 509, 1, 33, 4, 33, 513, 8, 33, 11, 33, 12, 33, 514, 1, 33, 1, 33, 5, 33, 519, 8, 33, 10, 33, 12, 33, 522, 9, 33, 1, 33, 1, 33, 4, 33, 526, 8, 33, 11, 33, 12, 33, 527, 1, 33, 4, 33, 531, 8, 33, 11, 33, 12, 33, 532, 1, 33, 1, 33, 5, 33, 537, 8, 33, 10, 33, 12, 33, 540, 9, 33, 3, 33, 542, 8, 33, 1, 33, 1, 33, 1, 33, 1, 33, 4, 33, 548, 8, 33, 11, 33, 12, 33, 549, 1, 33, 1, 33, 3, 33, 554, 8, 33, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 1, 35, 3, 35, 653, 8, 35, 1, 36, 1, 36, 1, 36, 1, 36, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 1, 40, 1, 40, 1, 41, 1, 41, 1, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 42, 1, 42, 1, 42, 1, 43, 1, 43, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 47, 1, 47, 1, 47, 1, 48, 1, 48, 1, 48, 1, 49, 1, 49, 1, 49, 1, 49, 1, 49, 1, 50, 1, 50, 1, 50, 1, 51, 1, 51, 1, 52, 1, 52, 1, 53, 1, 53, 1, 53, 1, 53, 1, 53, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 54, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 1, 55, 3, 55, 737, 8, 55, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 1, 56, 3, 56, 749, 8, 56, 1, 57, 1, 57, 1, 58, 1, 58, 1, 59, 1, 59, 1, 60, 1, 60, 1, 61, 1, 61, 1, 62, 1, 62, 1, 62, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 1, 63, 3, 63, 771, 8, 63, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 64, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 1, 65, 3, 65, 788, 8, 65, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 1, 66, 3, 66, 1232, 8, 66, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 1, 67, 3, 67, 1385, 8, 67, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 5, 69, 1403, 8, 69, 10, 69, 12, 69, 1406, 9, 69, 1, 69, 1, 69, 1, 69, 1, 69, 1, 69, 4, 69, 1413, 8, 69, 11, 69, 12, 69, 1414, 3, 69, 1417, 8, 69, 1, 70, 1, 70, 1, 70, 1, 70, 5, 70, 1423, 8, 70, 10, 70, 12, 70, 1426, 9, 70, 1, 70, 1, 70, 1, 71, 1, 71, 1, 71, 1, 71, 1, 72, 1, 72, 1, 72, 1, 72, 1, 73, 1, 73, 1, 73, 1, 73, 1, 74, 1, 74, 1, 74, 1, 74, 1, 74, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 75, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 76, 1, 77, 1, 77, 1, 77, 1, 77, 1, 78, 1, 78, 1, 78, 1, 78, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 79, 1, 80, 4, 80, 1477, 8, 80, 11, 80, 12, 80, 1478, 1, 81, 4, 81, 1482, 8, 81, 11, 81, 12, 81, 1483, 1, 81, 1, 81, 3, 81, 1488, 8, 81, 1, 82, 1, 82, 1, 83, 1, 83, 1, 83, 1, 83, 1, 84, 1, 84, 1, 84, 1, 84, 1, 85, 1, 85, 1, 85, 1, 85, 1, 86, 1, 86, 1, 86, 1, 87, 1, 87, 1, 87, 1, 87, 1, 87, 1, 88, 1, 88, 1, 88, 1, 88, 1, 88, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 89, 1, 90, 1, 90, 1, 90, 1, 90, 1, 91, 1, 91, 1, 91, 1, 91, 1, 92, 4, 92, 1532, 8, 92, 11, 92, 12, 92, 1533, 1, 93, 4, 93, 1537, 8, 93, 11, 93, 12, 93, 1538, 1, 93, 1, 93, 3, 93, 1543, 8, 93, 1, 94, 1, 94, 1, 95, 1, 95, 1, 95, 1, 95, 1, 96, 1, 96, 1, 96, 1, 96, 1, 97, 1, 97, 1, 97, 1, 97, 1, 98, 1, 98, 1, 99, 1, 99, 1, 100, 1, 100, 1, 101, 1, 101, 1, 102, 1, 102, 1, 103, 1, 103, 1, 104, 1, 104, 1, 105, 1, 105, 1, 106, 1, 106, 1, 107, 1, 107, 1, 108, 1, 108, 1, 109, 1, 109, 1, 110, 1, 110, 1, 111, 1, 111, 1, 112, 1, 112, 1, 113, 1, 113, 1, 114, 1, 114, 1, 115, 1, 115, 1, 116, 1, 116, 1, 117, 1, 117, 1, 118, 1, 118, 1, 119, 1, 119, 1, 120, 1, 120, 1, 121, 1, 121, 1, 122, 1, 122, 1, 123, 1, 123, 2, 416, 491, 0, 124, 5, 1, 7, 2, 9, 3, 11, 4, 13, 5, 15, 6, 17, 7, 19, 8, 21, 9, 23, 10, 25, 11, 27, 12, 29, 13, 31, 14, 33, 15, 35, 16, 37, 17, 39, 18, 41, 19, 43, 20, 45, 0, 47, 81, 49, 21, 51, 22, 53, 23, 55, 24, 57, 0, 59, 0, 61, 0, 63, 0, 65, 0, 67, 25, 69, 26, 71, 27, 73, 28, 75, 29, 77, 30, 79, 31, 81, 32, 83, 33, 85, 34, 87, 35, 89, 36, 91, 37, 93, 38, 95, 39, 97, 40, 99, 41, 101, 42, 103, 43, 105, 44, 107, 45, 109, 46, 111, 47, 113, 48, 115, 49, 117, 50, 119, 51, 121, 52, 123, 53, 125, 54, 127, 55, 129, 56, 131, 57, 133, 58, 135, 59, 137, 60, 139, 61, 141, 62, 143, 63, 145, 64, 147, 65, 149, 66, 151, 67, 153, 0, 155, 0, 157, 0, 159, 0, 161, 0, 163, 68, 165, 69, 167, 0, 169, 70, 171, 71, 173, 72, 175, 73, 177, 74, 179, 75, 181, 0, 183, 0, 185, 0, 187, 0, 189, 76, 191, 0, 193, 77, 195, 78, 197, 79, 199, 80, 201, 0, 203, 0, 205, 0, 207, 0, 209, 0, 211, 0, 213, 0, 215, 0, 217, 0, 219, 0, 221, 0, 223, 0, 225, 0, 227, 0, 229, 0, 231, 0, 233, 0, 235, 0, 237, 0, 239, 0, 241, 0, 243, 0, 245, 0, 247, 0, 249, 0, 251, 0, 5, 0, 1, 2, 3, 4, 37, 2, 0, 10, 10, 13, 13, 3, 0, 9, 10, 13, 13, 32, 32, 1, 0, 48, 57, 2, 0, 65, 90, 97, 122, 5, 0, 34, 34, 92, 92, 110, 110, 114, 114, 116, 116, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 2, 0, 64, 64, 95, 95, 1, 0, 96, 96, 10, 0, 9, 10, 13, 13, 32, 32, 44, 44, 47, 47, 61, 61, 91, 91, 93, 93, 96, 96, 124, 124, 2, 0, 42, 42, 47, 47, 2, 0, 65, 65, 97, 97, 2, 0, 66, 66, 98, 98, 2, 0, 67, 67, 99, 99, 2, 0, 68, 68, 100, 100, 2, 0, 70, 70, 102, 102, 2, 0, 71, 71, 103, 103, 2, 0, 72, 72, 104, 104, 2, 0, 73, 73, 105, 105, 2, 0, 74, 74, 106, 106, 2, 0, 75, 75, 107, 107, 2, 0, 76, 76, 108, 108, 2, 0, 77, 77, 109, 109, 2, 0, 78, 78, 110, 110, 2, 0, 79, 79, 111, 111, 2, 0, 80, 80, 112, 112, 2, 0, 81, 81, 113, 113, 2, 0, 82, 82, 114, 114, 2, 0, 83, 83, 115, 115, 2, 0, 84, 84, 116, 116, 2, 0, 85, 85, 117, 117, 2, 0, 86, 86, 118, 118, 2, 0, 87, 87, 119, 119, 2, 0, 88, 88, 120, 120, 2, 0, 89, 89, 121, 121, 2, 0, 90, 90, 122, 122, 1711, 0, 5, 1, 0, 0, 0, 0, 7, 1, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 11, 1, 0, 0, 0, 0, 13, 1, 0, 0, 0, 0, 15, 1, 0, 0, 0, 0, 17, 1, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 21, 1, 0, 0, 0, 0, 23, 1, 0, 0, 0, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 1, 45, 1, 0, 0, 0, 1, 47, 1, 0, 0, 0, 1, 49, 1, 0, 0, 0, 1, 51, 1, 0, 0, 0, 1, 53, 1, 0, 0, 0, 2, 55, 1, 0, 0, 0, 2, 67, 1, 0, 0, 0, 2, 69, 1, 0, 0, 0, 2, 71, 1, 0, 0, 0, 2, 73, 1, 0, 0, 0, 2, 75, 1, 0, 0, 0, 2, 77, 1, 0, 0, 0, 2, 79, 1, 0, 0, 0, 2, 81, 1, 0, 0, 0, 2, 83, 1, 0, 0, 0, 2, 85, 1, 0, 0, 0, 2, 87, 1, 0, 0, 0, 2, 89, 1, 0, 0, 0, 2, 91, 1, 0, 0, 0, 2, 93, 1, 0, 0, 0, 2, 95, 1, 0, 0, 0, 2, 97, 1, 0, 0, 0, 2, 99, 1, 0, 0, 0, 2, 101, 1, 0, 0, 0, 2, 103, 1, 0, 0, 0, 2, 105, 1, 0, 0, 0, 2, 107, 1, 0, 0, 0, 2, 109, 1, 0, 0, 0, 2, 111, 1, 0, 0, 0, 2, 113, 1, 0, 0, 0, 2, 115, 1, 0, 0, 0, 2, 117, 1, 0, 0, 0, 2, 119, 1, 0, 0, 0, 2, 121, 1, 0, 0, 0, 2, 123, 1, 0, 0, 0, 2, 125, 1, 0, 0, 0, 2, 127, 1, 0, 0, 0, 2, 129, 1, 0, 0, 0, 2, 131, 1, 0, 0, 0, 2, 133, 1, 0, 0, 0, 2, 135, 1, 0, 0, 0, 2, 137, 1, 0, 0, 0, 2, 139, 1, 0, 0, 0, 2, 141, 1, 0, 0, 0, 2, 143, 1, 0, 0, 0, 2, 145, 1, 0, 0, 0, 2, 147, 1, 0, 0, 0, 2, 149, 1, 0, 0, 0, 2, 151, 1, 0, 0, 0, 3, 153, 1, 0, 0, 0, 3, 155, 1, 0, 0, 0, 3, 157, 1, 0, 0, 0, 3, 159, 1, 0, 0, 0, 3, 161, 1, 0, 0, 0, 3, 163, 1, 0, 0, 0, 3, 165, 1, 0, 0, 0, 3, 169, 1, 0, 0, 0, 3, 171, 1, 0, 0, 0, 3, 173, 1, 0, 0, 0, 3, 175, 1, 0, 0, 0, 4, 177, 1, 0, 0, 0, 4, 179, 1, 0, 0, 0, 4, 181, 1, 0, 0, 0, 4, 183, 1, 0, 0, 0, 4, 185, 1, 0, 0, 0, 4, 187, 1, 0, 0, 0, 4, 189, 1, 0, 0, 0, 4, 193, 1, 0, 0, 0, 4, 195, 1, 0, 0, 0, 4, 197, 1, 0, 0, 0, 4, 199, 1, 0, 0, 0, 5, 253, 1, 0, 0, 0, 7, 263, 1, 0, 0, 0, 9, 270, 1, 0, 0, 0, 11, 277, 1, 0, 0, 0, 13, 287, 1, 0, 0, 0, 15, 294, 1, 0, 0, 0, 17, 300, 1, 0, 0, 0, 19, 308, 1, 0, 0, 0, 21, 316, 1, 0, 0, 0, 23, 323, 1, 0, 0, 0, 25, 335, 1, 0, 0, 0, 27, 343, 1, 0, 0, 0, 29, 353, 1, 0, 0, 0, 31, 360, 1, 0, 0, 0, 33, 369, 1, 0, 0, 0, 35, 376, 1, 0, 0, 0, 37, 385, 1, 0, 0, 0, 39, 392, 1, 0, 0, 0, 41, 409, 1, 0, 0, 0, 43, 425, 1, 0, 0, 0, 45, 431, 1, 0, 0, 0, 47, 436, 1, 0, 0, 0, 49, 441, 1, 0, 0, 0, 51, 445, 1, 0, 0, 0, 53, 449, 1, 0, 0, 0, 55, 453, 1, 0, 0, 0, 57, 457, 1, 0, 0, 0, 59, 459, 1, 0, 0, 0, 61, 461, 1, 0, 0, 0, 63, 464, 1, 0, 0, 0, 65, 466, 1, 0, 0, 0, 67, 504, 1, 0, 0, 0, 69, 507, 1, 0, 0, 0, 71, 553, 1, 0, 0, 0, 73, 555, 1, 0, 0, 0, 75, 652, 1, 0, 0, 0, 77, 654, 1, 0, 0, 0, 79, 658, 1, 0, 0, 0, 81, 660, 1, 0, 0, 0, 83, 662, 1, 0, 0, 0, 85, 664, 1, 0, 0, 0, 87, 666, 1, 0, 0, 0, 89, 671, 1, 0, 0, 0, 91, 676, 1, 0, 0, 0, 93, 680, 1, 0, 0, 0, 95, 685, 1, 0, 0, 0, 97, 691, 1, 0, 0, 0, 99, 694, 1, 0, 0, 0, 101, 697, 1, 0, 0, 0, 103, 700, 1, 0, 0, 0, 105, 705, 1, 0, 0, 0, 107, 708, 1, 0, 0, 0, 109, 710, 1, 0, 0, 0, 111, 712, 1, 0, 0, 0, 113, 717, 1, 0, 0, 0, 115, 736, 1, 0, 0, 0, 117, 748, 1, 0, 0, 0, 119, 750, 1, 0, 0, 0, 121, 752, 1, 0, 0, 0, 123, 754, 1, 0, 0, 0, 125, 756, 1, 0, 0, 0, 127, 758, 1, 0, 0, 0, 129, 760, 1, 0, 0, 0, 131, 770, 1, 0, 0, 0, 133, 772, 1, 0, 0, 0, 135, 787, 1, 0, 0, 0, 137, 1231, 1, 0, 0, 0, 139, 1384, 1, 0, 0, 0, 141, 1386, 1, 0, 0, 0, 143, 1416, 1, 0, 0, 0, 145, 1418, 1, 0, 0, 0, 147, 1429, 1, 0, 0, 0, 149, 1433, 1, 0, 0, 0, 151, 1437, 1, 0, 0, 0, 153, 1441, 1, 0, 0, 0, 155, 1446, 1, 0, 0, 0, 157, 1452, 1, 0, 0, 0, 159, 1458, 1, 0, 0, 0, 161, 1462, 1, 0, 0, 0, 163, 1466, 1, 0, 0, 0, 165, 1476, 1, 0, 0, 0, 167, 1487, 1, 0, 0, 0, 169, 1489, 1, 0, 0, 0, 171, 1491, 1, 0, 0, 0, 173, 1495, 1, 0, 0, 0, 175, 1499, 1, 0, 0, 0, 177, 1503, 1, 0, 0, 0, 179, 1506, 1, 0, 0, 0, 181, 1511, 1, 0, 0, 0, 183, 1516, 1, 0, 0, 0, 185, 1522, 1, 0, 0, 0, 187, 1526, 1, 0, 0, 0, 189, 1531, 1, 0, 0, 0, 191, 1542, 1, 0, 0, 0, 193, 1544, 1, 0, 0, 0, 195, 1546, 1, 0, 0, 0, 197, 1550, 1, 0, 0, 0, 199, 1554, 1, 0, 0, 0, 201, 1558, 1, 0, 0, 0, 203, 1560, 1, 0, 0, 0, 205, 1562, 1, 0, 0, 0, 207, 1564, 1, 0, 0, 0, 209, 1566, 1, 0, 0, 0, 211, 1568, 1, 0, 0, 0, 213, 1570, 1, 0, 0, 0, 215, 1572, 1, 0, 0, 0, 217, 1574, 1, 0, 0, 0, 219, 1576, 1, 0, 0, 0, 221, 1578, 1, 0, 0, 0, 223, 1580, 1, 0, 0, 0, 225, 1582, 1, 0, 0, 0, 227, 1584, 1, 0, 0, 0, 229, 1586, 1, 0, 0, 0, 231, 1588, 1, 0, 0, 0, 233, 1590, 1, 0, 0, 0, 235, 1592, 1, 0, 0, 0, 237, 1594, 1, 0, 0, 0, 239, 1596, 1, 0, 0, 0, 241, 1598, 1, 0, 0, 0, 243, 1600, 1, 0, 0, 0, 245, 1602, 1, 0, 0, 0, 247, 1604, 1, 0, 0, 0, 249, 1606, 1, 0, 0, 0, 251, 1608, 1, 0, 0, 0, 253, 254, 3, 207, 101, 0, 254, 255, 3, 217, 106, 0, 255, 256, 3, 237, 116, 0, 256, 257, 3, 237, 116, 0, 257, 258, 3, 209, 102, 0, 258, 259, 3, 205, 100, 0, 259, 260, 3, 239, 117, 0, 260, 261, 1, 0, 0, 0, 261, 262, 6, 0, 0, 0, 262, 6, 1, 0, 0, 0, 263, 264, 3, 213, 104, 0, 264, 265, 3, 235, 115, 0, 265, 266, 3, 229, 112, 0, 266, 267, 3, 221, 108, 0, 267, 268, 1, 0, 0, 0, 268, 269, 6, 1, 0, 0, 269, 8, 1, 0, 0, 0, 270, 271, 3, 209, 102, 0, 271, 272, 3, 243, 119, 0, 272, 273, 3, 201, 98, 0, 273, 274, 3, 223, 109, 0, 274, 275, 1, 0, 0, 0, 275, 276, 6, 2, 0, 0, 276, 10, 1, 0, 0, 0, 277, 278, 3, 209, 102, 0, 278, 279, 3, 247, 121, 0, 279, 280, 3, 231, 113, 0, 280, 281, 3, 223, 109, 0, 281, 282, 3, 201, 98, 0, 282, 283, 3, 217, 106, 0, 283, 284, 3, 227, 111, 0, 284, 285, 1, 0, 0, 0, 285, 286, 6, 3, 1, 0, 286, 12, 1, 0, 0, 0, 287, 288, 3, 211, 103, 0, 288, 289, 3, 235, 115, 0, 289, 290, 3, 229, 112, 0, 290, 291, 3, 225, 110, 0, 291, 292, 1, 0, 0, 0, 292, 293, 6, 4, 2, 0, 293, 14, 1, 0, 0, 0, 294, 295, 3, 235, 115, 0, 295, 296, 3, 229, 112, 0, 296, 297, 3, 245, 120, 0, 297, 298, 1, 0, 0, 0, 298, 299, 6, 5, 0, 0, 299, 16, 1, 0, 0, 0, 300, 301, 3, 237, 116, 0, 301, 302, 3, 239, 117, 0, 302, 303, 3, 201, 98, 0, 303, 304, 3, 239, 117, 0, 304, 305, 3, 237, 116, 0, 305, 306, 1, 0, 0, 0, 306, 307, 6, 6, 0, 0, 307, 18, 1, 0, 0, 0, 308, 309, 3, 245, 120, 0, 309, 310, 3, 215, 105, 0, 310, 311, 3, 209, 102, 0, 311, 312, 3, 235, 115, 0, 312, 313, 3, 209, 102, 0, 313, 314, 1, 0, 0, 0, 314, 315, 6, 7, 0, 0, 315, 20, 1, 0, 0, 0, 316, 317, 3, 237, 116, 0, 317, 318, 3, 229, 112, 0, 318, 319, 3, 235, 115, 0, 319, 320, 3, 239, 117, 0, 320, 321, 1, 0, 0, 0, 321, 322, 6, 8, 0, 0, 322, 22, 1, 0, 0, 0, 323, 324, 3, 225, 110, 0, 324, 325, 3, 243, 119, 0, 325, 326, 3, 109, 52, 0, 326, 327, 3, 209, 102, 0, 327, 328, 3, 247, 121, 0, 328, 329, 3, 231, 113, 0, 329, 330, 3, 201, 98, 0, 330, 331, 3, 227, 111, 0, 331, 332, 3, 207, 101, 0, 332, 333, 1, 0, 0, 0, 333, 334, 6, 9, 0, 0, 334, 24, 1, 0, 0, 0, 335, 336, 3, 223, 109, 0, 336, 337, 3, 217, 106, 0, 337, 338, 3, 225, 110, 0, 338, 339, 3, 217, 106, 0, 339, 340, 3, 239, 117, 0, 340, 341, 1, 0, 0, 0, 341, 342, 6, 10, 0, 0, 342, 26, 1, 0, 0, 0, 343, 344, 3, 231, 113, 0, 344, 345, 3, 235, 115, 0, 345, 346, 3, 229, 112, 0, 346, 347, 3, 219, 107, 0, 347, 348, 3, 209, 102, 0, 348, 349, 3, 205, 100, 0, 349, 350, 3, 239, 117, 0, 350, 351, 1, 0, 0, 0, 351, 352, 6, 11, 0, 0, 352, 28, 1, 0, 0, 0, 353, 354, 3, 207, 101, 0, 354, 355, 3, 235, 115, 0, 355, 356, 3, 229, 112, 0, 356, 357, 3, 231, 113, 0, 357, 358, 1, 0, 0, 0, 358, 359, 6, 12, 0, 0, 359, 30, 1, 0, 0, 0, 360, 361, 3, 235, 115, 0, 361, 362, 3, 209, 102, 0, 362, 363, 3, 227, 111, 0, 363, 364, 3, 201, 98, 0, 364, 365, 3, 225, 110, 0, 365, 366, 3, 209, 102, 0, 366, 367, 1, 0, 0, 0, 367, 368, 6, 13, 0, 0, 368, 32, 1, 0, 0, 0, 369, 370, 3, 237, 116, 0, 370, 371, 3, 215, 105, 0, 371, 372, 3, 229, 112, 0, 372, 373, 3, 245, 120, 0, 373, 374, 1, 0, 0, 0, 374, 375, 6, 14, 0, 0, 375, 34, 1, 0, 0, 0, 376, 377, 3, 209, 102, 0, 377, 378, 3, 227, 111, 0, 378, 379, 3, 235, 115, 0, 379, 380, 3, 217, 106, 0, 380, 381, 3, 205, 100, 0, 381, 382, 3, 215, 105, 0, 382, 383, 1, 0, 0, 0, 383, 384, 6, 15, 3, 0, 384, 36, 1, 0, 0, 0, 385, 386, 3, 221, 108, 0, 386, 387, 3, 209, 102, 0, 387, 388, 3, 209, 102, 0, 388, 389, 3, 231, 113, 0, 389, 390, 1, 0, 0, 0, 390, 391, 6, 16, 0, 0, 391, 38, 1, 0, 0, 0, 392, 393, 5, 47, 0, 0, 393, 394, 5, 47, 0, 0, 394, 398, 1, 0, 0, 0, 395, 397, 8, 0, 0, 0, 396, 395, 1, 0, 0, 0, 397, 400, 1, 0, 0, 0, 398, 396, 1, 0, 0, 0, 398, 399, 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 401, 403, 5, 13, 0, 0, 402, 401, 1, 0, 0, 0, 402, 403, 1, 0, 0, 0, 403, 405, 1, 0, 0, 0, 404, 406, 5, 10, 0, 0, 405, 404, 1, 0, 0, 0, 405, 406, 1, 0, 0, 0, 406, 407, 1, 0, 0, 0, 407, 408, 6, 17, 4, 0, 408, 40, 1, 0, 0, 0, 409, 410, 5, 47, 0, 0, 410, 411, 5, 42, 0, 0, 411, 416, 1, 0, 0, 0, 412, 415, 3, 41, 18, 0, 413, 415, 9, 0, 0, 0, 414, 412, 1, 0, 0, 0, 414, 413, 1, 0, 0, 0, 415, 418, 1, 0, 0, 0, 416, 417, 1, 0, 0, 0, 416, 414, 1, 0, 0, 0, 417, 419, 1, 0, 0, 0, 418, 416, 1, 0, 0, 0, 419, 420, 5, 42, 0, 0, 420, 421, 5, 47, 0, 0, 421, 422, 1, 0, 0, 0, 422, 423, 6, 18, 4, 0, 423, 42, 1, 0, 0, 0, 424, 426, 7, 1, 0, 0, 425, 424, 1, 0, 0, 0, 426, 427, 1, 0, 0, 0, 427, 425, 1, 0, 0, 0, 427, 428, 1, 0, 0, 0, 428, 429, 1, 0, 0, 0, 429, 430, 6, 19, 4, 0, 430, 44, 1, 0, 0, 0, 431, 432, 5, 91, 0, 0, 432, 433, 1, 0, 0, 0, 433, 434, 6, 20, 5, 0, 434, 435, 6, 20, 6, 0, 435, 46, 1, 0, 0, 0, 436, 437, 5, 124, 0, 0, 437, 438, 1, 0, 0, 0, 438, 439, 6, 21, 7, 0, 439, 440, 6, 21, 8, 0, 440, 48, 1, 0, 0, 0, 441, 442, 3, 43, 19, 0, 442, 443, 1, 0, 0, 0, 443, 444, 6, 22, 4, 0, 444, 50, 1, 0, 0, 0, 445, 446, 3, 39, 17, 0, 446, 447, 1, 0, 0, 0, 447, 448, 6, 23, 4, 0, 448, 52, 1, 0, 0, 0, 449, 450, 3, 41, 18, 0, 450, 451, 1, 0, 0, 0, 451, 452, 6, 24, 4, 0, 452, 54, 1, 0, 0, 0, 453, 454, 5, 124, 0, 0, 454, 455, 1, 0, 0, 0, 455, 456, 6, 25, 8, 0, 456, 56, 1, 0, 0, 0, 457, 458, 7, 2, 0, 0, 458, 58, 1, 0, 0, 0, 459, 460, 7, 3, 0, 0, 460, 60, 1, 0, 0, 0, 461, 462, 5, 92, 0, 0, 462, 463, 7, 4, 0, 0, 463, 62, 1, 0, 0, 0, 464, 465, 8, 5, 0, 0, 465, 64, 1, 0, 0, 0, 466, 468, 7, 6, 0, 0, 467, 469, 7, 7, 0, 0, 468, 467, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 471, 1, 0, 0, 0, 470, 472, 3, 57, 26, 0, 471, 470, 1, 0, 0, 0, 472, 473, 1, 0, 0, 0, 473, 471, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 66, 1, 0, 0, 0, 475, 480, 5, 34, 0, 0, 476, 479, 3, 61, 28, 0, 477, 479, 3, 63, 29, 0, 478, 476, 1, 0, 0, 0, 478, 477, 1, 0, 0, 0, 479, 482, 1, 0, 0, 0, 480, 478, 1, 0, 0, 0, 480, 481, 1, 0, 0, 0, 481, 483, 1, 0, 0, 0, 482, 480, 1, 0, 0, 0, 483, 505, 5, 34, 0, 0, 484, 485, 5, 34, 0, 0, 485, 486, 5, 34, 0, 0, 486, 487, 5, 34, 0, 0, 487, 491, 1, 0, 0, 0, 488, 490, 8, 0, 0, 0, 489, 488, 1, 0, 0, 0, 490, 493, 1, 0, 0, 0, 491, 492, 1, 0, 0, 0, 491, 489, 1, 0, 0, 0, 492, 494, 1, 0, 0, 0, 493, 491, 1, 0, 0, 0, 494, 495, 5, 34, 0, 0, 495, 496, 5, 34, 0, 0, 496, 497, 5, 34, 0, 0, 497, 499, 1, 0, 0, 0, 498, 500, 5, 34, 0, 0, 499, 498, 1, 0, 0, 0, 499, 500, 1, 0, 0, 0, 500, 502, 1, 0, 0, 0, 501, 503, 5, 34, 0, 0, 502, 501, 1, 0, 0, 0, 502, 503, 1, 0, 0, 0, 503, 505, 1, 0, 0, 0, 504, 475, 1, 0, 0, 0, 504, 484, 1, 0, 0, 0, 505, 68, 1, 0, 0, 0, 506, 508, 3, 57, 26, 0, 507, 506, 1, 0, 0, 0, 508, 509, 1, 0, 0, 0, 509, 507, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 70, 1, 0, 0, 0, 511, 513, 3, 57, 26, 0, 512, 511, 1, 0, 0, 0, 513, 514, 1, 0, 0, 0, 514, 512, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 520, 3, 83, 39, 0, 517, 519, 3, 57, 26, 0, 518, 517, 1, 0, 0, 0, 519, 522, 1, 0, 0, 0, 520, 518, 1, 0, 0, 0, 520, 521, 1, 0, 0, 0, 521, 554, 1, 0, 0, 0, 522, 520, 1, 0, 0, 0, 523, 525, 3, 83, 39, 0, 524, 526, 3, 57, 26, 0, 525, 524, 1, 0, 0, 0, 526, 527, 1, 0, 0, 0, 527, 525, 1, 0, 0, 0, 527, 528, 1, 0, 0, 0, 528, 554, 1, 0, 0, 0, 529, 531, 3, 57, 26, 0, 530, 529, 1, 0, 0, 0, 531, 532, 1, 0, 0, 0, 532, 530, 1, 0, 0, 0, 532, 533, 1, 0, 0, 0, 533, 541, 1, 0, 0, 0, 534, 538, 3, 83, 39, 0, 535, 537, 3, 57, 26, 0, 536, 535, 1, 0, 0, 0, 537, 540, 1, 0, 0, 0, 538, 536, 1, 0, 0, 0, 538, 539, 1, 0, 0, 0, 539, 542, 1, 0, 0, 0, 540, 538, 1, 0, 0, 0, 541, 534, 1, 0, 0, 0, 541, 542, 1, 0, 0, 0, 542, 543, 1, 0, 0, 0, 543, 544, 3, 65, 30, 0, 544, 554, 1, 0, 0, 0, 545, 547, 3, 83, 39, 0, 546, 548, 3, 57, 26, 0, 547, 546, 1, 0, 0, 0, 548, 549, 1, 0, 0, 0, 549, 547, 1, 0, 0, 0, 549, 550, 1, 0, 0, 0, 550, 551, 1, 0, 0, 0, 551, 552, 3, 65, 30, 0, 552, 554, 1, 0, 0, 0, 553, 512, 1, 0, 0, 0, 553, 523, 1, 0, 0, 0, 553, 530, 1, 0, 0, 0, 553, 545, 1, 0, 0, 0, 554, 72, 1, 0, 0, 0, 555, 556, 5, 98, 0, 0, 556, 557, 5, 121, 0, 0, 557, 74, 1, 0, 0, 0, 558, 559, 5, 121, 0, 0, 559, 560, 5, 101, 0, 0, 560, 561, 5, 97, 0, 0, 561, 653, 5, 114, 0, 0, 562, 563, 5, 109, 0, 0, 563, 564, 5, 111, 0, 0, 564, 565, 5, 110, 0, 0, 565, 566, 5, 116, 0, 0, 566, 653, 5, 104, 0, 0, 567, 568, 5, 100, 0, 0, 568, 569, 5, 97, 0, 0, 569, 653, 5, 121, 0, 0, 570, 571, 5, 115, 0, 0, 571, 572, 5, 101, 0, 0, 572, 573, 5, 99, 0, 0, 573, 574, 5, 111, 0, 0, 574, 575, 5, 110, 0, 0, 575, 653, 5, 100, 0, 0, 576, 577, 5, 109, 0, 0, 577, 578, 5, 105, 0, 0, 578, 579, 5, 110, 0, 0, 579, 580, 5, 117, 0, 0, 580, 581, 5, 116, 0, 0, 581, 653, 5, 101, 0, 0, 582, 583, 5, 104, 0, 0, 583, 584, 5, 111, 0, 0, 584, 585, 5, 117, 0, 0, 585, 653, 5, 114, 0, 0, 586, 587, 5, 119, 0, 0, 587, 588, 5, 101, 0, 0, 588, 589, 5, 101, 0, 0, 589, 653, 5, 107, 0, 0, 590, 591, 5, 109, 0, 0, 591, 592, 5, 105, 0, 0, 592, 593, 5, 108, 0, 0, 593, 594, 5, 108, 0, 0, 594, 595, 5, 105, 0, 0, 595, 596, 5, 115, 0, 0, 596, 597, 5, 101, 0, 0, 597, 598, 5, 99, 0, 0, 598, 599, 5, 111, 0, 0, 599, 600, 5, 110, 0, 0, 600, 653, 5, 100, 0, 0, 601, 602, 5, 121, 0, 0, 602, 603, 5, 101, 0, 0, 603, 604, 5, 97, 0, 0, 604, 605, 5, 114, 0, 0, 605, 653, 5, 115, 0, 0, 606, 607, 5, 109, 0, 0, 607, 608, 5, 111, 0, 0, 608, 609, 5, 110, 0, 0, 609, 610, 5, 116, 0, 0, 610, 611, 5, 104, 0, 0, 611, 653, 5, 115, 0, 0, 612, 613, 5, 100, 0, 0, 613, 614, 5, 97, 0, 0, 614, 615, 5, 121, 0, 0, 615, 653, 5, 115, 0, 0, 616, 617, 5, 115, 0, 0, 617, 618, 5, 101, 0, 0, 618, 619, 5, 99, 0, 0, 619, 620, 5, 111, 0, 0, 620, 621, 5, 110, 0, 0, 621, 622, 5, 100, 0, 0, 622, 653, 5, 115, 0, 0, 623, 624, 5, 109, 0, 0, 624, 625, 5, 105, 0, 0, 625, 626, 5, 110, 0, 0, 626, 627, 5, 117, 0, 0, 627, 628, 5, 116, 0, 0, 628, 629, 5, 101, 0, 0, 629, 653, 5, 115, 0, 0, 630, 631, 5, 104, 0, 0, 631, 632, 5, 111, 0, 0, 632, 633, 5, 117, 0, 0, 633, 634, 5, 114, 0, 0, 634, 653, 5, 115, 0, 0, 635, 636, 5, 119, 0, 0, 636, 637, 5, 101, 0, 0, 637, 638, 5, 101, 0, 0, 638, 639, 5, 107, 0, 0, 639, 653, 5, 115, 0, 0, 640, 641, 5, 109, 0, 0, 641, 642, 5, 105, 0, 0, 642, 643, 5, 108, 0, 0, 643, 644, 5, 108, 0, 0, 644, 645, 5, 105, 0, 0, 645, 646, 5, 115, 0, 0, 646, 647, 5, 101, 0, 0, 647, 648, 5, 99, 0, 0, 648, 649, 5, 111, 0, 0, 649, 650, 5, 110, 0, 0, 650, 651, 5, 100, 0, 0, 651, 653, 5, 115, 0, 0, 652, 558, 1, 0, 0, 0, 652, 562, 1, 0, 0, 0, 652, 567, 1, 0, 0, 0, 652, 570, 1, 0, 0, 0, 652, 576, 1, 0, 0, 0, 652, 582, 1, 0, 0, 0, 652, 586, 1, 0, 0, 0, 652, 590, 1, 0, 0, 0, 652, 601, 1, 0, 0, 0, 652, 606, 1, 0, 0, 0, 652, 612, 1, 0, 0, 0, 652, 616, 1, 0, 0, 0, 652, 623, 1, 0, 0, 0, 652, 630, 1, 0, 0, 0, 652, 635, 1, 0, 0, 0, 652, 640, 1, 0, 0, 0, 653, 76, 1, 0, 0, 0, 654, 655, 5, 97, 0, 0, 655, 656, 5, 110, 0, 0, 656, 657, 5, 100, 0, 0, 657, 78, 1, 0, 0, 0, 658, 659, 5, 61, 0, 0, 659, 80, 1, 0, 0, 0, 660, 661, 5, 44, 0, 0, 661, 82, 1, 0, 0, 0, 662, 663, 5, 46, 0, 0, 663, 84, 1, 0, 0, 0, 664, 665, 5, 40, 0, 0, 665, 86, 1, 0, 0, 0, 666, 667, 5, 91, 0, 0, 667, 668, 1, 0, 0, 0, 668, 669, 6, 41, 0, 0, 669, 670, 6, 41, 0, 0, 670, 88, 1, 0, 0, 0, 671, 672, 5, 93, 0, 0, 672, 673, 1, 0, 0, 0, 673, 674, 6, 42, 8, 0, 674, 675, 6, 42, 8, 0, 675, 90, 1, 0, 0, 0, 676, 677, 3, 227, 111, 0, 677, 678, 3, 229, 112, 0, 678, 679, 3, 239, 117, 0, 679, 92, 1, 0, 0, 0, 680, 681, 3, 223, 109, 0, 681, 682, 3, 217, 106, 0, 682, 683, 3, 221, 108, 0, 683, 684, 3, 209, 102, 0, 684, 94, 1, 0, 0, 0, 685, 686, 3, 235, 115, 0, 686, 687, 3, 223, 109, 0, 687, 688, 3, 217, 106, 0, 688, 689, 3, 221, 108, 0, 689, 690, 3, 209, 102, 0, 690, 96, 1, 0, 0, 0, 691, 692, 3, 217, 106, 0, 692, 693, 3, 227, 111, 0, 693, 98, 1, 0, 0, 0, 694, 695, 3, 217, 106, 0, 695, 696, 3, 237, 116, 0, 696, 100, 1, 0, 0, 0, 697, 698, 3, 201, 98, 0, 698, 699, 3, 237, 116, 0, 699, 102, 1, 0, 0, 0, 700, 701, 3, 227, 111, 0, 701, 702, 3, 241, 118, 0, 702, 703, 3, 223, 109, 0, 703, 704, 3, 223, 109, 0, 704, 104, 1, 0, 0, 0, 705, 706, 5, 111, 0, 0, 706, 707, 5, 114, 0, 0, 707, 106, 1, 0, 0, 0, 708, 709, 5, 41, 0, 0, 709, 108, 1, 0, 0, 0, 710, 711, 5, 95, 0, 0, 711, 110, 1, 0, 0, 0, 712, 713, 5, 105, 0, 0, 713, 714, 5, 110, 0, 0, 714, 715, 5, 102, 0, 0, 715, 716, 5, 111, 0, 0, 716, 112, 1, 0, 0, 0, 717, 718, 5, 102, 0, 0, 718, 719, 5, 117, 0, 0, 719, 720, 5, 110, 0, 0, 720, 721, 5, 99, 0, 0, 721, 722, 5, 116, 0, 0, 722, 723, 5, 105, 0, 0, 723, 724, 5, 111, 0, 0, 724, 725, 5, 110, 0, 0, 725, 726, 5, 115, 0, 0, 726, 114, 1, 0, 0, 0, 727, 728, 5, 116, 0, 0, 728, 729, 5, 114, 0, 0, 729, 730, 5, 117, 0, 0, 730, 737, 5, 101, 0, 0, 731, 732, 5, 102, 0, 0, 732, 733, 5, 97, 0, 0, 733, 734, 5, 108, 0, 0, 734, 735, 5, 115, 0, 0, 735, 737, 5, 101, 0, 0, 736, 727, 1, 0, 0, 0, 736, 731, 1, 0, 0, 0, 737, 116, 1, 0, 0, 0, 738, 739, 5, 61, 0, 0, 739, 749, 5, 61, 0, 0, 740, 741, 5, 33, 0, 0, 741, 749, 5, 61, 0, 0, 742, 749, 5, 60, 0, 0, 743, 744, 5, 60, 0, 0, 744, 749, 5, 61, 0, 0, 745, 749, 5, 62, 0, 0, 746, 747, 5, 62, 0, 0, 747, 749, 5, 61, 0, 0, 748, 738, 1, 0, 0, 0, 748, 740, 1, 0, 0, 0, 748, 742, 1, 0, 0, 0, 748, 743, 1, 0, 0, 0, 748, 745, 1, 0, 0, 0, 748, 746, 1, 0, 0, 0, 749, 118, 1, 0, 0, 0, 750, 751, 5, 43, 0, 0, 751, 120, 1, 0, 0, 0, 752, 753, 5, 45, 0, 0, 753, 122, 1, 0, 0, 0, 754, 755, 5, 42, 0, 0, 755, 124, 1, 0, 0, 0, 756, 757, 5, 47, 0, 0, 757, 126, 1, 0, 0, 0, 758, 759, 5, 37, 0, 0, 759, 128, 1, 0, 0, 0, 760, 761, 5, 49, 0, 0, 761, 762, 5, 48, 0, 0, 762, 130, 1, 0, 0, 0, 763, 764, 5, 97, 0, 0, 764, 765, 5, 115, 0, 0, 765, 771, 5, 99, 0, 0, 766, 767, 5, 100, 0, 0, 767, 768, 5, 101, 0, 0, 768, 769, 5, 115, 0, 0, 769, 771, 5, 99, 0, 0, 770, 763, 1, 0, 0, 0, 770, 766, 1, 0, 0, 0, 771, 132, 1, 0, 0, 0, 772, 773, 5, 110, 0, 0, 773, 774, 5, 117, 0, 0, 774, 775, 5, 108, 0, 0, 775, 776, 5, 108, 0, 0, 776, 777, 5, 115, 0, 0, 777, 134, 1, 0, 0, 0, 778, 779, 5, 102, 0, 0, 779, 780, 5, 105, 0, 0, 780, 781, 5, 114, 0, 0, 781, 782, 5, 115, 0, 0, 782, 788, 5, 116, 0, 0, 783, 784, 5, 108, 0, 0, 784, 785, 5, 97, 0, 0, 785, 786, 5, 115, 0, 0, 786, 788, 5, 116, 0, 0, 787, 778, 1, 0, 0, 0, 787, 783, 1, 0, 0, 0, 788, 136, 1, 0, 0, 0, 789, 790, 3, 235, 115, 0, 790, 791, 3, 229, 112, 0, 791, 792, 3, 241, 118, 0, 792, 793, 3, 227, 111, 0, 793, 794, 3, 207, 101, 0, 794, 1232, 1, 0, 0, 0, 795, 796, 3, 201, 98, 0, 796, 797, 3, 203, 99, 0, 797, 798, 3, 237, 116, 0, 798, 1232, 1, 0, 0, 0, 799, 800, 3, 231, 113, 0, 800, 801, 3, 229, 112, 0, 801, 802, 3, 245, 120, 0, 802, 1232, 1, 0, 0, 0, 803, 804, 3, 223, 109, 0, 804, 805, 3, 229, 112, 0, 805, 806, 3, 213, 104, 0, 806, 807, 3, 129, 62, 0, 807, 1232, 1, 0, 0, 0, 808, 809, 3, 231, 113, 0, 809, 810, 3, 217, 106, 0, 810, 1232, 1, 0, 0, 0, 811, 812, 3, 239, 117, 0, 812, 813, 3, 201, 98, 0, 813, 814, 3, 241, 118, 0, 814, 1232, 1, 0, 0, 0, 815, 1232, 3, 209, 102, 0, 816, 817, 3, 237, 116, 0, 817, 818, 3, 241, 118, 0, 818, 819, 3, 203, 99, 0, 819, 820, 3, 237, 116, 0, 820, 821, 3, 239, 117, 0, 821, 822, 3, 235, 115, 0, 822, 823, 3, 217, 106, 0, 823, 824, 3, 227, 111, 0, 824, 825, 3, 213, 104, 0, 825, 1232, 1, 0, 0, 0, 826, 827, 3, 239, 117, 0, 827, 828, 3, 235, 115, 0, 828, 829, 3, 217, 106, 0, 829, 830, 3, 225, 110, 0, 830, 1232, 1, 0, 0, 0, 831, 832, 3, 205, 100, 0, 832, 833, 3, 229, 112, 0, 833, 834, 3, 227, 111, 0, 834, 835, 3, 205, 100, 0, 835, 836, 3, 201, 98, 0, 836, 837, 3, 239, 117, 0, 837, 1232, 1, 0, 0, 0, 838, 839, 3, 205, 100, 0, 839, 840, 3, 229, 112, 0, 840, 841, 3, 201, 98, 0, 841, 842, 3, 223, 109, 0, 842, 843, 3, 209, 102, 0, 843, 844, 3, 237, 116, 0, 844, 845, 3, 205, 100, 0, 845, 846, 3, 209, 102, 0, 846, 1232, 1, 0, 0, 0, 847, 848, 3, 213, 104, 0, 848, 849, 3, 235, 115, 0, 849, 850, 3, 209, 102, 0, 850, 851, 3, 201, 98, 0, 851, 852, 3, 239, 117, 0, 852, 853, 3, 209, 102, 0, 853, 854, 3, 237, 116, 0, 854, 855, 3, 239, 117, 0, 855, 1232, 1, 0, 0, 0, 856, 857, 3, 223, 109, 0, 857, 858, 3, 209, 102, 0, 858, 859, 3, 211, 103, 0, 859, 860, 3, 239, 117, 0, 860, 1232, 1, 0, 0, 0, 861, 862, 3, 227, 111, 0, 862, 863, 3, 229, 112, 0, 863, 864, 3, 245, 120, 0, 864, 1232, 1, 0, 0, 0, 865, 866, 3, 235, 115, 0, 866, 867, 3, 217, 106, 0, 867, 868, 3, 213, 104, 0, 868, 869, 3, 215, 105, 0, 869, 870, 3, 239, 117, 0, 870, 1232, 1, 0, 0, 0, 871, 872, 3, 237, 116, 0, 872, 873, 3, 239, 117, 0, 873, 874, 3, 201, 98, 0, 874, 875, 3, 235, 115, 0, 875, 876, 3, 239, 117, 0, 876, 877, 3, 237, 116, 0, 877, 878, 3, 109, 52, 0, 878, 879, 3, 245, 120, 0, 879, 880, 3, 217, 106, 0, 880, 881, 3, 239, 117, 0, 881, 882, 3, 215, 105, 0, 882, 1232, 1, 0, 0, 0, 883, 884, 3, 207, 101, 0, 884, 885, 3, 201, 98, 0, 885, 886, 3, 239, 117, 0, 886, 887, 3, 209, 102, 0, 887, 888, 3, 109, 52, 0, 888, 889, 3, 211, 103, 0, 889, 890, 3, 229, 112, 0, 890, 891, 3, 235, 115, 0, 891, 892, 3, 225, 110, 0, 892, 893, 3, 201, 98, 0, 893, 894, 3, 239, 117, 0, 894, 1232, 1, 0, 0, 0, 895, 896, 3, 207, 101, 0, 896, 897, 3, 201, 98, 0, 897, 898, 3, 239, 117, 0, 898, 899, 3, 209, 102, 0, 899, 900, 3, 109, 52, 0, 900, 901, 3, 239, 117, 0, 901, 902, 3, 235, 115, 0, 902, 903, 3, 241, 118, 0, 903, 904, 3, 227, 111, 0, 904, 905, 3, 205, 100, 0, 905, 1232, 1, 0, 0, 0, 906, 907, 3, 207, 101, 0, 907, 908, 3, 201, 98, 0, 908, 909, 3, 239, 117, 0, 909, 910, 3, 209, 102, 0, 910, 911, 3, 109, 52, 0, 911, 912, 3, 231, 113, 0, 912, 913, 3, 201, 98, 0, 913, 914, 3, 235, 115, 0, 914, 915, 3, 237, 116, 0, 915, 916, 3, 209, 102, 0, 916, 1232, 1, 0, 0, 0, 917, 918, 3, 201, 98, 0, 918, 919, 3, 241, 118, 0, 919, 920, 3, 239, 117, 0, 920, 921, 3, 229, 112, 0, 921, 922, 3, 109, 52, 0, 922, 923, 3, 203, 99, 0, 923, 924, 3, 241, 118, 0, 924, 925, 3, 205, 100, 0, 925, 926, 3, 221, 108, 0, 926, 927, 3, 209, 102, 0, 927, 928, 3, 239, 117, 0, 928, 1232, 1, 0, 0, 0, 929, 930, 3, 207, 101, 0, 930, 931, 3, 201, 98, 0, 931, 932, 3, 239, 117, 0, 932, 933, 3, 209, 102, 0, 933, 934, 3, 109, 52, 0, 934, 935, 3, 209, 102, 0, 935, 936, 3, 247, 121, 0, 936, 937, 3, 239, 117, 0, 937, 938, 3, 235, 115, 0, 938, 939, 3, 201, 98, 0, 939, 940, 3, 205, 100, 0, 940, 941, 3, 239, 117, 0, 941, 1232, 1, 0, 0, 0, 942, 943, 3, 217, 106, 0, 943, 944, 3, 237, 116, 0, 944, 945, 3, 109, 52, 0, 945, 946, 3, 211, 103, 0, 946, 947, 3, 217, 106, 0, 947, 948, 3, 227, 111, 0, 948, 949, 3, 217, 106, 0, 949, 950, 3, 239, 117, 0, 950, 951, 3, 209, 102, 0, 951, 1232, 1, 0, 0, 0, 952, 953, 3, 217, 106, 0, 953, 954, 3, 237, 116, 0, 954, 955, 3, 109, 52, 0, 955, 956, 3, 217, 106, 0, 956, 957, 3, 227, 111, 0, 957, 958, 3, 211, 103, 0, 958, 959, 3, 217, 106, 0, 959, 960, 3, 227, 111, 0, 960, 961, 3, 217, 106, 0, 961, 962, 3, 239, 117, 0, 962, 963, 3, 209, 102, 0, 963, 1232, 1, 0, 0, 0, 964, 965, 3, 205, 100, 0, 965, 966, 3, 201, 98, 0, 966, 967, 3, 237, 116, 0, 967, 968, 3, 209, 102, 0, 968, 1232, 1, 0, 0, 0, 969, 970, 3, 223, 109, 0, 970, 971, 3, 209, 102, 0, 971, 972, 3, 227, 111, 0, 972, 973, 3, 213, 104, 0, 973, 974, 3, 239, 117, 0, 974, 975, 3, 215, 105, 0, 975, 1232, 1, 0, 0, 0, 976, 977, 3, 225, 110, 0, 977, 978, 3, 243, 119, 0, 978, 979, 3, 109, 52, 0, 979, 980, 3, 225, 110, 0, 980, 981, 3, 201, 98, 0, 981, 982, 3, 247, 121, 0, 982, 1232, 1, 0, 0, 0, 983, 984, 3, 225, 110, 0, 984, 985, 3, 243, 119, 0, 985, 986, 3, 109, 52, 0, 986, 987, 3, 225, 110, 0, 987, 988, 3, 217, 106, 0, 988, 989, 3, 227, 111, 0, 989, 1232, 1, 0, 0, 0, 990, 991, 3, 225, 110, 0, 991, 992, 3, 243, 119, 0, 992, 993, 3, 109, 52, 0, 993, 994, 3, 201, 98, 0, 994, 995, 3, 243, 119, 0, 995, 996, 3, 213, 104, 0, 996, 1232, 1, 0, 0, 0, 997, 998, 3, 225, 110, 0, 998, 999, 3, 243, 119, 0, 999, 1000, 3, 109, 52, 0, 1000, 1001, 3, 237, 116, 0, 1001, 1002, 3, 241, 118, 0, 1002, 1003, 3, 225, 110, 0, 1003, 1232, 1, 0, 0, 0, 1004, 1005, 3, 225, 110, 0, 1005, 1006, 3, 243, 119, 0, 1006, 1007, 3, 109, 52, 0, 1007, 1008, 3, 205, 100, 0, 1008, 1009, 3, 229, 112, 0, 1009, 1010, 3, 241, 118, 0, 1010, 1011, 3, 227, 111, 0, 1011, 1012, 3, 239, 117, 0, 1012, 1232, 1, 0, 0, 0, 1013, 1014, 3, 225, 110, 0, 1014, 1015, 3, 243, 119, 0, 1015, 1016, 3, 109, 52, 0, 1016, 1017, 3, 205, 100, 0, 1017, 1018, 3, 229, 112, 0, 1018, 1019, 3, 227, 111, 0, 1019, 1020, 3, 205, 100, 0, 1020, 1021, 3, 201, 98, 0, 1021, 1022, 3, 239, 117, 0, 1022, 1232, 1, 0, 0, 0, 1023, 1024, 3, 225, 110, 0, 1024, 1025, 3, 243, 119, 0, 1025, 1026, 3, 109, 52, 0, 1026, 1027, 3, 219, 107, 0, 1027, 1028, 3, 229, 112, 0, 1028, 1029, 3, 217, 106, 0, 1029, 1030, 3, 227, 111, 0, 1030, 1232, 1, 0, 0, 0, 1031, 1032, 3, 225, 110, 0, 1032, 1033, 3, 243, 119, 0, 1033, 1034, 3, 109, 52, 0, 1034, 1035, 3, 225, 110, 0, 1035, 1036, 3, 209, 102, 0, 1036, 1037, 3, 207, 101, 0, 1037, 1038, 3, 217, 106, 0, 1038, 1039, 3, 201, 98, 0, 1039, 1040, 3, 227, 111, 0, 1040, 1232, 1, 0, 0, 0, 1041, 1042, 3, 225, 110, 0, 1042, 1043, 3, 243, 119, 0, 1043, 1044, 3, 109, 52, 0, 1044, 1045, 3, 207, 101, 0, 1045, 1046, 3, 209, 102, 0, 1046, 1047, 3, 207, 101, 0, 1047, 1048, 3, 241, 118, 0, 1048, 1049, 3, 231, 113, 0, 1049, 1050, 3, 209, 102, 0, 1050, 1232, 1, 0, 0, 0, 1051, 1052, 3, 225, 110, 0, 1052, 1053, 3, 209, 102, 0, 1053, 1054, 3, 239, 117, 0, 1054, 1055, 3, 201, 98, 0, 1055, 1056, 3, 207, 101, 0, 1056, 1057, 3, 201, 98, 0, 1057, 1058, 3, 239, 117, 0, 1058, 1059, 3, 201, 98, 0, 1059, 1232, 1, 0, 0, 0, 1060, 1061, 3, 237, 116, 0, 1061, 1062, 3, 231, 113, 0, 1062, 1063, 3, 223, 109, 0, 1063, 1064, 3, 217, 106, 0, 1064, 1065, 3, 239, 117, 0, 1065, 1232, 1, 0, 0, 0, 1066, 1067, 3, 239, 117, 0, 1067, 1068, 3, 229, 112, 0, 1068, 1069, 3, 109, 52, 0, 1069, 1070, 3, 237, 116, 0, 1070, 1071, 3, 239, 117, 0, 1071, 1072, 3, 235, 115, 0, 1072, 1073, 3, 217, 106, 0, 1073, 1074, 3, 227, 111, 0, 1074, 1075, 3, 213, 104, 0, 1075, 1232, 1, 0, 0, 0, 1076, 1077, 3, 239, 117, 0, 1077, 1078, 3, 229, 112, 0, 1078, 1079, 3, 109, 52, 0, 1079, 1080, 3, 237, 116, 0, 1080, 1081, 3, 239, 117, 0, 1081, 1082, 3, 235, 115, 0, 1082, 1232, 1, 0, 0, 0, 1083, 1084, 3, 239, 117, 0, 1084, 1085, 3, 229, 112, 0, 1085, 1086, 3, 109, 52, 0, 1086, 1087, 3, 203, 99, 0, 1087, 1088, 3, 229, 112, 0, 1088, 1089, 3, 229, 112, 0, 1089, 1090, 3, 223, 109, 0, 1090, 1232, 1, 0, 0, 0, 1091, 1092, 3, 239, 117, 0, 1092, 1093, 3, 229, 112, 0, 1093, 1094, 3, 109, 52, 0, 1094, 1095, 3, 203, 99, 0, 1095, 1096, 3, 229, 112, 0, 1096, 1097, 3, 229, 112, 0, 1097, 1098, 3, 223, 109, 0, 1098, 1099, 3, 209, 102, 0, 1099, 1100, 3, 201, 98, 0, 1100, 1101, 3, 227, 111, 0, 1101, 1232, 1, 0, 0, 0, 1102, 1103, 3, 239, 117, 0, 1103, 1104, 3, 229, 112, 0, 1104, 1105, 3, 109, 52, 0, 1105, 1106, 3, 207, 101, 0, 1106, 1107, 3, 201, 98, 0, 1107, 1108, 3, 239, 117, 0, 1108, 1109, 3, 209, 102, 0, 1109, 1110, 3, 239, 117, 0, 1110, 1111, 3, 217, 106, 0, 1111, 1112, 3, 225, 110, 0, 1112, 1113, 3, 209, 102, 0, 1113, 1232, 1, 0, 0, 0, 1114, 1115, 3, 239, 117, 0, 1115, 1116, 3, 229, 112, 0, 1116, 1117, 3, 109, 52, 0, 1117, 1118, 3, 207, 101, 0, 1118, 1119, 3, 239, 117, 0, 1119, 1232, 1, 0, 0, 0, 1120, 1121, 3, 239, 117, 0, 1121, 1122, 3, 229, 112, 0, 1122, 1123, 3, 109, 52, 0, 1123, 1124, 3, 207, 101, 0, 1124, 1125, 3, 203, 99, 0, 1125, 1126, 3, 223, 109, 0, 1126, 1232, 1, 0, 0, 0, 1127, 1128, 3, 239, 117, 0, 1128, 1129, 3, 229, 112, 0, 1129, 1130, 3, 109, 52, 0, 1130, 1131, 3, 207, 101, 0, 1131, 1132, 3, 229, 112, 0, 1132, 1133, 3, 241, 118, 0, 1133, 1134, 3, 203, 99, 0, 1134, 1135, 3, 223, 109, 0, 1135, 1136, 3, 209, 102, 0, 1136, 1232, 1, 0, 0, 0, 1137, 1138, 3, 239, 117, 0, 1138, 1139, 3, 229, 112, 0, 1139, 1140, 3, 109, 52, 0, 1140, 1141, 3, 207, 101, 0, 1141, 1142, 3, 209, 102, 0, 1142, 1143, 3, 213, 104, 0, 1143, 1144, 3, 235, 115, 0, 1144, 1145, 3, 209, 102, 0, 1145, 1146, 3, 209, 102, 0, 1146, 1147, 3, 237, 116, 0, 1147, 1232, 1, 0, 0, 0, 1148, 1149, 3, 239, 117, 0, 1149, 1150, 3, 229, 112, 0, 1150, 1151, 3, 109, 52, 0, 1151, 1152, 3, 217, 106, 0, 1152, 1153, 3, 227, 111, 0, 1153, 1154, 3, 239, 117, 0, 1154, 1232, 1, 0, 0, 0, 1155, 1156, 3, 239, 117, 0, 1156, 1157, 3, 229, 112, 0, 1157, 1158, 3, 109, 52, 0, 1158, 1159, 3, 217, 106, 0, 1159, 1160, 3, 227, 111, 0, 1160, 1161, 3, 239, 117, 0, 1161, 1162, 3, 209, 102, 0, 1162, 1163, 3, 213, 104, 0, 1163, 1164, 3, 209, 102, 0, 1164, 1165, 3, 235, 115, 0, 1165, 1232, 1, 0, 0, 0, 1166, 1167, 3, 239, 117, 0, 1167, 1168, 3, 229, 112, 0, 1168, 1169, 3, 109, 52, 0, 1169, 1170, 3, 217, 106, 0, 1170, 1171, 3, 231, 113, 0, 1171, 1232, 1, 0, 0, 0, 1172, 1173, 3, 239, 117, 0, 1173, 1174, 3, 229, 112, 0, 1174, 1175, 3, 109, 52, 0, 1175, 1176, 3, 223, 109, 0, 1176, 1177, 3, 229, 112, 0, 1177, 1178, 3, 227, 111, 0, 1178, 1179, 3, 213, 104, 0, 1179, 1232, 1, 0, 0, 0, 1180, 1181, 3, 239, 117, 0, 1181, 1182, 3, 229, 112, 0, 1182, 1183, 3, 109, 52, 0, 1183, 1184, 3, 235, 115, 0, 1184, 1185, 3, 201, 98, 0, 1185, 1186, 3, 207, 101, 0, 1186, 1187, 3, 217, 106, 0, 1187, 1188, 3, 201, 98, 0, 1188, 1189, 3, 227, 111, 0, 1189, 1190, 3, 237, 116, 0, 1190, 1232, 1, 0, 0, 0, 1191, 1192, 3, 239, 117, 0, 1192, 1193, 3, 229, 112, 0, 1193, 1194, 3, 109, 52, 0, 1194, 1195, 3, 243, 119, 0, 1195, 1196, 3, 209, 102, 0, 1196, 1197, 3, 235, 115, 0, 1197, 1198, 3, 237, 116, 0, 1198, 1199, 3, 217, 106, 0, 1199, 1200, 3, 229, 112, 0, 1200, 1201, 3, 227, 111, 0, 1201, 1232, 1, 0, 0, 0, 1202, 1203, 3, 239, 117, 0, 1203, 1204, 3, 229, 112, 0, 1204, 1205, 3, 109, 52, 0, 1205, 1206, 3, 241, 118, 0, 1206, 1207, 3, 227, 111, 0, 1207, 1208, 3, 237, 116, 0, 1208, 1209, 3, 217, 106, 0, 1209, 1210, 3, 213, 104, 0, 1210, 1211, 3, 227, 111, 0, 1211, 1212, 3, 209, 102, 0, 1212, 1213, 3, 207, 101, 0, 1213, 1214, 3, 109, 52, 0, 1214, 1215, 3, 223, 109, 0, 1215, 1216, 3, 229, 112, 0, 1216, 1217, 3, 227, 111, 0, 1217, 1218, 3, 213, 104, 0, 1218, 1232, 1, 0, 0, 0, 1219, 1220, 3, 239, 117, 0, 1220, 1221, 3, 229, 112, 0, 1221, 1222, 3, 109, 52, 0, 1222, 1223, 3, 213, 104, 0, 1223, 1224, 3, 209, 102, 0, 1224, 1225, 3, 229, 112, 0, 1225, 1226, 3, 231, 113, 0, 1226, 1227, 3, 229, 112, 0, 1227, 1228, 3, 217, 106, 0, 1228, 1229, 3, 227, 111, 0, 1229, 1230, 3, 239, 117, 0, 1230, 1232, 1, 0, 0, 0, 1231, 789, 1, 0, 0, 0, 1231, 795, 1, 0, 0, 0, 1231, 799, 1, 0, 0, 0, 1231, 803, 1, 0, 0, 0, 1231, 808, 1, 0, 0, 0, 1231, 811, 1, 0, 0, 0, 1231, 815, 1, 0, 0, 0, 1231, 816, 1, 0, 0, 0, 1231, 826, 1, 0, 0, 0, 1231, 831, 1, 0, 0, 0, 1231, 838, 1, 0, 0, 0, 1231, 847, 1, 0, 0, 0, 1231, 856, 1, 0, 0, 0, 1231, 861, 1, 0, 0, 0, 1231, 865, 1, 0, 0, 0, 1231, 871, 1, 0, 0, 0, 1231, 883, 1, 0, 0, 0, 1231, 895, 1, 0, 0, 0, 1231, 906, 1, 0, 0, 0, 1231, 917, 1, 0, 0, 0, 1231, 929, 1, 0, 0, 0, 1231, 942, 1, 0, 0, 0, 1231, 952, 1, 0, 0, 0, 1231, 964, 1, 0, 0, 0, 1231, 969, 1, 0, 0, 0, 1231, 976, 1, 0, 0, 0, 1231, 983, 1, 0, 0, 0, 1231, 990, 1, 0, 0, 0, 1231, 997, 1, 0, 0, 0, 1231, 1004, 1, 0, 0, 0, 1231, 1013, 1, 0, 0, 0, 1231, 1023, 1, 0, 0, 0, 1231, 1031, 1, 0, 0, 0, 1231, 1041, 1, 0, 0, 0, 1231, 1051, 1, 0, 0, 0, 1231, 1060, 1, 0, 0, 0, 1231, 1066, 1, 0, 0, 0, 1231, 1076, 1, 0, 0, 0, 1231, 1083, 1, 0, 0, 0, 1231, 1091, 1, 0, 0, 0, 1231, 1102, 1, 0, 0, 0, 1231, 1114, 1, 0, 0, 0, 1231, 1120, 1, 0, 0, 0, 1231, 1127, 1, 0, 0, 0, 1231, 1137, 1, 0, 0, 0, 1231, 1148, 1, 0, 0, 0, 1231, 1155, 1, 0, 0, 0, 1231, 1166, 1, 0, 0, 0, 1231, 1172, 1, 0, 0, 0, 1231, 1180, 1, 0, 0, 0, 1231, 1191, 1, 0, 0, 0, 1231, 1202, 1, 0, 0, 0, 1231, 1219, 1, 0, 0, 0, 1232, 138, 1, 0, 0, 0, 1233, 1234, 3, 201, 98, 0, 1234, 1235, 3, 243, 119, 0, 1235, 1236, 3, 213, 104, 0, 1236, 1385, 1, 0, 0, 0, 1237, 1238, 3, 225, 110, 0, 1238, 1239, 3, 217, 106, 0, 1239, 1240, 3, 227, 111, 0, 1240, 1385, 1, 0, 0, 0, 1241, 1242, 3, 225, 110, 0, 1242, 1243, 3, 201, 98, 0, 1243, 1244, 3, 247, 121, 0, 1244, 1385, 1, 0, 0, 0, 1245, 1246, 3, 237, 116, 0, 1246, 1247, 3, 241, 118, 0, 1247, 1248, 3, 225, 110, 0, 1248, 1385, 1, 0, 0, 0, 1249, 1250, 3, 205, 100, 0, 1250, 1251, 3, 229, 112, 0, 1251, 1252, 3, 241, 118, 0, 1252, 1253, 3, 227, 111, 0, 1253, 1254, 3, 239, 117, 0, 1254, 1385, 1, 0, 0, 0, 1255, 1256, 3, 205, 100, 0, 1256, 1257, 3, 229, 112, 0, 1257, 1258, 3, 241, 118, 0, 1258, 1259, 3, 227, 111, 0, 1259, 1260, 3, 239, 117, 0, 1260, 1261, 3, 109, 52, 0, 1261, 1262, 3, 207, 101, 0, 1262, 1263, 3, 217, 106, 0, 1263, 1264, 3, 237, 116, 0, 1264, 1265, 3, 239, 117, 0, 1265, 1266, 3, 217, 106, 0, 1266, 1267, 3, 227, 111, 0, 1267, 1268, 3, 205, 100, 0, 1268, 1269, 3, 239, 117, 0, 1269, 1385, 1, 0, 0, 0, 1270, 1271, 3, 231, 113, 0, 1271, 1272, 3, 209, 102, 0, 1272, 1273, 3, 235, 115, 0, 1273, 1274, 3, 205, 100, 0, 1274, 1275, 3, 209, 102, 0, 1275, 1276, 3, 227, 111, 0, 1276, 1277, 3, 239, 117, 0, 1277, 1278, 3, 217, 106, 0, 1278, 1279, 3, 223, 109, 0, 1279, 1280, 3, 209, 102, 0, 1280, 1385, 1, 0, 0, 0, 1281, 1282, 3, 225, 110, 0, 1282, 1283, 3, 209, 102, 0, 1283, 1284, 3, 207, 101, 0, 1284, 1285, 3, 217, 106, 0, 1285, 1286, 3, 201, 98, 0, 1286, 1287, 3, 227, 111, 0, 1287, 1385, 1, 0, 0, 0, 1288, 1289, 3, 225, 110, 0, 1289, 1290, 3, 209, 102, 0, 1290, 1291, 3, 207, 101, 0, 1291, 1292, 3, 217, 106, 0, 1292, 1293, 3, 201, 98, 0, 1293, 1294, 3, 227, 111, 0, 1294, 1295, 3, 109, 52, 0, 1295, 1296, 3, 201, 98, 0, 1296, 1297, 3, 203, 99, 0, 1297, 1298, 3, 237, 116, 0, 1298, 1299, 3, 229, 112, 0, 1299, 1300, 3, 223, 109, 0, 1300, 1301, 3, 241, 118, 0, 1301, 1302, 3, 239, 117, 0, 1302, 1303, 3, 209, 102, 0, 1303, 1304, 3, 109, 52, 0, 1304, 1305, 3, 207, 101, 0, 1305, 1306, 3, 209, 102, 0, 1306, 1307, 3, 243, 119, 0, 1307, 1308, 3, 217, 106, 0, 1308, 1309, 3, 201, 98, 0, 1309, 1310, 3, 239, 117, 0, 1310, 1311, 3, 217, 106, 0, 1311, 1312, 3, 229, 112, 0, 1312, 1313, 3, 227, 111, 0, 1313, 1385, 1, 0, 0, 0, 1314, 1315, 3, 201, 98, 0, 1315, 1316, 3, 205, 100, 0, 1316, 1317, 3, 229, 112, 0, 1317, 1318, 3, 237, 116, 0, 1318, 1385, 1, 0, 0, 0, 1319, 1320, 3, 201, 98, 0, 1320, 1321, 3, 237, 116, 0, 1321, 1322, 3, 217, 106, 0, 1322, 1323, 3, 227, 111, 0, 1323, 1385, 1, 0, 0, 0, 1324, 1325, 3, 201, 98, 0, 1325, 1326, 3, 239, 117, 0, 1326, 1327, 3, 201, 98, 0, 1327, 1328, 3, 227, 111, 0, 1328, 1385, 1, 0, 0, 0, 1329, 1330, 3, 201, 98, 0, 1330, 1331, 3, 239, 117, 0, 1331, 1332, 3, 201, 98, 0, 1332, 1333, 3, 227, 111, 0, 1333, 1334, 5, 50, 0, 0, 1334, 1385, 1, 0, 0, 0, 1335, 1336, 3, 205, 100, 0, 1336, 1337, 3, 209, 102, 0, 1337, 1338, 3, 217, 106, 0, 1338, 1339, 3, 223, 109, 0, 1339, 1385, 1, 0, 0, 0, 1340, 1341, 3, 205, 100, 0, 1341, 1342, 3, 229, 112, 0, 1342, 1343, 3, 237, 116, 0, 1343, 1385, 1, 0, 0, 0, 1344, 1345, 3, 205, 100, 0, 1345, 1346, 3, 229, 112, 0, 1346, 1347, 3, 237, 116, 0, 1347, 1348, 3, 215, 105, 0, 1348, 1385, 1, 0, 0, 0, 1349, 1350, 3, 211, 103, 0, 1350, 1351, 3, 223, 109, 0, 1351, 1352, 3, 229, 112, 0, 1352, 1353, 3, 229, 112, 0, 1353, 1354, 3, 235, 115, 0, 1354, 1385, 1, 0, 0, 0, 1355, 1356, 3, 223, 109, 0, 1356, 1357, 3, 239, 117, 0, 1357, 1358, 3, 235, 115, 0, 1358, 1359, 3, 217, 106, 0, 1359, 1360, 3, 225, 110, 0, 1360, 1385, 1, 0, 0, 0, 1361, 1362, 3, 237, 116, 0, 1362, 1363, 3, 217, 106, 0, 1363, 1364, 3, 227, 111, 0, 1364, 1385, 1, 0, 0, 0, 1365, 1366, 3, 237, 116, 0, 1366, 1367, 3, 217, 106, 0, 1367, 1368, 3, 227, 111, 0, 1368, 1369, 3, 215, 105, 0, 1369, 1385, 1, 0, 0, 0, 1370, 1371, 3, 237, 116, 0, 1371, 1372, 3, 233, 114, 0, 1372, 1373, 3, 235, 115, 0, 1373, 1374, 3, 239, 117, 0, 1374, 1385, 1, 0, 0, 0, 1375, 1376, 3, 239, 117, 0, 1376, 1377, 3, 201, 98, 0, 1377, 1378, 3, 227, 111, 0, 1378, 1385, 1, 0, 0, 0, 1379, 1380, 3, 239, 117, 0, 1380, 1381, 3, 201, 98, 0, 1381, 1382, 3, 227, 111, 0, 1382, 1383, 3, 215, 105, 0, 1383, 1385, 1, 0, 0, 0, 1384, 1233, 1, 0, 0, 0, 1384, 1237, 1, 0, 0, 0, 1384, 1241, 1, 0, 0, 0, 1384, 1245, 1, 0, 0, 0, 1384, 1249, 1, 0, 0, 0, 1384, 1255, 1, 0, 0, 0, 1384, 1270, 1, 0, 0, 0, 1384, 1281, 1, 0, 0, 0, 1384, 1288, 1, 0, 0, 0, 1384, 1314, 1, 0, 0, 0, 1384, 1319, 1, 0, 0, 0, 1384, 1324, 1, 0, 0, 0, 1384, 1329, 1, 0, 0, 0, 1384, 1335, 1, 0, 0, 0, 1384, 1340, 1, 0, 0, 0, 1384, 1344, 1, 0, 0, 0, 1384, 1349, 1, 0, 0, 0, 1384, 1355, 1, 0, 0, 0, 1384, 1361, 1, 0, 0, 0, 1384, 1365, 1, 0, 0, 0, 1384, 1370, 1, 0, 0, 0, 1384, 1375, 1, 0, 0, 0, 1384, 1379, 1, 0, 0, 0, 1385, 140, 1, 0, 0, 0, 1386, 1387, 3, 205, 100, 0, 1387, 1388, 3, 217, 106, 0, 1388, 1389, 3, 207, 101, 0, 1389, 1390, 3, 235, 115, 0, 1390, 1391, 3, 109, 52, 0, 1391, 1392, 3, 225, 110, 0, 1392, 1393, 3, 201, 98, 0, 1393, 1394, 3, 239, 117, 0, 1394, 1395, 3, 205, 100, 0, 1395, 1396, 3, 215, 105, 0, 1396, 142, 1, 0, 0, 0, 1397, 1404, 3, 59, 27, 0, 1398, 1403, 3, 59, 27, 0, 1399, 1403, 3, 57, 26, 0, 1400, 1403, 5, 95, 0, 0, 1401, 1403, 3, 123, 59, 0, 1402, 1398, 1, 0, 0, 0, 1402, 1399, 1, 0, 0, 0, 1402, 1400, 1, 0, 0, 0, 1402, 1401, 1, 0, 0, 0, 1403, 1406, 1, 0, 0, 0, 1404, 1402, 1, 0, 0, 0, 1404, 1405, 1, 0, 0, 0, 1405, 1417, 1, 0, 0, 0, 1406, 1404, 1, 0, 0, 0, 1407, 1412, 7, 8, 0, 0, 1408, 1413, 3, 59, 27, 0, 1409, 1413, 3, 57, 26, 0, 1410, 1413, 5, 95, 0, 0, 1411, 1413, 3, 123, 59, 0, 1412, 1408, 1, 0, 0, 0, 1412, 1409, 1, 0, 0, 0, 1412, 1410, 1, 0, 0, 0, 1412, 1411, 1, 0, 0, 0, 1413, 1414, 1, 0, 0, 0, 1414, 1412, 1, 0, 0, 0, 1414, 1415, 1, 0, 0, 0, 1415, 1417, 1, 0, 0, 0, 1416, 1397, 1, 0, 0, 0, 1416, 1407, 1, 0, 0, 0, 1417, 144, 1, 0, 0, 0, 1418, 1424, 5, 96, 0, 0, 1419, 1423, 8, 9, 0, 0, 1420, 1421, 5, 96, 0, 0, 1421, 1423, 5, 96, 0, 0, 1422, 1419, 1, 0, 0, 0, 1422, 1420, 1, 0, 0, 0, 1423, 1426, 1, 0, 0, 0, 1424, 1422, 1, 0, 0, 0, 1424, 1425, 1, 0, 0, 0, 1425, 1427, 1, 0, 0, 0, 1426, 1424, 1, 0, 0, 0, 1427, 1428, 5, 96, 0, 0, 1428, 146, 1, 0, 0, 0, 1429, 1430, 3, 39, 17, 0, 1430, 1431, 1, 0, 0, 0, 1431, 1432, 6, 71, 4, 0, 1432, 148, 1, 0, 0, 0, 1433, 1434, 3, 41, 18, 0, 1434, 1435, 1, 0, 0, 0, 1435, 1436, 6, 72, 4, 0, 1436, 150, 1, 0, 0, 0, 1437, 1438, 3, 43, 19, 0, 1438, 1439, 1, 0, 0, 0, 1439, 1440, 6, 73, 4, 0, 1440, 152, 1, 0, 0, 0, 1441, 1442, 5, 124, 0, 0, 1442, 1443, 1, 0, 0, 0, 1443, 1444, 6, 74, 7, 0, 1444, 1445, 6, 74, 8, 0, 1445, 154, 1, 0, 0, 0, 1446, 1447, 5, 91, 0, 0, 1447, 1448, 1, 0, 0, 0, 1448, 1449, 6, 75, 5, 0, 1449, 1450, 6, 75, 2, 0, 1450, 1451, 6, 75, 2, 0, 1451, 156, 1, 0, 0, 0, 1452, 1453, 5, 93, 0, 0, 1453, 1454, 1, 0, 0, 0, 1454, 1455, 6, 76, 8, 0, 1455, 1456, 6, 76, 8, 0, 1456, 1457, 6, 76, 9, 0, 1457, 158, 1, 0, 0, 0, 1458, 1459, 5, 44, 0, 0, 1459, 1460, 1, 0, 0, 0, 1460, 1461, 6, 77, 10, 0, 1461, 160, 1, 0, 0, 0, 1462, 1463, 5, 61, 0, 0, 1463, 1464, 1, 0, 0, 0, 1464, 1465, 6, 78, 11, 0, 1465, 162, 1, 0, 0, 0, 1466, 1467, 3, 225, 110, 0, 1467, 1468, 3, 209, 102, 0, 1468, 1469, 3, 239, 117, 0, 1469, 1470, 3, 201, 98, 0, 1470, 1471, 3, 207, 101, 0, 1471, 1472, 3, 201, 98, 0, 1472, 1473, 3, 239, 117, 0, 1473, 1474, 3, 201, 98, 0, 1474, 164, 1, 0, 0, 0, 1475, 1477, 3, 167, 81, 0, 1476, 1475, 1, 0, 0, 0, 1477, 1478, 1, 0, 0, 0, 1478, 1476, 1, 0, 0, 0, 1478, 1479, 1, 0, 0, 0, 1479, 166, 1, 0, 0, 0, 1480, 1482, 8, 10, 0, 0, 1481, 1480, 1, 0, 0, 0, 1482, 1483, 1, 0, 0, 0, 1483, 1481, 1, 0, 0, 0, 1483, 1484, 1, 0, 0, 0, 1484, 1488, 1, 0, 0, 0, 1485, 1486, 5, 47, 0, 0, 1486, 1488, 8, 11, 0, 0, 1487, 1481, 1, 0, 0, 0, 1487, 1485, 1, 0, 0, 0, 1488, 168, 1, 0, 0, 0, 1489, 1490, 3, 145, 70, 0, 1490, 170, 1, 0, 0, 0, 1491, 1492, 3, 39, 17, 0, 1492, 1493, 1, 0, 0, 0, 1493, 1494, 6, 83, 4, 0, 1494, 172, 1, 0, 0, 0, 1495, 1496, 3, 41, 18, 0, 1496, 1497, 1, 0, 0, 0, 1497, 1498, 6, 84, 4, 0, 1498, 174, 1, 0, 0, 0, 1499, 1500, 3, 43, 19, 0, 1500, 1501, 1, 0, 0, 0, 1501, 1502, 6, 85, 4, 0, 1502, 176, 1, 0, 0, 0, 1503, 1504, 3, 229, 112, 0, 1504, 1505, 3, 227, 111, 0, 1505, 178, 1, 0, 0, 0, 1506, 1507, 3, 245, 120, 0, 1507, 1508, 3, 217, 106, 0, 1508, 1509, 3, 239, 117, 0, 1509, 1510, 3, 215, 105, 0, 1510, 180, 1, 0, 0, 0, 1511, 1512, 5, 124, 0, 0, 1512, 1513, 1, 0, 0, 0, 1513, 1514, 6, 88, 7, 0, 1514, 1515, 6, 88, 8, 0, 1515, 182, 1, 0, 0, 0, 1516, 1517, 5, 93, 0, 0, 1517, 1518, 1, 0, 0, 0, 1518, 1519, 6, 89, 8, 0, 1519, 1520, 6, 89, 8, 0, 1520, 1521, 6, 89, 9, 0, 1521, 184, 1, 0, 0, 0, 1522, 1523, 5, 44, 0, 0, 1523, 1524, 1, 0, 0, 0, 1524, 1525, 6, 90, 10, 0, 1525, 186, 1, 0, 0, 0, 1526, 1527, 5, 61, 0, 0, 1527, 1528, 1, 0, 0, 0, 1528, 1529, 6, 91, 11, 0, 1529, 188, 1, 0, 0, 0, 1530, 1532, 3, 191, 93, 0, 1531, 1530, 1, 0, 0, 0, 1532, 1533, 1, 0, 0, 0, 1533, 1531, 1, 0, 0, 0, 1533, 1534, 1, 0, 0, 0, 1534, 190, 1, 0, 0, 0, 1535, 1537, 8, 10, 0, 0, 1536, 1535, 1, 0, 0, 0, 1537, 1538, 1, 0, 0, 0, 1538, 1536, 1, 0, 0, 0, 1538, 1539, 1, 0, 0, 0, 1539, 1543, 1, 0, 0, 0, 1540, 1541, 5, 47, 0, 0, 1541, 1543, 8, 11, 0, 0, 1542, 1536, 1, 0, 0, 0, 1542, 1540, 1, 0, 0, 0, 1543, 192, 1, 0, 0, 0, 1544, 1545, 3, 145, 70, 0, 1545, 194, 1, 0, 0, 0, 1546, 1547, 3, 39, 17, 0, 1547, 1548, 1, 0, 0, 0, 1548, 1549, 6, 95, 4, 0, 1549, 196, 1, 0, 0, 0, 1550, 1551, 3, 41, 18, 0, 1551, 1552, 1, 0, 0, 0, 1552, 1553, 6, 96, 4, 0, 1553, 198, 1, 0, 0, 0, 1554, 1555, 3, 43, 19, 0, 1555, 1556, 1, 0, 0, 0, 1556, 1557, 6, 97, 4, 0, 1557, 200, 1, 0, 0, 0, 1558, 1559, 7, 12, 0, 0, 1559, 202, 1, 0, 0, 0, 1560, 1561, 7, 13, 0, 0, 1561, 204, 1, 0, 0, 0, 1562, 1563, 7, 14, 0, 0, 1563, 206, 1, 0, 0, 0, 1564, 1565, 7, 15, 0, 0, 1565, 208, 1, 0, 0, 0, 1566, 1567, 7, 6, 0, 0, 1567, 210, 1, 0, 0, 0, 1568, 1569, 7, 16, 0, 0, 1569, 212, 1, 0, 0, 0, 1570, 1571, 7, 17, 0, 0, 1571, 214, 1, 0, 0, 0, 1572, 1573, 7, 18, 0, 0, 1573, 216, 1, 0, 0, 0, 1574, 1575, 7, 19, 0, 0, 1575, 218, 1, 0, 0, 0, 1576, 1577, 7, 20, 0, 0, 1577, 220, 1, 0, 0, 0, 1578, 1579, 7, 21, 0, 0, 1579, 222, 1, 0, 0, 0, 1580, 1581, 7, 22, 0, 0, 1581, 224, 1, 0, 0, 0, 1582, 1583, 7, 23, 0, 0, 1583, 226, 1, 0, 0, 0, 1584, 1585, 7, 24, 0, 0, 1585, 228, 1, 0, 0, 0, 1586, 1587, 7, 25, 0, 0, 1587, 230, 1, 0, 0, 0, 1588, 1589, 7, 26, 0, 0, 1589, 232, 1, 0, 0, 0, 1590, 1591, 7, 27, 0, 0, 1591, 234, 1, 0, 0, 0, 1592, 1593, 7, 28, 0, 0, 1593, 236, 1, 0, 0, 0, 1594, 1595, 7, 29, 0, 0, 1595, 238, 1, 0, 0, 0, 1596, 1597, 7, 30, 0, 0, 1597, 240, 1, 0, 0, 0, 1598, 1599, 7, 31, 0, 0, 1599, 242, 1, 0, 0, 0, 1600, 1601, 7, 32, 0, 0, 1601, 244, 1, 0, 0, 0, 1602, 1603, 7, 33, 0, 0, 1603, 246, 1, 0, 0, 0, 1604, 1605, 7, 34, 0, 0, 1605, 248, 1, 0, 0, 0, 1606, 1607, 7, 35, 0, 0, 1607, 250, 1, 0, 0, 0, 1608, 1609, 7, 36, 0, 0, 1609, 252, 1, 0, 0, 0, 48, 0, 1, 2, 3, 4, 398, 402, 405, 414, 416, 427, 468, 473, 478, 480, 491, 499, 502, 504, 509, 514, 520, 527, 532, 538, 541, 549, 553, 652, 736, 748, 770, 787, 1231, 1384, 1402, 1404, 1412, 1414, 1416, 1422, 1424, 1478, 1483, 1487, 1533, 1538, 1542, 12, 5, 2, 0, 5, 1, 0, 5, 3, 0, 5, 4, 0, 0, 1, 0, 7, 35, 0, 5, 0, 0, 7, 24, 0, 4, 0, 0, 7, 36, 0, 7, 32, 0, 7, 31, 0] \ No newline at end of file diff --git a/packages/kbn-esql/src/antlr/.antlr/esql_lexer.java b/packages/kbn-esql/src/antlr/.antlr/esql_lexer.java deleted file mode 100644 index ac37718a22bcc..0000000000000 --- a/packages/kbn-esql/src/antlr/.antlr/esql_lexer.java +++ /dev/null @@ -1,1150 +0,0 @@ -// Generated from /Users/marcoliberati/Work/kibana/packages/kbn-monaco/src/esql/antlr/esql_lexer.g4 by ANTLR 4.13.1 -import org.antlr.v4.runtime.Lexer; -import org.antlr.v4.runtime.CharStream; -import org.antlr.v4.runtime.Token; -import org.antlr.v4.runtime.TokenStream; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.misc.*; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue", "this-escape"}) -public class esql_lexer extends Lexer { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - DISSECT=1, GROK=2, EVAL=3, EXPLAIN=4, FROM=5, ROW=6, STATS=7, WHERE=8, - SORT=9, MV_EXPAND=10, LIMIT=11, PROJECT=12, DROP=13, RENAME=14, SHOW=15, - ENRICH=16, KEEP=17, LINE_COMMENT=18, MULTILINE_COMMENT=19, WS=20, EXPLAIN_WS=21, - EXPLAIN_LINE_COMMENT=22, EXPLAIN_MULTILINE_COMMENT=23, PIPE=24, STRING=25, - INTEGER_LITERAL=26, DECIMAL_LITERAL=27, BY=28, DATE_LITERAL=29, AND=30, - ASSIGN=31, COMMA=32, DOT=33, LP=34, OPENING_BRACKET=35, CLOSING_BRACKET=36, - NOT=37, LIKE=38, RLIKE=39, IN=40, IS=41, AS=42, NULL=43, OR=44, RP=45, - UNDERSCORE=46, INFO=47, FUNCTIONS=48, BOOLEAN_VALUE=49, COMPARISON_OPERATOR=50, - PLUS=51, MINUS=52, ASTERISK=53, SLASH=54, PERCENT=55, TEN=56, ORDERING=57, - NULLS_ORDERING=58, NULLS_ORDERING_DIRECTION=59, MATH_FUNCTION=60, UNARY_FUNCTION=61, - WHERE_FUNCTIONS=62, UNQUOTED_IDENTIFIER=63, QUOTED_IDENTIFIER=64, EXPR_LINE_COMMENT=65, - EXPR_MULTILINE_COMMENT=66, EXPR_WS=67, METADATA=68, SRC_UNQUOTED_IDENTIFIER=69, - SRC_QUOTED_IDENTIFIER=70, SRC_LINE_COMMENT=71, SRC_MULTILINE_COMMENT=72, - SRC_WS=73, ON=74, WITH=75, ENR_UNQUOTED_IDENTIFIER=76, ENR_QUOTED_IDENTIFIER=77, - ENR_LINE_COMMENT=78, ENR_MULTILINE_COMMENT=79, ENR_WS=80, EXPLAIN_PIPE=81; - public static final int - EXPLAIN_MODE=1, EXPRESSION=2, SOURCE_IDENTIFIERS=3, ENRICH_IDENTIFIERS=4; - public static String[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" - }; - - public static String[] modeNames = { - "DEFAULT_MODE", "EXPLAIN_MODE", "EXPRESSION", "SOURCE_IDENTIFIERS", "ENRICH_IDENTIFIERS" - }; - - private static String[] makeRuleNames() { - return new String[] { - "DISSECT", "GROK", "EVAL", "EXPLAIN", "FROM", "ROW", "STATS", "WHERE", - "SORT", "MV_EXPAND", "LIMIT", "PROJECT", "DROP", "RENAME", "SHOW", "ENRICH", - "KEEP", "LINE_COMMENT", "MULTILINE_COMMENT", "WS", "EXPLAIN_OPENING_BRACKET", - "EXPLAIN_PIPE", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT", - "PIPE", "DIGIT", "LETTER", "ESCAPE_SEQUENCE", "UNESCAPED_CHARS", "EXPONENT", - "STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY", "DATE_LITERAL", - "AND", "ASSIGN", "COMMA", "DOT", "LP", "OPENING_BRACKET", "CLOSING_BRACKET", - "NOT", "LIKE", "RLIKE", "IN", "IS", "AS", "NULL", "OR", "RP", "UNDERSCORE", - "INFO", "FUNCTIONS", "BOOLEAN_VALUE", "COMPARISON_OPERATOR", "PLUS", - "MINUS", "ASTERISK", "SLASH", "PERCENT", "TEN", "ORDERING", "NULLS_ORDERING", - "NULLS_ORDERING_DIRECTION", "MATH_FUNCTION", "UNARY_FUNCTION", "WHERE_FUNCTIONS", - "UNQUOTED_IDENTIFIER", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", - "EXPR_WS", "SRC_PIPE", "SRC_OPENING_BRACKET", "SRC_CLOSING_BRACKET", - "SRC_COMMA", "SRC_ASSIGN", "METADATA", "SRC_UNQUOTED_IDENTIFIER", "SRC_UNQUOTED_IDENTIFIER_PART", - "SRC_QUOTED_IDENTIFIER", "SRC_LINE_COMMENT", "SRC_MULTILINE_COMMENT", - "SRC_WS", "ON", "WITH", "ENR_PIPE", "ENR_CLOSING_BRACKET", "ENR_COMMA", - "ENR_ASSIGN", "ENR_UNQUOTED_IDENTIFIER", "ENR_UNQUOTED_IDENTIFIER_PART", - "ENR_QUOTED_IDENTIFIER", "ENR_LINE_COMMENT", "ENR_MULTILINE_COMMENT", - "ENR_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" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, "'by'", null, "'and'", null, null, "'.'", "'('", - null, "']'", null, null, null, null, null, null, null, "'or'", "')'", - "'_'", "'info'", "'functions'", null, null, "'+'", "'-'", "'*'", "'/'", - "'%'", "'10'", null, "'nulls'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "DISSECT", "GROK", "EVAL", "EXPLAIN", "FROM", "ROW", "STATS", "WHERE", - "SORT", "MV_EXPAND", "LIMIT", "PROJECT", "DROP", "RENAME", "SHOW", "ENRICH", - "KEEP", "LINE_COMMENT", "MULTILINE_COMMENT", "WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", - "EXPLAIN_MULTILINE_COMMENT", "PIPE", "STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", - "BY", "DATE_LITERAL", "AND", "ASSIGN", "COMMA", "DOT", "LP", "OPENING_BRACKET", - "CLOSING_BRACKET", "NOT", "LIKE", "RLIKE", "IN", "IS", "AS", "NULL", - "OR", "RP", "UNDERSCORE", "INFO", "FUNCTIONS", "BOOLEAN_VALUE", "COMPARISON_OPERATOR", - "PLUS", "MINUS", "ASTERISK", "SLASH", "PERCENT", "TEN", "ORDERING", "NULLS_ORDERING", - "NULLS_ORDERING_DIRECTION", "MATH_FUNCTION", "UNARY_FUNCTION", "WHERE_FUNCTIONS", - "UNQUOTED_IDENTIFIER", "QUOTED_IDENTIFIER", "EXPR_LINE_COMMENT", "EXPR_MULTILINE_COMMENT", - "EXPR_WS", "METADATA", "SRC_UNQUOTED_IDENTIFIER", "SRC_QUOTED_IDENTIFIER", - "SRC_LINE_COMMENT", "SRC_MULTILINE_COMMENT", "SRC_WS", "ON", "WITH", - "ENR_UNQUOTED_IDENTIFIER", "ENR_QUOTED_IDENTIFIER", "ENR_LINE_COMMENT", - "ENR_MULTILINE_COMMENT", "ENR_WS", "EXPLAIN_PIPE" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = ""; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - - public esql_lexer(CharStream input) { - super(input); - _interp = new LexerATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @Override - public String getGrammarFileName() { return "esql_lexer.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public String[] getChannelNames() { return channelNames; } - - @Override - public String[] getModeNames() { return modeNames; } - - @Override - public ATN getATN() { return _ATN; } - - public static final String _serializedATN = - "\u0004\u0000Q\u064a\u0006\uffff\uffff\u0006\uffff\uffff\u0006\uffff\uffff"+ - "\u0006\uffff\uffff\u0006\uffff\uffff\u0002\u0000\u0007\u0000\u0002\u0001"+ - "\u0007\u0001\u0002\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004"+ - "\u0007\u0004\u0002\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007"+ - "\u0007\u0007\u0002\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b"+ - "\u0007\u000b\u0002\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002"+ - "\u000f\u0007\u000f\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002"+ - "\u0012\u0007\u0012\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002"+ - "\u0015\u0007\u0015\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002"+ - "\u0018\u0007\u0018\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002"+ - "\u001b\u0007\u001b\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002"+ - "\u001e\u0007\u001e\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007"+ - "!\u0002\"\u0007\"\u0002#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007"+ - "&\u0002\'\u0007\'\u0002(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007"+ - "+\u0002,\u0007,\u0002-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u0007"+ - "0\u00021\u00071\u00022\u00072\u00023\u00073\u00024\u00074\u00025\u0007"+ - "5\u00026\u00076\u00027\u00077\u00028\u00078\u00029\u00079\u0002:\u0007"+ - ":\u0002;\u0007;\u0002<\u0007<\u0002=\u0007=\u0002>\u0007>\u0002?\u0007"+ - "?\u0002@\u0007@\u0002A\u0007A\u0002B\u0007B\u0002C\u0007C\u0002D\u0007"+ - "D\u0002E\u0007E\u0002F\u0007F\u0002G\u0007G\u0002H\u0007H\u0002I\u0007"+ - "I\u0002J\u0007J\u0002K\u0007K\u0002L\u0007L\u0002M\u0007M\u0002N\u0007"+ - "N\u0002O\u0007O\u0002P\u0007P\u0002Q\u0007Q\u0002R\u0007R\u0002S\u0007"+ - "S\u0002T\u0007T\u0002U\u0007U\u0002V\u0007V\u0002W\u0007W\u0002X\u0007"+ - "X\u0002Y\u0007Y\u0002Z\u0007Z\u0002[\u0007[\u0002\\\u0007\\\u0002]\u0007"+ - "]\u0002^\u0007^\u0002_\u0007_\u0002`\u0007`\u0002a\u0007a\u0002b\u0007"+ - "b\u0002c\u0007c\u0002d\u0007d\u0002e\u0007e\u0002f\u0007f\u0002g\u0007"+ - "g\u0002h\u0007h\u0002i\u0007i\u0002j\u0007j\u0002k\u0007k\u0002l\u0007"+ - "l\u0002m\u0007m\u0002n\u0007n\u0002o\u0007o\u0002p\u0007p\u0002q\u0007"+ - "q\u0002r\u0007r\u0002s\u0007s\u0002t\u0007t\u0002u\u0007u\u0002v\u0007"+ - "v\u0002w\u0007w\u0002x\u0007x\u0002y\u0007y\u0002z\u0007z\u0002{\u0007"+ - "{\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000"+ - "\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0000\u0001\u0001\u0001\u0001"+ - "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002"+ - "\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002\u0001\u0002"+ - "\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+ - "\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0004\u0001\u0004"+ - "\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0006"+ - "\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006"+ - "\u0001\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007"+ - "\u0001\u0007\u0001\u0007\u0001\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0001"+ - "\b\u0001\b\u0001\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001"+ - "\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b\u0001\u000b"+ - "\u0001\u000b\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001\f\u0001"+ - "\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0001"+ - "\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0001"+ - "\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001"+ - "\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u0010\u0001\u0010\u0001"+ - "\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001"+ - "\u0011\u0001\u0011\u0001\u0011\u0005\u0011\u018d\b\u0011\n\u0011\f\u0011"+ - "\u0190\t\u0011\u0001\u0011\u0003\u0011\u0193\b\u0011\u0001\u0011\u0003"+ - "\u0011\u0196\b\u0011\u0001\u0011\u0001\u0011\u0001\u0012\u0001\u0012\u0001"+ - "\u0012\u0001\u0012\u0001\u0012\u0005\u0012\u019f\b\u0012\n\u0012\f\u0012"+ - "\u01a2\t\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0001\u0012"+ - "\u0001\u0013\u0004\u0013\u01aa\b\u0013\u000b\u0013\f\u0013\u01ab\u0001"+ - "\u0013\u0001\u0013\u0001\u0014\u0001\u0014\u0001\u0014\u0001\u0014\u0001"+ - "\u0014\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001\u0015\u0001"+ - "\u0016\u0001\u0016\u0001\u0016\u0001\u0016\u0001\u0017\u0001\u0017\u0001"+ - "\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0018\u0001\u0018\u0001"+ - "\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u001a\u0001\u001a\u0001"+ - "\u001b\u0001\u001b\u0001\u001c\u0001\u001c\u0001\u001c\u0001\u001d\u0001"+ - "\u001d\u0001\u001e\u0001\u001e\u0003\u001e\u01d5\b\u001e\u0001\u001e\u0004"+ - "\u001e\u01d8\b\u001e\u000b\u001e\f\u001e\u01d9\u0001\u001f\u0001\u001f"+ - "\u0001\u001f\u0005\u001f\u01df\b\u001f\n\u001f\f\u001f\u01e2\t\u001f\u0001"+ - "\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0001\u001f\u0005"+ - "\u001f\u01ea\b\u001f\n\u001f\f\u001f\u01ed\t\u001f\u0001\u001f\u0001\u001f"+ - "\u0001\u001f\u0001\u001f\u0001\u001f\u0003\u001f\u01f4\b\u001f\u0001\u001f"+ - "\u0003\u001f\u01f7\b\u001f\u0003\u001f\u01f9\b\u001f\u0001 \u0004 \u01fc"+ - "\b \u000b \f \u01fd\u0001!\u0004!\u0201\b!\u000b!\f!\u0202\u0001!\u0001"+ - "!\u0005!\u0207\b!\n!\f!\u020a\t!\u0001!\u0001!\u0004!\u020e\b!\u000b!"+ - "\f!\u020f\u0001!\u0004!\u0213\b!\u000b!\f!\u0214\u0001!\u0001!\u0005!"+ - "\u0219\b!\n!\f!\u021c\t!\u0003!\u021e\b!\u0001!\u0001!\u0001!\u0001!\u0004"+ - "!\u0224\b!\u000b!\f!\u0225\u0001!\u0001!\u0003!\u022a\b!\u0001\"\u0001"+ - "\"\u0001\"\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001#\u0001"+ - "#\u0001#\u0001#\u0001#\u0001#\u0001#\u0003#\u028d\b#\u0001$\u0001$\u0001"+ - "$\u0001$\u0001%\u0001%\u0001&\u0001&\u0001\'\u0001\'\u0001(\u0001(\u0001"+ - ")\u0001)\u0001)\u0001)\u0001)\u0001*\u0001*\u0001*\u0001*\u0001*\u0001"+ - "+\u0001+\u0001+\u0001+\u0001,\u0001,\u0001,\u0001,\u0001,\u0001-\u0001"+ - "-\u0001-\u0001-\u0001-\u0001-\u0001.\u0001.\u0001.\u0001/\u0001/\u0001"+ - "/\u00010\u00010\u00010\u00011\u00011\u00011\u00011\u00011\u00012\u0001"+ - "2\u00012\u00013\u00013\u00014\u00014\u00015\u00015\u00015\u00015\u0001"+ - "5\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u00016\u0001"+ - "6\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u00017\u0003"+ - "7\u02e1\b7\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u00018\u0001"+ - "8\u00018\u00038\u02ed\b8\u00019\u00019\u0001:\u0001:\u0001;\u0001;\u0001"+ - "<\u0001<\u0001=\u0001=\u0001>\u0001>\u0001>\u0001?\u0001?\u0001?\u0001"+ - "?\u0001?\u0001?\u0001?\u0003?\u0303\b?\u0001@\u0001@\u0001@\u0001@\u0001"+ - "@\u0001@\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001A\u0001"+ - "A\u0003A\u0314\bA\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001B\u0001"+ - "B\u0001B\u0001B\u0001B\u0001B\u0003B\u04d0\bB\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001"+ - "C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0001C\u0003C\u0569\bC\u0001"+ - "D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001D\u0001"+ - "D\u0001E\u0001E\u0001E\u0001E\u0001E\u0005E\u057b\bE\nE\fE\u057e\tE\u0001"+ - "E\u0001E\u0001E\u0001E\u0001E\u0004E\u0585\bE\u000bE\fE\u0586\u0003E\u0589"+ - "\bE\u0001F\u0001F\u0001F\u0001F\u0005F\u058f\bF\nF\fF\u0592\tF\u0001F"+ - "\u0001F\u0001G\u0001G\u0001G\u0001G\u0001H\u0001H\u0001H\u0001H\u0001"+ - "I\u0001I\u0001I\u0001I\u0001J\u0001J\u0001J\u0001J\u0001J\u0001K\u0001"+ - "K\u0001K\u0001K\u0001K\u0001K\u0001L\u0001L\u0001L\u0001L\u0001L\u0001"+ - "L\u0001M\u0001M\u0001M\u0001M\u0001N\u0001N\u0001N\u0001N\u0001O\u0001"+ - "O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001O\u0001P\u0004P\u05c5"+ - "\bP\u000bP\fP\u05c6\u0001Q\u0004Q\u05ca\bQ\u000bQ\fQ\u05cb\u0001Q\u0001"+ - "Q\u0003Q\u05d0\bQ\u0001R\u0001R\u0001S\u0001S\u0001S\u0001S\u0001T\u0001"+ - "T\u0001T\u0001T\u0001U\u0001U\u0001U\u0001U\u0001V\u0001V\u0001V\u0001"+ - "W\u0001W\u0001W\u0001W\u0001W\u0001X\u0001X\u0001X\u0001X\u0001X\u0001"+ - "Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Y\u0001Z\u0001Z\u0001Z\u0001Z\u0001"+ - "[\u0001[\u0001[\u0001[\u0001\\\u0004\\\u05fc\b\\\u000b\\\f\\\u05fd\u0001"+ - "]\u0004]\u0601\b]\u000b]\f]\u0602\u0001]\u0001]\u0003]\u0607\b]\u0001"+ - "^\u0001^\u0001_\u0001_\u0001_\u0001_\u0001`\u0001`\u0001`\u0001`\u0001"+ - "a\u0001a\u0001a\u0001a\u0001b\u0001b\u0001c\u0001c\u0001d\u0001d\u0001"+ - "e\u0001e\u0001f\u0001f\u0001g\u0001g\u0001h\u0001h\u0001i\u0001i\u0001"+ - "j\u0001j\u0001k\u0001k\u0001l\u0001l\u0001m\u0001m\u0001n\u0001n\u0001"+ - "o\u0001o\u0001p\u0001p\u0001q\u0001q\u0001r\u0001r\u0001s\u0001s\u0001"+ - "t\u0001t\u0001u\u0001u\u0001v\u0001v\u0001w\u0001w\u0001x\u0001x\u0001"+ - "y\u0001y\u0001z\u0001z\u0001{\u0001{\u0002\u01a0\u01eb\u0000|\u0005\u0001"+ - "\u0007\u0002\t\u0003\u000b\u0004\r\u0005\u000f\u0006\u0011\u0007\u0013"+ - "\b\u0015\t\u0017\n\u0019\u000b\u001b\f\u001d\r\u001f\u000e!\u000f#\u0010"+ - "%\u0011\'\u0012)\u0013+\u0014-\u0000/Q1\u00153\u00165\u00177\u00189\u0000"+ - ";\u0000=\u0000?\u0000A\u0000C\u0019E\u001aG\u001bI\u001cK\u001dM\u001e"+ - "O\u001fQ S!U\"W#Y$[%]&_\'a(c)e*g+i,k-m.o/q0s1u2w3y4{5}6\u007f7\u00818"+ - "\u00839\u0085:\u0087;\u0089<\u008b=\u008d>\u008f?\u0091@\u0093A\u0095"+ - "B\u0097C\u0099\u0000\u009b\u0000\u009d\u0000\u009f\u0000\u00a1\u0000\u00a3"+ - "D\u00a5E\u00a7\u0000\u00a9F\u00abG\u00adH\u00afI\u00b1J\u00b3K\u00b5\u0000"+ - "\u00b7\u0000\u00b9\u0000\u00bb\u0000\u00bdL\u00bf\u0000\u00c1M\u00c3N"+ - "\u00c5O\u00c7P\u00c9\u0000\u00cb\u0000\u00cd\u0000\u00cf\u0000\u00d1\u0000"+ - "\u00d3\u0000\u00d5\u0000\u00d7\u0000\u00d9\u0000\u00db\u0000\u00dd\u0000"+ - "\u00df\u0000\u00e1\u0000\u00e3\u0000\u00e5\u0000\u00e7\u0000\u00e9\u0000"+ - "\u00eb\u0000\u00ed\u0000\u00ef\u0000\u00f1\u0000\u00f3\u0000\u00f5\u0000"+ - "\u00f7\u0000\u00f9\u0000\u00fb\u0000\u0005\u0000\u0001\u0002\u0003\u0004"+ - "%\u0002\u0000\n\n\r\r\u0003\u0000\t\n\r\r \u0001\u000009\u0002\u0000"+ - "AZaz\u0005\u0000\"\"\\\\nnrrtt\u0004\u0000\n\n\r\r\"\"\\\\\u0002\u0000"+ - "EEee\u0002\u0000++--\u0002\u0000@@__\u0001\u0000``\n\u0000\t\n\r\r ,"+ - ",//==[[]]``||\u0002\u0000**//\u0002\u0000AAaa\u0002\u0000BBbb\u0002\u0000"+ - "CCcc\u0002\u0000DDdd\u0002\u0000FFff\u0002\u0000GGgg\u0002\u0000HHhh\u0002"+ - "\u0000IIii\u0002\u0000JJjj\u0002\u0000KKkk\u0002\u0000LLll\u0002\u0000"+ - "MMmm\u0002\u0000NNnn\u0002\u0000OOoo\u0002\u0000PPpp\u0002\u0000QQqq\u0002"+ - "\u0000RRrr\u0002\u0000SSss\u0002\u0000TTtt\u0002\u0000UUuu\u0002\u0000"+ - "VVvv\u0002\u0000WWww\u0002\u0000XXxx\u0002\u0000YYyy\u0002\u0000ZZzz\u06af"+ - "\u0000\u0005\u0001\u0000\u0000\u0000\u0000\u0007\u0001\u0000\u0000\u0000"+ - "\u0000\t\u0001\u0000\u0000\u0000\u0000\u000b\u0001\u0000\u0000\u0000\u0000"+ - "\r\u0001\u0000\u0000\u0000\u0000\u000f\u0001\u0000\u0000\u0000\u0000\u0011"+ - "\u0001\u0000\u0000\u0000\u0000\u0013\u0001\u0000\u0000\u0000\u0000\u0015"+ - "\u0001\u0000\u0000\u0000\u0000\u0017\u0001\u0000\u0000\u0000\u0000\u0019"+ - "\u0001\u0000\u0000\u0000\u0000\u001b\u0001\u0000\u0000\u0000\u0000\u001d"+ - "\u0001\u0000\u0000\u0000\u0000\u001f\u0001\u0000\u0000\u0000\u0000!\u0001"+ - "\u0000\u0000\u0000\u0000#\u0001\u0000\u0000\u0000\u0000%\u0001\u0000\u0000"+ - "\u0000\u0000\'\u0001\u0000\u0000\u0000\u0000)\u0001\u0000\u0000\u0000"+ - "\u0000+\u0001\u0000\u0000\u0000\u0001-\u0001\u0000\u0000\u0000\u0001/"+ - "\u0001\u0000\u0000\u0000\u00011\u0001\u0000\u0000\u0000\u00013\u0001\u0000"+ - "\u0000\u0000\u00015\u0001\u0000\u0000\u0000\u00027\u0001\u0000\u0000\u0000"+ - "\u0002C\u0001\u0000\u0000\u0000\u0002E\u0001\u0000\u0000\u0000\u0002G"+ - "\u0001\u0000\u0000\u0000\u0002I\u0001\u0000\u0000\u0000\u0002K\u0001\u0000"+ - "\u0000\u0000\u0002M\u0001\u0000\u0000\u0000\u0002O\u0001\u0000\u0000\u0000"+ - "\u0002Q\u0001\u0000\u0000\u0000\u0002S\u0001\u0000\u0000\u0000\u0002U"+ - "\u0001\u0000\u0000\u0000\u0002W\u0001\u0000\u0000\u0000\u0002Y\u0001\u0000"+ - "\u0000\u0000\u0002[\u0001\u0000\u0000\u0000\u0002]\u0001\u0000\u0000\u0000"+ - "\u0002_\u0001\u0000\u0000\u0000\u0002a\u0001\u0000\u0000\u0000\u0002c"+ - "\u0001\u0000\u0000\u0000\u0002e\u0001\u0000\u0000\u0000\u0002g\u0001\u0000"+ - "\u0000\u0000\u0002i\u0001\u0000\u0000\u0000\u0002k\u0001\u0000\u0000\u0000"+ - "\u0002m\u0001\u0000\u0000\u0000\u0002o\u0001\u0000\u0000\u0000\u0002q"+ - "\u0001\u0000\u0000\u0000\u0002s\u0001\u0000\u0000\u0000\u0002u\u0001\u0000"+ - "\u0000\u0000\u0002w\u0001\u0000\u0000\u0000\u0002y\u0001\u0000\u0000\u0000"+ - "\u0002{\u0001\u0000\u0000\u0000\u0002}\u0001\u0000\u0000\u0000\u0002\u007f"+ - "\u0001\u0000\u0000\u0000\u0002\u0081\u0001\u0000\u0000\u0000\u0002\u0083"+ - "\u0001\u0000\u0000\u0000\u0002\u0085\u0001\u0000\u0000\u0000\u0002\u0087"+ - "\u0001\u0000\u0000\u0000\u0002\u0089\u0001\u0000\u0000\u0000\u0002\u008b"+ - "\u0001\u0000\u0000\u0000\u0002\u008d\u0001\u0000\u0000\u0000\u0002\u008f"+ - "\u0001\u0000\u0000\u0000\u0002\u0091\u0001\u0000\u0000\u0000\u0002\u0093"+ - "\u0001\u0000\u0000\u0000\u0002\u0095\u0001\u0000\u0000\u0000\u0002\u0097"+ - "\u0001\u0000\u0000\u0000\u0003\u0099\u0001\u0000\u0000\u0000\u0003\u009b"+ - "\u0001\u0000\u0000\u0000\u0003\u009d\u0001\u0000\u0000\u0000\u0003\u009f"+ - "\u0001\u0000\u0000\u0000\u0003\u00a1\u0001\u0000\u0000\u0000\u0003\u00a3"+ - "\u0001\u0000\u0000\u0000\u0003\u00a5\u0001\u0000\u0000\u0000\u0003\u00a9"+ - "\u0001\u0000\u0000\u0000\u0003\u00ab\u0001\u0000\u0000\u0000\u0003\u00ad"+ - "\u0001\u0000\u0000\u0000\u0003\u00af\u0001\u0000\u0000\u0000\u0004\u00b1"+ - "\u0001\u0000\u0000\u0000\u0004\u00b3\u0001\u0000\u0000\u0000\u0004\u00b5"+ - "\u0001\u0000\u0000\u0000\u0004\u00b7\u0001\u0000\u0000\u0000\u0004\u00b9"+ - "\u0001\u0000\u0000\u0000\u0004\u00bb\u0001\u0000\u0000\u0000\u0004\u00bd"+ - "\u0001\u0000\u0000\u0000\u0004\u00c1\u0001\u0000\u0000\u0000\u0004\u00c3"+ - "\u0001\u0000\u0000\u0000\u0004\u00c5\u0001\u0000\u0000\u0000\u0004\u00c7"+ - "\u0001\u0000\u0000\u0000\u0005\u00fd\u0001\u0000\u0000\u0000\u0007\u0107"+ - "\u0001\u0000\u0000\u0000\t\u010e\u0001\u0000\u0000\u0000\u000b\u0115\u0001"+ - "\u0000\u0000\u0000\r\u011f\u0001\u0000\u0000\u0000\u000f\u0126\u0001\u0000"+ - "\u0000\u0000\u0011\u012c\u0001\u0000\u0000\u0000\u0013\u0134\u0001\u0000"+ - "\u0000\u0000\u0015\u013c\u0001\u0000\u0000\u0000\u0017\u0143\u0001\u0000"+ - "\u0000\u0000\u0019\u014f\u0001\u0000\u0000\u0000\u001b\u0157\u0001\u0000"+ - "\u0000\u0000\u001d\u0161\u0001\u0000\u0000\u0000\u001f\u0168\u0001\u0000"+ - "\u0000\u0000!\u0171\u0001\u0000\u0000\u0000#\u0178\u0001\u0000\u0000\u0000"+ - "%\u0181\u0001\u0000\u0000\u0000\'\u0188\u0001\u0000\u0000\u0000)\u0199"+ - "\u0001\u0000\u0000\u0000+\u01a9\u0001\u0000\u0000\u0000-\u01af\u0001\u0000"+ - "\u0000\u0000/\u01b4\u0001\u0000\u0000\u00001\u01b9\u0001\u0000\u0000\u0000"+ - "3\u01bd\u0001\u0000\u0000\u00005\u01c1\u0001\u0000\u0000\u00007\u01c5"+ - "\u0001\u0000\u0000\u00009\u01c9\u0001\u0000\u0000\u0000;\u01cb\u0001\u0000"+ - "\u0000\u0000=\u01cd\u0001\u0000\u0000\u0000?\u01d0\u0001\u0000\u0000\u0000"+ - "A\u01d2\u0001\u0000\u0000\u0000C\u01f8\u0001\u0000\u0000\u0000E\u01fb"+ - "\u0001\u0000\u0000\u0000G\u0229\u0001\u0000\u0000\u0000I\u022b\u0001\u0000"+ - "\u0000\u0000K\u028c\u0001\u0000\u0000\u0000M\u028e\u0001\u0000\u0000\u0000"+ - "O\u0292\u0001\u0000\u0000\u0000Q\u0294\u0001\u0000\u0000\u0000S\u0296"+ - "\u0001\u0000\u0000\u0000U\u0298\u0001\u0000\u0000\u0000W\u029a\u0001\u0000"+ - "\u0000\u0000Y\u029f\u0001\u0000\u0000\u0000[\u02a4\u0001\u0000\u0000\u0000"+ - "]\u02a8\u0001\u0000\u0000\u0000_\u02ad\u0001\u0000\u0000\u0000a\u02b3"+ - "\u0001\u0000\u0000\u0000c\u02b6\u0001\u0000\u0000\u0000e\u02b9\u0001\u0000"+ - "\u0000\u0000g\u02bc\u0001\u0000\u0000\u0000i\u02c1\u0001\u0000\u0000\u0000"+ - "k\u02c4\u0001\u0000\u0000\u0000m\u02c6\u0001\u0000\u0000\u0000o\u02c8"+ - "\u0001\u0000\u0000\u0000q\u02cd\u0001\u0000\u0000\u0000s\u02e0\u0001\u0000"+ - "\u0000\u0000u\u02ec\u0001\u0000\u0000\u0000w\u02ee\u0001\u0000\u0000\u0000"+ - "y\u02f0\u0001\u0000\u0000\u0000{\u02f2\u0001\u0000\u0000\u0000}\u02f4"+ - "\u0001\u0000\u0000\u0000\u007f\u02f6\u0001\u0000\u0000\u0000\u0081\u02f8"+ - "\u0001\u0000\u0000\u0000\u0083\u0302\u0001\u0000\u0000\u0000\u0085\u0304"+ - "\u0001\u0000\u0000\u0000\u0087\u0313\u0001\u0000\u0000\u0000\u0089\u04cf"+ - "\u0001\u0000\u0000\u0000\u008b\u0568\u0001\u0000\u0000\u0000\u008d\u056a"+ - "\u0001\u0000\u0000\u0000\u008f\u0588\u0001\u0000\u0000\u0000\u0091\u058a"+ - "\u0001\u0000\u0000\u0000\u0093\u0595\u0001\u0000\u0000\u0000\u0095\u0599"+ - "\u0001\u0000\u0000\u0000\u0097\u059d\u0001\u0000\u0000\u0000\u0099\u05a1"+ - "\u0001\u0000\u0000\u0000\u009b\u05a6\u0001\u0000\u0000\u0000\u009d\u05ac"+ - "\u0001\u0000\u0000\u0000\u009f\u05b2\u0001\u0000\u0000\u0000\u00a1\u05b6"+ - "\u0001\u0000\u0000\u0000\u00a3\u05ba\u0001\u0000\u0000\u0000\u00a5\u05c4"+ - "\u0001\u0000\u0000\u0000\u00a7\u05cf\u0001\u0000\u0000\u0000\u00a9\u05d1"+ - "\u0001\u0000\u0000\u0000\u00ab\u05d3\u0001\u0000\u0000\u0000\u00ad\u05d7"+ - "\u0001\u0000\u0000\u0000\u00af\u05db\u0001\u0000\u0000\u0000\u00b1\u05df"+ - "\u0001\u0000\u0000\u0000\u00b3\u05e2\u0001\u0000\u0000\u0000\u00b5\u05e7"+ - "\u0001\u0000\u0000\u0000\u00b7\u05ec\u0001\u0000\u0000\u0000\u00b9\u05f2"+ - "\u0001\u0000\u0000\u0000\u00bb\u05f6\u0001\u0000\u0000\u0000\u00bd\u05fb"+ - "\u0001\u0000\u0000\u0000\u00bf\u0606\u0001\u0000\u0000\u0000\u00c1\u0608"+ - "\u0001\u0000\u0000\u0000\u00c3\u060a\u0001\u0000\u0000\u0000\u00c5\u060e"+ - "\u0001\u0000\u0000\u0000\u00c7\u0612\u0001\u0000\u0000\u0000\u00c9\u0616"+ - "\u0001\u0000\u0000\u0000\u00cb\u0618\u0001\u0000\u0000\u0000\u00cd\u061a"+ - "\u0001\u0000\u0000\u0000\u00cf\u061c\u0001\u0000\u0000\u0000\u00d1\u061e"+ - "\u0001\u0000\u0000\u0000\u00d3\u0620\u0001\u0000\u0000\u0000\u00d5\u0622"+ - "\u0001\u0000\u0000\u0000\u00d7\u0624\u0001\u0000\u0000\u0000\u00d9\u0626"+ - "\u0001\u0000\u0000\u0000\u00db\u0628\u0001\u0000\u0000\u0000\u00dd\u062a"+ - "\u0001\u0000\u0000\u0000\u00df\u062c\u0001\u0000\u0000\u0000\u00e1\u062e"+ - "\u0001\u0000\u0000\u0000\u00e3\u0630\u0001\u0000\u0000\u0000\u00e5\u0632"+ - "\u0001\u0000\u0000\u0000\u00e7\u0634\u0001\u0000\u0000\u0000\u00e9\u0636"+ - "\u0001\u0000\u0000\u0000\u00eb\u0638\u0001\u0000\u0000\u0000\u00ed\u063a"+ - "\u0001\u0000\u0000\u0000\u00ef\u063c\u0001\u0000\u0000\u0000\u00f1\u063e"+ - "\u0001\u0000\u0000\u0000\u00f3\u0640\u0001\u0000\u0000\u0000\u00f5\u0642"+ - "\u0001\u0000\u0000\u0000\u00f7\u0644\u0001\u0000\u0000\u0000\u00f9\u0646"+ - "\u0001\u0000\u0000\u0000\u00fb\u0648\u0001\u0000\u0000\u0000\u00fd\u00fe"+ - "\u0003\u00cfe\u0000\u00fe\u00ff\u0003\u00d9j\u0000\u00ff\u0100\u0003\u00ed"+ - "t\u0000\u0100\u0101\u0003\u00edt\u0000\u0101\u0102\u0003\u00d1f\u0000"+ - "\u0102\u0103\u0003\u00cdd\u0000\u0103\u0104\u0003\u00efu\u0000\u0104\u0105"+ - "\u0001\u0000\u0000\u0000\u0105\u0106\u0006\u0000\u0000\u0000\u0106\u0006"+ - "\u0001\u0000\u0000\u0000\u0107\u0108\u0003\u00d5h\u0000\u0108\u0109\u0003"+ - "\u00ebs\u0000\u0109\u010a\u0003\u00e5p\u0000\u010a\u010b\u0003\u00ddl"+ - "\u0000\u010b\u010c\u0001\u0000\u0000\u0000\u010c\u010d\u0006\u0001\u0000"+ - "\u0000\u010d\b\u0001\u0000\u0000\u0000\u010e\u010f\u0003\u00d1f\u0000"+ - "\u010f\u0110\u0003\u00f3w\u0000\u0110\u0111\u0003\u00c9b\u0000\u0111\u0112"+ - "\u0003\u00dfm\u0000\u0112\u0113\u0001\u0000\u0000\u0000\u0113\u0114\u0006"+ - "\u0002\u0000\u0000\u0114\n\u0001\u0000\u0000\u0000\u0115\u0116\u0003\u00d1"+ - "f\u0000\u0116\u0117\u0003\u00f7y\u0000\u0117\u0118\u0003\u00e7q\u0000"+ - "\u0118\u0119\u0003\u00dfm\u0000\u0119\u011a\u0003\u00c9b\u0000\u011a\u011b"+ - "\u0003\u00d9j\u0000\u011b\u011c\u0003\u00e3o\u0000\u011c\u011d\u0001\u0000"+ - "\u0000\u0000\u011d\u011e\u0006\u0003\u0001\u0000\u011e\f\u0001\u0000\u0000"+ - "\u0000\u011f\u0120\u0003\u00d3g\u0000\u0120\u0121\u0003\u00ebs\u0000\u0121"+ - "\u0122\u0003\u00e5p\u0000\u0122\u0123\u0003\u00e1n\u0000\u0123\u0124\u0001"+ - "\u0000\u0000\u0000\u0124\u0125\u0006\u0004\u0002\u0000\u0125\u000e\u0001"+ - "\u0000\u0000\u0000\u0126\u0127\u0003\u00ebs\u0000\u0127\u0128\u0003\u00e5"+ - "p\u0000\u0128\u0129\u0003\u00f5x\u0000\u0129\u012a\u0001\u0000\u0000\u0000"+ - "\u012a\u012b\u0006\u0005\u0000\u0000\u012b\u0010\u0001\u0000\u0000\u0000"+ - "\u012c\u012d\u0003\u00edt\u0000\u012d\u012e\u0003\u00efu\u0000\u012e\u012f"+ - "\u0003\u00c9b\u0000\u012f\u0130\u0003\u00efu\u0000\u0130\u0131\u0003\u00ed"+ - "t\u0000\u0131\u0132\u0001\u0000\u0000\u0000\u0132\u0133\u0006\u0006\u0000"+ - "\u0000\u0133\u0012\u0001\u0000\u0000\u0000\u0134\u0135\u0003\u00f5x\u0000"+ - "\u0135\u0136\u0003\u00d7i\u0000\u0136\u0137\u0003\u00d1f\u0000\u0137\u0138"+ - "\u0003\u00ebs\u0000\u0138\u0139\u0003\u00d1f\u0000\u0139\u013a\u0001\u0000"+ - "\u0000\u0000\u013a\u013b\u0006\u0007\u0000\u0000\u013b\u0014\u0001\u0000"+ - "\u0000\u0000\u013c\u013d\u0003\u00edt\u0000\u013d\u013e\u0003\u00e5p\u0000"+ - "\u013e\u013f\u0003\u00ebs\u0000\u013f\u0140\u0003\u00efu\u0000\u0140\u0141"+ - "\u0001\u0000\u0000\u0000\u0141\u0142\u0006\b\u0000\u0000\u0142\u0016\u0001"+ - "\u0000\u0000\u0000\u0143\u0144\u0003\u00e1n\u0000\u0144\u0145\u0003\u00f3"+ - "w\u0000\u0145\u0146\u0003m4\u0000\u0146\u0147\u0003\u00d1f\u0000\u0147"+ - "\u0148\u0003\u00f7y\u0000\u0148\u0149\u0003\u00e7q\u0000\u0149\u014a\u0003"+ - "\u00c9b\u0000\u014a\u014b\u0003\u00e3o\u0000\u014b\u014c\u0003\u00cfe"+ - "\u0000\u014c\u014d\u0001\u0000\u0000\u0000\u014d\u014e\u0006\t\u0000\u0000"+ - "\u014e\u0018\u0001\u0000\u0000\u0000\u014f\u0150\u0003\u00dfm\u0000\u0150"+ - "\u0151\u0003\u00d9j\u0000\u0151\u0152\u0003\u00e1n\u0000\u0152\u0153\u0003"+ - "\u00d9j\u0000\u0153\u0154\u0003\u00efu\u0000\u0154\u0155\u0001\u0000\u0000"+ - "\u0000\u0155\u0156\u0006\n\u0000\u0000\u0156\u001a\u0001\u0000\u0000\u0000"+ - "\u0157\u0158\u0003\u00e7q\u0000\u0158\u0159\u0003\u00ebs\u0000\u0159\u015a"+ - "\u0003\u00e5p\u0000\u015a\u015b\u0003\u00dbk\u0000\u015b\u015c\u0003\u00d1"+ - "f\u0000\u015c\u015d\u0003\u00cdd\u0000\u015d\u015e\u0003\u00efu\u0000"+ - "\u015e\u015f\u0001\u0000\u0000\u0000\u015f\u0160\u0006\u000b\u0000\u0000"+ - "\u0160\u001c\u0001\u0000\u0000\u0000\u0161\u0162\u0003\u00cfe\u0000\u0162"+ - "\u0163\u0003\u00ebs\u0000\u0163\u0164\u0003\u00e5p\u0000\u0164\u0165\u0003"+ - "\u00e7q\u0000\u0165\u0166\u0001\u0000\u0000\u0000\u0166\u0167\u0006\f"+ - "\u0000\u0000\u0167\u001e\u0001\u0000\u0000\u0000\u0168\u0169\u0003\u00eb"+ - "s\u0000\u0169\u016a\u0003\u00d1f\u0000\u016a\u016b\u0003\u00e3o\u0000"+ - "\u016b\u016c\u0003\u00c9b\u0000\u016c\u016d\u0003\u00e1n\u0000\u016d\u016e"+ - "\u0003\u00d1f\u0000\u016e\u016f\u0001\u0000\u0000\u0000\u016f\u0170\u0006"+ - "\r\u0000\u0000\u0170 \u0001\u0000\u0000\u0000\u0171\u0172\u0003\u00ed"+ - "t\u0000\u0172\u0173\u0003\u00d7i\u0000\u0173\u0174\u0003\u00e5p\u0000"+ - "\u0174\u0175\u0003\u00f5x\u0000\u0175\u0176\u0001\u0000\u0000\u0000\u0176"+ - "\u0177\u0006\u000e\u0000\u0000\u0177\"\u0001\u0000\u0000\u0000\u0178\u0179"+ - "\u0003\u00d1f\u0000\u0179\u017a\u0003\u00e3o\u0000\u017a\u017b\u0003\u00eb"+ - "s\u0000\u017b\u017c\u0003\u00d9j\u0000\u017c\u017d\u0003\u00cdd\u0000"+ - "\u017d\u017e\u0003\u00d7i\u0000\u017e\u017f\u0001\u0000\u0000\u0000\u017f"+ - "\u0180\u0006\u000f\u0003\u0000\u0180$\u0001\u0000\u0000\u0000\u0181\u0182"+ - "\u0003\u00ddl\u0000\u0182\u0183\u0003\u00d1f\u0000\u0183\u0184\u0003\u00d1"+ - "f\u0000\u0184\u0185\u0003\u00e7q\u0000\u0185\u0186\u0001\u0000\u0000\u0000"+ - "\u0186\u0187\u0006\u0010\u0000\u0000\u0187&\u0001\u0000\u0000\u0000\u0188"+ - "\u0189\u0005/\u0000\u0000\u0189\u018a\u0005/\u0000\u0000\u018a\u018e\u0001"+ - "\u0000\u0000\u0000\u018b\u018d\b\u0000\u0000\u0000\u018c\u018b\u0001\u0000"+ - "\u0000\u0000\u018d\u0190\u0001\u0000\u0000\u0000\u018e\u018c\u0001\u0000"+ - "\u0000\u0000\u018e\u018f\u0001\u0000\u0000\u0000\u018f\u0192\u0001\u0000"+ - "\u0000\u0000\u0190\u018e\u0001\u0000\u0000\u0000\u0191\u0193\u0005\r\u0000"+ - "\u0000\u0192\u0191\u0001\u0000\u0000\u0000\u0192\u0193\u0001\u0000\u0000"+ - "\u0000\u0193\u0195\u0001\u0000\u0000\u0000\u0194\u0196\u0005\n\u0000\u0000"+ - "\u0195\u0194\u0001\u0000\u0000\u0000\u0195\u0196\u0001\u0000\u0000\u0000"+ - "\u0196\u0197\u0001\u0000\u0000\u0000\u0197\u0198\u0006\u0011\u0004\u0000"+ - "\u0198(\u0001\u0000\u0000\u0000\u0199\u019a\u0005/\u0000\u0000\u019a\u019b"+ - "\u0005*\u0000\u0000\u019b\u01a0\u0001\u0000\u0000\u0000\u019c\u019f\u0003"+ - ")\u0012\u0000\u019d\u019f\t\u0000\u0000\u0000\u019e\u019c\u0001\u0000"+ - "\u0000\u0000\u019e\u019d\u0001\u0000\u0000\u0000\u019f\u01a2\u0001\u0000"+ - "\u0000\u0000\u01a0\u01a1\u0001\u0000\u0000\u0000\u01a0\u019e\u0001\u0000"+ - "\u0000\u0000\u01a1\u01a3\u0001\u0000\u0000\u0000\u01a2\u01a0\u0001\u0000"+ - "\u0000\u0000\u01a3\u01a4\u0005*\u0000\u0000\u01a4\u01a5\u0005/\u0000\u0000"+ - "\u01a5\u01a6\u0001\u0000\u0000\u0000\u01a6\u01a7\u0006\u0012\u0004\u0000"+ - "\u01a7*\u0001\u0000\u0000\u0000\u01a8\u01aa\u0007\u0001\u0000\u0000\u01a9"+ - "\u01a8\u0001\u0000\u0000\u0000\u01aa\u01ab\u0001\u0000\u0000\u0000\u01ab"+ - "\u01a9\u0001\u0000\u0000\u0000\u01ab\u01ac\u0001\u0000\u0000\u0000\u01ac"+ - "\u01ad\u0001\u0000\u0000\u0000\u01ad\u01ae\u0006\u0013\u0004\u0000\u01ae"+ - ",\u0001\u0000\u0000\u0000\u01af\u01b0\u0005[\u0000\u0000\u01b0\u01b1\u0001"+ - "\u0000\u0000\u0000\u01b1\u01b2\u0006\u0014\u0005\u0000\u01b2\u01b3\u0006"+ - "\u0014\u0006\u0000\u01b3.\u0001\u0000\u0000\u0000\u01b4\u01b5\u0005|\u0000"+ - "\u0000\u01b5\u01b6\u0001\u0000\u0000\u0000\u01b6\u01b7\u0006\u0015\u0007"+ - "\u0000\u01b7\u01b8\u0006\u0015\b\u0000\u01b80\u0001\u0000\u0000\u0000"+ - "\u01b9\u01ba\u0003+\u0013\u0000\u01ba\u01bb\u0001\u0000\u0000\u0000\u01bb"+ - "\u01bc\u0006\u0016\u0004\u0000\u01bc2\u0001\u0000\u0000\u0000\u01bd\u01be"+ - "\u0003\'\u0011\u0000\u01be\u01bf\u0001\u0000\u0000\u0000\u01bf\u01c0\u0006"+ - "\u0017\u0004\u0000\u01c04\u0001\u0000\u0000\u0000\u01c1\u01c2\u0003)\u0012"+ - "\u0000\u01c2\u01c3\u0001\u0000\u0000\u0000\u01c3\u01c4\u0006\u0018\u0004"+ - "\u0000\u01c46\u0001\u0000\u0000\u0000\u01c5\u01c6\u0005|\u0000\u0000\u01c6"+ - "\u01c7\u0001\u0000\u0000\u0000\u01c7\u01c8\u0006\u0019\b\u0000\u01c88"+ - "\u0001\u0000\u0000\u0000\u01c9\u01ca\u0007\u0002\u0000\u0000\u01ca:\u0001"+ - "\u0000\u0000\u0000\u01cb\u01cc\u0007\u0003\u0000\u0000\u01cc<\u0001\u0000"+ - "\u0000\u0000\u01cd\u01ce\u0005\\\u0000\u0000\u01ce\u01cf\u0007\u0004\u0000"+ - "\u0000\u01cf>\u0001\u0000\u0000\u0000\u01d0\u01d1\b\u0005\u0000\u0000"+ - "\u01d1@\u0001\u0000\u0000\u0000\u01d2\u01d4\u0007\u0006\u0000\u0000\u01d3"+ - "\u01d5\u0007\u0007\u0000\u0000\u01d4\u01d3\u0001\u0000\u0000\u0000\u01d4"+ - "\u01d5\u0001\u0000\u0000\u0000\u01d5\u01d7\u0001\u0000\u0000\u0000\u01d6"+ - "\u01d8\u00039\u001a\u0000\u01d7\u01d6\u0001\u0000\u0000\u0000\u01d8\u01d9"+ - "\u0001\u0000\u0000\u0000\u01d9\u01d7\u0001\u0000\u0000\u0000\u01d9\u01da"+ - "\u0001\u0000\u0000\u0000\u01daB\u0001\u0000\u0000\u0000\u01db\u01e0\u0005"+ - "\"\u0000\u0000\u01dc\u01df\u0003=\u001c\u0000\u01dd\u01df\u0003?\u001d"+ - "\u0000\u01de\u01dc\u0001\u0000\u0000\u0000\u01de\u01dd\u0001\u0000\u0000"+ - "\u0000\u01df\u01e2\u0001\u0000\u0000\u0000\u01e0\u01de\u0001\u0000\u0000"+ - "\u0000\u01e0\u01e1\u0001\u0000\u0000\u0000\u01e1\u01e3\u0001\u0000\u0000"+ - "\u0000\u01e2\u01e0\u0001\u0000\u0000\u0000\u01e3\u01f9\u0005\"\u0000\u0000"+ - "\u01e4\u01e5\u0005\"\u0000\u0000\u01e5\u01e6\u0005\"\u0000\u0000\u01e6"+ - "\u01e7\u0005\"\u0000\u0000\u01e7\u01eb\u0001\u0000\u0000\u0000\u01e8\u01ea"+ - "\b\u0000\u0000\u0000\u01e9\u01e8\u0001\u0000\u0000\u0000\u01ea\u01ed\u0001"+ - "\u0000\u0000\u0000\u01eb\u01ec\u0001\u0000\u0000\u0000\u01eb\u01e9\u0001"+ - "\u0000\u0000\u0000\u01ec\u01ee\u0001\u0000\u0000\u0000\u01ed\u01eb\u0001"+ - "\u0000\u0000\u0000\u01ee\u01ef\u0005\"\u0000\u0000\u01ef\u01f0\u0005\""+ - "\u0000\u0000\u01f0\u01f1\u0005\"\u0000\u0000\u01f1\u01f3\u0001\u0000\u0000"+ - "\u0000\u01f2\u01f4\u0005\"\u0000\u0000\u01f3\u01f2\u0001\u0000\u0000\u0000"+ - "\u01f3\u01f4\u0001\u0000\u0000\u0000\u01f4\u01f6\u0001\u0000\u0000\u0000"+ - "\u01f5\u01f7\u0005\"\u0000\u0000\u01f6\u01f5\u0001\u0000\u0000\u0000\u01f6"+ - "\u01f7\u0001\u0000\u0000\u0000\u01f7\u01f9\u0001\u0000\u0000\u0000\u01f8"+ - "\u01db\u0001\u0000\u0000\u0000\u01f8\u01e4\u0001\u0000\u0000\u0000\u01f9"+ - "D\u0001\u0000\u0000\u0000\u01fa\u01fc\u00039\u001a\u0000\u01fb\u01fa\u0001"+ - "\u0000\u0000\u0000\u01fc\u01fd\u0001\u0000\u0000\u0000\u01fd\u01fb\u0001"+ - "\u0000\u0000\u0000\u01fd\u01fe\u0001\u0000\u0000\u0000\u01feF\u0001\u0000"+ - "\u0000\u0000\u01ff\u0201\u00039\u001a\u0000\u0200\u01ff\u0001\u0000\u0000"+ - "\u0000\u0201\u0202\u0001\u0000\u0000\u0000\u0202\u0200\u0001\u0000\u0000"+ - "\u0000\u0202\u0203\u0001\u0000\u0000\u0000\u0203\u0204\u0001\u0000\u0000"+ - "\u0000\u0204\u0208\u0003S\'\u0000\u0205\u0207\u00039\u001a\u0000\u0206"+ - "\u0205\u0001\u0000\u0000\u0000\u0207\u020a\u0001\u0000\u0000\u0000\u0208"+ - "\u0206\u0001\u0000\u0000\u0000\u0208\u0209\u0001\u0000\u0000\u0000\u0209"+ - "\u022a\u0001\u0000\u0000\u0000\u020a\u0208\u0001\u0000\u0000\u0000\u020b"+ - "\u020d\u0003S\'\u0000\u020c\u020e\u00039\u001a\u0000\u020d\u020c\u0001"+ - "\u0000\u0000\u0000\u020e\u020f\u0001\u0000\u0000\u0000\u020f\u020d\u0001"+ - "\u0000\u0000\u0000\u020f\u0210\u0001\u0000\u0000\u0000\u0210\u022a\u0001"+ - "\u0000\u0000\u0000\u0211\u0213\u00039\u001a\u0000\u0212\u0211\u0001\u0000"+ - "\u0000\u0000\u0213\u0214\u0001\u0000\u0000\u0000\u0214\u0212\u0001\u0000"+ - "\u0000\u0000\u0214\u0215\u0001\u0000\u0000\u0000\u0215\u021d\u0001\u0000"+ - "\u0000\u0000\u0216\u021a\u0003S\'\u0000\u0217\u0219\u00039\u001a\u0000"+ - "\u0218\u0217\u0001\u0000\u0000\u0000\u0219\u021c\u0001\u0000\u0000\u0000"+ - "\u021a\u0218\u0001\u0000\u0000\u0000\u021a\u021b\u0001\u0000\u0000\u0000"+ - "\u021b\u021e\u0001\u0000\u0000\u0000\u021c\u021a\u0001\u0000\u0000\u0000"+ - "\u021d\u0216\u0001\u0000\u0000\u0000\u021d\u021e\u0001\u0000\u0000\u0000"+ - "\u021e\u021f\u0001\u0000\u0000\u0000\u021f\u0220\u0003A\u001e\u0000\u0220"+ - "\u022a\u0001\u0000\u0000\u0000\u0221\u0223\u0003S\'\u0000\u0222\u0224"+ - "\u00039\u001a\u0000\u0223\u0222\u0001\u0000\u0000\u0000\u0224\u0225\u0001"+ - "\u0000\u0000\u0000\u0225\u0223\u0001\u0000\u0000\u0000\u0225\u0226\u0001"+ - "\u0000\u0000\u0000\u0226\u0227\u0001\u0000\u0000\u0000\u0227\u0228\u0003"+ - "A\u001e\u0000\u0228\u022a\u0001\u0000\u0000\u0000\u0229\u0200\u0001\u0000"+ - "\u0000\u0000\u0229\u020b\u0001\u0000\u0000\u0000\u0229\u0212\u0001\u0000"+ - "\u0000\u0000\u0229\u0221\u0001\u0000\u0000\u0000\u022aH\u0001\u0000\u0000"+ - "\u0000\u022b\u022c\u0005b\u0000\u0000\u022c\u022d\u0005y\u0000\u0000\u022d"+ - "J\u0001\u0000\u0000\u0000\u022e\u022f\u0005y\u0000\u0000\u022f\u0230\u0005"+ - "e\u0000\u0000\u0230\u0231\u0005a\u0000\u0000\u0231\u028d\u0005r\u0000"+ - "\u0000\u0232\u0233\u0005m\u0000\u0000\u0233\u0234\u0005o\u0000\u0000\u0234"+ - "\u0235\u0005n\u0000\u0000\u0235\u0236\u0005t\u0000\u0000\u0236\u028d\u0005"+ - "h\u0000\u0000\u0237\u0238\u0005d\u0000\u0000\u0238\u0239\u0005a\u0000"+ - "\u0000\u0239\u028d\u0005y\u0000\u0000\u023a\u023b\u0005s\u0000\u0000\u023b"+ - "\u023c\u0005e\u0000\u0000\u023c\u023d\u0005c\u0000\u0000\u023d\u023e\u0005"+ - "o\u0000\u0000\u023e\u023f\u0005n\u0000\u0000\u023f\u028d\u0005d\u0000"+ - "\u0000\u0240\u0241\u0005m\u0000\u0000\u0241\u0242\u0005i\u0000\u0000\u0242"+ - "\u0243\u0005n\u0000\u0000\u0243\u0244\u0005u\u0000\u0000\u0244\u0245\u0005"+ - "t\u0000\u0000\u0245\u028d\u0005e\u0000\u0000\u0246\u0247\u0005h\u0000"+ - "\u0000\u0247\u0248\u0005o\u0000\u0000\u0248\u0249\u0005u\u0000\u0000\u0249"+ - "\u028d\u0005r\u0000\u0000\u024a\u024b\u0005w\u0000\u0000\u024b\u024c\u0005"+ - "e\u0000\u0000\u024c\u024d\u0005e\u0000\u0000\u024d\u028d\u0005k\u0000"+ - "\u0000\u024e\u024f\u0005m\u0000\u0000\u024f\u0250\u0005i\u0000\u0000\u0250"+ - "\u0251\u0005l\u0000\u0000\u0251\u0252\u0005l\u0000\u0000\u0252\u0253\u0005"+ - "i\u0000\u0000\u0253\u0254\u0005s\u0000\u0000\u0254\u0255\u0005e\u0000"+ - "\u0000\u0255\u0256\u0005c\u0000\u0000\u0256\u0257\u0005o\u0000\u0000\u0257"+ - "\u0258\u0005n\u0000\u0000\u0258\u028d\u0005d\u0000\u0000\u0259\u025a\u0005"+ - "y\u0000\u0000\u025a\u025b\u0005e\u0000\u0000\u025b\u025c\u0005a\u0000"+ - "\u0000\u025c\u025d\u0005r\u0000\u0000\u025d\u028d\u0005s\u0000\u0000\u025e"+ - "\u025f\u0005m\u0000\u0000\u025f\u0260\u0005o\u0000\u0000\u0260\u0261\u0005"+ - "n\u0000\u0000\u0261\u0262\u0005t\u0000\u0000\u0262\u0263\u0005h\u0000"+ - "\u0000\u0263\u028d\u0005s\u0000\u0000\u0264\u0265\u0005d\u0000\u0000\u0265"+ - "\u0266\u0005a\u0000\u0000\u0266\u0267\u0005y\u0000\u0000\u0267\u028d\u0005"+ - "s\u0000\u0000\u0268\u0269\u0005s\u0000\u0000\u0269\u026a\u0005e\u0000"+ - "\u0000\u026a\u026b\u0005c\u0000\u0000\u026b\u026c\u0005o\u0000\u0000\u026c"+ - "\u026d\u0005n\u0000\u0000\u026d\u026e\u0005d\u0000\u0000\u026e\u028d\u0005"+ - "s\u0000\u0000\u026f\u0270\u0005m\u0000\u0000\u0270\u0271\u0005i\u0000"+ - "\u0000\u0271\u0272\u0005n\u0000\u0000\u0272\u0273\u0005u\u0000\u0000\u0273"+ - "\u0274\u0005t\u0000\u0000\u0274\u0275\u0005e\u0000\u0000\u0275\u028d\u0005"+ - "s\u0000\u0000\u0276\u0277\u0005h\u0000\u0000\u0277\u0278\u0005o\u0000"+ - "\u0000\u0278\u0279\u0005u\u0000\u0000\u0279\u027a\u0005r\u0000\u0000\u027a"+ - "\u028d\u0005s\u0000\u0000\u027b\u027c\u0005w\u0000\u0000\u027c\u027d\u0005"+ - "e\u0000\u0000\u027d\u027e\u0005e\u0000\u0000\u027e\u027f\u0005k\u0000"+ - "\u0000\u027f\u028d\u0005s\u0000\u0000\u0280\u0281\u0005m\u0000\u0000\u0281"+ - "\u0282\u0005i\u0000\u0000\u0282\u0283\u0005l\u0000\u0000\u0283\u0284\u0005"+ - "l\u0000\u0000\u0284\u0285\u0005i\u0000\u0000\u0285\u0286\u0005s\u0000"+ - "\u0000\u0286\u0287\u0005e\u0000\u0000\u0287\u0288\u0005c\u0000\u0000\u0288"+ - "\u0289\u0005o\u0000\u0000\u0289\u028a\u0005n\u0000\u0000\u028a\u028b\u0005"+ - "d\u0000\u0000\u028b\u028d\u0005s\u0000\u0000\u028c\u022e\u0001\u0000\u0000"+ - "\u0000\u028c\u0232\u0001\u0000\u0000\u0000\u028c\u0237\u0001\u0000\u0000"+ - "\u0000\u028c\u023a\u0001\u0000\u0000\u0000\u028c\u0240\u0001\u0000\u0000"+ - "\u0000\u028c\u0246\u0001\u0000\u0000\u0000\u028c\u024a\u0001\u0000\u0000"+ - "\u0000\u028c\u024e\u0001\u0000\u0000\u0000\u028c\u0259\u0001\u0000\u0000"+ - "\u0000\u028c\u025e\u0001\u0000\u0000\u0000\u028c\u0264\u0001\u0000\u0000"+ - "\u0000\u028c\u0268\u0001\u0000\u0000\u0000\u028c\u026f\u0001\u0000\u0000"+ - "\u0000\u028c\u0276\u0001\u0000\u0000\u0000\u028c\u027b\u0001\u0000\u0000"+ - "\u0000\u028c\u0280\u0001\u0000\u0000\u0000\u028dL\u0001\u0000\u0000\u0000"+ - "\u028e\u028f\u0005a\u0000\u0000\u028f\u0290\u0005n\u0000\u0000\u0290\u0291"+ - "\u0005d\u0000\u0000\u0291N\u0001\u0000\u0000\u0000\u0292\u0293\u0005="+ - "\u0000\u0000\u0293P\u0001\u0000\u0000\u0000\u0294\u0295\u0005,\u0000\u0000"+ - "\u0295R\u0001\u0000\u0000\u0000\u0296\u0297\u0005.\u0000\u0000\u0297T"+ - "\u0001\u0000\u0000\u0000\u0298\u0299\u0005(\u0000\u0000\u0299V\u0001\u0000"+ - "\u0000\u0000\u029a\u029b\u0005[\u0000\u0000\u029b\u029c\u0001\u0000\u0000"+ - "\u0000\u029c\u029d\u0006)\u0000\u0000\u029d\u029e\u0006)\u0000\u0000\u029e"+ - "X\u0001\u0000\u0000\u0000\u029f\u02a0\u0005]\u0000\u0000\u02a0\u02a1\u0001"+ - "\u0000\u0000\u0000\u02a1\u02a2\u0006*\b\u0000\u02a2\u02a3\u0006*\b\u0000"+ - "\u02a3Z\u0001\u0000\u0000\u0000\u02a4\u02a5\u0003\u00e3o\u0000\u02a5\u02a6"+ - "\u0003\u00e5p\u0000\u02a6\u02a7\u0003\u00efu\u0000\u02a7\\\u0001\u0000"+ - "\u0000\u0000\u02a8\u02a9\u0003\u00dfm\u0000\u02a9\u02aa\u0003\u00d9j\u0000"+ - "\u02aa\u02ab\u0003\u00ddl\u0000\u02ab\u02ac\u0003\u00d1f\u0000\u02ac^"+ - "\u0001\u0000\u0000\u0000\u02ad\u02ae\u0003\u00ebs\u0000\u02ae\u02af\u0003"+ - "\u00dfm\u0000\u02af\u02b0\u0003\u00d9j\u0000\u02b0\u02b1\u0003\u00ddl"+ - "\u0000\u02b1\u02b2\u0003\u00d1f\u0000\u02b2`\u0001\u0000\u0000\u0000\u02b3"+ - "\u02b4\u0003\u00d9j\u0000\u02b4\u02b5\u0003\u00e3o\u0000\u02b5b\u0001"+ - "\u0000\u0000\u0000\u02b6\u02b7\u0003\u00d9j\u0000\u02b7\u02b8\u0003\u00ed"+ - "t\u0000\u02b8d\u0001\u0000\u0000\u0000\u02b9\u02ba\u0003\u00c9b\u0000"+ - "\u02ba\u02bb\u0003\u00edt\u0000\u02bbf\u0001\u0000\u0000\u0000\u02bc\u02bd"+ - "\u0003\u00e3o\u0000\u02bd\u02be\u0003\u00f1v\u0000\u02be\u02bf\u0003\u00df"+ - "m\u0000\u02bf\u02c0\u0003\u00dfm\u0000\u02c0h\u0001\u0000\u0000\u0000"+ - "\u02c1\u02c2\u0005o\u0000\u0000\u02c2\u02c3\u0005r\u0000\u0000\u02c3j"+ - "\u0001\u0000\u0000\u0000\u02c4\u02c5\u0005)\u0000\u0000\u02c5l\u0001\u0000"+ - "\u0000\u0000\u02c6\u02c7\u0005_\u0000\u0000\u02c7n\u0001\u0000\u0000\u0000"+ - "\u02c8\u02c9\u0005i\u0000\u0000\u02c9\u02ca\u0005n\u0000\u0000\u02ca\u02cb"+ - "\u0005f\u0000\u0000\u02cb\u02cc\u0005o\u0000\u0000\u02ccp\u0001\u0000"+ - "\u0000\u0000\u02cd\u02ce\u0005f\u0000\u0000\u02ce\u02cf\u0005u\u0000\u0000"+ - "\u02cf\u02d0\u0005n\u0000\u0000\u02d0\u02d1\u0005c\u0000\u0000\u02d1\u02d2"+ - "\u0005t\u0000\u0000\u02d2\u02d3\u0005i\u0000\u0000\u02d3\u02d4\u0005o"+ - "\u0000\u0000\u02d4\u02d5\u0005n\u0000\u0000\u02d5\u02d6\u0005s\u0000\u0000"+ - "\u02d6r\u0001\u0000\u0000\u0000\u02d7\u02d8\u0005t\u0000\u0000\u02d8\u02d9"+ - "\u0005r\u0000\u0000\u02d9\u02da\u0005u\u0000\u0000\u02da\u02e1\u0005e"+ - "\u0000\u0000\u02db\u02dc\u0005f\u0000\u0000\u02dc\u02dd\u0005a\u0000\u0000"+ - "\u02dd\u02de\u0005l\u0000\u0000\u02de\u02df\u0005s\u0000\u0000\u02df\u02e1"+ - "\u0005e\u0000\u0000\u02e0\u02d7\u0001\u0000\u0000\u0000\u02e0\u02db\u0001"+ - "\u0000\u0000\u0000\u02e1t\u0001\u0000\u0000\u0000\u02e2\u02e3\u0005=\u0000"+ - "\u0000\u02e3\u02ed\u0005=\u0000\u0000\u02e4\u02e5\u0005!\u0000\u0000\u02e5"+ - "\u02ed\u0005=\u0000\u0000\u02e6\u02ed\u0005<\u0000\u0000\u02e7\u02e8\u0005"+ - "<\u0000\u0000\u02e8\u02ed\u0005=\u0000\u0000\u02e9\u02ed\u0005>\u0000"+ - "\u0000\u02ea\u02eb\u0005>\u0000\u0000\u02eb\u02ed\u0005=\u0000\u0000\u02ec"+ - "\u02e2\u0001\u0000\u0000\u0000\u02ec\u02e4\u0001\u0000\u0000\u0000\u02ec"+ - "\u02e6\u0001\u0000\u0000\u0000\u02ec\u02e7\u0001\u0000\u0000\u0000\u02ec"+ - "\u02e9\u0001\u0000\u0000\u0000\u02ec\u02ea\u0001\u0000\u0000\u0000\u02ed"+ - "v\u0001\u0000\u0000\u0000\u02ee\u02ef\u0005+\u0000\u0000\u02efx\u0001"+ - "\u0000\u0000\u0000\u02f0\u02f1\u0005-\u0000\u0000\u02f1z\u0001\u0000\u0000"+ - "\u0000\u02f2\u02f3\u0005*\u0000\u0000\u02f3|\u0001\u0000\u0000\u0000\u02f4"+ - "\u02f5\u0005/\u0000\u0000\u02f5~\u0001\u0000\u0000\u0000\u02f6\u02f7\u0005"+ - "%\u0000\u0000\u02f7\u0080\u0001\u0000\u0000\u0000\u02f8\u02f9\u00051\u0000"+ - "\u0000\u02f9\u02fa\u00050\u0000\u0000\u02fa\u0082\u0001\u0000\u0000\u0000"+ - "\u02fb\u02fc\u0005a\u0000\u0000\u02fc\u02fd\u0005s\u0000\u0000\u02fd\u0303"+ - "\u0005c\u0000\u0000\u02fe\u02ff\u0005d\u0000\u0000\u02ff\u0300\u0005e"+ - "\u0000\u0000\u0300\u0301\u0005s\u0000\u0000\u0301\u0303\u0005c\u0000\u0000"+ - "\u0302\u02fb\u0001\u0000\u0000\u0000\u0302\u02fe\u0001\u0000\u0000\u0000"+ - "\u0303\u0084\u0001\u0000\u0000\u0000\u0304\u0305\u0005n\u0000\u0000\u0305"+ - "\u0306\u0005u\u0000\u0000\u0306\u0307\u0005l\u0000\u0000\u0307\u0308\u0005"+ - "l\u0000\u0000\u0308\u0309\u0005s\u0000\u0000\u0309\u0086\u0001\u0000\u0000"+ - "\u0000\u030a\u030b\u0005f\u0000\u0000\u030b\u030c\u0005i\u0000\u0000\u030c"+ - "\u030d\u0005r\u0000\u0000\u030d\u030e\u0005s\u0000\u0000\u030e\u0314\u0005"+ - "t\u0000\u0000\u030f\u0310\u0005l\u0000\u0000\u0310\u0311\u0005a\u0000"+ - "\u0000\u0311\u0312\u0005s\u0000\u0000\u0312\u0314\u0005t\u0000\u0000\u0313"+ - "\u030a\u0001\u0000\u0000\u0000\u0313\u030f\u0001\u0000\u0000\u0000\u0314"+ - "\u0088\u0001\u0000\u0000\u0000\u0315\u0316\u0003\u00ebs\u0000\u0316\u0317"+ - "\u0003\u00e5p\u0000\u0317\u0318\u0003\u00f1v\u0000\u0318\u0319\u0003\u00e3"+ - "o\u0000\u0319\u031a\u0003\u00cfe\u0000\u031a\u04d0\u0001\u0000\u0000\u0000"+ - "\u031b\u031c\u0003\u00c9b\u0000\u031c\u031d\u0003\u00cbc\u0000\u031d\u031e"+ - "\u0003\u00edt\u0000\u031e\u04d0\u0001\u0000\u0000\u0000\u031f\u0320\u0003"+ - "\u00e7q\u0000\u0320\u0321\u0003\u00e5p\u0000\u0321\u0322\u0003\u00f5x"+ - "\u0000\u0322\u04d0\u0001\u0000\u0000\u0000\u0323\u0324\u0003\u00dfm\u0000"+ - "\u0324\u0325\u0003\u00e5p\u0000\u0325\u0326\u0003\u00d5h\u0000\u0326\u0327"+ - "\u0003\u0081>\u0000\u0327\u04d0\u0001\u0000\u0000\u0000\u0328\u0329\u0003"+ - "\u00e7q\u0000\u0329\u032a\u0003\u00d9j\u0000\u032a\u04d0\u0001\u0000\u0000"+ - "\u0000\u032b\u032c\u0003\u00efu\u0000\u032c\u032d\u0003\u00c9b\u0000\u032d"+ - "\u032e\u0003\u00f1v\u0000\u032e\u04d0\u0001\u0000\u0000\u0000\u032f\u04d0"+ - "\u0003\u00d1f\u0000\u0330\u0331\u0003\u00edt\u0000\u0331\u0332\u0003\u00f1"+ - "v\u0000\u0332\u0333\u0003\u00cbc\u0000\u0333\u0334\u0003\u00edt\u0000"+ - "\u0334\u0335\u0003\u00efu\u0000\u0335\u0336\u0003\u00ebs\u0000\u0336\u0337"+ - "\u0003\u00d9j\u0000\u0337\u0338\u0003\u00e3o\u0000\u0338\u0339\u0003\u00d5"+ - "h\u0000\u0339\u04d0\u0001\u0000\u0000\u0000\u033a\u033b\u0003\u00efu\u0000"+ - "\u033b\u033c\u0003\u00ebs\u0000\u033c\u033d\u0003\u00d9j\u0000\u033d\u033e"+ - "\u0003\u00e1n\u0000\u033e\u04d0\u0001\u0000\u0000\u0000\u033f\u0340\u0003"+ - "\u00cdd\u0000\u0340\u0341\u0003\u00e5p\u0000\u0341\u0342\u0003\u00e3o"+ - "\u0000\u0342\u0343\u0003\u00cdd\u0000\u0343\u0344\u0003\u00c9b\u0000\u0344"+ - "\u0345\u0003\u00efu\u0000\u0345\u04d0\u0001\u0000\u0000\u0000\u0346\u0347"+ - "\u0003\u00cdd\u0000\u0347\u0348\u0003\u00e5p\u0000\u0348\u0349\u0003\u00c9"+ - "b\u0000\u0349\u034a\u0003\u00dfm\u0000\u034a\u034b\u0003\u00d1f\u0000"+ - "\u034b\u034c\u0003\u00edt\u0000\u034c\u034d\u0003\u00cdd\u0000\u034d\u034e"+ - "\u0003\u00d1f\u0000\u034e\u04d0\u0001\u0000\u0000\u0000\u034f\u0350\u0003"+ - "\u00d5h\u0000\u0350\u0351\u0003\u00ebs\u0000\u0351\u0352\u0003\u00d1f"+ - "\u0000\u0352\u0353\u0003\u00c9b\u0000\u0353\u0354\u0003\u00efu\u0000\u0354"+ - "\u0355\u0003\u00d1f\u0000\u0355\u0356\u0003\u00edt\u0000\u0356\u0357\u0003"+ - "\u00efu\u0000\u0357\u04d0\u0001\u0000\u0000\u0000\u0358\u0359\u0003\u00df"+ - "m\u0000\u0359\u035a\u0003\u00d1f\u0000\u035a\u035b\u0003\u00d3g\u0000"+ - "\u035b\u035c\u0003\u00efu\u0000\u035c\u04d0\u0001\u0000\u0000\u0000\u035d"+ - "\u035e\u0003\u00e3o\u0000\u035e\u035f\u0003\u00e5p\u0000\u035f\u0360\u0003"+ - "\u00f5x\u0000\u0360\u04d0\u0001\u0000\u0000\u0000\u0361\u0362\u0003\u00eb"+ - "s\u0000\u0362\u0363\u0003\u00d9j\u0000\u0363\u0364\u0003\u00d5h\u0000"+ - "\u0364\u0365\u0003\u00d7i\u0000\u0365\u0366\u0003\u00efu\u0000\u0366\u04d0"+ - "\u0001\u0000\u0000\u0000\u0367\u0368\u0003\u00edt\u0000\u0368\u0369\u0003"+ - "\u00efu\u0000\u0369\u036a\u0003\u00c9b\u0000\u036a\u036b\u0003\u00ebs"+ - "\u0000\u036b\u036c\u0003\u00efu\u0000\u036c\u036d\u0003\u00edt\u0000\u036d"+ - "\u036e\u0003m4\u0000\u036e\u036f\u0003\u00f5x\u0000\u036f\u0370\u0003"+ - "\u00d9j\u0000\u0370\u0371\u0003\u00efu\u0000\u0371\u0372\u0003\u00d7i"+ - "\u0000\u0372\u04d0\u0001\u0000\u0000\u0000\u0373\u0374\u0003\u00cfe\u0000"+ - "\u0374\u0375\u0003\u00c9b\u0000\u0375\u0376\u0003\u00efu\u0000\u0376\u0377"+ - "\u0003\u00d1f\u0000\u0377\u0378\u0003m4\u0000\u0378\u0379\u0003\u00d3"+ - "g\u0000\u0379\u037a\u0003\u00e5p\u0000\u037a\u037b\u0003\u00ebs\u0000"+ - "\u037b\u037c\u0003\u00e1n\u0000\u037c\u037d\u0003\u00c9b\u0000\u037d\u037e"+ - "\u0003\u00efu\u0000\u037e\u04d0\u0001\u0000\u0000\u0000\u037f\u0380\u0003"+ - "\u00cfe\u0000\u0380\u0381\u0003\u00c9b\u0000\u0381\u0382\u0003\u00efu"+ - "\u0000\u0382\u0383\u0003\u00d1f\u0000\u0383\u0384\u0003m4\u0000\u0384"+ - "\u0385\u0003\u00efu\u0000\u0385\u0386\u0003\u00ebs\u0000\u0386\u0387\u0003"+ - "\u00f1v\u0000\u0387\u0388\u0003\u00e3o\u0000\u0388\u0389\u0003\u00cdd"+ - "\u0000\u0389\u04d0\u0001\u0000\u0000\u0000\u038a\u038b\u0003\u00cfe\u0000"+ - "\u038b\u038c\u0003\u00c9b\u0000\u038c\u038d\u0003\u00efu\u0000\u038d\u038e"+ - "\u0003\u00d1f\u0000\u038e\u038f\u0003m4\u0000\u038f\u0390\u0003\u00e7"+ - "q\u0000\u0390\u0391\u0003\u00c9b\u0000\u0391\u0392\u0003\u00ebs\u0000"+ - "\u0392\u0393\u0003\u00edt\u0000\u0393\u0394\u0003\u00d1f\u0000\u0394\u04d0"+ - "\u0001\u0000\u0000\u0000\u0395\u0396\u0003\u00c9b\u0000\u0396\u0397\u0003"+ - "\u00f1v\u0000\u0397\u0398\u0003\u00efu\u0000\u0398\u0399\u0003\u00e5p"+ - "\u0000\u0399\u039a\u0003m4\u0000\u039a\u039b\u0003\u00cbc\u0000\u039b"+ - "\u039c\u0003\u00f1v\u0000\u039c\u039d\u0003\u00cdd\u0000\u039d\u039e\u0003"+ - "\u00ddl\u0000\u039e\u039f\u0003\u00d1f\u0000\u039f\u03a0\u0003\u00efu"+ - "\u0000\u03a0\u04d0\u0001\u0000\u0000\u0000\u03a1\u03a2\u0003\u00cfe\u0000"+ - "\u03a2\u03a3\u0003\u00c9b\u0000\u03a3\u03a4\u0003\u00efu\u0000\u03a4\u03a5"+ - "\u0003\u00d1f\u0000\u03a5\u03a6\u0003m4\u0000\u03a6\u03a7\u0003\u00d1"+ - "f\u0000\u03a7\u03a8\u0003\u00f7y\u0000\u03a8\u03a9\u0003\u00efu\u0000"+ - "\u03a9\u03aa\u0003\u00ebs\u0000\u03aa\u03ab\u0003\u00c9b\u0000\u03ab\u03ac"+ - "\u0003\u00cdd\u0000\u03ac\u03ad\u0003\u00efu\u0000\u03ad\u04d0\u0001\u0000"+ - "\u0000\u0000\u03ae\u03af\u0003\u00d9j\u0000\u03af\u03b0\u0003\u00edt\u0000"+ - "\u03b0\u03b1\u0003m4\u0000\u03b1\u03b2\u0003\u00d3g\u0000\u03b2\u03b3"+ - "\u0003\u00d9j\u0000\u03b3\u03b4\u0003\u00e3o\u0000\u03b4\u03b5\u0003\u00d9"+ - "j\u0000\u03b5\u03b6\u0003\u00efu\u0000\u03b6\u03b7\u0003\u00d1f\u0000"+ - "\u03b7\u04d0\u0001\u0000\u0000\u0000\u03b8\u03b9\u0003\u00d9j\u0000\u03b9"+ - "\u03ba\u0003\u00edt\u0000\u03ba\u03bb\u0003m4\u0000\u03bb\u03bc\u0003"+ - "\u00d9j\u0000\u03bc\u03bd\u0003\u00e3o\u0000\u03bd\u03be\u0003\u00d3g"+ - "\u0000\u03be\u03bf\u0003\u00d9j\u0000\u03bf\u03c0\u0003\u00e3o\u0000\u03c0"+ - "\u03c1\u0003\u00d9j\u0000\u03c1\u03c2\u0003\u00efu\u0000\u03c2\u03c3\u0003"+ - "\u00d1f\u0000\u03c3\u04d0\u0001\u0000\u0000\u0000\u03c4\u03c5\u0003\u00cd"+ - "d\u0000\u03c5\u03c6\u0003\u00c9b\u0000\u03c6\u03c7\u0003\u00edt\u0000"+ - "\u03c7\u03c8\u0003\u00d1f\u0000\u03c8\u04d0\u0001\u0000\u0000\u0000\u03c9"+ - "\u03ca\u0003\u00dfm\u0000\u03ca\u03cb\u0003\u00d1f\u0000\u03cb\u03cc\u0003"+ - "\u00e3o\u0000\u03cc\u03cd\u0003\u00d5h\u0000\u03cd\u03ce\u0003\u00efu"+ - "\u0000\u03ce\u03cf\u0003\u00d7i\u0000\u03cf\u04d0\u0001\u0000\u0000\u0000"+ - "\u03d0\u03d1\u0003\u00e1n\u0000\u03d1\u03d2\u0003\u00f3w\u0000\u03d2\u03d3"+ - "\u0003m4\u0000\u03d3\u03d4\u0003\u00e1n\u0000\u03d4\u03d5\u0003\u00c9"+ - "b\u0000\u03d5\u03d6\u0003\u00f7y\u0000\u03d6\u04d0\u0001\u0000\u0000\u0000"+ - "\u03d7\u03d8\u0003\u00e1n\u0000\u03d8\u03d9\u0003\u00f3w\u0000\u03d9\u03da"+ - "\u0003m4\u0000\u03da\u03db\u0003\u00e1n\u0000\u03db\u03dc\u0003\u00d9"+ - "j\u0000\u03dc\u03dd\u0003\u00e3o\u0000\u03dd\u04d0\u0001\u0000\u0000\u0000"+ - "\u03de\u03df\u0003\u00e1n\u0000\u03df\u03e0\u0003\u00f3w\u0000\u03e0\u03e1"+ - "\u0003m4\u0000\u03e1\u03e2\u0003\u00c9b\u0000\u03e2\u03e3\u0003\u00f3"+ - "w\u0000\u03e3\u03e4\u0003\u00d5h\u0000\u03e4\u04d0\u0001\u0000\u0000\u0000"+ - "\u03e5\u03e6\u0003\u00e1n\u0000\u03e6\u03e7\u0003\u00f3w\u0000\u03e7\u03e8"+ - "\u0003m4\u0000\u03e8\u03e9\u0003\u00edt\u0000\u03e9\u03ea\u0003\u00f1"+ - "v\u0000\u03ea\u03eb\u0003\u00e1n\u0000\u03eb\u04d0\u0001\u0000\u0000\u0000"+ - "\u03ec\u03ed\u0003\u00e1n\u0000\u03ed\u03ee\u0003\u00f3w\u0000\u03ee\u03ef"+ - "\u0003m4\u0000\u03ef\u03f0\u0003\u00cdd\u0000\u03f0\u03f1\u0003\u00e5"+ - "p\u0000\u03f1\u03f2\u0003\u00f1v\u0000\u03f2\u03f3\u0003\u00e3o\u0000"+ - "\u03f3\u03f4\u0003\u00efu\u0000\u03f4\u04d0\u0001\u0000\u0000\u0000\u03f5"+ - "\u03f6\u0003\u00e1n\u0000\u03f6\u03f7\u0003\u00f3w\u0000\u03f7\u03f8\u0003"+ - "m4\u0000\u03f8\u03f9\u0003\u00cdd\u0000\u03f9\u03fa\u0003\u00e5p\u0000"+ - "\u03fa\u03fb\u0003\u00e3o\u0000\u03fb\u03fc\u0003\u00cdd\u0000\u03fc\u03fd"+ - "\u0003\u00c9b\u0000\u03fd\u03fe\u0003\u00efu\u0000\u03fe\u04d0\u0001\u0000"+ - "\u0000\u0000\u03ff\u0400\u0003\u00e1n\u0000\u0400\u0401\u0003\u00f3w\u0000"+ - "\u0401\u0402\u0003m4\u0000\u0402\u0403\u0003\u00dbk\u0000\u0403\u0404"+ - "\u0003\u00e5p\u0000\u0404\u0405\u0003\u00d9j\u0000\u0405\u0406\u0003\u00e3"+ - "o\u0000\u0406\u04d0\u0001\u0000\u0000\u0000\u0407\u0408\u0003\u00e1n\u0000"+ - "\u0408\u0409\u0003\u00f3w\u0000\u0409\u040a\u0003m4\u0000\u040a\u040b"+ - "\u0003\u00e1n\u0000\u040b\u040c\u0003\u00d1f\u0000\u040c\u040d\u0003\u00cf"+ - "e\u0000\u040d\u040e\u0003\u00d9j\u0000\u040e\u040f\u0003\u00c9b\u0000"+ - "\u040f\u0410\u0003\u00e3o\u0000\u0410\u04d0\u0001\u0000\u0000\u0000\u0411"+ - "\u0412\u0003\u00e1n\u0000\u0412\u0413\u0003\u00f3w\u0000\u0413\u0414\u0003"+ - "m4\u0000\u0414\u0415\u0003\u00cfe\u0000\u0415\u0416\u0003\u00d1f\u0000"+ - "\u0416\u0417\u0003\u00cfe\u0000\u0417\u0418\u0003\u00f1v\u0000\u0418\u0419"+ - "\u0003\u00e7q\u0000\u0419\u041a\u0003\u00d1f\u0000\u041a\u04d0\u0001\u0000"+ - "\u0000\u0000\u041b\u041c\u0003\u00e1n\u0000\u041c\u041d\u0003\u00d1f\u0000"+ - "\u041d\u041e\u0003\u00efu\u0000\u041e\u041f\u0003\u00c9b\u0000\u041f\u0420"+ - "\u0003\u00cfe\u0000\u0420\u0421\u0003\u00c9b\u0000\u0421\u0422\u0003\u00ef"+ - "u\u0000\u0422\u0423\u0003\u00c9b\u0000\u0423\u04d0\u0001\u0000\u0000\u0000"+ - "\u0424\u0425\u0003\u00edt\u0000\u0425\u0426\u0003\u00e7q\u0000\u0426\u0427"+ - "\u0003\u00dfm\u0000\u0427\u0428\u0003\u00d9j\u0000\u0428\u0429\u0003\u00ef"+ - "u\u0000\u0429\u04d0\u0001\u0000\u0000\u0000\u042a\u042b\u0003\u00efu\u0000"+ - "\u042b\u042c\u0003\u00e5p\u0000\u042c\u042d\u0003m4\u0000\u042d\u042e"+ - "\u0003\u00edt\u0000\u042e\u042f\u0003\u00efu\u0000\u042f\u0430\u0003\u00eb"+ - "s\u0000\u0430\u0431\u0003\u00d9j\u0000\u0431\u0432\u0003\u00e3o\u0000"+ - "\u0432\u0433\u0003\u00d5h\u0000\u0433\u04d0\u0001\u0000\u0000\u0000\u0434"+ - "\u0435\u0003\u00efu\u0000\u0435\u0436\u0003\u00e5p\u0000\u0436\u0437\u0003"+ - "m4\u0000\u0437\u0438\u0003\u00edt\u0000\u0438\u0439\u0003\u00efu\u0000"+ - "\u0439\u043a\u0003\u00ebs\u0000\u043a\u04d0\u0001\u0000\u0000\u0000\u043b"+ - "\u043c\u0003\u00efu\u0000\u043c\u043d\u0003\u00e5p\u0000\u043d\u043e\u0003"+ - "m4\u0000\u043e\u043f\u0003\u00cbc\u0000\u043f\u0440\u0003\u00e5p\u0000"+ - "\u0440\u0441\u0003\u00e5p\u0000\u0441\u0442\u0003\u00dfm\u0000\u0442\u04d0"+ - "\u0001\u0000\u0000\u0000\u0443\u0444\u0003\u00efu\u0000\u0444\u0445\u0003"+ - "\u00e5p\u0000\u0445\u0446\u0003m4\u0000\u0446\u0447\u0003\u00cbc\u0000"+ - "\u0447\u0448\u0003\u00e5p\u0000\u0448\u0449\u0003\u00e5p\u0000\u0449\u044a"+ - "\u0003\u00dfm\u0000\u044a\u044b\u0003\u00d1f\u0000\u044b\u044c\u0003\u00c9"+ - "b\u0000\u044c\u044d\u0003\u00e3o\u0000\u044d\u04d0\u0001\u0000\u0000\u0000"+ - "\u044e\u044f\u0003\u00efu\u0000\u044f\u0450\u0003\u00e5p\u0000\u0450\u0451"+ - "\u0003m4\u0000\u0451\u0452\u0003\u00cfe\u0000\u0452\u0453\u0003\u00c9"+ - "b\u0000\u0453\u0454\u0003\u00efu\u0000\u0454\u0455\u0003\u00d1f\u0000"+ - "\u0455\u0456\u0003\u00efu\u0000\u0456\u0457\u0003\u00d9j\u0000\u0457\u0458"+ - "\u0003\u00e1n\u0000\u0458\u0459\u0003\u00d1f\u0000\u0459\u04d0\u0001\u0000"+ - "\u0000\u0000\u045a\u045b\u0003\u00efu\u0000\u045b\u045c\u0003\u00e5p\u0000"+ - "\u045c\u045d\u0003m4\u0000\u045d\u045e\u0003\u00cfe\u0000\u045e\u045f"+ - "\u0003\u00efu\u0000\u045f\u04d0\u0001\u0000\u0000\u0000\u0460\u0461\u0003"+ - "\u00efu\u0000\u0461\u0462\u0003\u00e5p\u0000\u0462\u0463\u0003m4\u0000"+ - "\u0463\u0464\u0003\u00cfe\u0000\u0464\u0465\u0003\u00cbc\u0000\u0465\u0466"+ - "\u0003\u00dfm\u0000\u0466\u04d0\u0001\u0000\u0000\u0000\u0467\u0468\u0003"+ - "\u00efu\u0000\u0468\u0469\u0003\u00e5p\u0000\u0469\u046a\u0003m4\u0000"+ - "\u046a\u046b\u0003\u00cfe\u0000\u046b\u046c\u0003\u00e5p\u0000\u046c\u046d"+ - "\u0003\u00f1v\u0000\u046d\u046e\u0003\u00cbc\u0000\u046e\u046f\u0003\u00df"+ - "m\u0000\u046f\u0470\u0003\u00d1f\u0000\u0470\u04d0\u0001\u0000\u0000\u0000"+ - "\u0471\u0472\u0003\u00efu\u0000\u0472\u0473\u0003\u00e5p\u0000\u0473\u0474"+ - "\u0003m4\u0000\u0474\u0475\u0003\u00cfe\u0000\u0475\u0476\u0003\u00d1"+ - "f\u0000\u0476\u0477\u0003\u00d5h\u0000\u0477\u0478\u0003\u00ebs\u0000"+ - "\u0478\u0479\u0003\u00d1f\u0000\u0479\u047a\u0003\u00d1f\u0000\u047a\u047b"+ - "\u0003\u00edt\u0000\u047b\u04d0\u0001\u0000\u0000\u0000\u047c\u047d\u0003"+ - "\u00efu\u0000\u047d\u047e\u0003\u00e5p\u0000\u047e\u047f\u0003m4\u0000"+ - "\u047f\u0480\u0003\u00d9j\u0000\u0480\u0481\u0003\u00e3o\u0000\u0481\u0482"+ - "\u0003\u00efu\u0000\u0482\u04d0\u0001\u0000\u0000\u0000\u0483\u0484\u0003"+ - "\u00efu\u0000\u0484\u0485\u0003\u00e5p\u0000\u0485\u0486\u0003m4\u0000"+ - "\u0486\u0487\u0003\u00d9j\u0000\u0487\u0488\u0003\u00e3o\u0000\u0488\u0489"+ - "\u0003\u00efu\u0000\u0489\u048a\u0003\u00d1f\u0000\u048a\u048b\u0003\u00d5"+ - "h\u0000\u048b\u048c\u0003\u00d1f\u0000\u048c\u048d\u0003\u00ebs\u0000"+ - "\u048d\u04d0\u0001\u0000\u0000\u0000\u048e\u048f\u0003\u00efu\u0000\u048f"+ - "\u0490\u0003\u00e5p\u0000\u0490\u0491\u0003m4\u0000\u0491\u0492\u0003"+ - "\u00d9j\u0000\u0492\u0493\u0003\u00e7q\u0000\u0493\u04d0\u0001\u0000\u0000"+ - "\u0000\u0494\u0495\u0003\u00efu\u0000\u0495\u0496\u0003\u00e5p\u0000\u0496"+ - "\u0497\u0003m4\u0000\u0497\u0498\u0003\u00dfm\u0000\u0498\u0499\u0003"+ - "\u00e5p\u0000\u0499\u049a\u0003\u00e3o\u0000\u049a\u049b\u0003\u00d5h"+ - "\u0000\u049b\u04d0\u0001\u0000\u0000\u0000\u049c\u049d\u0003\u00efu\u0000"+ - "\u049d\u049e\u0003\u00e5p\u0000\u049e\u049f\u0003m4\u0000\u049f\u04a0"+ - "\u0003\u00ebs\u0000\u04a0\u04a1\u0003\u00c9b\u0000\u04a1\u04a2\u0003\u00cf"+ - "e\u0000\u04a2\u04a3\u0003\u00d9j\u0000\u04a3\u04a4\u0003\u00c9b\u0000"+ - "\u04a4\u04a5\u0003\u00e3o\u0000\u04a5\u04a6\u0003\u00edt\u0000\u04a6\u04d0"+ - "\u0001\u0000\u0000\u0000\u04a7\u04a8\u0003\u00efu\u0000\u04a8\u04a9\u0003"+ - "\u00e5p\u0000\u04a9\u04aa\u0003m4\u0000\u04aa\u04ab\u0003\u00f3w\u0000"+ - "\u04ab\u04ac\u0003\u00d1f\u0000\u04ac\u04ad\u0003\u00ebs\u0000\u04ad\u04ae"+ - "\u0003\u00edt\u0000\u04ae\u04af\u0003\u00d9j\u0000\u04af\u04b0\u0003\u00e5"+ - "p\u0000\u04b0\u04b1\u0003\u00e3o\u0000\u04b1\u04d0\u0001\u0000\u0000\u0000"+ - "\u04b2\u04b3\u0003\u00efu\u0000\u04b3\u04b4\u0003\u00e5p\u0000\u04b4\u04b5"+ - "\u0003m4\u0000\u04b5\u04b6\u0003\u00f1v\u0000\u04b6\u04b7\u0003\u00e3"+ - "o\u0000\u04b7\u04b8\u0003\u00edt\u0000\u04b8\u04b9\u0003\u00d9j\u0000"+ - "\u04b9\u04ba\u0003\u00d5h\u0000\u04ba\u04bb\u0003\u00e3o\u0000\u04bb\u04bc"+ - "\u0003\u00d1f\u0000\u04bc\u04bd\u0003\u00cfe\u0000\u04bd\u04be\u0003m"+ - "4\u0000\u04be\u04bf\u0003\u00dfm\u0000\u04bf\u04c0\u0003\u00e5p\u0000"+ - "\u04c0\u04c1\u0003\u00e3o\u0000\u04c1\u04c2\u0003\u00d5h\u0000\u04c2\u04d0"+ - "\u0001\u0000\u0000\u0000\u04c3\u04c4\u0003\u00efu\u0000\u04c4\u04c5\u0003"+ - "\u00e5p\u0000\u04c5\u04c6\u0003m4\u0000\u04c6\u04c7\u0003\u00d5h\u0000"+ - "\u04c7\u04c8\u0003\u00d1f\u0000\u04c8\u04c9\u0003\u00e5p\u0000\u04c9\u04ca"+ - "\u0003\u00e7q\u0000\u04ca\u04cb\u0003\u00e5p\u0000\u04cb\u04cc\u0003\u00d9"+ - "j\u0000\u04cc\u04cd\u0003\u00e3o\u0000\u04cd\u04ce\u0003\u00efu\u0000"+ - "\u04ce\u04d0\u0001\u0000\u0000\u0000\u04cf\u0315\u0001\u0000\u0000\u0000"+ - "\u04cf\u031b\u0001\u0000\u0000\u0000\u04cf\u031f\u0001\u0000\u0000\u0000"+ - "\u04cf\u0323\u0001\u0000\u0000\u0000\u04cf\u0328\u0001\u0000\u0000\u0000"+ - "\u04cf\u032b\u0001\u0000\u0000\u0000\u04cf\u032f\u0001\u0000\u0000\u0000"+ - "\u04cf\u0330\u0001\u0000\u0000\u0000\u04cf\u033a\u0001\u0000\u0000\u0000"+ - "\u04cf\u033f\u0001\u0000\u0000\u0000\u04cf\u0346\u0001\u0000\u0000\u0000"+ - "\u04cf\u034f\u0001\u0000\u0000\u0000\u04cf\u0358\u0001\u0000\u0000\u0000"+ - "\u04cf\u035d\u0001\u0000\u0000\u0000\u04cf\u0361\u0001\u0000\u0000\u0000"+ - "\u04cf\u0367\u0001\u0000\u0000\u0000\u04cf\u0373\u0001\u0000\u0000\u0000"+ - "\u04cf\u037f\u0001\u0000\u0000\u0000\u04cf\u038a\u0001\u0000\u0000\u0000"+ - "\u04cf\u0395\u0001\u0000\u0000\u0000\u04cf\u03a1\u0001\u0000\u0000\u0000"+ - "\u04cf\u03ae\u0001\u0000\u0000\u0000\u04cf\u03b8\u0001\u0000\u0000\u0000"+ - "\u04cf\u03c4\u0001\u0000\u0000\u0000\u04cf\u03c9\u0001\u0000\u0000\u0000"+ - "\u04cf\u03d0\u0001\u0000\u0000\u0000\u04cf\u03d7\u0001\u0000\u0000\u0000"+ - "\u04cf\u03de\u0001\u0000\u0000\u0000\u04cf\u03e5\u0001\u0000\u0000\u0000"+ - "\u04cf\u03ec\u0001\u0000\u0000\u0000\u04cf\u03f5\u0001\u0000\u0000\u0000"+ - "\u04cf\u03ff\u0001\u0000\u0000\u0000\u04cf\u0407\u0001\u0000\u0000\u0000"+ - "\u04cf\u0411\u0001\u0000\u0000\u0000\u04cf\u041b\u0001\u0000\u0000\u0000"+ - "\u04cf\u0424\u0001\u0000\u0000\u0000\u04cf\u042a\u0001\u0000\u0000\u0000"+ - "\u04cf\u0434\u0001\u0000\u0000\u0000\u04cf\u043b\u0001\u0000\u0000\u0000"+ - "\u04cf\u0443\u0001\u0000\u0000\u0000\u04cf\u044e\u0001\u0000\u0000\u0000"+ - "\u04cf\u045a\u0001\u0000\u0000\u0000\u04cf\u0460\u0001\u0000\u0000\u0000"+ - "\u04cf\u0467\u0001\u0000\u0000\u0000\u04cf\u0471\u0001\u0000\u0000\u0000"+ - "\u04cf\u047c\u0001\u0000\u0000\u0000\u04cf\u0483\u0001\u0000\u0000\u0000"+ - "\u04cf\u048e\u0001\u0000\u0000\u0000\u04cf\u0494\u0001\u0000\u0000\u0000"+ - "\u04cf\u049c\u0001\u0000\u0000\u0000\u04cf\u04a7\u0001\u0000\u0000\u0000"+ - "\u04cf\u04b2\u0001\u0000\u0000\u0000\u04cf\u04c3\u0001\u0000\u0000\u0000"+ - "\u04d0\u008a\u0001\u0000\u0000\u0000\u04d1\u04d2\u0003\u00c9b\u0000\u04d2"+ - "\u04d3\u0003\u00f3w\u0000\u04d3\u04d4\u0003\u00d5h\u0000\u04d4\u0569\u0001"+ - "\u0000\u0000\u0000\u04d5\u04d6\u0003\u00e1n\u0000\u04d6\u04d7\u0003\u00d9"+ - "j\u0000\u04d7\u04d8\u0003\u00e3o\u0000\u04d8\u0569\u0001\u0000\u0000\u0000"+ - "\u04d9\u04da\u0003\u00e1n\u0000\u04da\u04db\u0003\u00c9b\u0000\u04db\u04dc"+ - "\u0003\u00f7y\u0000\u04dc\u0569\u0001\u0000\u0000\u0000\u04dd\u04de\u0003"+ - "\u00edt\u0000\u04de\u04df\u0003\u00f1v\u0000\u04df\u04e0\u0003\u00e1n"+ - "\u0000\u04e0\u0569\u0001\u0000\u0000\u0000\u04e1\u04e2\u0003\u00cdd\u0000"+ - "\u04e2\u04e3\u0003\u00e5p\u0000\u04e3\u04e4\u0003\u00f1v\u0000\u04e4\u04e5"+ - "\u0003\u00e3o\u0000\u04e5\u04e6\u0003\u00efu\u0000\u04e6\u0569\u0001\u0000"+ - "\u0000\u0000\u04e7\u04e8\u0003\u00cdd\u0000\u04e8\u04e9\u0003\u00e5p\u0000"+ - "\u04e9\u04ea\u0003\u00f1v\u0000\u04ea\u04eb\u0003\u00e3o\u0000\u04eb\u04ec"+ - "\u0003\u00efu\u0000\u04ec\u04ed\u0003m4\u0000\u04ed\u04ee\u0003\u00cf"+ - "e\u0000\u04ee\u04ef\u0003\u00d9j\u0000\u04ef\u04f0\u0003\u00edt\u0000"+ - "\u04f0\u04f1\u0003\u00efu\u0000\u04f1\u04f2\u0003\u00d9j\u0000\u04f2\u04f3"+ - "\u0003\u00e3o\u0000\u04f3\u04f4\u0003\u00cdd\u0000\u04f4\u04f5\u0003\u00ef"+ - "u\u0000\u04f5\u0569\u0001\u0000\u0000\u0000\u04f6\u04f7\u0003\u00e7q\u0000"+ - "\u04f7\u04f8\u0003\u00d1f\u0000\u04f8\u04f9\u0003\u00ebs\u0000\u04f9\u04fa"+ - "\u0003\u00cdd\u0000\u04fa\u04fb\u0003\u00d1f\u0000\u04fb\u04fc\u0003\u00e3"+ - "o\u0000\u04fc\u04fd\u0003\u00efu\u0000\u04fd\u04fe\u0003\u00d9j\u0000"+ - "\u04fe\u04ff\u0003\u00dfm\u0000\u04ff\u0500\u0003\u00d1f\u0000\u0500\u0569"+ - "\u0001\u0000\u0000\u0000\u0501\u0502\u0003\u00e1n\u0000\u0502\u0503\u0003"+ - "\u00d1f\u0000\u0503\u0504\u0003\u00cfe\u0000\u0504\u0505\u0003\u00d9j"+ - "\u0000\u0505\u0506\u0003\u00c9b\u0000\u0506\u0507\u0003\u00e3o\u0000\u0507"+ - "\u0569\u0001\u0000\u0000\u0000\u0508\u0509\u0003\u00e1n\u0000\u0509\u050a"+ - "\u0003\u00d1f\u0000\u050a\u050b\u0003\u00cfe\u0000\u050b\u050c\u0003\u00d9"+ - "j\u0000\u050c\u050d\u0003\u00c9b\u0000\u050d\u050e\u0003\u00e3o\u0000"+ - "\u050e\u050f\u0003m4\u0000\u050f\u0510\u0003\u00c9b\u0000\u0510\u0511"+ - "\u0003\u00cbc\u0000\u0511\u0512\u0003\u00edt\u0000\u0512\u0513\u0003\u00e5"+ - "p\u0000\u0513\u0514\u0003\u00dfm\u0000\u0514\u0515\u0003\u00f1v\u0000"+ - "\u0515\u0516\u0003\u00efu\u0000\u0516\u0517\u0003\u00d1f\u0000\u0517\u0518"+ - "\u0003m4\u0000\u0518\u0519\u0003\u00cfe\u0000\u0519\u051a\u0003\u00d1"+ - "f\u0000\u051a\u051b\u0003\u00f3w\u0000\u051b\u051c\u0003\u00d9j\u0000"+ - "\u051c\u051d\u0003\u00c9b\u0000\u051d\u051e\u0003\u00efu\u0000\u051e\u051f"+ - "\u0003\u00d9j\u0000\u051f\u0520\u0003\u00e5p\u0000\u0520\u0521\u0003\u00e3"+ - "o\u0000\u0521\u0569\u0001\u0000\u0000\u0000\u0522\u0523\u0003\u00c9b\u0000"+ - "\u0523\u0524\u0003\u00cdd\u0000\u0524\u0525\u0003\u00e5p\u0000\u0525\u0526"+ - "\u0003\u00edt\u0000\u0526\u0569\u0001\u0000\u0000\u0000\u0527\u0528\u0003"+ - "\u00c9b\u0000\u0528\u0529\u0003\u00edt\u0000\u0529\u052a\u0003\u00d9j"+ - "\u0000\u052a\u052b\u0003\u00e3o\u0000\u052b\u0569\u0001\u0000\u0000\u0000"+ - "\u052c\u052d\u0003\u00c9b\u0000\u052d\u052e\u0003\u00efu\u0000\u052e\u052f"+ - "\u0003\u00c9b\u0000\u052f\u0530\u0003\u00e3o\u0000\u0530\u0569\u0001\u0000"+ - "\u0000\u0000\u0531\u0532\u0003\u00c9b\u0000\u0532\u0533\u0003\u00efu\u0000"+ - "\u0533\u0534\u0003\u00c9b\u0000\u0534\u0535\u0003\u00e3o\u0000\u0535\u0536"+ - "\u00052\u0000\u0000\u0536\u0569\u0001\u0000\u0000\u0000\u0537\u0538\u0003"+ - "\u00cdd\u0000\u0538\u0539\u0003\u00d1f\u0000\u0539\u053a\u0003\u00d9j"+ - "\u0000\u053a\u053b\u0003\u00dfm\u0000\u053b\u0569\u0001\u0000\u0000\u0000"+ - "\u053c\u053d\u0003\u00cdd\u0000\u053d\u053e\u0003\u00e5p\u0000\u053e\u053f"+ - "\u0003\u00edt\u0000\u053f\u0569\u0001\u0000\u0000\u0000\u0540\u0541\u0003"+ - "\u00cdd\u0000\u0541\u0542\u0003\u00e5p\u0000\u0542\u0543\u0003\u00edt"+ - "\u0000\u0543\u0544\u0003\u00d7i\u0000\u0544\u0569\u0001\u0000\u0000\u0000"+ - "\u0545\u0546\u0003\u00d3g\u0000\u0546\u0547\u0003\u00dfm\u0000\u0547\u0548"+ - "\u0003\u00e5p\u0000\u0548\u0549\u0003\u00e5p\u0000\u0549\u054a\u0003\u00eb"+ - "s\u0000\u054a\u0569\u0001\u0000\u0000\u0000\u054b\u054c\u0003\u00dfm\u0000"+ - "\u054c\u054d\u0003\u00efu\u0000\u054d\u054e\u0003\u00ebs\u0000\u054e\u054f"+ - "\u0003\u00d9j\u0000\u054f\u0550\u0003\u00e1n\u0000\u0550\u0569\u0001\u0000"+ - "\u0000\u0000\u0551\u0552\u0003\u00edt\u0000\u0552\u0553\u0003\u00d9j\u0000"+ - "\u0553\u0554\u0003\u00e3o\u0000\u0554\u0569\u0001\u0000\u0000\u0000\u0555"+ - "\u0556\u0003\u00edt\u0000\u0556\u0557\u0003\u00d9j\u0000\u0557\u0558\u0003"+ - "\u00e3o\u0000\u0558\u0559\u0003\u00d7i\u0000\u0559\u0569\u0001\u0000\u0000"+ - "\u0000\u055a\u055b\u0003\u00edt\u0000\u055b\u055c\u0003\u00e9r\u0000\u055c"+ - "\u055d\u0003\u00ebs\u0000\u055d\u055e\u0003\u00efu\u0000\u055e\u0569\u0001"+ - "\u0000\u0000\u0000\u055f\u0560\u0003\u00efu\u0000\u0560\u0561\u0003\u00c9"+ - "b\u0000\u0561\u0562\u0003\u00e3o\u0000\u0562\u0569\u0001\u0000\u0000\u0000"+ - "\u0563\u0564\u0003\u00efu\u0000\u0564\u0565\u0003\u00c9b\u0000\u0565\u0566"+ - "\u0003\u00e3o\u0000\u0566\u0567\u0003\u00d7i\u0000\u0567\u0569\u0001\u0000"+ - "\u0000\u0000\u0568\u04d1\u0001\u0000\u0000\u0000\u0568\u04d5\u0001\u0000"+ - "\u0000\u0000\u0568\u04d9\u0001\u0000\u0000\u0000\u0568\u04dd\u0001\u0000"+ - "\u0000\u0000\u0568\u04e1\u0001\u0000\u0000\u0000\u0568\u04e7\u0001\u0000"+ - "\u0000\u0000\u0568\u04f6\u0001\u0000\u0000\u0000\u0568\u0501\u0001\u0000"+ - "\u0000\u0000\u0568\u0508\u0001\u0000\u0000\u0000\u0568\u0522\u0001\u0000"+ - "\u0000\u0000\u0568\u0527\u0001\u0000\u0000\u0000\u0568\u052c\u0001\u0000"+ - "\u0000\u0000\u0568\u0531\u0001\u0000\u0000\u0000\u0568\u0537\u0001\u0000"+ - "\u0000\u0000\u0568\u053c\u0001\u0000\u0000\u0000\u0568\u0540\u0001\u0000"+ - "\u0000\u0000\u0568\u0545\u0001\u0000\u0000\u0000\u0568\u054b\u0001\u0000"+ - "\u0000\u0000\u0568\u0551\u0001\u0000\u0000\u0000\u0568\u0555\u0001\u0000"+ - "\u0000\u0000\u0568\u055a\u0001\u0000\u0000\u0000\u0568\u055f\u0001\u0000"+ - "\u0000\u0000\u0568\u0563\u0001\u0000\u0000\u0000\u0569\u008c\u0001\u0000"+ - "\u0000\u0000\u056a\u056b\u0003\u00cdd\u0000\u056b\u056c\u0003\u00d9j\u0000"+ - "\u056c\u056d\u0003\u00cfe\u0000\u056d\u056e\u0003\u00ebs\u0000\u056e\u056f"+ - "\u0003m4\u0000\u056f\u0570\u0003\u00e1n\u0000\u0570\u0571\u0003\u00c9"+ - "b\u0000\u0571\u0572\u0003\u00efu\u0000\u0572\u0573\u0003\u00cdd\u0000"+ - "\u0573\u0574\u0003\u00d7i\u0000\u0574\u008e\u0001\u0000\u0000\u0000\u0575"+ - "\u057c\u0003;\u001b\u0000\u0576\u057b\u0003;\u001b\u0000\u0577\u057b\u0003"+ - "9\u001a\u0000\u0578\u057b\u0005_\u0000\u0000\u0579\u057b\u0003{;\u0000"+ - "\u057a\u0576\u0001\u0000\u0000\u0000\u057a\u0577\u0001\u0000\u0000\u0000"+ - "\u057a\u0578\u0001\u0000\u0000\u0000\u057a\u0579\u0001\u0000\u0000\u0000"+ - "\u057b\u057e\u0001\u0000\u0000\u0000\u057c\u057a\u0001\u0000\u0000\u0000"+ - "\u057c\u057d\u0001\u0000\u0000\u0000\u057d\u0589\u0001\u0000\u0000\u0000"+ - "\u057e\u057c\u0001\u0000\u0000\u0000\u057f\u0584\u0007\b\u0000\u0000\u0580"+ - "\u0585\u0003;\u001b\u0000\u0581\u0585\u00039\u001a\u0000\u0582\u0585\u0005"+ - "_\u0000\u0000\u0583\u0585\u0003{;\u0000\u0584\u0580\u0001\u0000\u0000"+ - "\u0000\u0584\u0581\u0001\u0000\u0000\u0000\u0584\u0582\u0001\u0000\u0000"+ - "\u0000\u0584\u0583\u0001\u0000\u0000\u0000\u0585\u0586\u0001\u0000\u0000"+ - "\u0000\u0586\u0584\u0001\u0000\u0000\u0000\u0586\u0587\u0001\u0000\u0000"+ - "\u0000\u0587\u0589\u0001\u0000\u0000\u0000\u0588\u0575\u0001\u0000\u0000"+ - "\u0000\u0588\u057f\u0001\u0000\u0000\u0000\u0589\u0090\u0001\u0000\u0000"+ - "\u0000\u058a\u0590\u0005`\u0000\u0000\u058b\u058f\b\t\u0000\u0000\u058c"+ - "\u058d\u0005`\u0000\u0000\u058d\u058f\u0005`\u0000\u0000\u058e\u058b\u0001"+ - "\u0000\u0000\u0000\u058e\u058c\u0001\u0000\u0000\u0000\u058f\u0592\u0001"+ - "\u0000\u0000\u0000\u0590\u058e\u0001\u0000\u0000\u0000\u0590\u0591\u0001"+ - "\u0000\u0000\u0000\u0591\u0593\u0001\u0000\u0000\u0000\u0592\u0590\u0001"+ - "\u0000\u0000\u0000\u0593\u0594\u0005`\u0000\u0000\u0594\u0092\u0001\u0000"+ - "\u0000\u0000\u0595\u0596\u0003\'\u0011\u0000\u0596\u0597\u0001\u0000\u0000"+ - "\u0000\u0597\u0598\u0006G\u0004\u0000\u0598\u0094\u0001\u0000\u0000\u0000"+ - "\u0599\u059a\u0003)\u0012\u0000\u059a\u059b\u0001\u0000\u0000\u0000\u059b"+ - "\u059c\u0006H\u0004\u0000\u059c\u0096\u0001\u0000\u0000\u0000\u059d\u059e"+ - "\u0003+\u0013\u0000\u059e\u059f\u0001\u0000\u0000\u0000\u059f\u05a0\u0006"+ - "I\u0004\u0000\u05a0\u0098\u0001\u0000\u0000\u0000\u05a1\u05a2\u0005|\u0000"+ - "\u0000\u05a2\u05a3\u0001\u0000\u0000\u0000\u05a3\u05a4\u0006J\u0007\u0000"+ - "\u05a4\u05a5\u0006J\b\u0000\u05a5\u009a\u0001\u0000\u0000\u0000\u05a6"+ - "\u05a7\u0005[\u0000\u0000\u05a7\u05a8\u0001\u0000\u0000\u0000\u05a8\u05a9"+ - "\u0006K\u0005\u0000\u05a9\u05aa\u0006K\u0002\u0000\u05aa\u05ab\u0006K"+ - "\u0002\u0000\u05ab\u009c\u0001\u0000\u0000\u0000\u05ac\u05ad\u0005]\u0000"+ - "\u0000\u05ad\u05ae\u0001\u0000\u0000\u0000\u05ae\u05af\u0006L\b\u0000"+ - "\u05af\u05b0\u0006L\b\u0000\u05b0\u05b1\u0006L\t\u0000\u05b1\u009e\u0001"+ - "\u0000\u0000\u0000\u05b2\u05b3\u0005,\u0000\u0000\u05b3\u05b4\u0001\u0000"+ - "\u0000\u0000\u05b4\u05b5\u0006M\n\u0000\u05b5\u00a0\u0001\u0000\u0000"+ - "\u0000\u05b6\u05b7\u0005=\u0000\u0000\u05b7\u05b8\u0001\u0000\u0000\u0000"+ - "\u05b8\u05b9\u0006N\u000b\u0000\u05b9\u00a2\u0001\u0000\u0000\u0000\u05ba"+ - "\u05bb\u0003\u00e1n\u0000\u05bb\u05bc\u0003\u00d1f\u0000\u05bc\u05bd\u0003"+ - "\u00efu\u0000\u05bd\u05be\u0003\u00c9b\u0000\u05be\u05bf\u0003\u00cfe"+ - "\u0000\u05bf\u05c0\u0003\u00c9b\u0000\u05c0\u05c1\u0003\u00efu\u0000\u05c1"+ - "\u05c2\u0003\u00c9b\u0000\u05c2\u00a4\u0001\u0000\u0000\u0000\u05c3\u05c5"+ - "\u0003\u00a7Q\u0000\u05c4\u05c3\u0001\u0000\u0000\u0000\u05c5\u05c6\u0001"+ - "\u0000\u0000\u0000\u05c6\u05c4\u0001\u0000\u0000\u0000\u05c6\u05c7\u0001"+ - "\u0000\u0000\u0000\u05c7\u00a6\u0001\u0000\u0000\u0000\u05c8\u05ca\b\n"+ - "\u0000\u0000\u05c9\u05c8\u0001\u0000\u0000\u0000\u05ca\u05cb\u0001\u0000"+ - "\u0000\u0000\u05cb\u05c9\u0001\u0000\u0000\u0000\u05cb\u05cc\u0001\u0000"+ - "\u0000\u0000\u05cc\u05d0\u0001\u0000\u0000\u0000\u05cd\u05ce\u0005/\u0000"+ - "\u0000\u05ce\u05d0\b\u000b\u0000\u0000\u05cf\u05c9\u0001\u0000\u0000\u0000"+ - "\u05cf\u05cd\u0001\u0000\u0000\u0000\u05d0\u00a8\u0001\u0000\u0000\u0000"+ - "\u05d1\u05d2\u0003\u0091F\u0000\u05d2\u00aa\u0001\u0000\u0000\u0000\u05d3"+ - "\u05d4\u0003\'\u0011\u0000\u05d4\u05d5\u0001\u0000\u0000\u0000\u05d5\u05d6"+ - "\u0006S\u0004\u0000\u05d6\u00ac\u0001\u0000\u0000\u0000\u05d7\u05d8\u0003"+ - ")\u0012\u0000\u05d8\u05d9\u0001\u0000\u0000\u0000\u05d9\u05da\u0006T\u0004"+ - "\u0000\u05da\u00ae\u0001\u0000\u0000\u0000\u05db\u05dc\u0003+\u0013\u0000"+ - "\u05dc\u05dd\u0001\u0000\u0000\u0000\u05dd\u05de\u0006U\u0004\u0000\u05de"+ - "\u00b0\u0001\u0000\u0000\u0000\u05df\u05e0\u0003\u00e5p\u0000\u05e0\u05e1"+ - "\u0003\u00e3o\u0000\u05e1\u00b2\u0001\u0000\u0000\u0000\u05e2\u05e3\u0003"+ - "\u00f5x\u0000\u05e3\u05e4\u0003\u00d9j\u0000\u05e4\u05e5\u0003\u00efu"+ - "\u0000\u05e5\u05e6\u0003\u00d7i\u0000\u05e6\u00b4\u0001\u0000\u0000\u0000"+ - "\u05e7\u05e8\u0005|\u0000\u0000\u05e8\u05e9\u0001\u0000\u0000\u0000\u05e9"+ - "\u05ea\u0006X\u0007\u0000\u05ea\u05eb\u0006X\b\u0000\u05eb\u00b6\u0001"+ - "\u0000\u0000\u0000\u05ec\u05ed\u0005]\u0000\u0000\u05ed\u05ee\u0001\u0000"+ - "\u0000\u0000\u05ee\u05ef\u0006Y\b\u0000\u05ef\u05f0\u0006Y\b\u0000\u05f0"+ - "\u05f1\u0006Y\t\u0000\u05f1\u00b8\u0001\u0000\u0000\u0000\u05f2\u05f3"+ - "\u0005,\u0000\u0000\u05f3\u05f4\u0001\u0000\u0000\u0000\u05f4\u05f5\u0006"+ - "Z\n\u0000\u05f5\u00ba\u0001\u0000\u0000\u0000\u05f6\u05f7\u0005=\u0000"+ - "\u0000\u05f7\u05f8\u0001\u0000\u0000\u0000\u05f8\u05f9\u0006[\u000b\u0000"+ - "\u05f9\u00bc\u0001\u0000\u0000\u0000\u05fa\u05fc\u0003\u00bf]\u0000\u05fb"+ - "\u05fa\u0001\u0000\u0000\u0000\u05fc\u05fd\u0001\u0000\u0000\u0000\u05fd"+ - "\u05fb\u0001\u0000\u0000\u0000\u05fd\u05fe\u0001\u0000\u0000\u0000\u05fe"+ - "\u00be\u0001\u0000\u0000\u0000\u05ff\u0601\b\n\u0000\u0000\u0600\u05ff"+ - "\u0001\u0000\u0000\u0000\u0601\u0602\u0001\u0000\u0000\u0000\u0602\u0600"+ - "\u0001\u0000\u0000\u0000\u0602\u0603\u0001\u0000\u0000\u0000\u0603\u0607"+ - "\u0001\u0000\u0000\u0000\u0604\u0605\u0005/\u0000\u0000\u0605\u0607\b"+ - "\u000b\u0000\u0000\u0606\u0600\u0001\u0000\u0000\u0000\u0606\u0604\u0001"+ - "\u0000\u0000\u0000\u0607\u00c0\u0001\u0000\u0000\u0000\u0608\u0609\u0003"+ - "\u0091F\u0000\u0609\u00c2\u0001\u0000\u0000\u0000\u060a\u060b\u0003\'"+ - "\u0011\u0000\u060b\u060c\u0001\u0000\u0000\u0000\u060c\u060d\u0006_\u0004"+ - "\u0000\u060d\u00c4\u0001\u0000\u0000\u0000\u060e\u060f\u0003)\u0012\u0000"+ - "\u060f\u0610\u0001\u0000\u0000\u0000\u0610\u0611\u0006`\u0004\u0000\u0611"+ - "\u00c6\u0001\u0000\u0000\u0000\u0612\u0613\u0003+\u0013\u0000\u0613\u0614"+ - "\u0001\u0000\u0000\u0000\u0614\u0615\u0006a\u0004\u0000\u0615\u00c8\u0001"+ - "\u0000\u0000\u0000\u0616\u0617\u0007\f\u0000\u0000\u0617\u00ca\u0001\u0000"+ - "\u0000\u0000\u0618\u0619\u0007\r\u0000\u0000\u0619\u00cc\u0001\u0000\u0000"+ - "\u0000\u061a\u061b\u0007\u000e\u0000\u0000\u061b\u00ce\u0001\u0000\u0000"+ - "\u0000\u061c\u061d\u0007\u000f\u0000\u0000\u061d\u00d0\u0001\u0000\u0000"+ - "\u0000\u061e\u061f\u0007\u0006\u0000\u0000\u061f\u00d2\u0001\u0000\u0000"+ - "\u0000\u0620\u0621\u0007\u0010\u0000\u0000\u0621\u00d4\u0001\u0000\u0000"+ - "\u0000\u0622\u0623\u0007\u0011\u0000\u0000\u0623\u00d6\u0001\u0000\u0000"+ - "\u0000\u0624\u0625\u0007\u0012\u0000\u0000\u0625\u00d8\u0001\u0000\u0000"+ - "\u0000\u0626\u0627\u0007\u0013\u0000\u0000\u0627\u00da\u0001\u0000\u0000"+ - "\u0000\u0628\u0629\u0007\u0014\u0000\u0000\u0629\u00dc\u0001\u0000\u0000"+ - "\u0000\u062a\u062b\u0007\u0015\u0000\u0000\u062b\u00de\u0001\u0000\u0000"+ - "\u0000\u062c\u062d\u0007\u0016\u0000\u0000\u062d\u00e0\u0001\u0000\u0000"+ - "\u0000\u062e\u062f\u0007\u0017\u0000\u0000\u062f\u00e2\u0001\u0000\u0000"+ - "\u0000\u0630\u0631\u0007\u0018\u0000\u0000\u0631\u00e4\u0001\u0000\u0000"+ - "\u0000\u0632\u0633\u0007\u0019\u0000\u0000\u0633\u00e6\u0001\u0000\u0000"+ - "\u0000\u0634\u0635\u0007\u001a\u0000\u0000\u0635\u00e8\u0001\u0000\u0000"+ - "\u0000\u0636\u0637\u0007\u001b\u0000\u0000\u0637\u00ea\u0001\u0000\u0000"+ - "\u0000\u0638\u0639\u0007\u001c\u0000\u0000\u0639\u00ec\u0001\u0000\u0000"+ - "\u0000\u063a\u063b\u0007\u001d\u0000\u0000\u063b\u00ee\u0001\u0000\u0000"+ - "\u0000\u063c\u063d\u0007\u001e\u0000\u0000\u063d\u00f0\u0001\u0000\u0000"+ - "\u0000\u063e\u063f\u0007\u001f\u0000\u0000\u063f\u00f2\u0001\u0000\u0000"+ - "\u0000\u0640\u0641\u0007 \u0000\u0000\u0641\u00f4\u0001\u0000\u0000\u0000"+ - "\u0642\u0643\u0007!\u0000\u0000\u0643\u00f6\u0001\u0000\u0000\u0000\u0644"+ - "\u0645\u0007\"\u0000\u0000\u0645\u00f8\u0001\u0000\u0000\u0000\u0646\u0647"+ - "\u0007#\u0000\u0000\u0647\u00fa\u0001\u0000\u0000\u0000\u0648\u0649\u0007"+ - "$\u0000\u0000\u0649\u00fc\u0001\u0000\u0000\u00000\u0000\u0001\u0002\u0003"+ - "\u0004\u018e\u0192\u0195\u019e\u01a0\u01ab\u01d4\u01d9\u01de\u01e0\u01eb"+ - "\u01f3\u01f6\u01f8\u01fd\u0202\u0208\u020f\u0214\u021a\u021d\u0225\u0229"+ - "\u028c\u02e0\u02ec\u0302\u0313\u04cf\u0568\u057a\u057c\u0584\u0586\u0588"+ - "\u058e\u0590\u05c6\u05cb\u05cf\u05fd\u0602\u0606\f\u0005\u0002\u0000\u0005"+ - "\u0001\u0000\u0005\u0003\u0000\u0005\u0004\u0000\u0000\u0001\u0000\u0007"+ - "#\u0000\u0005\u0000\u0000\u0007\u0018\u0000\u0004\u0000\u0000\u0007$\u0000"+ - "\u0007 \u0000\u0007\u001f\u0000"; - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/packages/kbn-esql/src/antlr/.antlr/esql_lexer.tokens b/packages/kbn-esql/src/antlr/.antlr/esql_lexer.tokens deleted file mode 100644 index b72e97b9a2961..0000000000000 --- a/packages/kbn-esql/src/antlr/.antlr/esql_lexer.tokens +++ /dev/null @@ -1,98 +0,0 @@ -DISSECT=1 -GROK=2 -EVAL=3 -EXPLAIN=4 -FROM=5 -ROW=6 -STATS=7 -WHERE=8 -SORT=9 -MV_EXPAND=10 -LIMIT=11 -PROJECT=12 -DROP=13 -RENAME=14 -SHOW=15 -ENRICH=16 -KEEP=17 -LINE_COMMENT=18 -MULTILINE_COMMENT=19 -WS=20 -EXPLAIN_WS=21 -EXPLAIN_LINE_COMMENT=22 -EXPLAIN_MULTILINE_COMMENT=23 -PIPE=24 -STRING=25 -INTEGER_LITERAL=26 -DECIMAL_LITERAL=27 -BY=28 -DATE_LITERAL=29 -AND=30 -ASSIGN=31 -COMMA=32 -DOT=33 -LP=34 -OPENING_BRACKET=35 -CLOSING_BRACKET=36 -NOT=37 -LIKE=38 -RLIKE=39 -IN=40 -IS=41 -AS=42 -NULL=43 -OR=44 -RP=45 -UNDERSCORE=46 -INFO=47 -FUNCTIONS=48 -BOOLEAN_VALUE=49 -COMPARISON_OPERATOR=50 -PLUS=51 -MINUS=52 -ASTERISK=53 -SLASH=54 -PERCENT=55 -TEN=56 -ORDERING=57 -NULLS_ORDERING=58 -NULLS_ORDERING_DIRECTION=59 -MATH_FUNCTION=60 -UNARY_FUNCTION=61 -WHERE_FUNCTIONS=62 -UNQUOTED_IDENTIFIER=63 -QUOTED_IDENTIFIER=64 -EXPR_LINE_COMMENT=65 -EXPR_MULTILINE_COMMENT=66 -EXPR_WS=67 -METADATA=68 -SRC_UNQUOTED_IDENTIFIER=69 -SRC_QUOTED_IDENTIFIER=70 -SRC_LINE_COMMENT=71 -SRC_MULTILINE_COMMENT=72 -SRC_WS=73 -ON=74 -WITH=75 -ENR_UNQUOTED_IDENTIFIER=76 -ENR_QUOTED_IDENTIFIER=77 -ENR_LINE_COMMENT=78 -ENR_MULTILINE_COMMENT=79 -ENR_WS=80 -EXPLAIN_PIPE=81 -'by'=28 -'and'=30 -'.'=33 -'('=34 -']'=36 -'or'=44 -')'=45 -'_'=46 -'info'=47 -'functions'=48 -'+'=51 -'-'=52 -'*'=53 -'/'=54 -'%'=55 -'10'=56 -'nulls'=58 diff --git a/packages/kbn-esql/src/antlr/.antlr/esql_parser.interp b/packages/kbn-esql/src/antlr/.antlr/esql_parser.interp deleted file mode 100644 index 72a8d73c77d6d..0000000000000 --- a/packages/kbn-esql/src/antlr/.antlr/esql_parser.interp +++ /dev/null @@ -1,256 +0,0 @@ -token literal names: -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -'|' -null -null -null -null -null -null -'=' -',' -null -'.' -null -null -null -'(' -null -null -null -null -null -null -null -'?' -null -')' -null -'==' -'!=' -'<' -'<=' -'>' -'>=' -'+' -'-' -'*' -'/' -'%' -null -']' -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null - -token symbolic names: -null -DISSECT -DROP -ENRICH -EVAL -EXPLAIN -FROM -GROK -INLINESTATS -KEEP -LIMIT -MV_EXPAND -PROJECT -RENAME -ROW -SHOW -SORT -STATS -WHERE -UNKNOWN_CMD -LINE_COMMENT -MULTILINE_COMMENT -WS -EXPLAIN_WS -EXPLAIN_LINE_COMMENT -EXPLAIN_MULTILINE_COMMENT -PIPE -STRING -INTEGER_LITERAL -DECIMAL_LITERAL -BY -AND -ASC -ASSIGN -COMMA -DESC -DOT -FALSE -FIRST -LAST -LP -IN -IS -LIKE -NOT -NULL -NULLS -OR -PARAM -RLIKE -RP -TRUE -EQ -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 -METADATA -FROM_UNQUOTED_IDENTIFIER -FROM_LINE_COMMENT -FROM_MULTILINE_COMMENT -FROM_WS -PROJECT_UNQUOTED_IDENTIFIER -PROJECT_LINE_COMMENT -PROJECT_MULTILINE_COMMENT -PROJECT_WS -AS -RENAME_LINE_COMMENT -RENAME_MULTILINE_COMMENT -RENAME_WS -ON -WITH -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 - -rule names: -singleStatement -query -sourceCommand -processingCommand -whereCommand -booleanExpression -regexBooleanExpression -valueExpression -operatorExpression -primaryExpression -functionExpression -rowCommand -fields -field -fromCommand -metadata -evalCommand -statsCommand -inlinestatsCommand -grouping -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 - - -atn: -[4, 1, 98, 519, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 2, 22, 7, 22, 2, 23, 7, 23, 2, 24, 7, 24, 2, 25, 7, 25, 2, 26, 7, 26, 2, 27, 7, 27, 2, 28, 7, 28, 2, 29, 7, 29, 2, 30, 7, 30, 2, 31, 7, 31, 2, 32, 7, 32, 2, 33, 7, 33, 2, 34, 7, 34, 2, 35, 7, 35, 2, 36, 7, 36, 2, 37, 7, 37, 2, 38, 7, 38, 2, 39, 7, 39, 2, 40, 7, 40, 2, 41, 7, 41, 2, 42, 7, 42, 2, 43, 7, 43, 2, 44, 7, 44, 2, 45, 7, 45, 2, 46, 7, 46, 2, 47, 7, 47, 2, 48, 7, 48, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 108, 8, 1, 10, 1, 12, 1, 111, 9, 1, 1, 2, 1, 2, 1, 2, 1, 2, 3, 2, 117, 8, 2, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 3, 3, 132, 8, 3, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 144, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 151, 8, 5, 10, 5, 12, 5, 154, 9, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 161, 8, 5, 1, 5, 1, 5, 3, 5, 165, 8, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 5, 5, 173, 8, 5, 10, 5, 12, 5, 176, 9, 5, 1, 6, 1, 6, 3, 6, 180, 8, 6, 1, 6, 1, 6, 1, 6, 1, 6, 1, 6, 3, 6, 187, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 192, 8, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 199, 8, 7, 1, 8, 1, 8, 1, 8, 1, 8, 3, 8, 205, 8, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 1, 8, 5, 8, 213, 8, 8, 10, 8, 12, 8, 216, 9, 8, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 1, 9, 3, 9, 225, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 5, 10, 233, 8, 10, 10, 10, 12, 10, 236, 9, 10, 3, 10, 238, 8, 10, 1, 10, 1, 10, 1, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 5, 12, 248, 8, 12, 10, 12, 12, 12, 251, 9, 12, 1, 13, 1, 13, 1, 13, 1, 13, 1, 13, 3, 13, 258, 8, 13, 1, 14, 1, 14, 1, 14, 1, 14, 5, 14, 264, 8, 14, 10, 14, 12, 14, 267, 9, 14, 1, 14, 3, 14, 270, 8, 14, 1, 15, 1, 15, 1, 15, 1, 15, 1, 15, 5, 15, 277, 8, 15, 10, 15, 12, 15, 280, 9, 15, 1, 15, 1, 15, 1, 16, 1, 16, 1, 16, 1, 17, 1, 17, 3, 17, 289, 8, 17, 1, 17, 1, 17, 3, 17, 293, 8, 17, 1, 18, 1, 18, 1, 18, 1, 18, 3, 18, 299, 8, 18, 1, 19, 1, 19, 1, 19, 5, 19, 304, 8, 19, 10, 19, 12, 19, 307, 9, 19, 1, 20, 1, 20, 1, 21, 1, 21, 1, 21, 5, 21, 314, 8, 21, 10, 21, 12, 21, 317, 9, 21, 1, 22, 1, 22, 1, 22, 5, 22, 322, 8, 22, 10, 22, 12, 22, 325, 9, 22, 1, 23, 1, 23, 1, 24, 1, 24, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 344, 8, 25, 10, 25, 12, 25, 347, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 355, 8, 25, 10, 25, 12, 25, 358, 9, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 1, 25, 5, 25, 366, 8, 25, 10, 25, 12, 25, 369, 9, 25, 1, 25, 1, 25, 3, 25, 373, 8, 25, 1, 26, 1, 26, 1, 26, 1, 27, 1, 27, 1, 27, 1, 27, 5, 27, 382, 8, 27, 10, 27, 12, 27, 385, 9, 27, 1, 28, 1, 28, 3, 28, 389, 8, 28, 1, 28, 1, 28, 3, 28, 393, 8, 28, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 399, 8, 29, 10, 29, 12, 29, 402, 9, 29, 1, 29, 1, 29, 1, 29, 1, 29, 5, 29, 408, 8, 29, 10, 29, 12, 29, 411, 9, 29, 3, 29, 413, 8, 29, 1, 30, 1, 30, 1, 30, 1, 30, 5, 30, 419, 8, 30, 10, 30, 12, 30, 422, 9, 30, 1, 31, 1, 31, 1, 31, 1, 31, 5, 31, 428, 8, 31, 10, 31, 12, 31, 431, 9, 31, 1, 32, 1, 32, 1, 32, 1, 32, 1, 33, 1, 33, 1, 33, 1, 33, 3, 33, 441, 8, 33, 1, 34, 1, 34, 1, 34, 1, 34, 1, 35, 1, 35, 1, 35, 1, 36, 1, 36, 1, 36, 5, 36, 453, 8, 36, 10, 36, 12, 36, 456, 9, 36, 1, 37, 1, 37, 1, 37, 1, 37, 1, 38, 1, 38, 1, 39, 1, 39, 3, 39, 466, 8, 39, 1, 40, 3, 40, 469, 8, 40, 1, 40, 1, 40, 1, 41, 3, 41, 474, 8, 41, 1, 41, 1, 41, 1, 42, 1, 42, 1, 43, 1, 43, 1, 44, 1, 44, 1, 44, 1, 45, 1, 45, 1, 45, 1, 45, 1, 46, 1, 46, 1, 46, 1, 46, 3, 46, 493, 8, 46, 1, 47, 1, 47, 1, 47, 1, 47, 3, 47, 499, 8, 47, 1, 47, 1, 47, 1, 47, 1, 47, 5, 47, 505, 8, 47, 10, 47, 12, 47, 508, 9, 47, 3, 47, 510, 8, 47, 1, 48, 1, 48, 1, 48, 3, 48, 515, 8, 48, 1, 48, 1, 48, 1, 48, 0, 3, 2, 10, 16, 49, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 0, 9, 1, 0, 58, 59, 1, 0, 60, 62, 2, 0, 66, 66, 71, 71, 1, 0, 65, 66, 2, 0, 66, 66, 75, 75, 2, 0, 32, 32, 35, 35, 1, 0, 38, 39, 2, 0, 37, 37, 51, 51, 1, 0, 52, 57, 548, 0, 98, 1, 0, 0, 0, 2, 101, 1, 0, 0, 0, 4, 116, 1, 0, 0, 0, 6, 131, 1, 0, 0, 0, 8, 133, 1, 0, 0, 0, 10, 164, 1, 0, 0, 0, 12, 191, 1, 0, 0, 0, 14, 198, 1, 0, 0, 0, 16, 204, 1, 0, 0, 0, 18, 224, 1, 0, 0, 0, 20, 226, 1, 0, 0, 0, 22, 241, 1, 0, 0, 0, 24, 244, 1, 0, 0, 0, 26, 257, 1, 0, 0, 0, 28, 259, 1, 0, 0, 0, 30, 271, 1, 0, 0, 0, 32, 283, 1, 0, 0, 0, 34, 286, 1, 0, 0, 0, 36, 294, 1, 0, 0, 0, 38, 300, 1, 0, 0, 0, 40, 308, 1, 0, 0, 0, 42, 310, 1, 0, 0, 0, 44, 318, 1, 0, 0, 0, 46, 326, 1, 0, 0, 0, 48, 328, 1, 0, 0, 0, 50, 372, 1, 0, 0, 0, 52, 374, 1, 0, 0, 0, 54, 377, 1, 0, 0, 0, 56, 386, 1, 0, 0, 0, 58, 412, 1, 0, 0, 0, 60, 414, 1, 0, 0, 0, 62, 423, 1, 0, 0, 0, 64, 432, 1, 0, 0, 0, 66, 436, 1, 0, 0, 0, 68, 442, 1, 0, 0, 0, 70, 446, 1, 0, 0, 0, 72, 449, 1, 0, 0, 0, 74, 457, 1, 0, 0, 0, 76, 461, 1, 0, 0, 0, 78, 465, 1, 0, 0, 0, 80, 468, 1, 0, 0, 0, 82, 473, 1, 0, 0, 0, 84, 477, 1, 0, 0, 0, 86, 479, 1, 0, 0, 0, 88, 481, 1, 0, 0, 0, 90, 484, 1, 0, 0, 0, 92, 492, 1, 0, 0, 0, 94, 494, 1, 0, 0, 0, 96, 514, 1, 0, 0, 0, 98, 99, 3, 2, 1, 0, 99, 100, 5, 0, 0, 1, 100, 1, 1, 0, 0, 0, 101, 102, 6, 1, -1, 0, 102, 103, 3, 4, 2, 0, 103, 109, 1, 0, 0, 0, 104, 105, 10, 1, 0, 0, 105, 106, 5, 26, 0, 0, 106, 108, 3, 6, 3, 0, 107, 104, 1, 0, 0, 0, 108, 111, 1, 0, 0, 0, 109, 107, 1, 0, 0, 0, 109, 110, 1, 0, 0, 0, 110, 3, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 112, 117, 3, 88, 44, 0, 113, 117, 3, 28, 14, 0, 114, 117, 3, 22, 11, 0, 115, 117, 3, 92, 46, 0, 116, 112, 1, 0, 0, 0, 116, 113, 1, 0, 0, 0, 116, 114, 1, 0, 0, 0, 116, 115, 1, 0, 0, 0, 117, 5, 1, 0, 0, 0, 118, 132, 3, 32, 16, 0, 119, 132, 3, 36, 18, 0, 120, 132, 3, 52, 26, 0, 121, 132, 3, 58, 29, 0, 122, 132, 3, 54, 27, 0, 123, 132, 3, 34, 17, 0, 124, 132, 3, 8, 4, 0, 125, 132, 3, 60, 30, 0, 126, 132, 3, 62, 31, 0, 127, 132, 3, 66, 33, 0, 128, 132, 3, 68, 34, 0, 129, 132, 3, 94, 47, 0, 130, 132, 3, 70, 35, 0, 131, 118, 1, 0, 0, 0, 131, 119, 1, 0, 0, 0, 131, 120, 1, 0, 0, 0, 131, 121, 1, 0, 0, 0, 131, 122, 1, 0, 0, 0, 131, 123, 1, 0, 0, 0, 131, 124, 1, 0, 0, 0, 131, 125, 1, 0, 0, 0, 131, 126, 1, 0, 0, 0, 131, 127, 1, 0, 0, 0, 131, 128, 1, 0, 0, 0, 131, 129, 1, 0, 0, 0, 131, 130, 1, 0, 0, 0, 132, 7, 1, 0, 0, 0, 133, 134, 5, 18, 0, 0, 134, 135, 3, 10, 5, 0, 135, 9, 1, 0, 0, 0, 136, 137, 6, 5, -1, 0, 137, 138, 5, 44, 0, 0, 138, 165, 3, 10, 5, 7, 139, 165, 3, 14, 7, 0, 140, 165, 3, 12, 6, 0, 141, 143, 3, 14, 7, 0, 142, 144, 5, 44, 0, 0, 143, 142, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 145, 1, 0, 0, 0, 145, 146, 5, 41, 0, 0, 146, 147, 5, 40, 0, 0, 147, 152, 3, 14, 7, 0, 148, 149, 5, 34, 0, 0, 149, 151, 3, 14, 7, 0, 150, 148, 1, 0, 0, 0, 151, 154, 1, 0, 0, 0, 152, 150, 1, 0, 0, 0, 152, 153, 1, 0, 0, 0, 153, 155, 1, 0, 0, 0, 154, 152, 1, 0, 0, 0, 155, 156, 5, 50, 0, 0, 156, 165, 1, 0, 0, 0, 157, 158, 3, 14, 7, 0, 158, 160, 5, 42, 0, 0, 159, 161, 5, 44, 0, 0, 160, 159, 1, 0, 0, 0, 160, 161, 1, 0, 0, 0, 161, 162, 1, 0, 0, 0, 162, 163, 5, 45, 0, 0, 163, 165, 1, 0, 0, 0, 164, 136, 1, 0, 0, 0, 164, 139, 1, 0, 0, 0, 164, 140, 1, 0, 0, 0, 164, 141, 1, 0, 0, 0, 164, 157, 1, 0, 0, 0, 165, 174, 1, 0, 0, 0, 166, 167, 10, 4, 0, 0, 167, 168, 5, 31, 0, 0, 168, 173, 3, 10, 5, 5, 169, 170, 10, 3, 0, 0, 170, 171, 5, 47, 0, 0, 171, 173, 3, 10, 5, 4, 172, 166, 1, 0, 0, 0, 172, 169, 1, 0, 0, 0, 173, 176, 1, 0, 0, 0, 174, 172, 1, 0, 0, 0, 174, 175, 1, 0, 0, 0, 175, 11, 1, 0, 0, 0, 176, 174, 1, 0, 0, 0, 177, 179, 3, 14, 7, 0, 178, 180, 5, 44, 0, 0, 179, 178, 1, 0, 0, 0, 179, 180, 1, 0, 0, 0, 180, 181, 1, 0, 0, 0, 181, 182, 5, 43, 0, 0, 182, 183, 3, 84, 42, 0, 183, 192, 1, 0, 0, 0, 184, 186, 3, 14, 7, 0, 185, 187, 5, 44, 0, 0, 186, 185, 1, 0, 0, 0, 186, 187, 1, 0, 0, 0, 187, 188, 1, 0, 0, 0, 188, 189, 5, 49, 0, 0, 189, 190, 3, 84, 42, 0, 190, 192, 1, 0, 0, 0, 191, 177, 1, 0, 0, 0, 191, 184, 1, 0, 0, 0, 192, 13, 1, 0, 0, 0, 193, 199, 3, 16, 8, 0, 194, 195, 3, 16, 8, 0, 195, 196, 3, 86, 43, 0, 196, 197, 3, 16, 8, 0, 197, 199, 1, 0, 0, 0, 198, 193, 1, 0, 0, 0, 198, 194, 1, 0, 0, 0, 199, 15, 1, 0, 0, 0, 200, 201, 6, 8, -1, 0, 201, 205, 3, 18, 9, 0, 202, 203, 7, 0, 0, 0, 203, 205, 3, 16, 8, 3, 204, 200, 1, 0, 0, 0, 204, 202, 1, 0, 0, 0, 205, 214, 1, 0, 0, 0, 206, 207, 10, 2, 0, 0, 207, 208, 7, 1, 0, 0, 208, 213, 3, 16, 8, 3, 209, 210, 10, 1, 0, 0, 210, 211, 7, 0, 0, 0, 211, 213, 3, 16, 8, 2, 212, 206, 1, 0, 0, 0, 212, 209, 1, 0, 0, 0, 213, 216, 1, 0, 0, 0, 214, 212, 1, 0, 0, 0, 214, 215, 1, 0, 0, 0, 215, 17, 1, 0, 0, 0, 216, 214, 1, 0, 0, 0, 217, 225, 3, 50, 25, 0, 218, 225, 3, 42, 21, 0, 219, 225, 3, 20, 10, 0, 220, 221, 5, 40, 0, 0, 221, 222, 3, 10, 5, 0, 222, 223, 5, 50, 0, 0, 223, 225, 1, 0, 0, 0, 224, 217, 1, 0, 0, 0, 224, 218, 1, 0, 0, 0, 224, 219, 1, 0, 0, 0, 224, 220, 1, 0, 0, 0, 225, 19, 1, 0, 0, 0, 226, 227, 3, 46, 23, 0, 227, 237, 5, 40, 0, 0, 228, 238, 5, 60, 0, 0, 229, 234, 3, 10, 5, 0, 230, 231, 5, 34, 0, 0, 231, 233, 3, 10, 5, 0, 232, 230, 1, 0, 0, 0, 233, 236, 1, 0, 0, 0, 234, 232, 1, 0, 0, 0, 234, 235, 1, 0, 0, 0, 235, 238, 1, 0, 0, 0, 236, 234, 1, 0, 0, 0, 237, 228, 1, 0, 0, 0, 237, 229, 1, 0, 0, 0, 237, 238, 1, 0, 0, 0, 238, 239, 1, 0, 0, 0, 239, 240, 5, 50, 0, 0, 240, 21, 1, 0, 0, 0, 241, 242, 5, 14, 0, 0, 242, 243, 3, 24, 12, 0, 243, 23, 1, 0, 0, 0, 244, 249, 3, 26, 13, 0, 245, 246, 5, 34, 0, 0, 246, 248, 3, 26, 13, 0, 247, 245, 1, 0, 0, 0, 248, 251, 1, 0, 0, 0, 249, 247, 1, 0, 0, 0, 249, 250, 1, 0, 0, 0, 250, 25, 1, 0, 0, 0, 251, 249, 1, 0, 0, 0, 252, 258, 3, 10, 5, 0, 253, 254, 3, 42, 21, 0, 254, 255, 5, 33, 0, 0, 255, 256, 3, 10, 5, 0, 256, 258, 1, 0, 0, 0, 257, 252, 1, 0, 0, 0, 257, 253, 1, 0, 0, 0, 258, 27, 1, 0, 0, 0, 259, 260, 5, 6, 0, 0, 260, 265, 3, 40, 20, 0, 261, 262, 5, 34, 0, 0, 262, 264, 3, 40, 20, 0, 263, 261, 1, 0, 0, 0, 264, 267, 1, 0, 0, 0, 265, 263, 1, 0, 0, 0, 265, 266, 1, 0, 0, 0, 266, 269, 1, 0, 0, 0, 267, 265, 1, 0, 0, 0, 268, 270, 3, 30, 15, 0, 269, 268, 1, 0, 0, 0, 269, 270, 1, 0, 0, 0, 270, 29, 1, 0, 0, 0, 271, 272, 5, 63, 0, 0, 272, 273, 5, 70, 0, 0, 273, 278, 3, 40, 20, 0, 274, 275, 5, 34, 0, 0, 275, 277, 3, 40, 20, 0, 276, 274, 1, 0, 0, 0, 277, 280, 1, 0, 0, 0, 278, 276, 1, 0, 0, 0, 278, 279, 1, 0, 0, 0, 279, 281, 1, 0, 0, 0, 280, 278, 1, 0, 0, 0, 281, 282, 5, 64, 0, 0, 282, 31, 1, 0, 0, 0, 283, 284, 5, 4, 0, 0, 284, 285, 3, 24, 12, 0, 285, 33, 1, 0, 0, 0, 286, 288, 5, 17, 0, 0, 287, 289, 3, 24, 12, 0, 288, 287, 1, 0, 0, 0, 288, 289, 1, 0, 0, 0, 289, 292, 1, 0, 0, 0, 290, 291, 5, 30, 0, 0, 291, 293, 3, 38, 19, 0, 292, 290, 1, 0, 0, 0, 292, 293, 1, 0, 0, 0, 293, 35, 1, 0, 0, 0, 294, 295, 5, 8, 0, 0, 295, 298, 3, 24, 12, 0, 296, 297, 5, 30, 0, 0, 297, 299, 3, 38, 19, 0, 298, 296, 1, 0, 0, 0, 298, 299, 1, 0, 0, 0, 299, 37, 1, 0, 0, 0, 300, 305, 3, 42, 21, 0, 301, 302, 5, 34, 0, 0, 302, 304, 3, 42, 21, 0, 303, 301, 1, 0, 0, 0, 304, 307, 1, 0, 0, 0, 305, 303, 1, 0, 0, 0, 305, 306, 1, 0, 0, 0, 306, 39, 1, 0, 0, 0, 307, 305, 1, 0, 0, 0, 308, 309, 7, 2, 0, 0, 309, 41, 1, 0, 0, 0, 310, 315, 3, 46, 23, 0, 311, 312, 5, 36, 0, 0, 312, 314, 3, 46, 23, 0, 313, 311, 1, 0, 0, 0, 314, 317, 1, 0, 0, 0, 315, 313, 1, 0, 0, 0, 315, 316, 1, 0, 0, 0, 316, 43, 1, 0, 0, 0, 317, 315, 1, 0, 0, 0, 318, 323, 3, 48, 24, 0, 319, 320, 5, 36, 0, 0, 320, 322, 3, 48, 24, 0, 321, 319, 1, 0, 0, 0, 322, 325, 1, 0, 0, 0, 323, 321, 1, 0, 0, 0, 323, 324, 1, 0, 0, 0, 324, 45, 1, 0, 0, 0, 325, 323, 1, 0, 0, 0, 326, 327, 7, 3, 0, 0, 327, 47, 1, 0, 0, 0, 328, 329, 7, 4, 0, 0, 329, 49, 1, 0, 0, 0, 330, 373, 5, 45, 0, 0, 331, 332, 3, 82, 41, 0, 332, 333, 5, 65, 0, 0, 333, 373, 1, 0, 0, 0, 334, 373, 3, 80, 40, 0, 335, 373, 3, 82, 41, 0, 336, 373, 3, 76, 38, 0, 337, 373, 5, 48, 0, 0, 338, 373, 3, 84, 42, 0, 339, 340, 5, 63, 0, 0, 340, 345, 3, 78, 39, 0, 341, 342, 5, 34, 0, 0, 342, 344, 3, 78, 39, 0, 343, 341, 1, 0, 0, 0, 344, 347, 1, 0, 0, 0, 345, 343, 1, 0, 0, 0, 345, 346, 1, 0, 0, 0, 346, 348, 1, 0, 0, 0, 347, 345, 1, 0, 0, 0, 348, 349, 5, 64, 0, 0, 349, 373, 1, 0, 0, 0, 350, 351, 5, 63, 0, 0, 351, 356, 3, 76, 38, 0, 352, 353, 5, 34, 0, 0, 353, 355, 3, 76, 38, 0, 354, 352, 1, 0, 0, 0, 355, 358, 1, 0, 0, 0, 356, 354, 1, 0, 0, 0, 356, 357, 1, 0, 0, 0, 357, 359, 1, 0, 0, 0, 358, 356, 1, 0, 0, 0, 359, 360, 5, 64, 0, 0, 360, 373, 1, 0, 0, 0, 361, 362, 5, 63, 0, 0, 362, 367, 3, 84, 42, 0, 363, 364, 5, 34, 0, 0, 364, 366, 3, 84, 42, 0, 365, 363, 1, 0, 0, 0, 366, 369, 1, 0, 0, 0, 367, 365, 1, 0, 0, 0, 367, 368, 1, 0, 0, 0, 368, 370, 1, 0, 0, 0, 369, 367, 1, 0, 0, 0, 370, 371, 5, 64, 0, 0, 371, 373, 1, 0, 0, 0, 372, 330, 1, 0, 0, 0, 372, 331, 1, 0, 0, 0, 372, 334, 1, 0, 0, 0, 372, 335, 1, 0, 0, 0, 372, 336, 1, 0, 0, 0, 372, 337, 1, 0, 0, 0, 372, 338, 1, 0, 0, 0, 372, 339, 1, 0, 0, 0, 372, 350, 1, 0, 0, 0, 372, 361, 1, 0, 0, 0, 373, 51, 1, 0, 0, 0, 374, 375, 5, 10, 0, 0, 375, 376, 5, 28, 0, 0, 376, 53, 1, 0, 0, 0, 377, 378, 5, 16, 0, 0, 378, 383, 3, 56, 28, 0, 379, 380, 5, 34, 0, 0, 380, 382, 3, 56, 28, 0, 381, 379, 1, 0, 0, 0, 382, 385, 1, 0, 0, 0, 383, 381, 1, 0, 0, 0, 383, 384, 1, 0, 0, 0, 384, 55, 1, 0, 0, 0, 385, 383, 1, 0, 0, 0, 386, 388, 3, 10, 5, 0, 387, 389, 7, 5, 0, 0, 388, 387, 1, 0, 0, 0, 388, 389, 1, 0, 0, 0, 389, 392, 1, 0, 0, 0, 390, 391, 5, 46, 0, 0, 391, 393, 7, 6, 0, 0, 392, 390, 1, 0, 0, 0, 392, 393, 1, 0, 0, 0, 393, 57, 1, 0, 0, 0, 394, 395, 5, 9, 0, 0, 395, 400, 3, 44, 22, 0, 396, 397, 5, 34, 0, 0, 397, 399, 3, 44, 22, 0, 398, 396, 1, 0, 0, 0, 399, 402, 1, 0, 0, 0, 400, 398, 1, 0, 0, 0, 400, 401, 1, 0, 0, 0, 401, 413, 1, 0, 0, 0, 402, 400, 1, 0, 0, 0, 403, 404, 5, 12, 0, 0, 404, 409, 3, 44, 22, 0, 405, 406, 5, 34, 0, 0, 406, 408, 3, 44, 22, 0, 407, 405, 1, 0, 0, 0, 408, 411, 1, 0, 0, 0, 409, 407, 1, 0, 0, 0, 409, 410, 1, 0, 0, 0, 410, 413, 1, 0, 0, 0, 411, 409, 1, 0, 0, 0, 412, 394, 1, 0, 0, 0, 412, 403, 1, 0, 0, 0, 413, 59, 1, 0, 0, 0, 414, 415, 5, 2, 0, 0, 415, 420, 3, 44, 22, 0, 416, 417, 5, 34, 0, 0, 417, 419, 3, 44, 22, 0, 418, 416, 1, 0, 0, 0, 419, 422, 1, 0, 0, 0, 420, 418, 1, 0, 0, 0, 420, 421, 1, 0, 0, 0, 421, 61, 1, 0, 0, 0, 422, 420, 1, 0, 0, 0, 423, 424, 5, 13, 0, 0, 424, 429, 3, 64, 32, 0, 425, 426, 5, 34, 0, 0, 426, 428, 3, 64, 32, 0, 427, 425, 1, 0, 0, 0, 428, 431, 1, 0, 0, 0, 429, 427, 1, 0, 0, 0, 429, 430, 1, 0, 0, 0, 430, 63, 1, 0, 0, 0, 431, 429, 1, 0, 0, 0, 432, 433, 3, 44, 22, 0, 433, 434, 5, 79, 0, 0, 434, 435, 3, 44, 22, 0, 435, 65, 1, 0, 0, 0, 436, 437, 5, 1, 0, 0, 437, 438, 3, 18, 9, 0, 438, 440, 3, 84, 42, 0, 439, 441, 3, 72, 36, 0, 440, 439, 1, 0, 0, 0, 440, 441, 1, 0, 0, 0, 441, 67, 1, 0, 0, 0, 442, 443, 5, 7, 0, 0, 443, 444, 3, 18, 9, 0, 444, 445, 3, 84, 42, 0, 445, 69, 1, 0, 0, 0, 446, 447, 5, 11, 0, 0, 447, 448, 3, 42, 21, 0, 448, 71, 1, 0, 0, 0, 449, 454, 3, 74, 37, 0, 450, 451, 5, 34, 0, 0, 451, 453, 3, 74, 37, 0, 452, 450, 1, 0, 0, 0, 453, 456, 1, 0, 0, 0, 454, 452, 1, 0, 0, 0, 454, 455, 1, 0, 0, 0, 455, 73, 1, 0, 0, 0, 456, 454, 1, 0, 0, 0, 457, 458, 3, 46, 23, 0, 458, 459, 5, 33, 0, 0, 459, 460, 3, 50, 25, 0, 460, 75, 1, 0, 0, 0, 461, 462, 7, 7, 0, 0, 462, 77, 1, 0, 0, 0, 463, 466, 3, 80, 40, 0, 464, 466, 3, 82, 41, 0, 465, 463, 1, 0, 0, 0, 465, 464, 1, 0, 0, 0, 466, 79, 1, 0, 0, 0, 467, 469, 7, 0, 0, 0, 468, 467, 1, 0, 0, 0, 468, 469, 1, 0, 0, 0, 469, 470, 1, 0, 0, 0, 470, 471, 5, 29, 0, 0, 471, 81, 1, 0, 0, 0, 472, 474, 7, 0, 0, 0, 473, 472, 1, 0, 0, 0, 473, 474, 1, 0, 0, 0, 474, 475, 1, 0, 0, 0, 475, 476, 5, 28, 0, 0, 476, 83, 1, 0, 0, 0, 477, 478, 5, 27, 0, 0, 478, 85, 1, 0, 0, 0, 479, 480, 7, 8, 0, 0, 480, 87, 1, 0, 0, 0, 481, 482, 5, 5, 0, 0, 482, 483, 3, 90, 45, 0, 483, 89, 1, 0, 0, 0, 484, 485, 5, 63, 0, 0, 485, 486, 3, 2, 1, 0, 486, 487, 5, 64, 0, 0, 487, 91, 1, 0, 0, 0, 488, 489, 5, 15, 0, 0, 489, 493, 5, 94, 0, 0, 490, 491, 5, 15, 0, 0, 491, 493, 5, 95, 0, 0, 492, 488, 1, 0, 0, 0, 492, 490, 1, 0, 0, 0, 493, 93, 1, 0, 0, 0, 494, 495, 5, 3, 0, 0, 495, 498, 3, 40, 20, 0, 496, 497, 5, 83, 0, 0, 497, 499, 3, 44, 22, 0, 498, 496, 1, 0, 0, 0, 498, 499, 1, 0, 0, 0, 499, 509, 1, 0, 0, 0, 500, 501, 5, 84, 0, 0, 501, 506, 3, 96, 48, 0, 502, 503, 5, 34, 0, 0, 503, 505, 3, 96, 48, 0, 504, 502, 1, 0, 0, 0, 505, 508, 1, 0, 0, 0, 506, 504, 1, 0, 0, 0, 506, 507, 1, 0, 0, 0, 507, 510, 1, 0, 0, 0, 508, 506, 1, 0, 0, 0, 509, 500, 1, 0, 0, 0, 509, 510, 1, 0, 0, 0, 510, 95, 1, 0, 0, 0, 511, 512, 3, 44, 22, 0, 512, 513, 5, 33, 0, 0, 513, 515, 1, 0, 0, 0, 514, 511, 1, 0, 0, 0, 514, 515, 1, 0, 0, 0, 515, 516, 1, 0, 0, 0, 516, 517, 3, 44, 22, 0, 517, 97, 1, 0, 0, 0, 52, 109, 116, 131, 143, 152, 160, 164, 172, 174, 179, 186, 191, 198, 204, 212, 214, 224, 234, 237, 249, 257, 265, 269, 278, 288, 292, 298, 305, 315, 323, 345, 356, 367, 372, 383, 388, 392, 400, 409, 412, 420, 429, 440, 454, 465, 468, 473, 492, 498, 506, 509, 514] \ No newline at end of file diff --git a/packages/kbn-esql/src/antlr/.antlr/esql_parser.java b/packages/kbn-esql/src/antlr/.antlr/esql_parser.java deleted file mode 100644 index c784cc891d6a0..0000000000000 --- a/packages/kbn-esql/src/antlr/.antlr/esql_parser.java +++ /dev/null @@ -1,3914 +0,0 @@ -// Generated from /Users/marcoliberati/Work/kibana/packages/kbn-monaco/src/esql/antlr/esql_parser.g4 by ANTLR 4.13.1 -import org.antlr.v4.runtime.atn.*; -import org.antlr.v4.runtime.dfa.DFA; -import org.antlr.v4.runtime.*; -import org.antlr.v4.runtime.misc.*; -import org.antlr.v4.runtime.tree.*; -import java.util.List; -import java.util.Iterator; -import java.util.ArrayList; - -@SuppressWarnings({"all", "warnings", "unchecked", "unused", "cast", "CheckReturnValue"}) -public class esql_parser extends Parser { - static { RuntimeMetaData.checkVersion("4.13.1", RuntimeMetaData.VERSION); } - - protected static final DFA[] _decisionToDFA; - protected static final PredictionContextCache _sharedContextCache = - new PredictionContextCache(); - public static final int - DISSECT=1, DROP=2, ENRICH=3, EVAL=4, EXPLAIN=5, FROM=6, GROK=7, INLINESTATS=8, - KEEP=9, LIMIT=10, MV_EXPAND=11, PROJECT=12, RENAME=13, ROW=14, SHOW=15, - SORT=16, STATS=17, WHERE=18, UNKNOWN_CMD=19, LINE_COMMENT=20, MULTILINE_COMMENT=21, - WS=22, EXPLAIN_WS=23, EXPLAIN_LINE_COMMENT=24, EXPLAIN_MULTILINE_COMMENT=25, - PIPE=26, STRING=27, INTEGER_LITERAL=28, DECIMAL_LITERAL=29, BY=30, AND=31, - ASC=32, ASSIGN=33, COMMA=34, DESC=35, DOT=36, FALSE=37, FIRST=38, LAST=39, - LP=40, IN=41, IS=42, LIKE=43, NOT=44, NULL=45, NULLS=46, OR=47, PARAM=48, - RLIKE=49, RP=50, TRUE=51, EQ=52, NEQ=53, LT=54, LTE=55, GT=56, GTE=57, - PLUS=58, MINUS=59, ASTERISK=60, SLASH=61, PERCENT=62, OPENING_BRACKET=63, - CLOSING_BRACKET=64, UNQUOTED_IDENTIFIER=65, QUOTED_IDENTIFIER=66, EXPR_LINE_COMMENT=67, - EXPR_MULTILINE_COMMENT=68, EXPR_WS=69, METADATA=70, FROM_UNQUOTED_IDENTIFIER=71, - FROM_LINE_COMMENT=72, FROM_MULTILINE_COMMENT=73, FROM_WS=74, PROJECT_UNQUOTED_IDENTIFIER=75, - PROJECT_LINE_COMMENT=76, PROJECT_MULTILINE_COMMENT=77, PROJECT_WS=78, - AS=79, RENAME_LINE_COMMENT=80, RENAME_MULTILINE_COMMENT=81, RENAME_WS=82, - ON=83, WITH=84, ENRICH_LINE_COMMENT=85, ENRICH_MULTILINE_COMMENT=86, ENRICH_WS=87, - ENRICH_FIELD_LINE_COMMENT=88, ENRICH_FIELD_MULTILINE_COMMENT=89, ENRICH_FIELD_WS=90, - MVEXPAND_LINE_COMMENT=91, MVEXPAND_MULTILINE_COMMENT=92, MVEXPAND_WS=93, - INFO=94, FUNCTIONS=95, SHOW_LINE_COMMENT=96, SHOW_MULTILINE_COMMENT=97, - SHOW_WS=98; - public static final int - RULE_singleStatement = 0, RULE_query = 1, RULE_sourceCommand = 2, RULE_processingCommand = 3, - RULE_whereCommand = 4, RULE_booleanExpression = 5, RULE_regexBooleanExpression = 6, - RULE_valueExpression = 7, RULE_operatorExpression = 8, RULE_primaryExpression = 9, - RULE_functionExpression = 10, RULE_rowCommand = 11, RULE_fields = 12, - RULE_field = 13, RULE_fromCommand = 14, RULE_metadata = 15, RULE_evalCommand = 16, - RULE_statsCommand = 17, RULE_inlinestatsCommand = 18, RULE_grouping = 19, - RULE_fromIdentifier = 20, RULE_qualifiedName = 21, RULE_qualifiedNamePattern = 22, - RULE_identifier = 23, RULE_identifierPattern = 24, RULE_constant = 25, - RULE_limitCommand = 26, RULE_sortCommand = 27, RULE_orderExpression = 28, - RULE_keepCommand = 29, RULE_dropCommand = 30, RULE_renameCommand = 31, - RULE_renameClause = 32, RULE_dissectCommand = 33, RULE_grokCommand = 34, - RULE_mvExpandCommand = 35, RULE_commandOptions = 36, RULE_commandOption = 37, - RULE_booleanValue = 38, RULE_numericValue = 39, RULE_decimalValue = 40, - RULE_integerValue = 41, RULE_string = 42, RULE_comparisonOperator = 43, - RULE_explainCommand = 44, RULE_subqueryExpression = 45, RULE_showCommand = 46, - RULE_enrichCommand = 47, RULE_enrichWithClause = 48; - private static String[] makeRuleNames() { - return new String[] { - "singleStatement", "query", "sourceCommand", "processingCommand", "whereCommand", - "booleanExpression", "regexBooleanExpression", "valueExpression", "operatorExpression", - "primaryExpression", "functionExpression", "rowCommand", "fields", "field", - "fromCommand", "metadata", "evalCommand", "statsCommand", "inlinestatsCommand", - "grouping", "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" - }; - } - public static final String[] ruleNames = makeRuleNames(); - - private static String[] makeLiteralNames() { - return new String[] { - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, "'|'", null, null, null, null, null, null, "'='", "','", - null, "'.'", null, null, null, "'('", null, null, null, null, null, null, - null, "'?'", null, "')'", null, "'=='", "'!='", "'<'", "'<='", "'>'", - "'>='", "'+'", "'-'", "'*'", "'/'", "'%'", null, "']'" - }; - } - private static final String[] _LITERAL_NAMES = makeLiteralNames(); - private static String[] makeSymbolicNames() { - return new String[] { - null, "DISSECT", "DROP", "ENRICH", "EVAL", "EXPLAIN", "FROM", "GROK", - "INLINESTATS", "KEEP", "LIMIT", "MV_EXPAND", "PROJECT", "RENAME", "ROW", - "SHOW", "SORT", "STATS", "WHERE", "UNKNOWN_CMD", "LINE_COMMENT", "MULTILINE_COMMENT", - "WS", "EXPLAIN_WS", "EXPLAIN_LINE_COMMENT", "EXPLAIN_MULTILINE_COMMENT", - "PIPE", "STRING", "INTEGER_LITERAL", "DECIMAL_LITERAL", "BY", "AND", - "ASC", "ASSIGN", "COMMA", "DESC", "DOT", "FALSE", "FIRST", "LAST", "LP", - "IN", "IS", "LIKE", "NOT", "NULL", "NULLS", "OR", "PARAM", "RLIKE", "RP", - "TRUE", "EQ", "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", - "METADATA", "FROM_UNQUOTED_IDENTIFIER", "FROM_LINE_COMMENT", "FROM_MULTILINE_COMMENT", - "FROM_WS", "PROJECT_UNQUOTED_IDENTIFIER", "PROJECT_LINE_COMMENT", "PROJECT_MULTILINE_COMMENT", - "PROJECT_WS", "AS", "RENAME_LINE_COMMENT", "RENAME_MULTILINE_COMMENT", - "RENAME_WS", "ON", "WITH", "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" - }; - } - private static final String[] _SYMBOLIC_NAMES = makeSymbolicNames(); - public static final Vocabulary VOCABULARY = new VocabularyImpl(_LITERAL_NAMES, _SYMBOLIC_NAMES); - - /** - * @deprecated Use {@link #VOCABULARY} instead. - */ - @Deprecated - public static final String[] tokenNames; - static { - tokenNames = new String[_SYMBOLIC_NAMES.length]; - for (int i = 0; i < tokenNames.length; i++) { - tokenNames[i] = VOCABULARY.getLiteralName(i); - if (tokenNames[i] == null) { - tokenNames[i] = VOCABULARY.getSymbolicName(i); - } - - if (tokenNames[i] == null) { - tokenNames[i] = ""; - } - } - } - - @Override - @Deprecated - public String[] getTokenNames() { - return tokenNames; - } - - @Override - - public Vocabulary getVocabulary() { - return VOCABULARY; - } - - @Override - public String getGrammarFileName() { return "esql_parser.g4"; } - - @Override - public String[] getRuleNames() { return ruleNames; } - - @Override - public String getSerializedATN() { return _serializedATN; } - - @Override - public ATN getATN() { return _ATN; } - - public esql_parser(TokenStream input) { - super(input); - _interp = new ParserATNSimulator(this,_ATN,_decisionToDFA,_sharedContextCache); - } - - @SuppressWarnings("CheckReturnValue") - public static class SingleStatementContext extends ParserRuleContext { - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode EOF() { return getToken(esql_parser.EOF, 0); } - public SingleStatementContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_singleStatement; } - } - - public final SingleStatementContext singleStatement() throws RecognitionException { - SingleStatementContext _localctx = new SingleStatementContext(_ctx, getState()); - enterRule(_localctx, 0, RULE_singleStatement); - try { - enterOuterAlt(_localctx, 1); - { - setState(98); - query(0); - setState(99); - match(EOF); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QueryContext extends ParserRuleContext { - public QueryContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_query; } - - public QueryContext() { } - public void copyFrom(QueryContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class CompositeQueryContext extends QueryContext { - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode PIPE() { return getToken(esql_parser.PIPE, 0); } - public ProcessingCommandContext processingCommand() { - return getRuleContext(ProcessingCommandContext.class,0); - } - public CompositeQueryContext(QueryContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class SingleCommandQueryContext extends QueryContext { - public SourceCommandContext sourceCommand() { - return getRuleContext(SourceCommandContext.class,0); - } - public SingleCommandQueryContext(QueryContext ctx) { copyFrom(ctx); } - } - - public final QueryContext query() throws RecognitionException { - return query(0); - } - - private QueryContext query(int _p) throws RecognitionException { - ParserRuleContext _parentctx = _ctx; - int _parentState = getState(); - QueryContext _localctx = new QueryContext(_ctx, _parentState); - QueryContext _prevctx = _localctx; - int _startState = 2; - enterRecursionRule(_localctx, 2, RULE_query, _p); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - { - _localctx = new SingleCommandQueryContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(102); - sourceCommand(); - } - _ctx.stop = _input.LT(-1); - setState(109); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,0,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - { - _localctx = new CompositeQueryContext(new QueryContext(_parentctx, _parentState)); - pushNewRecursionContext(_localctx, _startState, RULE_query); - setState(104); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(105); - match(PIPE); - setState(106); - processingCommand(); - } - } - } - setState(111); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,0,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SourceCommandContext extends ParserRuleContext { - public ExplainCommandContext explainCommand() { - return getRuleContext(ExplainCommandContext.class,0); - } - public FromCommandContext fromCommand() { - return getRuleContext(FromCommandContext.class,0); - } - public RowCommandContext rowCommand() { - return getRuleContext(RowCommandContext.class,0); - } - public ShowCommandContext showCommand() { - return getRuleContext(ShowCommandContext.class,0); - } - public SourceCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sourceCommand; } - } - - public final SourceCommandContext sourceCommand() throws RecognitionException { - SourceCommandContext _localctx = new SourceCommandContext(_ctx, getState()); - enterRule(_localctx, 4, RULE_sourceCommand); - try { - setState(116); - _errHandler.sync(this); - switch (_input.LA(1)) { - case EXPLAIN: - enterOuterAlt(_localctx, 1); - { - setState(112); - explainCommand(); - } - break; - case FROM: - enterOuterAlt(_localctx, 2); - { - setState(113); - fromCommand(); - } - break; - case ROW: - enterOuterAlt(_localctx, 3); - { - setState(114); - rowCommand(); - } - break; - case SHOW: - enterOuterAlt(_localctx, 4); - { - setState(115); - showCommand(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ProcessingCommandContext extends ParserRuleContext { - public EvalCommandContext evalCommand() { - return getRuleContext(EvalCommandContext.class,0); - } - public InlinestatsCommandContext inlinestatsCommand() { - return getRuleContext(InlinestatsCommandContext.class,0); - } - public LimitCommandContext limitCommand() { - return getRuleContext(LimitCommandContext.class,0); - } - public KeepCommandContext keepCommand() { - return getRuleContext(KeepCommandContext.class,0); - } - public SortCommandContext sortCommand() { - return getRuleContext(SortCommandContext.class,0); - } - public StatsCommandContext statsCommand() { - return getRuleContext(StatsCommandContext.class,0); - } - public WhereCommandContext whereCommand() { - return getRuleContext(WhereCommandContext.class,0); - } - public DropCommandContext dropCommand() { - return getRuleContext(DropCommandContext.class,0); - } - public RenameCommandContext renameCommand() { - return getRuleContext(RenameCommandContext.class,0); - } - public DissectCommandContext dissectCommand() { - return getRuleContext(DissectCommandContext.class,0); - } - public GrokCommandContext grokCommand() { - return getRuleContext(GrokCommandContext.class,0); - } - public EnrichCommandContext enrichCommand() { - return getRuleContext(EnrichCommandContext.class,0); - } - public MvExpandCommandContext mvExpandCommand() { - return getRuleContext(MvExpandCommandContext.class,0); - } - public ProcessingCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_processingCommand; } - } - - public final ProcessingCommandContext processingCommand() throws RecognitionException { - ProcessingCommandContext _localctx = new ProcessingCommandContext(_ctx, getState()); - enterRule(_localctx, 6, RULE_processingCommand); - try { - setState(131); - _errHandler.sync(this); - switch (_input.LA(1)) { - case EVAL: - enterOuterAlt(_localctx, 1); - { - setState(118); - evalCommand(); - } - break; - case INLINESTATS: - enterOuterAlt(_localctx, 2); - { - setState(119); - inlinestatsCommand(); - } - break; - case LIMIT: - enterOuterAlt(_localctx, 3); - { - setState(120); - limitCommand(); - } - break; - case KEEP: - case PROJECT: - enterOuterAlt(_localctx, 4); - { - setState(121); - keepCommand(); - } - break; - case SORT: - enterOuterAlt(_localctx, 5); - { - setState(122); - sortCommand(); - } - break; - case STATS: - enterOuterAlt(_localctx, 6); - { - setState(123); - statsCommand(); - } - break; - case WHERE: - enterOuterAlt(_localctx, 7); - { - setState(124); - whereCommand(); - } - break; - case DROP: - enterOuterAlt(_localctx, 8); - { - setState(125); - dropCommand(); - } - break; - case RENAME: - enterOuterAlt(_localctx, 9); - { - setState(126); - renameCommand(); - } - break; - case DISSECT: - enterOuterAlt(_localctx, 10); - { - setState(127); - dissectCommand(); - } - break; - case GROK: - enterOuterAlt(_localctx, 11); - { - setState(128); - grokCommand(); - } - break; - case ENRICH: - enterOuterAlt(_localctx, 12); - { - setState(129); - enrichCommand(); - } - break; - case MV_EXPAND: - enterOuterAlt(_localctx, 13); - { - setState(130); - mvExpandCommand(); - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class WhereCommandContext extends ParserRuleContext { - public TerminalNode WHERE() { return getToken(esql_parser.WHERE, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public WhereCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_whereCommand; } - } - - public final WhereCommandContext whereCommand() throws RecognitionException { - WhereCommandContext _localctx = new WhereCommandContext(_ctx, getState()); - enterRule(_localctx, 8, RULE_whereCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(133); - match(WHERE); - setState(134); - booleanExpression(0); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class BooleanExpressionContext extends ParserRuleContext { - public BooleanExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_booleanExpression; } - - public BooleanExpressionContext() { } - public void copyFrom(BooleanExpressionContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class LogicalNotContext extends BooleanExpressionContext { - public TerminalNode NOT() { return getToken(esql_parser.NOT, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public LogicalNotContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class BooleanDefaultContext extends BooleanExpressionContext { - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public BooleanDefaultContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class IsNullContext extends BooleanExpressionContext { - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public TerminalNode IS() { return getToken(esql_parser.IS, 0); } - public TerminalNode NULL() { return getToken(esql_parser.NULL, 0); } - public TerminalNode NOT() { return getToken(esql_parser.NOT, 0); } - public IsNullContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class RegexExpressionContext extends BooleanExpressionContext { - public RegexBooleanExpressionContext regexBooleanExpression() { - return getRuleContext(RegexBooleanExpressionContext.class,0); - } - public RegexExpressionContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class LogicalInContext extends BooleanExpressionContext { - public List valueExpression() { - return getRuleContexts(ValueExpressionContext.class); - } - public ValueExpressionContext valueExpression(int i) { - return getRuleContext(ValueExpressionContext.class,i); - } - public TerminalNode IN() { return getToken(esql_parser.IN, 0); } - public TerminalNode LP() { return getToken(esql_parser.LP, 0); } - public TerminalNode RP() { return getToken(esql_parser.RP, 0); } - public TerminalNode NOT() { return getToken(esql_parser.NOT, 0); } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public LogicalInContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class LogicalBinaryContext extends BooleanExpressionContext { - public BooleanExpressionContext left; - public Token operator; - public BooleanExpressionContext right; - public List booleanExpression() { - return getRuleContexts(BooleanExpressionContext.class); - } - public BooleanExpressionContext booleanExpression(int i) { - return getRuleContext(BooleanExpressionContext.class,i); - } - public TerminalNode AND() { return getToken(esql_parser.AND, 0); } - public TerminalNode OR() { return getToken(esql_parser.OR, 0); } - public LogicalBinaryContext(BooleanExpressionContext ctx) { copyFrom(ctx); } - } - - public final BooleanExpressionContext booleanExpression() throws RecognitionException { - return booleanExpression(0); - } - - private BooleanExpressionContext booleanExpression(int _p) throws RecognitionException { - ParserRuleContext _parentctx = _ctx; - int _parentState = getState(); - BooleanExpressionContext _localctx = new BooleanExpressionContext(_ctx, _parentState); - BooleanExpressionContext _prevctx = _localctx; - int _startState = 10; - enterRecursionRule(_localctx, 10, RULE_booleanExpression, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(164); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,6,_ctx) ) { - case 1: - { - _localctx = new LogicalNotContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(137); - match(NOT); - setState(138); - booleanExpression(7); - } - break; - case 2: - { - _localctx = new BooleanDefaultContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(139); - valueExpression(); - } - break; - case 3: - { - _localctx = new RegexExpressionContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(140); - regexBooleanExpression(); - } - break; - case 4: - { - _localctx = new LogicalInContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(141); - valueExpression(); - setState(143); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(142); - match(NOT); - } - } - - setState(145); - match(IN); - setState(146); - match(LP); - setState(147); - valueExpression(); - setState(152); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(148); - match(COMMA); - setState(149); - valueExpression(); - } - } - setState(154); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(155); - match(RP); - } - break; - case 5: - { - _localctx = new IsNullContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(157); - valueExpression(); - setState(158); - match(IS); - setState(160); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(159); - match(NOT); - } - } - - setState(162); - match(NULL); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(174); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,8,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(172); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,7,_ctx) ) { - case 1: - { - _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); - ((LogicalBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); - setState(166); - if (!(precpred(_ctx, 4))) throw new FailedPredicateException(this, "precpred(_ctx, 4)"); - setState(167); - ((LogicalBinaryContext)_localctx).operator = match(AND); - setState(168); - ((LogicalBinaryContext)_localctx).right = booleanExpression(5); - } - break; - case 2: - { - _localctx = new LogicalBinaryContext(new BooleanExpressionContext(_parentctx, _parentState)); - ((LogicalBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_booleanExpression); - setState(169); - if (!(precpred(_ctx, 3))) throw new FailedPredicateException(this, "precpred(_ctx, 3)"); - setState(170); - ((LogicalBinaryContext)_localctx).operator = match(OR); - setState(171); - ((LogicalBinaryContext)_localctx).right = booleanExpression(4); - } - break; - } - } - } - setState(176); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,8,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RegexBooleanExpressionContext extends ParserRuleContext { - public Token kind; - public StringContext pattern; - public ValueExpressionContext valueExpression() { - return getRuleContext(ValueExpressionContext.class,0); - } - public TerminalNode LIKE() { return getToken(esql_parser.LIKE, 0); } - public StringContext string() { - return getRuleContext(StringContext.class,0); - } - public TerminalNode NOT() { return getToken(esql_parser.NOT, 0); } - public TerminalNode RLIKE() { return getToken(esql_parser.RLIKE, 0); } - public RegexBooleanExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_regexBooleanExpression; } - } - - public final RegexBooleanExpressionContext regexBooleanExpression() throws RecognitionException { - RegexBooleanExpressionContext _localctx = new RegexBooleanExpressionContext(_ctx, getState()); - enterRule(_localctx, 12, RULE_regexBooleanExpression); - int _la; - try { - setState(191); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,11,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(177); - valueExpression(); - setState(179); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(178); - match(NOT); - } - } - - setState(181); - ((RegexBooleanExpressionContext)_localctx).kind = match(LIKE); - setState(182); - ((RegexBooleanExpressionContext)_localctx).pattern = string(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(184); - valueExpression(); - setState(186); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==NOT) { - { - setState(185); - match(NOT); - } - } - - setState(188); - ((RegexBooleanExpressionContext)_localctx).kind = match(RLIKE); - setState(189); - ((RegexBooleanExpressionContext)_localctx).pattern = string(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ValueExpressionContext extends ParserRuleContext { - public ValueExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_valueExpression; } - - public ValueExpressionContext() { } - public void copyFrom(ValueExpressionContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ValueExpressionDefaultContext extends ValueExpressionContext { - public OperatorExpressionContext operatorExpression() { - return getRuleContext(OperatorExpressionContext.class,0); - } - public ValueExpressionDefaultContext(ValueExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class ComparisonContext extends ValueExpressionContext { - public OperatorExpressionContext left; - public OperatorExpressionContext right; - public ComparisonOperatorContext comparisonOperator() { - return getRuleContext(ComparisonOperatorContext.class,0); - } - public List operatorExpression() { - return getRuleContexts(OperatorExpressionContext.class); - } - public OperatorExpressionContext operatorExpression(int i) { - return getRuleContext(OperatorExpressionContext.class,i); - } - public ComparisonContext(ValueExpressionContext ctx) { copyFrom(ctx); } - } - - public final ValueExpressionContext valueExpression() throws RecognitionException { - ValueExpressionContext _localctx = new ValueExpressionContext(_ctx, getState()); - enterRule(_localctx, 14, RULE_valueExpression); - try { - setState(198); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,12,_ctx) ) { - case 1: - _localctx = new ValueExpressionDefaultContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(193); - operatorExpression(0); - } - break; - case 2: - _localctx = new ComparisonContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(194); - ((ComparisonContext)_localctx).left = operatorExpression(0); - setState(195); - comparisonOperator(); - setState(196); - ((ComparisonContext)_localctx).right = operatorExpression(0); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class OperatorExpressionContext extends ParserRuleContext { - public OperatorExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_operatorExpression; } - - public OperatorExpressionContext() { } - public void copyFrom(OperatorExpressionContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class OperatorExpressionDefaultContext extends OperatorExpressionContext { - public PrimaryExpressionContext primaryExpression() { - return getRuleContext(PrimaryExpressionContext.class,0); - } - public OperatorExpressionDefaultContext(OperatorExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class ArithmeticBinaryContext extends OperatorExpressionContext { - public OperatorExpressionContext left; - public Token operator; - public OperatorExpressionContext right; - public List operatorExpression() { - return getRuleContexts(OperatorExpressionContext.class); - } - public OperatorExpressionContext operatorExpression(int i) { - return getRuleContext(OperatorExpressionContext.class,i); - } - public TerminalNode ASTERISK() { return getToken(esql_parser.ASTERISK, 0); } - public TerminalNode SLASH() { return getToken(esql_parser.SLASH, 0); } - public TerminalNode PERCENT() { return getToken(esql_parser.PERCENT, 0); } - public TerminalNode PLUS() { return getToken(esql_parser.PLUS, 0); } - public TerminalNode MINUS() { return getToken(esql_parser.MINUS, 0); } - public ArithmeticBinaryContext(OperatorExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class ArithmeticUnaryContext extends OperatorExpressionContext { - public Token operator; - public OperatorExpressionContext operatorExpression() { - return getRuleContext(OperatorExpressionContext.class,0); - } - public TerminalNode MINUS() { return getToken(esql_parser.MINUS, 0); } - public TerminalNode PLUS() { return getToken(esql_parser.PLUS, 0); } - public ArithmeticUnaryContext(OperatorExpressionContext ctx) { copyFrom(ctx); } - } - - public final OperatorExpressionContext operatorExpression() throws RecognitionException { - return operatorExpression(0); - } - - private OperatorExpressionContext operatorExpression(int _p) throws RecognitionException { - ParserRuleContext _parentctx = _ctx; - int _parentState = getState(); - OperatorExpressionContext _localctx = new OperatorExpressionContext(_ctx, _parentState); - OperatorExpressionContext _prevctx = _localctx; - int _startState = 16; - enterRecursionRule(_localctx, 16, RULE_operatorExpression, _p); - int _la; - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(204); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,13,_ctx) ) { - case 1: - { - _localctx = new OperatorExpressionDefaultContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - - setState(201); - primaryExpression(); - } - break; - case 2: - { - _localctx = new ArithmeticUnaryContext(_localctx); - _ctx = _localctx; - _prevctx = _localctx; - setState(202); - ((ArithmeticUnaryContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==PLUS || _la==MINUS) ) { - ((ArithmeticUnaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(203); - operatorExpression(3); - } - break; - } - _ctx.stop = _input.LT(-1); - setState(214); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,15,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - if ( _parseListeners!=null ) triggerExitRuleEvent(); - _prevctx = _localctx; - { - setState(212); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,14,_ctx) ) { - case 1: - { - _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression); - setState(206); - if (!(precpred(_ctx, 2))) throw new FailedPredicateException(this, "precpred(_ctx, 2)"); - setState(207); - ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 8070450532247928832L) != 0)) ) { - ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(208); - ((ArithmeticBinaryContext)_localctx).right = operatorExpression(3); - } - break; - case 2: - { - _localctx = new ArithmeticBinaryContext(new OperatorExpressionContext(_parentctx, _parentState)); - ((ArithmeticBinaryContext)_localctx).left = _prevctx; - pushNewRecursionContext(_localctx, _startState, RULE_operatorExpression); - setState(209); - if (!(precpred(_ctx, 1))) throw new FailedPredicateException(this, "precpred(_ctx, 1)"); - setState(210); - ((ArithmeticBinaryContext)_localctx).operator = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==PLUS || _la==MINUS) ) { - ((ArithmeticBinaryContext)_localctx).operator = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - setState(211); - ((ArithmeticBinaryContext)_localctx).right = operatorExpression(2); - } - break; - } - } - } - setState(216); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,15,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - unrollRecursionContexts(_parentctx); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class PrimaryExpressionContext extends ParserRuleContext { - public PrimaryExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_primaryExpression; } - - public PrimaryExpressionContext() { } - public void copyFrom(PrimaryExpressionContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class DereferenceContext extends PrimaryExpressionContext { - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public DereferenceContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class ConstantDefaultContext extends PrimaryExpressionContext { - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public ConstantDefaultContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class ParenthesizedExpressionContext extends PrimaryExpressionContext { - public TerminalNode LP() { return getToken(esql_parser.LP, 0); } - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public TerminalNode RP() { return getToken(esql_parser.RP, 0); } - public ParenthesizedExpressionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class FunctionContext extends PrimaryExpressionContext { - public FunctionExpressionContext functionExpression() { - return getRuleContext(FunctionExpressionContext.class,0); - } - public FunctionContext(PrimaryExpressionContext ctx) { copyFrom(ctx); } - } - - public final PrimaryExpressionContext primaryExpression() throws RecognitionException { - PrimaryExpressionContext _localctx = new PrimaryExpressionContext(_ctx, getState()); - enterRule(_localctx, 18, RULE_primaryExpression); - try { - setState(224); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,16,_ctx) ) { - case 1: - _localctx = new ConstantDefaultContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(217); - constant(); - } - break; - case 2: - _localctx = new DereferenceContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(218); - qualifiedName(); - } - break; - case 3: - _localctx = new FunctionContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(219); - functionExpression(); - } - break; - case 4: - _localctx = new ParenthesizedExpressionContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(220); - match(LP); - setState(221); - booleanExpression(0); - setState(222); - match(RP); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FunctionExpressionContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode LP() { return getToken(esql_parser.LP, 0); } - public TerminalNode RP() { return getToken(esql_parser.RP, 0); } - public TerminalNode ASTERISK() { return getToken(esql_parser.ASTERISK, 0); } - public List booleanExpression() { - return getRuleContexts(BooleanExpressionContext.class); - } - public BooleanExpressionContext booleanExpression(int i) { - return getRuleContext(BooleanExpressionContext.class,i); - } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public FunctionExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_functionExpression; } - } - - public final FunctionExpressionContext functionExpression() throws RecognitionException { - FunctionExpressionContext _localctx = new FunctionExpressionContext(_ctx, getState()); - enterRule(_localctx, 20, RULE_functionExpression); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(226); - identifier(); - setState(227); - match(LP); - setState(237); - _errHandler.sync(this); - switch (_input.LA(1)) { - case ASTERISK: - { - setState(228); - match(ASTERISK); - } - break; - case STRING: - case INTEGER_LITERAL: - case DECIMAL_LITERAL: - case FALSE: - case LP: - case NOT: - case NULL: - case PARAM: - case TRUE: - case PLUS: - case MINUS: - case OPENING_BRACKET: - case UNQUOTED_IDENTIFIER: - case QUOTED_IDENTIFIER: - { - { - setState(229); - booleanExpression(0); - setState(234); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(230); - match(COMMA); - setState(231); - booleanExpression(0); - } - } - setState(236); - _errHandler.sync(this); - _la = _input.LA(1); - } - } - } - break; - case RP: - break; - default: - break; - } - setState(239); - match(RP); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RowCommandContext extends ParserRuleContext { - public TerminalNode ROW() { return getToken(esql_parser.ROW, 0); } - public FieldsContext fields() { - return getRuleContext(FieldsContext.class,0); - } - public RowCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_rowCommand; } - } - - public final RowCommandContext rowCommand() throws RecognitionException { - RowCommandContext _localctx = new RowCommandContext(_ctx, getState()); - enterRule(_localctx, 22, RULE_rowCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(241); - match(ROW); - setState(242); - fields(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FieldsContext extends ParserRuleContext { - public List field() { - return getRuleContexts(FieldContext.class); - } - public FieldContext field(int i) { - return getRuleContext(FieldContext.class,i); - } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public FieldsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_fields; } - } - - public final FieldsContext fields() throws RecognitionException { - FieldsContext _localctx = new FieldsContext(_ctx, getState()); - enterRule(_localctx, 24, RULE_fields); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(244); - field(); - setState(249); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,19,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(245); - match(COMMA); - setState(246); - field(); - } - } - } - setState(251); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,19,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FieldContext extends ParserRuleContext { - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public TerminalNode ASSIGN() { return getToken(esql_parser.ASSIGN, 0); } - public FieldContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_field; } - } - - public final FieldContext field() throws RecognitionException { - FieldContext _localctx = new FieldContext(_ctx, getState()); - enterRule(_localctx, 26, RULE_field); - try { - setState(257); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,20,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(252); - booleanExpression(0); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(253); - qualifiedName(); - setState(254); - match(ASSIGN); - setState(255); - booleanExpression(0); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FromCommandContext extends ParserRuleContext { - public TerminalNode FROM() { return getToken(esql_parser.FROM, 0); } - public List fromIdentifier() { - return getRuleContexts(FromIdentifierContext.class); - } - public FromIdentifierContext fromIdentifier(int i) { - return getRuleContext(FromIdentifierContext.class,i); - } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public MetadataContext metadata() { - return getRuleContext(MetadataContext.class,0); - } - public FromCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_fromCommand; } - } - - public final FromCommandContext fromCommand() throws RecognitionException { - FromCommandContext _localctx = new FromCommandContext(_ctx, getState()); - enterRule(_localctx, 28, RULE_fromCommand); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(259); - match(FROM); - setState(260); - fromIdentifier(); - setState(265); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,21,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(261); - match(COMMA); - setState(262); - fromIdentifier(); - } - } - } - setState(267); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,21,_ctx); - } - setState(269); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,22,_ctx) ) { - case 1: - { - setState(268); - metadata(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class MetadataContext extends ParserRuleContext { - public TerminalNode OPENING_BRACKET() { return getToken(esql_parser.OPENING_BRACKET, 0); } - public TerminalNode METADATA() { return getToken(esql_parser.METADATA, 0); } - public List fromIdentifier() { - return getRuleContexts(FromIdentifierContext.class); - } - public FromIdentifierContext fromIdentifier(int i) { - return getRuleContext(FromIdentifierContext.class,i); - } - public TerminalNode CLOSING_BRACKET() { return getToken(esql_parser.CLOSING_BRACKET, 0); } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public MetadataContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_metadata; } - } - - public final MetadataContext metadata() throws RecognitionException { - MetadataContext _localctx = new MetadataContext(_ctx, getState()); - enterRule(_localctx, 30, RULE_metadata); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(271); - match(OPENING_BRACKET); - setState(272); - match(METADATA); - setState(273); - fromIdentifier(); - setState(278); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(274); - match(COMMA); - setState(275); - fromIdentifier(); - } - } - setState(280); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(281); - match(CLOSING_BRACKET); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class EvalCommandContext extends ParserRuleContext { - public TerminalNode EVAL() { return getToken(esql_parser.EVAL, 0); } - public FieldsContext fields() { - return getRuleContext(FieldsContext.class,0); - } - public EvalCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_evalCommand; } - } - - public final EvalCommandContext evalCommand() throws RecognitionException { - EvalCommandContext _localctx = new EvalCommandContext(_ctx, getState()); - enterRule(_localctx, 32, RULE_evalCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(283); - match(EVAL); - setState(284); - fields(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StatsCommandContext extends ParserRuleContext { - public TerminalNode STATS() { return getToken(esql_parser.STATS, 0); } - public FieldsContext fields() { - return getRuleContext(FieldsContext.class,0); - } - public TerminalNode BY() { return getToken(esql_parser.BY, 0); } - public GroupingContext grouping() { - return getRuleContext(GroupingContext.class,0); - } - public StatsCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_statsCommand; } - } - - public final StatsCommandContext statsCommand() throws RecognitionException { - StatsCommandContext _localctx = new StatsCommandContext(_ctx, getState()); - enterRule(_localctx, 34, RULE_statsCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(286); - match(STATS); - setState(288); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,24,_ctx) ) { - case 1: - { - setState(287); - fields(); - } - break; - } - setState(292); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,25,_ctx) ) { - case 1: - { - setState(290); - match(BY); - setState(291); - grouping(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class InlinestatsCommandContext extends ParserRuleContext { - public TerminalNode INLINESTATS() { return getToken(esql_parser.INLINESTATS, 0); } - public FieldsContext fields() { - return getRuleContext(FieldsContext.class,0); - } - public TerminalNode BY() { return getToken(esql_parser.BY, 0); } - public GroupingContext grouping() { - return getRuleContext(GroupingContext.class,0); - } - public InlinestatsCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_inlinestatsCommand; } - } - - public final InlinestatsCommandContext inlinestatsCommand() throws RecognitionException { - InlinestatsCommandContext _localctx = new InlinestatsCommandContext(_ctx, getState()); - enterRule(_localctx, 36, RULE_inlinestatsCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(294); - match(INLINESTATS); - setState(295); - fields(); - setState(298); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,26,_ctx) ) { - case 1: - { - setState(296); - match(BY); - setState(297); - grouping(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class GroupingContext extends ParserRuleContext { - public List qualifiedName() { - return getRuleContexts(QualifiedNameContext.class); - } - public QualifiedNameContext qualifiedName(int i) { - return getRuleContext(QualifiedNameContext.class,i); - } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public GroupingContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_grouping; } - } - - public final GroupingContext grouping() throws RecognitionException { - GroupingContext _localctx = new GroupingContext(_ctx, getState()); - enterRule(_localctx, 38, RULE_grouping); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(300); - qualifiedName(); - setState(305); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,27,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(301); - match(COMMA); - setState(302); - qualifiedName(); - } - } - } - setState(307); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,27,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class FromIdentifierContext extends ParserRuleContext { - public TerminalNode FROM_UNQUOTED_IDENTIFIER() { return getToken(esql_parser.FROM_UNQUOTED_IDENTIFIER, 0); } - public TerminalNode QUOTED_IDENTIFIER() { return getToken(esql_parser.QUOTED_IDENTIFIER, 0); } - public FromIdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_fromIdentifier; } - } - - public final FromIdentifierContext fromIdentifier() throws RecognitionException { - FromIdentifierContext _localctx = new FromIdentifierContext(_ctx, getState()); - enterRule(_localctx, 40, RULE_fromIdentifier); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(308); - _la = _input.LA(1); - if ( !(_la==QUOTED_IDENTIFIER || _la==FROM_UNQUOTED_IDENTIFIER) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QualifiedNameContext extends ParserRuleContext { - public List identifier() { - return getRuleContexts(IdentifierContext.class); - } - public IdentifierContext identifier(int i) { - return getRuleContext(IdentifierContext.class,i); - } - public List DOT() { return getTokens(esql_parser.DOT); } - public TerminalNode DOT(int i) { - return getToken(esql_parser.DOT, i); - } - public QualifiedNameContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_qualifiedName; } - } - - public final QualifiedNameContext qualifiedName() throws RecognitionException { - QualifiedNameContext _localctx = new QualifiedNameContext(_ctx, getState()); - enterRule(_localctx, 42, RULE_qualifiedName); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(310); - identifier(); - setState(315); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,28,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(311); - match(DOT); - setState(312); - identifier(); - } - } - } - setState(317); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,28,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class QualifiedNamePatternContext extends ParserRuleContext { - public List identifierPattern() { - return getRuleContexts(IdentifierPatternContext.class); - } - public IdentifierPatternContext identifierPattern(int i) { - return getRuleContext(IdentifierPatternContext.class,i); - } - public List DOT() { return getTokens(esql_parser.DOT); } - public TerminalNode DOT(int i) { - return getToken(esql_parser.DOT, i); - } - public QualifiedNamePatternContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_qualifiedNamePattern; } - } - - public final QualifiedNamePatternContext qualifiedNamePattern() throws RecognitionException { - QualifiedNamePatternContext _localctx = new QualifiedNamePatternContext(_ctx, getState()); - enterRule(_localctx, 44, RULE_qualifiedNamePattern); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(318); - identifierPattern(); - setState(323); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,29,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(319); - match(DOT); - setState(320); - identifierPattern(); - } - } - } - setState(325); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,29,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierContext extends ParserRuleContext { - public TerminalNode UNQUOTED_IDENTIFIER() { return getToken(esql_parser.UNQUOTED_IDENTIFIER, 0); } - public TerminalNode QUOTED_IDENTIFIER() { return getToken(esql_parser.QUOTED_IDENTIFIER, 0); } - public IdentifierContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifier; } - } - - public final IdentifierContext identifier() throws RecognitionException { - IdentifierContext _localctx = new IdentifierContext(_ctx, getState()); - enterRule(_localctx, 46, RULE_identifier); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(326); - _la = _input.LA(1); - if ( !(_la==UNQUOTED_IDENTIFIER || _la==QUOTED_IDENTIFIER) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IdentifierPatternContext extends ParserRuleContext { - public TerminalNode PROJECT_UNQUOTED_IDENTIFIER() { return getToken(esql_parser.PROJECT_UNQUOTED_IDENTIFIER, 0); } - public TerminalNode QUOTED_IDENTIFIER() { return getToken(esql_parser.QUOTED_IDENTIFIER, 0); } - public IdentifierPatternContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_identifierPattern; } - } - - public final IdentifierPatternContext identifierPattern() throws RecognitionException { - IdentifierPatternContext _localctx = new IdentifierPatternContext(_ctx, getState()); - enterRule(_localctx, 48, RULE_identifierPattern); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(328); - _la = _input.LA(1); - if ( !(_la==QUOTED_IDENTIFIER || _la==PROJECT_UNQUOTED_IDENTIFIER) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ConstantContext extends ParserRuleContext { - public ConstantContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_constant; } - - public ConstantContext() { } - public void copyFrom(ConstantContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class BooleanArrayLiteralContext extends ConstantContext { - public TerminalNode OPENING_BRACKET() { return getToken(esql_parser.OPENING_BRACKET, 0); } - public List booleanValue() { - return getRuleContexts(BooleanValueContext.class); - } - public BooleanValueContext booleanValue(int i) { - return getRuleContext(BooleanValueContext.class,i); - } - public TerminalNode CLOSING_BRACKET() { return getToken(esql_parser.CLOSING_BRACKET, 0); } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public BooleanArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class DecimalLiteralContext extends ConstantContext { - public DecimalValueContext decimalValue() { - return getRuleContext(DecimalValueContext.class,0); - } - public DecimalLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class NullLiteralContext extends ConstantContext { - public TerminalNode NULL() { return getToken(esql_parser.NULL, 0); } - public NullLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class QualifiedIntegerLiteralContext extends ConstantContext { - public IntegerValueContext integerValue() { - return getRuleContext(IntegerValueContext.class,0); - } - public TerminalNode UNQUOTED_IDENTIFIER() { return getToken(esql_parser.UNQUOTED_IDENTIFIER, 0); } - public QualifiedIntegerLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class StringArrayLiteralContext extends ConstantContext { - public TerminalNode OPENING_BRACKET() { return getToken(esql_parser.OPENING_BRACKET, 0); } - public List string() { - return getRuleContexts(StringContext.class); - } - public StringContext string(int i) { - return getRuleContext(StringContext.class,i); - } - public TerminalNode CLOSING_BRACKET() { return getToken(esql_parser.CLOSING_BRACKET, 0); } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public StringArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class StringLiteralContext extends ConstantContext { - public StringContext string() { - return getRuleContext(StringContext.class,0); - } - public StringLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class NumericArrayLiteralContext extends ConstantContext { - public TerminalNode OPENING_BRACKET() { return getToken(esql_parser.OPENING_BRACKET, 0); } - public List numericValue() { - return getRuleContexts(NumericValueContext.class); - } - public NumericValueContext numericValue(int i) { - return getRuleContext(NumericValueContext.class,i); - } - public TerminalNode CLOSING_BRACKET() { return getToken(esql_parser.CLOSING_BRACKET, 0); } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public NumericArrayLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class InputParamContext extends ConstantContext { - public TerminalNode PARAM() { return getToken(esql_parser.PARAM, 0); } - public InputParamContext(ConstantContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class IntegerLiteralContext extends ConstantContext { - public IntegerValueContext integerValue() { - return getRuleContext(IntegerValueContext.class,0); - } - public IntegerLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class BooleanLiteralContext extends ConstantContext { - public BooleanValueContext booleanValue() { - return getRuleContext(BooleanValueContext.class,0); - } - public BooleanLiteralContext(ConstantContext ctx) { copyFrom(ctx); } - } - - public final ConstantContext constant() throws RecognitionException { - ConstantContext _localctx = new ConstantContext(_ctx, getState()); - enterRule(_localctx, 50, RULE_constant); - int _la; - try { - setState(372); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,33,_ctx) ) { - case 1: - _localctx = new NullLiteralContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(330); - match(NULL); - } - break; - case 2: - _localctx = new QualifiedIntegerLiteralContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(331); - integerValue(); - setState(332); - match(UNQUOTED_IDENTIFIER); - } - break; - case 3: - _localctx = new DecimalLiteralContext(_localctx); - enterOuterAlt(_localctx, 3); - { - setState(334); - decimalValue(); - } - break; - case 4: - _localctx = new IntegerLiteralContext(_localctx); - enterOuterAlt(_localctx, 4); - { - setState(335); - integerValue(); - } - break; - case 5: - _localctx = new BooleanLiteralContext(_localctx); - enterOuterAlt(_localctx, 5); - { - setState(336); - booleanValue(); - } - break; - case 6: - _localctx = new InputParamContext(_localctx); - enterOuterAlt(_localctx, 6); - { - setState(337); - match(PARAM); - } - break; - case 7: - _localctx = new StringLiteralContext(_localctx); - enterOuterAlt(_localctx, 7); - { - setState(338); - string(); - } - break; - case 8: - _localctx = new NumericArrayLiteralContext(_localctx); - enterOuterAlt(_localctx, 8); - { - setState(339); - match(OPENING_BRACKET); - setState(340); - numericValue(); - setState(345); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(341); - match(COMMA); - setState(342); - numericValue(); - } - } - setState(347); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(348); - match(CLOSING_BRACKET); - } - break; - case 9: - _localctx = new BooleanArrayLiteralContext(_localctx); - enterOuterAlt(_localctx, 9); - { - setState(350); - match(OPENING_BRACKET); - setState(351); - booleanValue(); - setState(356); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(352); - match(COMMA); - setState(353); - booleanValue(); - } - } - setState(358); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(359); - match(CLOSING_BRACKET); - } - break; - case 10: - _localctx = new StringArrayLiteralContext(_localctx); - enterOuterAlt(_localctx, 10); - { - setState(361); - match(OPENING_BRACKET); - setState(362); - string(); - setState(367); - _errHandler.sync(this); - _la = _input.LA(1); - while (_la==COMMA) { - { - { - setState(363); - match(COMMA); - setState(364); - string(); - } - } - setState(369); - _errHandler.sync(this); - _la = _input.LA(1); - } - setState(370); - match(CLOSING_BRACKET); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class LimitCommandContext extends ParserRuleContext { - public TerminalNode LIMIT() { return getToken(esql_parser.LIMIT, 0); } - public TerminalNode INTEGER_LITERAL() { return getToken(esql_parser.INTEGER_LITERAL, 0); } - public LimitCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_limitCommand; } - } - - public final LimitCommandContext limitCommand() throws RecognitionException { - LimitCommandContext _localctx = new LimitCommandContext(_ctx, getState()); - enterRule(_localctx, 52, RULE_limitCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(374); - match(LIMIT); - setState(375); - match(INTEGER_LITERAL); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SortCommandContext extends ParserRuleContext { - public TerminalNode SORT() { return getToken(esql_parser.SORT, 0); } - public List orderExpression() { - return getRuleContexts(OrderExpressionContext.class); - } - public OrderExpressionContext orderExpression(int i) { - return getRuleContext(OrderExpressionContext.class,i); - } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public SortCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_sortCommand; } - } - - public final SortCommandContext sortCommand() throws RecognitionException { - SortCommandContext _localctx = new SortCommandContext(_ctx, getState()); - enterRule(_localctx, 54, RULE_sortCommand); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(377); - match(SORT); - setState(378); - orderExpression(); - setState(383); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,34,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(379); - match(COMMA); - setState(380); - orderExpression(); - } - } - } - setState(385); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,34,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class OrderExpressionContext extends ParserRuleContext { - public Token ordering; - public Token nullOrdering; - public BooleanExpressionContext booleanExpression() { - return getRuleContext(BooleanExpressionContext.class,0); - } - public TerminalNode NULLS() { return getToken(esql_parser.NULLS, 0); } - public TerminalNode ASC() { return getToken(esql_parser.ASC, 0); } - public TerminalNode DESC() { return getToken(esql_parser.DESC, 0); } - public TerminalNode FIRST() { return getToken(esql_parser.FIRST, 0); } - public TerminalNode LAST() { return getToken(esql_parser.LAST, 0); } - public OrderExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_orderExpression; } - } - - public final OrderExpressionContext orderExpression() throws RecognitionException { - OrderExpressionContext _localctx = new OrderExpressionContext(_ctx, getState()); - enterRule(_localctx, 56, RULE_orderExpression); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(386); - booleanExpression(0); - setState(388); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,35,_ctx) ) { - case 1: - { - setState(387); - ((OrderExpressionContext)_localctx).ordering = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==ASC || _la==DESC) ) { - ((OrderExpressionContext)_localctx).ordering = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - } - setState(392); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,36,_ctx) ) { - case 1: - { - setState(390); - match(NULLS); - setState(391); - ((OrderExpressionContext)_localctx).nullOrdering = _input.LT(1); - _la = _input.LA(1); - if ( !(_la==FIRST || _la==LAST) ) { - ((OrderExpressionContext)_localctx).nullOrdering = (Token)_errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class KeepCommandContext extends ParserRuleContext { - public TerminalNode KEEP() { return getToken(esql_parser.KEEP, 0); } - public List qualifiedNamePattern() { - return getRuleContexts(QualifiedNamePatternContext.class); - } - public QualifiedNamePatternContext qualifiedNamePattern(int i) { - return getRuleContext(QualifiedNamePatternContext.class,i); - } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public TerminalNode PROJECT() { return getToken(esql_parser.PROJECT, 0); } - public KeepCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_keepCommand; } - } - - public final KeepCommandContext keepCommand() throws RecognitionException { - KeepCommandContext _localctx = new KeepCommandContext(_ctx, getState()); - enterRule(_localctx, 58, RULE_keepCommand); - try { - int _alt; - setState(412); - _errHandler.sync(this); - switch (_input.LA(1)) { - case KEEP: - enterOuterAlt(_localctx, 1); - { - setState(394); - match(KEEP); - setState(395); - qualifiedNamePattern(); - setState(400); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,37,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(396); - match(COMMA); - setState(397); - qualifiedNamePattern(); - } - } - } - setState(402); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,37,_ctx); - } - } - break; - case PROJECT: - enterOuterAlt(_localctx, 2); - { - setState(403); - match(PROJECT); - setState(404); - qualifiedNamePattern(); - setState(409); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,38,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(405); - match(COMMA); - setState(406); - qualifiedNamePattern(); - } - } - } - setState(411); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,38,_ctx); - } - } - break; - default: - throw new NoViableAltException(this); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DropCommandContext extends ParserRuleContext { - public TerminalNode DROP() { return getToken(esql_parser.DROP, 0); } - public List qualifiedNamePattern() { - return getRuleContexts(QualifiedNamePatternContext.class); - } - public QualifiedNamePatternContext qualifiedNamePattern(int i) { - return getRuleContext(QualifiedNamePatternContext.class,i); - } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public DropCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_dropCommand; } - } - - public final DropCommandContext dropCommand() throws RecognitionException { - DropCommandContext _localctx = new DropCommandContext(_ctx, getState()); - enterRule(_localctx, 60, RULE_dropCommand); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(414); - match(DROP); - setState(415); - qualifiedNamePattern(); - setState(420); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,40,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(416); - match(COMMA); - setState(417); - qualifiedNamePattern(); - } - } - } - setState(422); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,40,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RenameCommandContext extends ParserRuleContext { - public TerminalNode RENAME() { return getToken(esql_parser.RENAME, 0); } - public List renameClause() { - return getRuleContexts(RenameClauseContext.class); - } - public RenameClauseContext renameClause(int i) { - return getRuleContext(RenameClauseContext.class,i); - } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public RenameCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_renameCommand; } - } - - public final RenameCommandContext renameCommand() throws RecognitionException { - RenameCommandContext _localctx = new RenameCommandContext(_ctx, getState()); - enterRule(_localctx, 62, RULE_renameCommand); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(423); - match(RENAME); - setState(424); - renameClause(); - setState(429); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,41,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(425); - match(COMMA); - setState(426); - renameClause(); - } - } - } - setState(431); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,41,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class RenameClauseContext extends ParserRuleContext { - public QualifiedNamePatternContext oldName; - public QualifiedNamePatternContext newName; - public TerminalNode AS() { return getToken(esql_parser.AS, 0); } - public List qualifiedNamePattern() { - return getRuleContexts(QualifiedNamePatternContext.class); - } - public QualifiedNamePatternContext qualifiedNamePattern(int i) { - return getRuleContext(QualifiedNamePatternContext.class,i); - } - public RenameClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_renameClause; } - } - - public final RenameClauseContext renameClause() throws RecognitionException { - RenameClauseContext _localctx = new RenameClauseContext(_ctx, getState()); - enterRule(_localctx, 64, RULE_renameClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(432); - ((RenameClauseContext)_localctx).oldName = qualifiedNamePattern(); - setState(433); - match(AS); - setState(434); - ((RenameClauseContext)_localctx).newName = qualifiedNamePattern(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DissectCommandContext extends ParserRuleContext { - public TerminalNode DISSECT() { return getToken(esql_parser.DISSECT, 0); } - public PrimaryExpressionContext primaryExpression() { - return getRuleContext(PrimaryExpressionContext.class,0); - } - public StringContext string() { - return getRuleContext(StringContext.class,0); - } - public CommandOptionsContext commandOptions() { - return getRuleContext(CommandOptionsContext.class,0); - } - public DissectCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_dissectCommand; } - } - - public final DissectCommandContext dissectCommand() throws RecognitionException { - DissectCommandContext _localctx = new DissectCommandContext(_ctx, getState()); - enterRule(_localctx, 66, RULE_dissectCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(436); - match(DISSECT); - setState(437); - primaryExpression(); - setState(438); - string(); - setState(440); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,42,_ctx) ) { - case 1: - { - setState(439); - commandOptions(); - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class GrokCommandContext extends ParserRuleContext { - public TerminalNode GROK() { return getToken(esql_parser.GROK, 0); } - public PrimaryExpressionContext primaryExpression() { - return getRuleContext(PrimaryExpressionContext.class,0); - } - public StringContext string() { - return getRuleContext(StringContext.class,0); - } - public GrokCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_grokCommand; } - } - - public final GrokCommandContext grokCommand() throws RecognitionException { - GrokCommandContext _localctx = new GrokCommandContext(_ctx, getState()); - enterRule(_localctx, 68, RULE_grokCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(442); - match(GROK); - setState(443); - primaryExpression(); - setState(444); - string(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class MvExpandCommandContext extends ParserRuleContext { - public TerminalNode MV_EXPAND() { return getToken(esql_parser.MV_EXPAND, 0); } - public QualifiedNameContext qualifiedName() { - return getRuleContext(QualifiedNameContext.class,0); - } - public MvExpandCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_mvExpandCommand; } - } - - public final MvExpandCommandContext mvExpandCommand() throws RecognitionException { - MvExpandCommandContext _localctx = new MvExpandCommandContext(_ctx, getState()); - enterRule(_localctx, 70, RULE_mvExpandCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(446); - match(MV_EXPAND); - setState(447); - qualifiedName(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class CommandOptionsContext extends ParserRuleContext { - public List commandOption() { - return getRuleContexts(CommandOptionContext.class); - } - public CommandOptionContext commandOption(int i) { - return getRuleContext(CommandOptionContext.class,i); - } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public CommandOptionsContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_commandOptions; } - } - - public final CommandOptionsContext commandOptions() throws RecognitionException { - CommandOptionsContext _localctx = new CommandOptionsContext(_ctx, getState()); - enterRule(_localctx, 72, RULE_commandOptions); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(449); - commandOption(); - setState(454); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,43,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(450); - match(COMMA); - setState(451); - commandOption(); - } - } - } - setState(456); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,43,_ctx); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class CommandOptionContext extends ParserRuleContext { - public IdentifierContext identifier() { - return getRuleContext(IdentifierContext.class,0); - } - public TerminalNode ASSIGN() { return getToken(esql_parser.ASSIGN, 0); } - public ConstantContext constant() { - return getRuleContext(ConstantContext.class,0); - } - public CommandOptionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_commandOption; } - } - - public final CommandOptionContext commandOption() throws RecognitionException { - CommandOptionContext _localctx = new CommandOptionContext(_ctx, getState()); - enterRule(_localctx, 74, RULE_commandOption); - try { - enterOuterAlt(_localctx, 1); - { - setState(457); - identifier(); - setState(458); - match(ASSIGN); - setState(459); - constant(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class BooleanValueContext extends ParserRuleContext { - public TerminalNode TRUE() { return getToken(esql_parser.TRUE, 0); } - public TerminalNode FALSE() { return getToken(esql_parser.FALSE, 0); } - public BooleanValueContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_booleanValue; } - } - - public final BooleanValueContext booleanValue() throws RecognitionException { - BooleanValueContext _localctx = new BooleanValueContext(_ctx, getState()); - enterRule(_localctx, 76, RULE_booleanValue); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(461); - _la = _input.LA(1); - if ( !(_la==FALSE || _la==TRUE) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class NumericValueContext extends ParserRuleContext { - public DecimalValueContext decimalValue() { - return getRuleContext(DecimalValueContext.class,0); - } - public IntegerValueContext integerValue() { - return getRuleContext(IntegerValueContext.class,0); - } - public NumericValueContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_numericValue; } - } - - public final NumericValueContext numericValue() throws RecognitionException { - NumericValueContext _localctx = new NumericValueContext(_ctx, getState()); - enterRule(_localctx, 78, RULE_numericValue); - try { - setState(465); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,44,_ctx) ) { - case 1: - enterOuterAlt(_localctx, 1); - { - setState(463); - decimalValue(); - } - break; - case 2: - enterOuterAlt(_localctx, 2); - { - setState(464); - integerValue(); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class DecimalValueContext extends ParserRuleContext { - public TerminalNode DECIMAL_LITERAL() { return getToken(esql_parser.DECIMAL_LITERAL, 0); } - public TerminalNode PLUS() { return getToken(esql_parser.PLUS, 0); } - public TerminalNode MINUS() { return getToken(esql_parser.MINUS, 0); } - public DecimalValueContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_decimalValue; } - } - - public final DecimalValueContext decimalValue() throws RecognitionException { - DecimalValueContext _localctx = new DecimalValueContext(_ctx, getState()); - enterRule(_localctx, 80, RULE_decimalValue); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(468); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PLUS || _la==MINUS) { - { - setState(467); - _la = _input.LA(1); - if ( !(_la==PLUS || _la==MINUS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(470); - match(DECIMAL_LITERAL); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class IntegerValueContext extends ParserRuleContext { - public TerminalNode INTEGER_LITERAL() { return getToken(esql_parser.INTEGER_LITERAL, 0); } - public TerminalNode PLUS() { return getToken(esql_parser.PLUS, 0); } - public TerminalNode MINUS() { return getToken(esql_parser.MINUS, 0); } - public IntegerValueContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_integerValue; } - } - - public final IntegerValueContext integerValue() throws RecognitionException { - IntegerValueContext _localctx = new IntegerValueContext(_ctx, getState()); - enterRule(_localctx, 82, RULE_integerValue); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(473); - _errHandler.sync(this); - _la = _input.LA(1); - if (_la==PLUS || _la==MINUS) { - { - setState(472); - _la = _input.LA(1); - if ( !(_la==PLUS || _la==MINUS) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - - setState(475); - match(INTEGER_LITERAL); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class StringContext extends ParserRuleContext { - public TerminalNode STRING() { return getToken(esql_parser.STRING, 0); } - public StringContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_string; } - } - - public final StringContext string() throws RecognitionException { - StringContext _localctx = new StringContext(_ctx, getState()); - enterRule(_localctx, 84, RULE_string); - try { - enterOuterAlt(_localctx, 1); - { - setState(477); - match(STRING); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ComparisonOperatorContext extends ParserRuleContext { - public TerminalNode EQ() { return getToken(esql_parser.EQ, 0); } - public TerminalNode NEQ() { return getToken(esql_parser.NEQ, 0); } - public TerminalNode LT() { return getToken(esql_parser.LT, 0); } - public TerminalNode LTE() { return getToken(esql_parser.LTE, 0); } - public TerminalNode GT() { return getToken(esql_parser.GT, 0); } - public TerminalNode GTE() { return getToken(esql_parser.GTE, 0); } - public ComparisonOperatorContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_comparisonOperator; } - } - - public final ComparisonOperatorContext comparisonOperator() throws RecognitionException { - ComparisonOperatorContext _localctx = new ComparisonOperatorContext(_ctx, getState()); - enterRule(_localctx, 86, RULE_comparisonOperator); - int _la; - try { - enterOuterAlt(_localctx, 1); - { - setState(479); - _la = _input.LA(1); - if ( !((((_la) & ~0x3f) == 0 && ((1L << _la) & 283726776524341248L) != 0)) ) { - _errHandler.recoverInline(this); - } - else { - if ( _input.LA(1)==Token.EOF ) matchedEOF = true; - _errHandler.reportMatch(this); - consume(); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ExplainCommandContext extends ParserRuleContext { - public TerminalNode EXPLAIN() { return getToken(esql_parser.EXPLAIN, 0); } - public SubqueryExpressionContext subqueryExpression() { - return getRuleContext(SubqueryExpressionContext.class,0); - } - public ExplainCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_explainCommand; } - } - - public final ExplainCommandContext explainCommand() throws RecognitionException { - ExplainCommandContext _localctx = new ExplainCommandContext(_ctx, getState()); - enterRule(_localctx, 88, RULE_explainCommand); - try { - enterOuterAlt(_localctx, 1); - { - setState(481); - match(EXPLAIN); - setState(482); - subqueryExpression(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class SubqueryExpressionContext extends ParserRuleContext { - public TerminalNode OPENING_BRACKET() { return getToken(esql_parser.OPENING_BRACKET, 0); } - public QueryContext query() { - return getRuleContext(QueryContext.class,0); - } - public TerminalNode CLOSING_BRACKET() { return getToken(esql_parser.CLOSING_BRACKET, 0); } - public SubqueryExpressionContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_subqueryExpression; } - } - - public final SubqueryExpressionContext subqueryExpression() throws RecognitionException { - SubqueryExpressionContext _localctx = new SubqueryExpressionContext(_ctx, getState()); - enterRule(_localctx, 90, RULE_subqueryExpression); - try { - enterOuterAlt(_localctx, 1); - { - setState(484); - match(OPENING_BRACKET); - setState(485); - query(0); - setState(486); - match(CLOSING_BRACKET); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class ShowCommandContext extends ParserRuleContext { - public ShowCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_showCommand; } - - public ShowCommandContext() { } - public void copyFrom(ShowCommandContext ctx) { - super.copyFrom(ctx); - } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowInfoContext extends ShowCommandContext { - public TerminalNode SHOW() { return getToken(esql_parser.SHOW, 0); } - public TerminalNode INFO() { return getToken(esql_parser.INFO, 0); } - public ShowInfoContext(ShowCommandContext ctx) { copyFrom(ctx); } - } - @SuppressWarnings("CheckReturnValue") - public static class ShowFunctionsContext extends ShowCommandContext { - public TerminalNode SHOW() { return getToken(esql_parser.SHOW, 0); } - public TerminalNode FUNCTIONS() { return getToken(esql_parser.FUNCTIONS, 0); } - public ShowFunctionsContext(ShowCommandContext ctx) { copyFrom(ctx); } - } - - public final ShowCommandContext showCommand() throws RecognitionException { - ShowCommandContext _localctx = new ShowCommandContext(_ctx, getState()); - enterRule(_localctx, 92, RULE_showCommand); - try { - setState(492); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,47,_ctx) ) { - case 1: - _localctx = new ShowInfoContext(_localctx); - enterOuterAlt(_localctx, 1); - { - setState(488); - match(SHOW); - setState(489); - match(INFO); - } - break; - case 2: - _localctx = new ShowFunctionsContext(_localctx); - enterOuterAlt(_localctx, 2); - { - setState(490); - match(SHOW); - setState(491); - match(FUNCTIONS); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class EnrichCommandContext extends ParserRuleContext { - public FromIdentifierContext policyName; - public QualifiedNamePatternContext matchField; - public TerminalNode ENRICH() { return getToken(esql_parser.ENRICH, 0); } - public FromIdentifierContext fromIdentifier() { - return getRuleContext(FromIdentifierContext.class,0); - } - public TerminalNode ON() { return getToken(esql_parser.ON, 0); } - public TerminalNode WITH() { return getToken(esql_parser.WITH, 0); } - public List enrichWithClause() { - return getRuleContexts(EnrichWithClauseContext.class); - } - public EnrichWithClauseContext enrichWithClause(int i) { - return getRuleContext(EnrichWithClauseContext.class,i); - } - public QualifiedNamePatternContext qualifiedNamePattern() { - return getRuleContext(QualifiedNamePatternContext.class,0); - } - public List COMMA() { return getTokens(esql_parser.COMMA); } - public TerminalNode COMMA(int i) { - return getToken(esql_parser.COMMA, i); - } - public EnrichCommandContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_enrichCommand; } - } - - public final EnrichCommandContext enrichCommand() throws RecognitionException { - EnrichCommandContext _localctx = new EnrichCommandContext(_ctx, getState()); - enterRule(_localctx, 94, RULE_enrichCommand); - try { - int _alt; - enterOuterAlt(_localctx, 1); - { - setState(494); - match(ENRICH); - setState(495); - ((EnrichCommandContext)_localctx).policyName = fromIdentifier(); - setState(498); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,48,_ctx) ) { - case 1: - { - setState(496); - match(ON); - setState(497); - ((EnrichCommandContext)_localctx).matchField = qualifiedNamePattern(); - } - break; - } - setState(509); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,50,_ctx) ) { - case 1: - { - setState(500); - match(WITH); - setState(501); - enrichWithClause(); - setState(506); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,49,_ctx); - while ( _alt!=2 && _alt!=org.antlr.v4.runtime.atn.ATN.INVALID_ALT_NUMBER ) { - if ( _alt==1 ) { - { - { - setState(502); - match(COMMA); - setState(503); - enrichWithClause(); - } - } - } - setState(508); - _errHandler.sync(this); - _alt = getInterpreter().adaptivePredict(_input,49,_ctx); - } - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - @SuppressWarnings("CheckReturnValue") - public static class EnrichWithClauseContext extends ParserRuleContext { - public QualifiedNamePatternContext newName; - public QualifiedNamePatternContext enrichField; - public List qualifiedNamePattern() { - return getRuleContexts(QualifiedNamePatternContext.class); - } - public QualifiedNamePatternContext qualifiedNamePattern(int i) { - return getRuleContext(QualifiedNamePatternContext.class,i); - } - public TerminalNode ASSIGN() { return getToken(esql_parser.ASSIGN, 0); } - public EnrichWithClauseContext(ParserRuleContext parent, int invokingState) { - super(parent, invokingState); - } - @Override public int getRuleIndex() { return RULE_enrichWithClause; } - } - - public final EnrichWithClauseContext enrichWithClause() throws RecognitionException { - EnrichWithClauseContext _localctx = new EnrichWithClauseContext(_ctx, getState()); - enterRule(_localctx, 96, RULE_enrichWithClause); - try { - enterOuterAlt(_localctx, 1); - { - setState(514); - _errHandler.sync(this); - switch ( getInterpreter().adaptivePredict(_input,51,_ctx) ) { - case 1: - { - setState(511); - ((EnrichWithClauseContext)_localctx).newName = qualifiedNamePattern(); - setState(512); - match(ASSIGN); - } - break; - } - setState(516); - ((EnrichWithClauseContext)_localctx).enrichField = qualifiedNamePattern(); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - _errHandler.reportError(this, re); - _errHandler.recover(this, re); - } - finally { - exitRule(); - } - return _localctx; - } - - public boolean sempred(RuleContext _localctx, int ruleIndex, int predIndex) { - switch (ruleIndex) { - case 1: - return query_sempred((QueryContext)_localctx, predIndex); - case 5: - return booleanExpression_sempred((BooleanExpressionContext)_localctx, predIndex); - case 8: - return operatorExpression_sempred((OperatorExpressionContext)_localctx, predIndex); - } - return true; - } - private boolean query_sempred(QueryContext _localctx, int predIndex) { - switch (predIndex) { - case 0: - return precpred(_ctx, 1); - } - return true; - } - private boolean booleanExpression_sempred(BooleanExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 1: - return precpred(_ctx, 4); - case 2: - return precpred(_ctx, 3); - } - return true; - } - private boolean operatorExpression_sempred(OperatorExpressionContext _localctx, int predIndex) { - switch (predIndex) { - case 3: - return precpred(_ctx, 2); - case 4: - return precpred(_ctx, 1); - } - return true; - } - - public static final String _serializedATN = - "\u0004\u0001b\u0207\u0002\u0000\u0007\u0000\u0002\u0001\u0007\u0001\u0002"+ - "\u0002\u0007\u0002\u0002\u0003\u0007\u0003\u0002\u0004\u0007\u0004\u0002"+ - "\u0005\u0007\u0005\u0002\u0006\u0007\u0006\u0002\u0007\u0007\u0007\u0002"+ - "\b\u0007\b\u0002\t\u0007\t\u0002\n\u0007\n\u0002\u000b\u0007\u000b\u0002"+ - "\f\u0007\f\u0002\r\u0007\r\u0002\u000e\u0007\u000e\u0002\u000f\u0007\u000f"+ - "\u0002\u0010\u0007\u0010\u0002\u0011\u0007\u0011\u0002\u0012\u0007\u0012"+ - "\u0002\u0013\u0007\u0013\u0002\u0014\u0007\u0014\u0002\u0015\u0007\u0015"+ - "\u0002\u0016\u0007\u0016\u0002\u0017\u0007\u0017\u0002\u0018\u0007\u0018"+ - "\u0002\u0019\u0007\u0019\u0002\u001a\u0007\u001a\u0002\u001b\u0007\u001b"+ - "\u0002\u001c\u0007\u001c\u0002\u001d\u0007\u001d\u0002\u001e\u0007\u001e"+ - "\u0002\u001f\u0007\u001f\u0002 \u0007 \u0002!\u0007!\u0002\"\u0007\"\u0002"+ - "#\u0007#\u0002$\u0007$\u0002%\u0007%\u0002&\u0007&\u0002\'\u0007\'\u0002"+ - "(\u0007(\u0002)\u0007)\u0002*\u0007*\u0002+\u0007+\u0002,\u0007,\u0002"+ - "-\u0007-\u0002.\u0007.\u0002/\u0007/\u00020\u00070\u0001\u0000\u0001\u0000"+ - "\u0001\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001"+ - "\u0001\u0001\u0005\u0001l\b\u0001\n\u0001\f\u0001o\t\u0001\u0001\u0002"+ - "\u0001\u0002\u0001\u0002\u0001\u0002\u0003\u0002u\b\u0002\u0001\u0003"+ - "\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+ - "\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003\u0001\u0003"+ - "\u0003\u0003\u0084\b\u0003\u0001\u0004\u0001\u0004\u0001\u0004\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ - "\u0003\u0005\u0090\b\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005"+ - "\u0001\u0005\u0005\u0005\u0097\b\u0005\n\u0005\f\u0005\u009a\t\u0005\u0001"+ - "\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u00a1"+ - "\b\u0005\u0001\u0005\u0001\u0005\u0003\u0005\u00a5\b\u0005\u0001\u0005"+ - "\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0001\u0005\u0005\u0005"+ - "\u00ad\b\u0005\n\u0005\f\u0005\u00b0\t\u0005\u0001\u0006\u0001\u0006\u0003"+ - "\u0006\u00b4\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0001"+ - "\u0006\u0003\u0006\u00bb\b\u0006\u0001\u0006\u0001\u0006\u0001\u0006\u0003"+ - "\u0006\u00c0\b\u0006\u0001\u0007\u0001\u0007\u0001\u0007\u0001\u0007\u0001"+ - "\u0007\u0003\u0007\u00c7\b\u0007\u0001\b\u0001\b\u0001\b\u0001\b\u0003"+ - "\b\u00cd\b\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0001\b\u0005\b\u00d5"+ - "\b\b\n\b\f\b\u00d8\t\b\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t\u0001\t"+ - "\u0001\t\u0003\t\u00e1\b\t\u0001\n\u0001\n\u0001\n\u0001\n\u0001\n\u0001"+ - "\n\u0005\n\u00e9\b\n\n\n\f\n\u00ec\t\n\u0003\n\u00ee\b\n\u0001\n\u0001"+ - "\n\u0001\u000b\u0001\u000b\u0001\u000b\u0001\f\u0001\f\u0001\f\u0005\f"+ - "\u00f8\b\f\n\f\f\f\u00fb\t\f\u0001\r\u0001\r\u0001\r\u0001\r\u0001\r\u0003"+ - "\r\u0102\b\r\u0001\u000e\u0001\u000e\u0001\u000e\u0001\u000e\u0005\u000e"+ - "\u0108\b\u000e\n\u000e\f\u000e\u010b\t\u000e\u0001\u000e\u0003\u000e\u010e"+ - "\b\u000e\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0001\u000f\u0005"+ - "\u000f\u0115\b\u000f\n\u000f\f\u000f\u0118\t\u000f\u0001\u000f\u0001\u000f"+ - "\u0001\u0010\u0001\u0010\u0001\u0010\u0001\u0011\u0001\u0011\u0003\u0011"+ - "\u0121\b\u0011\u0001\u0011\u0001\u0011\u0003\u0011\u0125\b\u0011\u0001"+ - "\u0012\u0001\u0012\u0001\u0012\u0001\u0012\u0003\u0012\u012b\b\u0012\u0001"+ - "\u0013\u0001\u0013\u0001\u0013\u0005\u0013\u0130\b\u0013\n\u0013\f\u0013"+ - "\u0133\t\u0013\u0001\u0014\u0001\u0014\u0001\u0015\u0001\u0015\u0001\u0015"+ - "\u0005\u0015\u013a\b\u0015\n\u0015\f\u0015\u013d\t\u0015\u0001\u0016\u0001"+ - "\u0016\u0001\u0016\u0005\u0016\u0142\b\u0016\n\u0016\f\u0016\u0145\t\u0016"+ - "\u0001\u0017\u0001\u0017\u0001\u0018\u0001\u0018\u0001\u0019\u0001\u0019"+ - "\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019"+ - "\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0005\u0019"+ - "\u0158\b\u0019\n\u0019\f\u0019\u015b\t\u0019\u0001\u0019\u0001\u0019\u0001"+ - "\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0005\u0019\u0163\b\u0019\n"+ - "\u0019\f\u0019\u0166\t\u0019\u0001\u0019\u0001\u0019\u0001\u0019\u0001"+ - "\u0019\u0001\u0019\u0001\u0019\u0005\u0019\u016e\b\u0019\n\u0019\f\u0019"+ - "\u0171\t\u0019\u0001\u0019\u0001\u0019\u0003\u0019\u0175\b\u0019\u0001"+ - "\u001a\u0001\u001a\u0001\u001a\u0001\u001b\u0001\u001b\u0001\u001b\u0001"+ - "\u001b\u0005\u001b\u017e\b\u001b\n\u001b\f\u001b\u0181\t\u001b\u0001\u001c"+ - "\u0001\u001c\u0003\u001c\u0185\b\u001c\u0001\u001c\u0001\u001c\u0003\u001c"+ - "\u0189\b\u001c\u0001\u001d\u0001\u001d\u0001\u001d\u0001\u001d\u0005\u001d"+ - "\u018f\b\u001d\n\u001d\f\u001d\u0192\t\u001d\u0001\u001d\u0001\u001d\u0001"+ - "\u001d\u0001\u001d\u0005\u001d\u0198\b\u001d\n\u001d\f\u001d\u019b\t\u001d"+ - "\u0003\u001d\u019d\b\u001d\u0001\u001e\u0001\u001e\u0001\u001e\u0001\u001e"+ - "\u0005\u001e\u01a3\b\u001e\n\u001e\f\u001e\u01a6\t\u001e\u0001\u001f\u0001"+ - "\u001f\u0001\u001f\u0001\u001f\u0005\u001f\u01ac\b\u001f\n\u001f\f\u001f"+ - "\u01af\t\u001f\u0001 \u0001 \u0001 \u0001 \u0001!\u0001!\u0001!\u0001"+ - "!\u0003!\u01b9\b!\u0001\"\u0001\"\u0001\"\u0001\"\u0001#\u0001#\u0001"+ - "#\u0001$\u0001$\u0001$\u0005$\u01c5\b$\n$\f$\u01c8\t$\u0001%\u0001%\u0001"+ - "%\u0001%\u0001&\u0001&\u0001\'\u0001\'\u0003\'\u01d2\b\'\u0001(\u0003"+ - "(\u01d5\b(\u0001(\u0001(\u0001)\u0003)\u01da\b)\u0001)\u0001)\u0001*\u0001"+ - "*\u0001+\u0001+\u0001,\u0001,\u0001,\u0001-\u0001-\u0001-\u0001-\u0001"+ - ".\u0001.\u0001.\u0001.\u0003.\u01ed\b.\u0001/\u0001/\u0001/\u0001/\u0003"+ - "/\u01f3\b/\u0001/\u0001/\u0001/\u0001/\u0005/\u01f9\b/\n/\f/\u01fc\t/"+ - "\u0003/\u01fe\b/\u00010\u00010\u00010\u00030\u0203\b0\u00010\u00010\u0001"+ - "0\u0000\u0003\u0002\n\u00101\u0000\u0002\u0004\u0006\b\n\f\u000e\u0010"+ - "\u0012\u0014\u0016\u0018\u001a\u001c\u001e \"$&(*,.02468:<>@BDFHJLNPR"+ - "TVXZ\\^`\u0000\t\u0001\u0000:;\u0001\u0000<>\u0002\u0000BBGG\u0001\u0000"+ - "AB\u0002\u0000BBKK\u0002\u0000 ##\u0001\u0000&\'\u0002\u0000%%33\u0001"+ - "\u000049\u0224\u0000b\u0001\u0000\u0000\u0000\u0002e\u0001\u0000\u0000"+ - "\u0000\u0004t\u0001\u0000\u0000\u0000\u0006\u0083\u0001\u0000\u0000\u0000"+ - "\b\u0085\u0001\u0000\u0000\u0000\n\u00a4\u0001\u0000\u0000\u0000\f\u00bf"+ - "\u0001\u0000\u0000\u0000\u000e\u00c6\u0001\u0000\u0000\u0000\u0010\u00cc"+ - "\u0001\u0000\u0000\u0000\u0012\u00e0\u0001\u0000\u0000\u0000\u0014\u00e2"+ - "\u0001\u0000\u0000\u0000\u0016\u00f1\u0001\u0000\u0000\u0000\u0018\u00f4"+ - "\u0001\u0000\u0000\u0000\u001a\u0101\u0001\u0000\u0000\u0000\u001c\u0103"+ - "\u0001\u0000\u0000\u0000\u001e\u010f\u0001\u0000\u0000\u0000 \u011b\u0001"+ - "\u0000\u0000\u0000\"\u011e\u0001\u0000\u0000\u0000$\u0126\u0001\u0000"+ - "\u0000\u0000&\u012c\u0001\u0000\u0000\u0000(\u0134\u0001\u0000\u0000\u0000"+ - "*\u0136\u0001\u0000\u0000\u0000,\u013e\u0001\u0000\u0000\u0000.\u0146"+ - "\u0001\u0000\u0000\u00000\u0148\u0001\u0000\u0000\u00002\u0174\u0001\u0000"+ - "\u0000\u00004\u0176\u0001\u0000\u0000\u00006\u0179\u0001\u0000\u0000\u0000"+ - "8\u0182\u0001\u0000\u0000\u0000:\u019c\u0001\u0000\u0000\u0000<\u019e"+ - "\u0001\u0000\u0000\u0000>\u01a7\u0001\u0000\u0000\u0000@\u01b0\u0001\u0000"+ - "\u0000\u0000B\u01b4\u0001\u0000\u0000\u0000D\u01ba\u0001\u0000\u0000\u0000"+ - "F\u01be\u0001\u0000\u0000\u0000H\u01c1\u0001\u0000\u0000\u0000J\u01c9"+ - "\u0001\u0000\u0000\u0000L\u01cd\u0001\u0000\u0000\u0000N\u01d1\u0001\u0000"+ - "\u0000\u0000P\u01d4\u0001\u0000\u0000\u0000R\u01d9\u0001\u0000\u0000\u0000"+ - "T\u01dd\u0001\u0000\u0000\u0000V\u01df\u0001\u0000\u0000\u0000X\u01e1"+ - "\u0001\u0000\u0000\u0000Z\u01e4\u0001\u0000\u0000\u0000\\\u01ec\u0001"+ - "\u0000\u0000\u0000^\u01ee\u0001\u0000\u0000\u0000`\u0202\u0001\u0000\u0000"+ - "\u0000bc\u0003\u0002\u0001\u0000cd\u0005\u0000\u0000\u0001d\u0001\u0001"+ - "\u0000\u0000\u0000ef\u0006\u0001\uffff\uffff\u0000fg\u0003\u0004\u0002"+ - "\u0000gm\u0001\u0000\u0000\u0000hi\n\u0001\u0000\u0000ij\u0005\u001a\u0000"+ - "\u0000jl\u0003\u0006\u0003\u0000kh\u0001\u0000\u0000\u0000lo\u0001\u0000"+ - "\u0000\u0000mk\u0001\u0000\u0000\u0000mn\u0001\u0000\u0000\u0000n\u0003"+ - "\u0001\u0000\u0000\u0000om\u0001\u0000\u0000\u0000pu\u0003X,\u0000qu\u0003"+ - "\u001c\u000e\u0000ru\u0003\u0016\u000b\u0000su\u0003\\.\u0000tp\u0001"+ - "\u0000\u0000\u0000tq\u0001\u0000\u0000\u0000tr\u0001\u0000\u0000\u0000"+ - "ts\u0001\u0000\u0000\u0000u\u0005\u0001\u0000\u0000\u0000v\u0084\u0003"+ - " \u0010\u0000w\u0084\u0003$\u0012\u0000x\u0084\u00034\u001a\u0000y\u0084"+ - "\u0003:\u001d\u0000z\u0084\u00036\u001b\u0000{\u0084\u0003\"\u0011\u0000"+ - "|\u0084\u0003\b\u0004\u0000}\u0084\u0003<\u001e\u0000~\u0084\u0003>\u001f"+ - "\u0000\u007f\u0084\u0003B!\u0000\u0080\u0084\u0003D\"\u0000\u0081\u0084"+ - "\u0003^/\u0000\u0082\u0084\u0003F#\u0000\u0083v\u0001\u0000\u0000\u0000"+ - "\u0083w\u0001\u0000\u0000\u0000\u0083x\u0001\u0000\u0000\u0000\u0083y"+ - "\u0001\u0000\u0000\u0000\u0083z\u0001\u0000\u0000\u0000\u0083{\u0001\u0000"+ - "\u0000\u0000\u0083|\u0001\u0000\u0000\u0000\u0083}\u0001\u0000\u0000\u0000"+ - "\u0083~\u0001\u0000\u0000\u0000\u0083\u007f\u0001\u0000\u0000\u0000\u0083"+ - "\u0080\u0001\u0000\u0000\u0000\u0083\u0081\u0001\u0000\u0000\u0000\u0083"+ - "\u0082\u0001\u0000\u0000\u0000\u0084\u0007\u0001\u0000\u0000\u0000\u0085"+ - "\u0086\u0005\u0012\u0000\u0000\u0086\u0087\u0003\n\u0005\u0000\u0087\t"+ - "\u0001\u0000\u0000\u0000\u0088\u0089\u0006\u0005\uffff\uffff\u0000\u0089"+ - "\u008a\u0005,\u0000\u0000\u008a\u00a5\u0003\n\u0005\u0007\u008b\u00a5"+ - "\u0003\u000e\u0007\u0000\u008c\u00a5\u0003\f\u0006\u0000\u008d\u008f\u0003"+ - "\u000e\u0007\u0000\u008e\u0090\u0005,\u0000\u0000\u008f\u008e\u0001\u0000"+ - "\u0000\u0000\u008f\u0090\u0001\u0000\u0000\u0000\u0090\u0091\u0001\u0000"+ - "\u0000\u0000\u0091\u0092\u0005)\u0000\u0000\u0092\u0093\u0005(\u0000\u0000"+ - "\u0093\u0098\u0003\u000e\u0007\u0000\u0094\u0095\u0005\"\u0000\u0000\u0095"+ - "\u0097\u0003\u000e\u0007\u0000\u0096\u0094\u0001\u0000\u0000\u0000\u0097"+ - "\u009a\u0001\u0000\u0000\u0000\u0098\u0096\u0001\u0000\u0000\u0000\u0098"+ - "\u0099\u0001\u0000\u0000\u0000\u0099\u009b\u0001\u0000\u0000\u0000\u009a"+ - "\u0098\u0001\u0000\u0000\u0000\u009b\u009c\u00052\u0000\u0000\u009c\u00a5"+ - "\u0001\u0000\u0000\u0000\u009d\u009e\u0003\u000e\u0007\u0000\u009e\u00a0"+ - "\u0005*\u0000\u0000\u009f\u00a1\u0005,\u0000\u0000\u00a0\u009f\u0001\u0000"+ - "\u0000\u0000\u00a0\u00a1\u0001\u0000\u0000\u0000\u00a1\u00a2\u0001\u0000"+ - "\u0000\u0000\u00a2\u00a3\u0005-\u0000\u0000\u00a3\u00a5\u0001\u0000\u0000"+ - "\u0000\u00a4\u0088\u0001\u0000\u0000\u0000\u00a4\u008b\u0001\u0000\u0000"+ - "\u0000\u00a4\u008c\u0001\u0000\u0000\u0000\u00a4\u008d\u0001\u0000\u0000"+ - "\u0000\u00a4\u009d\u0001\u0000\u0000\u0000\u00a5\u00ae\u0001\u0000\u0000"+ - "\u0000\u00a6\u00a7\n\u0004\u0000\u0000\u00a7\u00a8\u0005\u001f\u0000\u0000"+ - "\u00a8\u00ad\u0003\n\u0005\u0005\u00a9\u00aa\n\u0003\u0000\u0000\u00aa"+ - "\u00ab\u0005/\u0000\u0000\u00ab\u00ad\u0003\n\u0005\u0004\u00ac\u00a6"+ - "\u0001\u0000\u0000\u0000\u00ac\u00a9\u0001\u0000\u0000\u0000\u00ad\u00b0"+ - "\u0001\u0000\u0000\u0000\u00ae\u00ac\u0001\u0000\u0000\u0000\u00ae\u00af"+ - "\u0001\u0000\u0000\u0000\u00af\u000b\u0001\u0000\u0000\u0000\u00b0\u00ae"+ - "\u0001\u0000\u0000\u0000\u00b1\u00b3\u0003\u000e\u0007\u0000\u00b2\u00b4"+ - "\u0005,\u0000\u0000\u00b3\u00b2\u0001\u0000\u0000\u0000\u00b3\u00b4\u0001"+ - "\u0000\u0000\u0000\u00b4\u00b5\u0001\u0000\u0000\u0000\u00b5\u00b6\u0005"+ - "+\u0000\u0000\u00b6\u00b7\u0003T*\u0000\u00b7\u00c0\u0001\u0000\u0000"+ - "\u0000\u00b8\u00ba\u0003\u000e\u0007\u0000\u00b9\u00bb\u0005,\u0000\u0000"+ - "\u00ba\u00b9\u0001\u0000\u0000\u0000\u00ba\u00bb\u0001\u0000\u0000\u0000"+ - "\u00bb\u00bc\u0001\u0000\u0000\u0000\u00bc\u00bd\u00051\u0000\u0000\u00bd"+ - "\u00be\u0003T*\u0000\u00be\u00c0\u0001\u0000\u0000\u0000\u00bf\u00b1\u0001"+ - "\u0000\u0000\u0000\u00bf\u00b8\u0001\u0000\u0000\u0000\u00c0\r\u0001\u0000"+ - "\u0000\u0000\u00c1\u00c7\u0003\u0010\b\u0000\u00c2\u00c3\u0003\u0010\b"+ - "\u0000\u00c3\u00c4\u0003V+\u0000\u00c4\u00c5\u0003\u0010\b\u0000\u00c5"+ - "\u00c7\u0001\u0000\u0000\u0000\u00c6\u00c1\u0001\u0000\u0000\u0000\u00c6"+ - "\u00c2\u0001\u0000\u0000\u0000\u00c7\u000f\u0001\u0000\u0000\u0000\u00c8"+ - "\u00c9\u0006\b\uffff\uffff\u0000\u00c9\u00cd\u0003\u0012\t\u0000\u00ca"+ - "\u00cb\u0007\u0000\u0000\u0000\u00cb\u00cd\u0003\u0010\b\u0003\u00cc\u00c8"+ - "\u0001\u0000\u0000\u0000\u00cc\u00ca\u0001\u0000\u0000\u0000\u00cd\u00d6"+ - "\u0001\u0000\u0000\u0000\u00ce\u00cf\n\u0002\u0000\u0000\u00cf\u00d0\u0007"+ - "\u0001\u0000\u0000\u00d0\u00d5\u0003\u0010\b\u0003\u00d1\u00d2\n\u0001"+ - "\u0000\u0000\u00d2\u00d3\u0007\u0000\u0000\u0000\u00d3\u00d5\u0003\u0010"+ - "\b\u0002\u00d4\u00ce\u0001\u0000\u0000\u0000\u00d4\u00d1\u0001\u0000\u0000"+ - "\u0000\u00d5\u00d8\u0001\u0000\u0000\u0000\u00d6\u00d4\u0001\u0000\u0000"+ - "\u0000\u00d6\u00d7\u0001\u0000\u0000\u0000\u00d7\u0011\u0001\u0000\u0000"+ - "\u0000\u00d8\u00d6\u0001\u0000\u0000\u0000\u00d9\u00e1\u00032\u0019\u0000"+ - "\u00da\u00e1\u0003*\u0015\u0000\u00db\u00e1\u0003\u0014\n\u0000\u00dc"+ - "\u00dd\u0005(\u0000\u0000\u00dd\u00de\u0003\n\u0005\u0000\u00de\u00df"+ - "\u00052\u0000\u0000\u00df\u00e1\u0001\u0000\u0000\u0000\u00e0\u00d9\u0001"+ - "\u0000\u0000\u0000\u00e0\u00da\u0001\u0000\u0000\u0000\u00e0\u00db\u0001"+ - "\u0000\u0000\u0000\u00e0\u00dc\u0001\u0000\u0000\u0000\u00e1\u0013\u0001"+ - "\u0000\u0000\u0000\u00e2\u00e3\u0003.\u0017\u0000\u00e3\u00ed\u0005(\u0000"+ - "\u0000\u00e4\u00ee\u0005<\u0000\u0000\u00e5\u00ea\u0003\n\u0005\u0000"+ - "\u00e6\u00e7\u0005\"\u0000\u0000\u00e7\u00e9\u0003\n\u0005\u0000\u00e8"+ - "\u00e6\u0001\u0000\u0000\u0000\u00e9\u00ec\u0001\u0000\u0000\u0000\u00ea"+ - "\u00e8\u0001\u0000\u0000\u0000\u00ea\u00eb\u0001\u0000\u0000\u0000\u00eb"+ - "\u00ee\u0001\u0000\u0000\u0000\u00ec\u00ea\u0001\u0000\u0000\u0000\u00ed"+ - "\u00e4\u0001\u0000\u0000\u0000\u00ed\u00e5\u0001\u0000\u0000\u0000\u00ed"+ - "\u00ee\u0001\u0000\u0000\u0000\u00ee\u00ef\u0001\u0000\u0000\u0000\u00ef"+ - "\u00f0\u00052\u0000\u0000\u00f0\u0015\u0001\u0000\u0000\u0000\u00f1\u00f2"+ - "\u0005\u000e\u0000\u0000\u00f2\u00f3\u0003\u0018\f\u0000\u00f3\u0017\u0001"+ - "\u0000\u0000\u0000\u00f4\u00f9\u0003\u001a\r\u0000\u00f5\u00f6\u0005\""+ - "\u0000\u0000\u00f6\u00f8\u0003\u001a\r\u0000\u00f7\u00f5\u0001\u0000\u0000"+ - "\u0000\u00f8\u00fb\u0001\u0000\u0000\u0000\u00f9\u00f7\u0001\u0000\u0000"+ - "\u0000\u00f9\u00fa\u0001\u0000\u0000\u0000\u00fa\u0019\u0001\u0000\u0000"+ - "\u0000\u00fb\u00f9\u0001\u0000\u0000\u0000\u00fc\u0102\u0003\n\u0005\u0000"+ - "\u00fd\u00fe\u0003*\u0015\u0000\u00fe\u00ff\u0005!\u0000\u0000\u00ff\u0100"+ - "\u0003\n\u0005\u0000\u0100\u0102\u0001\u0000\u0000\u0000\u0101\u00fc\u0001"+ - "\u0000\u0000\u0000\u0101\u00fd\u0001\u0000\u0000\u0000\u0102\u001b\u0001"+ - "\u0000\u0000\u0000\u0103\u0104\u0005\u0006\u0000\u0000\u0104\u0109\u0003"+ - "(\u0014\u0000\u0105\u0106\u0005\"\u0000\u0000\u0106\u0108\u0003(\u0014"+ - "\u0000\u0107\u0105\u0001\u0000\u0000\u0000\u0108\u010b\u0001\u0000\u0000"+ - "\u0000\u0109\u0107\u0001\u0000\u0000\u0000\u0109\u010a\u0001\u0000\u0000"+ - "\u0000\u010a\u010d\u0001\u0000\u0000\u0000\u010b\u0109\u0001\u0000\u0000"+ - "\u0000\u010c\u010e\u0003\u001e\u000f\u0000\u010d\u010c\u0001\u0000\u0000"+ - "\u0000\u010d\u010e\u0001\u0000\u0000\u0000\u010e\u001d\u0001\u0000\u0000"+ - "\u0000\u010f\u0110\u0005?\u0000\u0000\u0110\u0111\u0005F\u0000\u0000\u0111"+ - "\u0116\u0003(\u0014\u0000\u0112\u0113\u0005\"\u0000\u0000\u0113\u0115"+ - "\u0003(\u0014\u0000\u0114\u0112\u0001\u0000\u0000\u0000\u0115\u0118\u0001"+ - "\u0000\u0000\u0000\u0116\u0114\u0001\u0000\u0000\u0000\u0116\u0117\u0001"+ - "\u0000\u0000\u0000\u0117\u0119\u0001\u0000\u0000\u0000\u0118\u0116\u0001"+ - "\u0000\u0000\u0000\u0119\u011a\u0005@\u0000\u0000\u011a\u001f\u0001\u0000"+ - "\u0000\u0000\u011b\u011c\u0005\u0004\u0000\u0000\u011c\u011d\u0003\u0018"+ - "\f\u0000\u011d!\u0001\u0000\u0000\u0000\u011e\u0120\u0005\u0011\u0000"+ - "\u0000\u011f\u0121\u0003\u0018\f\u0000\u0120\u011f\u0001\u0000\u0000\u0000"+ - "\u0120\u0121\u0001\u0000\u0000\u0000\u0121\u0124\u0001\u0000\u0000\u0000"+ - "\u0122\u0123\u0005\u001e\u0000\u0000\u0123\u0125\u0003&\u0013\u0000\u0124"+ - "\u0122\u0001\u0000\u0000\u0000\u0124\u0125\u0001\u0000\u0000\u0000\u0125"+ - "#\u0001\u0000\u0000\u0000\u0126\u0127\u0005\b\u0000\u0000\u0127\u012a"+ - "\u0003\u0018\f\u0000\u0128\u0129\u0005\u001e\u0000\u0000\u0129\u012b\u0003"+ - "&\u0013\u0000\u012a\u0128\u0001\u0000\u0000\u0000\u012a\u012b\u0001\u0000"+ - "\u0000\u0000\u012b%\u0001\u0000\u0000\u0000\u012c\u0131\u0003*\u0015\u0000"+ - "\u012d\u012e\u0005\"\u0000\u0000\u012e\u0130\u0003*\u0015\u0000\u012f"+ - "\u012d\u0001\u0000\u0000\u0000\u0130\u0133\u0001\u0000\u0000\u0000\u0131"+ - "\u012f\u0001\u0000\u0000\u0000\u0131\u0132\u0001\u0000\u0000\u0000\u0132"+ - "\'\u0001\u0000\u0000\u0000\u0133\u0131\u0001\u0000\u0000\u0000\u0134\u0135"+ - "\u0007\u0002\u0000\u0000\u0135)\u0001\u0000\u0000\u0000\u0136\u013b\u0003"+ - ".\u0017\u0000\u0137\u0138\u0005$\u0000\u0000\u0138\u013a\u0003.\u0017"+ - "\u0000\u0139\u0137\u0001\u0000\u0000\u0000\u013a\u013d\u0001\u0000\u0000"+ - "\u0000\u013b\u0139\u0001\u0000\u0000\u0000\u013b\u013c\u0001\u0000\u0000"+ - "\u0000\u013c+\u0001\u0000\u0000\u0000\u013d\u013b\u0001\u0000\u0000\u0000"+ - "\u013e\u0143\u00030\u0018\u0000\u013f\u0140\u0005$\u0000\u0000\u0140\u0142"+ - "\u00030\u0018\u0000\u0141\u013f\u0001\u0000\u0000\u0000\u0142\u0145\u0001"+ - "\u0000\u0000\u0000\u0143\u0141\u0001\u0000\u0000\u0000\u0143\u0144\u0001"+ - "\u0000\u0000\u0000\u0144-\u0001\u0000\u0000\u0000\u0145\u0143\u0001\u0000"+ - "\u0000\u0000\u0146\u0147\u0007\u0003\u0000\u0000\u0147/\u0001\u0000\u0000"+ - "\u0000\u0148\u0149\u0007\u0004\u0000\u0000\u01491\u0001\u0000\u0000\u0000"+ - "\u014a\u0175\u0005-\u0000\u0000\u014b\u014c\u0003R)\u0000\u014c\u014d"+ - "\u0005A\u0000\u0000\u014d\u0175\u0001\u0000\u0000\u0000\u014e\u0175\u0003"+ - "P(\u0000\u014f\u0175\u0003R)\u0000\u0150\u0175\u0003L&\u0000\u0151\u0175"+ - "\u00050\u0000\u0000\u0152\u0175\u0003T*\u0000\u0153\u0154\u0005?\u0000"+ - "\u0000\u0154\u0159\u0003N\'\u0000\u0155\u0156\u0005\"\u0000\u0000\u0156"+ - "\u0158\u0003N\'\u0000\u0157\u0155\u0001\u0000\u0000\u0000\u0158\u015b"+ - "\u0001\u0000\u0000\u0000\u0159\u0157\u0001\u0000\u0000\u0000\u0159\u015a"+ - "\u0001\u0000\u0000\u0000\u015a\u015c\u0001\u0000\u0000\u0000\u015b\u0159"+ - "\u0001\u0000\u0000\u0000\u015c\u015d\u0005@\u0000\u0000\u015d\u0175\u0001"+ - "\u0000\u0000\u0000\u015e\u015f\u0005?\u0000\u0000\u015f\u0164\u0003L&"+ - "\u0000\u0160\u0161\u0005\"\u0000\u0000\u0161\u0163\u0003L&\u0000\u0162"+ - "\u0160\u0001\u0000\u0000\u0000\u0163\u0166\u0001\u0000\u0000\u0000\u0164"+ - "\u0162\u0001\u0000\u0000\u0000\u0164\u0165\u0001\u0000\u0000\u0000\u0165"+ - "\u0167\u0001\u0000\u0000\u0000\u0166\u0164\u0001\u0000\u0000\u0000\u0167"+ - "\u0168\u0005@\u0000\u0000\u0168\u0175\u0001\u0000\u0000\u0000\u0169\u016a"+ - "\u0005?\u0000\u0000\u016a\u016f\u0003T*\u0000\u016b\u016c\u0005\"\u0000"+ - "\u0000\u016c\u016e\u0003T*\u0000\u016d\u016b\u0001\u0000\u0000\u0000\u016e"+ - "\u0171\u0001\u0000\u0000\u0000\u016f\u016d\u0001\u0000\u0000\u0000\u016f"+ - "\u0170\u0001\u0000\u0000\u0000\u0170\u0172\u0001\u0000\u0000\u0000\u0171"+ - "\u016f\u0001\u0000\u0000\u0000\u0172\u0173\u0005@\u0000\u0000\u0173\u0175"+ - "\u0001\u0000\u0000\u0000\u0174\u014a\u0001\u0000\u0000\u0000\u0174\u014b"+ - "\u0001\u0000\u0000\u0000\u0174\u014e\u0001\u0000\u0000\u0000\u0174\u014f"+ - "\u0001\u0000\u0000\u0000\u0174\u0150\u0001\u0000\u0000\u0000\u0174\u0151"+ - "\u0001\u0000\u0000\u0000\u0174\u0152\u0001\u0000\u0000\u0000\u0174\u0153"+ - "\u0001\u0000\u0000\u0000\u0174\u015e\u0001\u0000\u0000\u0000\u0174\u0169"+ - "\u0001\u0000\u0000\u0000\u01753\u0001\u0000\u0000\u0000\u0176\u0177\u0005"+ - "\n\u0000\u0000\u0177\u0178\u0005\u001c\u0000\u0000\u01785\u0001\u0000"+ - "\u0000\u0000\u0179\u017a\u0005\u0010\u0000\u0000\u017a\u017f\u00038\u001c"+ - "\u0000\u017b\u017c\u0005\"\u0000\u0000\u017c\u017e\u00038\u001c\u0000"+ - "\u017d\u017b\u0001\u0000\u0000\u0000\u017e\u0181\u0001\u0000\u0000\u0000"+ - "\u017f\u017d\u0001\u0000\u0000\u0000\u017f\u0180\u0001\u0000\u0000\u0000"+ - "\u01807\u0001\u0000\u0000\u0000\u0181\u017f\u0001\u0000\u0000\u0000\u0182"+ - "\u0184\u0003\n\u0005\u0000\u0183\u0185\u0007\u0005\u0000\u0000\u0184\u0183"+ - "\u0001\u0000\u0000\u0000\u0184\u0185\u0001\u0000\u0000\u0000\u0185\u0188"+ - "\u0001\u0000\u0000\u0000\u0186\u0187\u0005.\u0000\u0000\u0187\u0189\u0007"+ - "\u0006\u0000\u0000\u0188\u0186\u0001\u0000\u0000\u0000\u0188\u0189\u0001"+ - "\u0000\u0000\u0000\u01899\u0001\u0000\u0000\u0000\u018a\u018b\u0005\t"+ - "\u0000\u0000\u018b\u0190\u0003,\u0016\u0000\u018c\u018d\u0005\"\u0000"+ - "\u0000\u018d\u018f\u0003,\u0016\u0000\u018e\u018c\u0001\u0000\u0000\u0000"+ - "\u018f\u0192\u0001\u0000\u0000\u0000\u0190\u018e\u0001\u0000\u0000\u0000"+ - "\u0190\u0191\u0001\u0000\u0000\u0000\u0191\u019d\u0001\u0000\u0000\u0000"+ - "\u0192\u0190\u0001\u0000\u0000\u0000\u0193\u0194\u0005\f\u0000\u0000\u0194"+ - "\u0199\u0003,\u0016\u0000\u0195\u0196\u0005\"\u0000\u0000\u0196\u0198"+ - "\u0003,\u0016\u0000\u0197\u0195\u0001\u0000\u0000\u0000\u0198\u019b\u0001"+ - "\u0000\u0000\u0000\u0199\u0197\u0001\u0000\u0000\u0000\u0199\u019a\u0001"+ - "\u0000\u0000\u0000\u019a\u019d\u0001\u0000\u0000\u0000\u019b\u0199\u0001"+ - "\u0000\u0000\u0000\u019c\u018a\u0001\u0000\u0000\u0000\u019c\u0193\u0001"+ - "\u0000\u0000\u0000\u019d;\u0001\u0000\u0000\u0000\u019e\u019f\u0005\u0002"+ - "\u0000\u0000\u019f\u01a4\u0003,\u0016\u0000\u01a0\u01a1\u0005\"\u0000"+ - "\u0000\u01a1\u01a3\u0003,\u0016\u0000\u01a2\u01a0\u0001\u0000\u0000\u0000"+ - "\u01a3\u01a6\u0001\u0000\u0000\u0000\u01a4\u01a2\u0001\u0000\u0000\u0000"+ - "\u01a4\u01a5\u0001\u0000\u0000\u0000\u01a5=\u0001\u0000\u0000\u0000\u01a6"+ - "\u01a4\u0001\u0000\u0000\u0000\u01a7\u01a8\u0005\r\u0000\u0000\u01a8\u01ad"+ - "\u0003@ \u0000\u01a9\u01aa\u0005\"\u0000\u0000\u01aa\u01ac\u0003@ \u0000"+ - "\u01ab\u01a9\u0001\u0000\u0000\u0000\u01ac\u01af\u0001\u0000\u0000\u0000"+ - "\u01ad\u01ab\u0001\u0000\u0000\u0000\u01ad\u01ae\u0001\u0000\u0000\u0000"+ - "\u01ae?\u0001\u0000\u0000\u0000\u01af\u01ad\u0001\u0000\u0000\u0000\u01b0"+ - "\u01b1\u0003,\u0016\u0000\u01b1\u01b2\u0005O\u0000\u0000\u01b2\u01b3\u0003"+ - ",\u0016\u0000\u01b3A\u0001\u0000\u0000\u0000\u01b4\u01b5\u0005\u0001\u0000"+ - "\u0000\u01b5\u01b6\u0003\u0012\t\u0000\u01b6\u01b8\u0003T*\u0000\u01b7"+ - "\u01b9\u0003H$\u0000\u01b8\u01b7\u0001\u0000\u0000\u0000\u01b8\u01b9\u0001"+ - "\u0000\u0000\u0000\u01b9C\u0001\u0000\u0000\u0000\u01ba\u01bb\u0005\u0007"+ - "\u0000\u0000\u01bb\u01bc\u0003\u0012\t\u0000\u01bc\u01bd\u0003T*\u0000"+ - "\u01bdE\u0001\u0000\u0000\u0000\u01be\u01bf\u0005\u000b\u0000\u0000\u01bf"+ - "\u01c0\u0003*\u0015\u0000\u01c0G\u0001\u0000\u0000\u0000\u01c1\u01c6\u0003"+ - "J%\u0000\u01c2\u01c3\u0005\"\u0000\u0000\u01c3\u01c5\u0003J%\u0000\u01c4"+ - "\u01c2\u0001\u0000\u0000\u0000\u01c5\u01c8\u0001\u0000\u0000\u0000\u01c6"+ - "\u01c4\u0001\u0000\u0000\u0000\u01c6\u01c7\u0001\u0000\u0000\u0000\u01c7"+ - "I\u0001\u0000\u0000\u0000\u01c8\u01c6\u0001\u0000\u0000\u0000\u01c9\u01ca"+ - "\u0003.\u0017\u0000\u01ca\u01cb\u0005!\u0000\u0000\u01cb\u01cc\u00032"+ - "\u0019\u0000\u01ccK\u0001\u0000\u0000\u0000\u01cd\u01ce\u0007\u0007\u0000"+ - "\u0000\u01ceM\u0001\u0000\u0000\u0000\u01cf\u01d2\u0003P(\u0000\u01d0"+ - "\u01d2\u0003R)\u0000\u01d1\u01cf\u0001\u0000\u0000\u0000\u01d1\u01d0\u0001"+ - "\u0000\u0000\u0000\u01d2O\u0001\u0000\u0000\u0000\u01d3\u01d5\u0007\u0000"+ - "\u0000\u0000\u01d4\u01d3\u0001\u0000\u0000\u0000\u01d4\u01d5\u0001\u0000"+ - "\u0000\u0000\u01d5\u01d6\u0001\u0000\u0000\u0000\u01d6\u01d7\u0005\u001d"+ - "\u0000\u0000\u01d7Q\u0001\u0000\u0000\u0000\u01d8\u01da\u0007\u0000\u0000"+ - "\u0000\u01d9\u01d8\u0001\u0000\u0000\u0000\u01d9\u01da\u0001\u0000\u0000"+ - "\u0000\u01da\u01db\u0001\u0000\u0000\u0000\u01db\u01dc\u0005\u001c\u0000"+ - "\u0000\u01dcS\u0001\u0000\u0000\u0000\u01dd\u01de\u0005\u001b\u0000\u0000"+ - "\u01deU\u0001\u0000\u0000\u0000\u01df\u01e0\u0007\b\u0000\u0000\u01e0"+ - "W\u0001\u0000\u0000\u0000\u01e1\u01e2\u0005\u0005\u0000\u0000\u01e2\u01e3"+ - "\u0003Z-\u0000\u01e3Y\u0001\u0000\u0000\u0000\u01e4\u01e5\u0005?\u0000"+ - "\u0000\u01e5\u01e6\u0003\u0002\u0001\u0000\u01e6\u01e7\u0005@\u0000\u0000"+ - "\u01e7[\u0001\u0000\u0000\u0000\u01e8\u01e9\u0005\u000f\u0000\u0000\u01e9"+ - "\u01ed\u0005^\u0000\u0000\u01ea\u01eb\u0005\u000f\u0000\u0000\u01eb\u01ed"+ - "\u0005_\u0000\u0000\u01ec\u01e8\u0001\u0000\u0000\u0000\u01ec\u01ea\u0001"+ - "\u0000\u0000\u0000\u01ed]\u0001\u0000\u0000\u0000\u01ee\u01ef\u0005\u0003"+ - "\u0000\u0000\u01ef\u01f2\u0003(\u0014\u0000\u01f0\u01f1\u0005S\u0000\u0000"+ - "\u01f1\u01f3\u0003,\u0016\u0000\u01f2\u01f0\u0001\u0000\u0000\u0000\u01f2"+ - "\u01f3\u0001\u0000\u0000\u0000\u01f3\u01fd\u0001\u0000\u0000\u0000\u01f4"+ - "\u01f5\u0005T\u0000\u0000\u01f5\u01fa\u0003`0\u0000\u01f6\u01f7\u0005"+ - "\"\u0000\u0000\u01f7\u01f9\u0003`0\u0000\u01f8\u01f6\u0001\u0000\u0000"+ - "\u0000\u01f9\u01fc\u0001\u0000\u0000\u0000\u01fa\u01f8\u0001\u0000\u0000"+ - "\u0000\u01fa\u01fb\u0001\u0000\u0000\u0000\u01fb\u01fe\u0001\u0000\u0000"+ - "\u0000\u01fc\u01fa\u0001\u0000\u0000\u0000\u01fd\u01f4\u0001\u0000\u0000"+ - "\u0000\u01fd\u01fe\u0001\u0000\u0000\u0000\u01fe_\u0001\u0000\u0000\u0000"+ - "\u01ff\u0200\u0003,\u0016\u0000\u0200\u0201\u0005!\u0000\u0000\u0201\u0203"+ - "\u0001\u0000\u0000\u0000\u0202\u01ff\u0001\u0000\u0000\u0000\u0202\u0203"+ - "\u0001\u0000\u0000\u0000\u0203\u0204\u0001\u0000\u0000\u0000\u0204\u0205"+ - "\u0003,\u0016\u0000\u0205a\u0001\u0000\u0000\u00004mt\u0083\u008f\u0098"+ - "\u00a0\u00a4\u00ac\u00ae\u00b3\u00ba\u00bf\u00c6\u00cc\u00d4\u00d6\u00e0"+ - "\u00ea\u00ed\u00f9\u0101\u0109\u010d\u0116\u0120\u0124\u012a\u0131\u013b"+ - "\u0143\u0159\u0164\u016f\u0174\u017f\u0184\u0188\u0190\u0199\u019c\u01a4"+ - "\u01ad\u01b8\u01c6\u01d1\u01d4\u01d9\u01ec\u01f2\u01fa\u01fd\u0202"; - public static final ATN _ATN = - new ATNDeserializer().deserialize(_serializedATN.toCharArray()); - static { - _decisionToDFA = new DFA[_ATN.getNumberOfDecisions()]; - for (int i = 0; i < _ATN.getNumberOfDecisions(); i++) { - _decisionToDFA[i] = new DFA(_ATN.getDecisionState(i), i); - } - } -} \ No newline at end of file diff --git a/packages/kbn-esql/src/antlr/.antlr/esql_parser.tokens b/packages/kbn-esql/src/antlr/.antlr/esql_parser.tokens deleted file mode 100644 index 85a98c3a6d268..0000000000000 --- a/packages/kbn-esql/src/antlr/.antlr/esql_parser.tokens +++ /dev/null @@ -1,117 +0,0 @@ -DISSECT=1 -DROP=2 -ENRICH=3 -EVAL=4 -EXPLAIN=5 -FROM=6 -GROK=7 -INLINESTATS=8 -KEEP=9 -LIMIT=10 -MV_EXPAND=11 -PROJECT=12 -RENAME=13 -ROW=14 -SHOW=15 -SORT=16 -STATS=17 -WHERE=18 -UNKNOWN_CMD=19 -LINE_COMMENT=20 -MULTILINE_COMMENT=21 -WS=22 -EXPLAIN_WS=23 -EXPLAIN_LINE_COMMENT=24 -EXPLAIN_MULTILINE_COMMENT=25 -PIPE=26 -STRING=27 -INTEGER_LITERAL=28 -DECIMAL_LITERAL=29 -BY=30 -AND=31 -ASC=32 -ASSIGN=33 -COMMA=34 -DESC=35 -DOT=36 -FALSE=37 -FIRST=38 -LAST=39 -LP=40 -IN=41 -IS=42 -LIKE=43 -NOT=44 -NULL=45 -NULLS=46 -OR=47 -PARAM=48 -RLIKE=49 -RP=50 -TRUE=51 -EQ=52 -NEQ=53 -LT=54 -LTE=55 -GT=56 -GTE=57 -PLUS=58 -MINUS=59 -ASTERISK=60 -SLASH=61 -PERCENT=62 -OPENING_BRACKET=63 -CLOSING_BRACKET=64 -UNQUOTED_IDENTIFIER=65 -QUOTED_IDENTIFIER=66 -EXPR_LINE_COMMENT=67 -EXPR_MULTILINE_COMMENT=68 -EXPR_WS=69 -METADATA=70 -FROM_UNQUOTED_IDENTIFIER=71 -FROM_LINE_COMMENT=72 -FROM_MULTILINE_COMMENT=73 -FROM_WS=74 -PROJECT_UNQUOTED_IDENTIFIER=75 -PROJECT_LINE_COMMENT=76 -PROJECT_MULTILINE_COMMENT=77 -PROJECT_WS=78 -AS=79 -RENAME_LINE_COMMENT=80 -RENAME_MULTILINE_COMMENT=81 -RENAME_WS=82 -ON=83 -WITH=84 -ENRICH_LINE_COMMENT=85 -ENRICH_MULTILINE_COMMENT=86 -ENRICH_WS=87 -ENRICH_FIELD_LINE_COMMENT=88 -ENRICH_FIELD_MULTILINE_COMMENT=89 -ENRICH_FIELD_WS=90 -MVEXPAND_LINE_COMMENT=91 -MVEXPAND_MULTILINE_COMMENT=92 -MVEXPAND_WS=93 -INFO=94 -FUNCTIONS=95 -SHOW_LINE_COMMENT=96 -SHOW_MULTILINE_COMMENT=97 -SHOW_WS=98 -'|'=26 -'='=33 -','=34 -'.'=36 -'('=40 -'?'=48 -')'=50 -'=='=52 -'!='=53 -'<'=54 -'<='=55 -'>'=56 -'>='=57 -'+'=58 -'-'=59 -'*'=60 -'/'=61 -'%'=62 -']'=64 diff --git a/packages/kbn-language-documentation-popover/kibana.jsonc b/packages/kbn-language-documentation-popover/kibana.jsonc index 49dcff96d5f86..59eaf56cef7d4 100644 --- a/packages/kbn-language-documentation-popover/kibana.jsonc +++ b/packages/kbn-language-documentation-popover/kibana.jsonc @@ -1,5 +1,5 @@ { "type": "shared-common", "id": "@kbn/language-documentation-popover", - "owner": "@elastic/kibana-visualizations" + "owner": "@elastic/kibana-esql" } diff --git a/packages/kbn-management/settings/setting_ids/index.ts b/packages/kbn-management/settings/setting_ids/index.ts index 38d7c56c75259..bd026c15c54db 100644 --- a/packages/kbn-management/settings/setting_ids/index.ts +++ b/packages/kbn-management/settings/setting_ids/index.ts @@ -135,6 +135,8 @@ export const OBSERVABILITY_APM_ENABLE_CONTINUOUS_ROLLUPS_ID = export const OBSERVABILITY_APM_ENABLE_PROFILING_INTEGRATION_ID = 'observability:apmEnableProfilingIntegration'; export const OBSERVABILITY_APM_ENABLE_TABLE_SEARCH_BAR = 'observability:apmEnableTableSearchBar'; +export const OBSERVABILITY_APM_ENABLE_SERVICE_INVENTORY_TABLE_SEARCH_BAR = + 'observability:apmEnableServiceInventoryTableSearchBar'; export const OBSERVABILITY_LOGS_EXPLORER_ALLOWED_DATA_VIEWS_ID = 'observability:logsExplorer:allowedDataViews'; diff --git a/packages/kbn-monaco/BUILD.bazel b/packages/kbn-monaco/BUILD.bazel index 05616f813e937..9a2e2b8f03243 100644 --- a/packages/kbn-monaco/BUILD.bazel +++ b/packages/kbn-monaco/BUILD.bazel @@ -26,10 +26,11 @@ SRCS = glob( SHARED_DEPS = [ "//packages/kbn-i18n", "//packages/kbn-ui-theme", + "//packages/kbn-esql-validation-autocomplete", + "//packages/kbn-esql-ast", "@npm//antlr4", "@npm//monaco-editor", "@npm//monaco-yaml", - "@npm//js-levenshtein", ] webpack_cli( diff --git a/packages/kbn-monaco/index.ts b/packages/kbn-monaco/index.ts index 49f93e85e77d1..25f683aacb247 100644 --- a/packages/kbn-monaco/index.ts +++ b/packages/kbn-monaco/index.ts @@ -20,7 +20,7 @@ export { export { XJsonLang } from './src/xjson'; export { SQLLang } from './src/sql'; export { ESQL_LANG_ID, ESQL_THEME_ID, ESQLLang } from './src/esql'; -export type { ESQLCallbacks } from './src/esql'; +export type { ESQLCallbacks } from '@kbn/esql-validation-autocomplete'; export * from './src/painless'; /* eslint-disable-next-line @kbn/eslint/module_migration */ @@ -32,4 +32,4 @@ import { registerLanguage } from './src/helpers'; export { BarePluginApi, registerLanguage }; export * from './src/types'; -export { CONSOLE_LANG_ID } from './src/console'; +export { CONSOLE_LANG_ID, CONSOLE_THEME_ID } from './src/console'; diff --git a/packages/kbn-monaco/package.json b/packages/kbn-monaco/package.json index 3f700e2abd369..4e2535870953a 100644 --- a/packages/kbn-monaco/package.json +++ b/packages/kbn-monaco/package.json @@ -5,7 +5,6 @@ "license": "SSPL-1.0 OR Elastic License 2.0", "scripts": { "build:antlr4:painless": "antlr -Dlanguage=TypeScript ./src/painless/antlr/painless_lexer.g4 ./src/painless/antlr/painless_parser.g4 && node ./scripts/fix_generated_antlr.js painless", - "build:antlr4:esql": "antlr -Dlanguage=TypeScript src/esql/antlr/esql_lexer.g4 src/esql/antlr/esql_parser.g4 && node ./scripts/fix_generated_antlr.js esql && node ./scripts/esql_update_ast_script.js", "prebuild:antlr4": "brew bundle --file=./scripts/antlr4_tools/brewfile", "build:antlr4": "yarn run build:antlr4:painless && npm run build:antlr4:esql" } diff --git a/packages/kbn-monaco/src/common/diagnostics_adapter.ts b/packages/kbn-monaco/src/common/diagnostics_adapter.ts index 5dedce11bf54c..cf878996796d2 100644 --- a/packages/kbn-monaco/src/common/diagnostics_adapter.ts +++ b/packages/kbn-monaco/src/common/diagnostics_adapter.ts @@ -9,9 +9,14 @@ import { BehaviorSubject } from 'rxjs'; import { monaco } from '../monaco_imports'; -import type { SyntaxErrors, LangValidation, EditorError, BaseWorkerDefinition } from '../types'; - -const toDiagnostics = (error: EditorError): monaco.editor.IMarkerData => { +import type { + SyntaxErrors, + LangValidation, + MonacoEditorError, + BaseWorkerDefinition, +} from '../types'; + +const toDiagnostics = (error: MonacoEditorError): monaco.editor.IMarkerData => { return { ...error, severity: monaco.MarkerSeverity.Error, diff --git a/packages/kbn-monaco/src/common/error_listener.ts b/packages/kbn-monaco/src/common/error_listener.ts index d1d0db4310544..dafa7be831b89 100644 --- a/packages/kbn-monaco/src/common/error_listener.ts +++ b/packages/kbn-monaco/src/common/error_listener.ts @@ -8,10 +8,10 @@ import type { Recognizer, RecognitionException } from 'antlr4'; import { ErrorListener } from 'antlr4'; -import type { EditorError } from '../types'; +import type { MonacoEditorError } from '../types'; export class ANTLRErrorListener extends ErrorListener { - protected errors: EditorError[] = []; + protected errors: MonacoEditorError[] = []; syntaxError( recognizer: Recognizer, @@ -37,7 +37,7 @@ export class ANTLRErrorListener extends ErrorListener { }); } - getErrors(): EditorError[] { + getErrors(): MonacoEditorError[] { return this.errors; } } diff --git a/packages/kbn-monaco/src/xjson/lexer_rules/shared.ts b/packages/kbn-monaco/src/common/lexer_rules.ts similarity index 100% rename from packages/kbn-monaco/src/xjson/lexer_rules/shared.ts rename to packages/kbn-monaco/src/common/lexer_rules.ts diff --git a/packages/kbn-monaco/src/common/theme.ts b/packages/kbn-monaco/src/common/theme.ts new file mode 100644 index 0000000000000..57f42eb70fc87 --- /dev/null +++ b/packages/kbn-monaco/src/common/theme.ts @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export const themeRuleGroupBuilderFactory = + (postfix: string = '') => + (tokens: string[], color: string, isBold: boolean = false) => + tokens.map((i) => ({ + token: i + postfix, + foreground: color, + fontStyle: isBold ? 'bold' : '', + })); diff --git a/packages/kbn-monaco/src/console/constants.ts b/packages/kbn-monaco/src/console/constants.ts index b777e6eb22532..1eba867b617c0 100644 --- a/packages/kbn-monaco/src/console/constants.ts +++ b/packages/kbn-monaco/src/console/constants.ts @@ -7,3 +7,5 @@ */ export const CONSOLE_LANG_ID = 'console'; +export const CONSOLE_THEME_ID = 'consoleTheme'; +export const CONSOLE_POSTFIX = '.console'; diff --git a/packages/kbn-monaco/src/console/index.ts b/packages/kbn-monaco/src/console/index.ts index b7f22299d62ee..e94ebdd0ccae5 100644 --- a/packages/kbn-monaco/src/console/index.ts +++ b/packages/kbn-monaco/src/console/index.ts @@ -15,7 +15,9 @@ import type { LangModuleType } from '../types'; import { CONSOLE_LANG_ID } from './constants'; import { lexerRules, languageConfiguration } from './lexer_rules'; -export { CONSOLE_LANG_ID } from './constants'; +export { CONSOLE_LANG_ID, CONSOLE_THEME_ID } from './constants'; + +export { buildConsoleTheme } from './theme'; export const ConsoleLang: LangModuleType = { ID: CONSOLE_LANG_ID, diff --git a/packages/kbn-monaco/src/console/lexer_rules/index.ts b/packages/kbn-monaco/src/console/lexer_rules/index.ts index fcde238930d57..bf40e2c2824f6 100644 --- a/packages/kbn-monaco/src/console/lexer_rules/index.ts +++ b/packages/kbn-monaco/src/console/lexer_rules/index.ts @@ -7,46 +7,191 @@ */ import { monaco } from '../../monaco_imports'; +import { globals } from '../../common/lexer_rules'; +import { buildXjsonRules } from '../../xjson/lexer_rules/xjson'; -export const languageConfiguration: monaco.languages.LanguageConfiguration = {}; +export const languageConfiguration: monaco.languages.LanguageConfiguration = { + brackets: [ + ['{', '}'], + ['[', ']'], + ], + autoClosingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '"', close: '"' }, + ], +}; + +/* + util function to build the action object + */ +const addNextStateToAction = (tokens: string[], nextState?: string) => { + return tokens.map((token, index) => { + // only last action needs to specify the next state + if (index === tokens.length - 1 && nextState) { + return { token, next: nextState }; + } + return token; + }); +}; + +/* + if regex is matched, tokenize as "token" and move to the state "nextState" if defined + */ +const matchToken = (token: string, regex: string | RegExp, nextState?: string) => { + if (nextState) { + return { regex, action: { token, next: nextState } }; + } + return { regex, action: { token } }; +}; + +/* + if regex is matched, tokenize as "tokens" consecutively and move to the state "nextState" + regex needs to have the same number of capturing group as the number of tokens + */ +const matchTokens = (tokens: string[], regex: string | RegExp, nextState?: string) => { + const action = addNextStateToAction(tokens, nextState); + return { + regex, + action, + }; +}; + +const matchTokensWithEOL = ( + tokens: string | string[], + regex: string | RegExp, + nextIfEOL: string, + normalNext?: string +) => { + if (Array.isArray(tokens)) { + const endOfLineAction = addNextStateToAction(tokens, nextIfEOL); + const action = addNextStateToAction(tokens, normalNext); + return { + regex, + action: { + cases: { + '@eos': endOfLineAction, + '@default': action, + }, + }, + }; + } + return { + regex, + action: { + cases: { + '@eos': { token: tokens, next: nextIfEOL }, + '@default': { token: tokens, next: normalNext }, + }, + }, + }; +}; + +const xjsonRules = { ...buildXjsonRules('json_root') }; +// @ts-expect-error include comments into json +xjsonRules.json_root = [{ include: '@comments' }, ...xjsonRules.json_root]; +xjsonRules.json_root = [ + // @ts-expect-error include variables into json + matchToken('variable.template', /("\${\w+}")/), + ...xjsonRules.json_root, +]; export const lexerRules: monaco.languages.IMonarchLanguage = { + ...(globals as any), + defaultToken: 'invalid', - regex_method: /get|post|put|patch|delete/, - regex_url: /.*$/, - // C# style strings - escapes: /\\(?:[abfnrtv\\"']|x[0-9A-Fa-f]{1,4}|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})/, - ignoreCase: true, tokenizer: { root: [ - // whitespace - { include: '@rule_whitespace' }, - // start a multi-line comment - { include: '@rule_start_multi_comment' }, - // a one-line comment - [/\/\/.*$/, 'comment'], + // warning comment + matchToken('warning', '#!.*$'), + // comments + { include: '@comments' }, + // start of json + matchToken('paren.lparen', '{', 'json_root'), // method - [/@regex_method/, 'keyword'], - // url - [/@regex_url/, 'identifier'], + matchTokensWithEOL('method', /([a-zA-Z]+)/, 'root', 'method_sep'), + // whitespace + matchToken('whitespace', '\\s+'), + // text + matchToken('text', '.+?'), ], - rule_whitespace: [[/[ \t\r\n]+/, 'WHITESPACE']], - rule_start_multi_comment: [[/\/\*/, 'comment', '@rule_multi_comment']], - rule_multi_comment: [ + method_sep: [ + // protocol host with slash + matchTokensWithEOL( + ['whitespace', 'url.protocol_host', 'url.slash'], + /(\s+)(https?:\/\/[^?\/,]+)(\/)/, + 'root', + 'url' + ), + // variable template + matchTokensWithEOL(['whitespace', 'variable.template'], /(\s+)(\${\w+})/, 'root', 'url'), + // protocol host + matchTokensWithEOL( + ['whitespace', 'url.protocol_host'], + /(\s+)(https?:\/\/[^?\/,]+)/, + 'root', + 'url' + ), + // slash + matchTokensWithEOL(['whitespace', 'url.slash'], /(\s+)(\/)/, 'root', 'url'), + // whitespace + matchTokensWithEOL('whitespace', /(\s+)/, 'root', 'url'), + ], + url: [ + // variable template + matchTokensWithEOL('variable.template', /(\${\w+})/, 'root'), + // pathname + matchTokensWithEOL('url.part', /([^?\/,\s]+)\s*/, 'root'), + // comma + matchTokensWithEOL('url.comma', /(,)/, 'root'), + // slash + matchTokensWithEOL('url.slash', /(\/)/, 'root'), + // question mark + matchTokensWithEOL('url.questionmark', /(\?)/, 'root', 'urlParams'), + // comment + matchTokensWithEOL( + ['whitespace', 'comment.punctuation', 'comment.line'], + /(\s+)(\/\/)(.*$)/, + 'root' + ), + ], + urlParams: [ + // param with variable template + matchTokensWithEOL( + ['url.param', 'url.equal', 'variable.template'], + /([^&=]+)(=)(\${\w+})/, + 'root' + ), + // param with value + matchTokensWithEOL(['url.param', 'url.equal', 'url.value'], /([^&=]+)(=)([^&]*)/, 'root'), + // param + matchTokensWithEOL('url.param', /([^&=]+)/, 'root'), + // ampersand + matchTokensWithEOL('url.amp', /(&)/, 'root'), + // comment + matchTokensWithEOL( + ['whitespace', 'comment.punctuation', 'comment.line'], + /(\s+)(\/\/)(.*$)/, + 'root' + ), + ], + comments: [ + // line comment indicated by # + matchTokens(['comment.punctuation', 'comment.line'], /(#)(.*$)/), + // start a block comment indicated by /* + matchToken('comment.punctuation', /\/\*/, 'block_comment'), + // line comment indicated by // + matchTokens(['comment.punctuation', 'comment.line'], /(\/\/)(.*$)/), + ], + block_comment: [ // match everything on a single line inside the comment except for chars / and * - [/[^\/*]+/, 'comment'], - // start a nested comment by going 1 level down - [/\/\*/, 'comment', '@push'], - // match the closing of the comment and return 1 level up - ['\\*/', 'comment', '@pop'], + matchToken('comment', /[^\/*]+/), + // end block comment + matchToken('comment.punctuation', /\*\//, '@pop'), // match individual chars inside a multi-line comment - [/[\/*]/, 'comment'], - ], - string: [ - [/[^\\"]+/, 'string'], - [/@escapes/, 'string.escape'], - [/\\./, 'string.escape.invalid'], - [/"/, { token: 'string.quote', bracket: '@close', next: '@pop' }], + matchToken('comment', /[\/*]/), ], + // include json rules + ...xjsonRules, }, }; diff --git a/packages/kbn-monaco/src/console/theme.ts b/packages/kbn-monaco/src/console/theme.ts new file mode 100644 index 0000000000000..b9330ec97afee --- /dev/null +++ b/packages/kbn-monaco/src/console/theme.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { makeHighContrastColor } from '@elastic/eui'; +import { darkMode, euiThemeVars } from '@kbn/ui-theme'; + +import { themeRuleGroupBuilderFactory } from '../common/theme'; +import { monaco } from '../monaco_imports'; + +const buildRuleGroup = themeRuleGroupBuilderFactory(); + +const background = euiThemeVars.euiColorLightestShade; +const methodTextColor = '#DD0A73'; +const urlTextColor = '#00A69B'; +const stringTextColor = '#009926'; +const commentTextColor = '#4C886B'; +const variableTextColor = '#0079A5'; +const booleanTextColor = '#585CF6'; +const numericTextColor = variableTextColor; +export const buildConsoleTheme = (): monaco.editor.IStandaloneThemeData => { + return { + base: darkMode ? 'vs-dark' : 'vs', + inherit: true, + rules: [ + ...buildRuleGroup(['method'], makeHighContrastColor(methodTextColor)(background)), + ...buildRuleGroup(['url'], makeHighContrastColor(urlTextColor)(background)), + ...buildRuleGroup( + ['string', 'string-literal', 'multi-string', 'punctuation.end-triple-quote'], + makeHighContrastColor(stringTextColor)(background) + ), + ...buildRuleGroup(['comment'], makeHighContrastColor(commentTextColor)(background)), + ...buildRuleGroup(['variable'], makeHighContrastColor(variableTextColor)(background)), + ...buildRuleGroup( + ['constant.language.boolean'], + makeHighContrastColor(booleanTextColor)(background) + ), + ...buildRuleGroup(['constant.numeric'], makeHighContrastColor(numericTextColor)(background)), + ], + colors: { + 'editor.background': background, + // color of the line numbers + 'editorLineNumber.foreground': euiThemeVars.euiColorDarkShade, + // color of the active line number + 'editorLineNumber.activeForeground': euiThemeVars.euiColorDarkShade, + // background of the line numbers side panel + 'editorGutter.background': euiThemeVars.euiColorEmptyShade, + }, + }; +}; diff --git a/packages/kbn-monaco/src/esql/index.ts b/packages/kbn-monaco/src/esql/index.ts index a3b5f3bec666d..8d743aa4fb52e 100644 --- a/packages/kbn-monaco/src/esql/index.ts +++ b/packages/kbn-monaco/src/esql/index.ts @@ -8,5 +8,4 @@ export { ESQL_LANG_ID, ESQL_THEME_ID } from './lib/constants'; export { ESQLLang } from './language'; -export type { ESQLCallbacks } from './lib/ast/shared/types'; -export { buildESQlTheme } from './lib/monaco/esql_theme'; +export { buildESQlTheme } from './lib/esql_theme'; diff --git a/packages/kbn-monaco/src/esql/language.ts b/packages/kbn-monaco/src/esql/language.ts index 90d73af3e02f5..4e486a5c24188 100644 --- a/packages/kbn-monaco/src/esql/language.ts +++ b/packages/kbn-monaco/src/esql/language.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import type { ESQLCallbacks } from '@kbn/esql-validation-autocomplete'; import { monaco } from '../monaco_imports'; import { ESQL_LANG_ID } from './lib/constants'; @@ -14,15 +15,16 @@ import type { CustomLangModuleType } from '../types'; import type { ESQLWorker } from './worker/esql_worker'; import { WorkerProxyService } from '../common/worker_proxy'; -import type { ESQLCallbacks } from './lib/ast/shared/types'; -import { ESQLAstAdapter } from './lib/monaco/esql_ast_provider'; +import { ESQLAstAdapter } from './lib/esql_ast_provider'; +import { wrapAsMonacoSuggestions } from './lib/converters/suggestions'; +import { wrapAsMonacoCodeActions } from './lib/converters/actions'; const workerProxyService = new WorkerProxyService(); export const ESQLLang: CustomLangModuleType = { ID: ESQL_LANG_ID, async onLanguage() { - const { ESQLTokensProvider } = await import('./lib/monaco'); + const { ESQLTokensProvider } = await import('./lib'); workerProxyService.setup(ESQL_LANG_ID); @@ -98,10 +100,7 @@ export const ESQLLang: CustomLangModuleType = { ); const suggestionEntries = await astAdapter.autocomplete(model, position, context); return { - suggestions: suggestionEntries.suggestions.map((suggestion) => ({ - ...suggestion, - range: undefined as unknown as monaco.IRange, - })), + suggestions: wrapAsMonacoSuggestions(suggestionEntries.suggestions), }; }, }; @@ -121,7 +120,7 @@ export const ESQLLang: CustomLangModuleType = { ); const actions = await astAdapter.codeAction(model, range, context); return { - actions, + actions: wrapAsMonacoCodeActions(model, actions), dispose: () => {}, }; }, diff --git a/packages/kbn-monaco/src/esql/lib/README.md b/packages/kbn-monaco/src/esql/lib/README.md deleted file mode 100644 index b30082f710596..0000000000000 --- a/packages/kbn-monaco/src/esql/lib/README.md +++ /dev/null @@ -1,128 +0,0 @@ -# ES|QL utility library - -## Folder structure - -This library enables all the advanced features for ES|QL within Monaco, as validation, autocomplete, hover, etc... -The package is structure as follow: - -``` -|- antlr // => contains the ES|QL grammar files and various compilation assets -|- lib -| |- ast -| | | autocomplete // => the autocomplete/suggest logic -| | | definitions // => static assets to define all components behaviour of a ES|QL query: commands, functions, etc... -| | | hover // => hover logic -| | | signature // => signature service logic -| | | validation // => the validation logic -| | ast_factory.ts // => binding to the Antlr that generates the AST data structure -| | ast_errors.ts // => error translation utility from raw Antlr to something understandable (somewhat) -| | ... // => miscellaneas utilities to work with AST -| |- monaco // => some high level interfaces to work with -| | | esql_ast_provider.ts // => the API to work with validation, autocomplete, etc... -| | | ... -| antlr_facade.ts // => getParser and getLexer utilities -|- worker // => some Monaco utilities that runs in a WebWorker -language.ts // => ES|QL language definition for Monaco with API that expose all features to it -``` - -### Syntax highlight support - -In general the syntax highlight works out of the box, but in case of new tokens added it is required to add them into the `esql_theme.ts` file to color them. -There's also a special | (pipe) handling in case of multi-line with some offset applied to the token location indexes to fix some grammar problems with multi-line. In case of issues with highlight look into the `esql_token_provider.ts` file. - -### How does it work - -The general idea of this package is to provide all ES|QL features on top of a custom compact AST definition (all data structure types defined in `./ast/types.ts`) which is designed to be resilient to many grammar changes. -The pipeline is the following: - -``` -Antlr grammar files -=> Compiled grammar files (.ts assets in the antlr folder) -=> AST Factory (Antlr Parser tree => custom AST) -=> featureFn( AST, Definitions, ESQLCallbacks ) -``` - -Each feature function works with the combination of the AST and the definition files: the former describe the current statement in a easy to traverse way, while the definitions describe what's the expected behaviour of each node in the AST node (i.e. what arguments should it accept? How many arguments? etc...). -ESQLCallbacks are a set of utilities to retrieve context metadata like fields/index/policies list and policies metadata. - -While AST requires the grammar to be compiled to be updated, definitions are static files which can be dynamically updated without running the ANTLR compile task. - -#### AST - -The AST is generated by 2 files: `ast_factory.ts` and its buddy `ast_walker.ts`: -* `ast_factory.ts` is a binding to Antlr and access the Parser tree -* Parser tree is passed over to `ast_walker` to append new AST nodes - -In general Antlr is resilient to grammar errors, in the sense that it can produe a Parser tree up to the point of the error, then stops. This is useful to perform partial tasks even with broken queries and this means that a partial AST can be produced even with an invalid query. - -#### Validation - -Validation takes an AST as input and generates a list of messages to show to the user. -The validation function leverages the definition files to check if the current AST is respecting the defined behaviour. -Most of the logic rely purely on the definitions, but in some specific cases some ad-hoc conditions are defined within the code for specific commands/options. - -#### Autocomplete - -The autocomplete/suggest task takes a query as input together with the current cursor position, then produces internally an AST to work with, to generate a list of suggestions for the given query. -Note that autocomplete works most of the time with incomplete/invalid queries, so some logic to manipulate the query into something valid (see the `EDITOR_MARKER` or the `countBracketsUnclosed` functions for more). - -Once the AST is produced there's a `getAstContext` function that finds the cursor position node (and its parent command), together with some hint like the type of current context: `expression`, `function`, `newCommand`, `option`. -The most complex case is the `expression` as it can cover a moltitude of cases. The function is highly commented in order to identify the specific cases, but there's probably some obscure area still to comment/clarify. - -#### Hover - -The hover logic leverages the same `getAstContext` function as autocomplete but its logic is way simpler as it picks the right definition based on context and produces a set of strings for the tooltip. - -#### Signature - -No signature implementation has been added yet, but it will likely work as hover if/when implemented. - -### Keeping ES|QL up to date - -In general when operating on changes here use the `yarn kbn watch` in a terminal window to make sure changes are correctly compiled. - -#### How to add new functions - -When a new function is added to ES|QL, this can be of one of these types: - -* Built-in function (+, -, in, like, etc...) -* Aggregation type (`STATS` only) -* Math type (`EVAL`, `WHERE`, etc...) - -For each function type there's a specific file to update within the `definitions` folder: -* Built-in function => `builtin.ts` -* Aggregation type => `aggs.ts` -* Math type => `functions.ts` - -All function definitions are of the `FunctionDefinition` type and it's quite easy to add new ones. - -While validation tests for Aggregation and Math type will be automatically generated, for the Built-in type new tests needs to be added for both validation and autocomplete. - -#### How to add new commands/options - -When a new command/option is added to ES|QL it is done via a grammar update. -Therefore adding them requires a two step phase: -* Update the grammar with the new one - * add/fix all AST generator bindings in case of new/changed TOKENS in the `lexer` grammar file -* Update the definition files for commands/options - -To update the grammar: -1. start by copying the source grammar `lexer` and `parser` files -2. make sure to fix all the case insensitive occurrencies in `lexer` file (all non-symbol strings like `"something"` into `S O M E T H I N G`). -3. run the script into the `package.json` to compile the ES|QL grammar. -4. open the `ast_factory.ts` file and add a new `exit` method -5. write some code in the `ast_walker/ts` to translate the Antlr Parser tree into the custom AST (there are already few utilites for that, but sometimes it is required to write some more code if the `parser` introduced a new flow) - * pro tip: use the `http://lab.antlr.org/` to visualize/debug the parser tree for a given statement (copy and paste the grammar files there) -6. if a new quoted/unquoted identifier token gets added open the `ast_helpers.ts` and manually add the ids of the new tokens in the `getQuotedText` and `getUnquotedText` functions - please make sure to leave a comment on the token name - -To update the definitions: -1. open either the `commands.ts` or `option.ts` file and add a new entry -2. write new tests for validation and autocomplete - -#### Debug and fix grammar changes (tokens, etc...) - -On TOKEN renaming or with subtle `lexer` grammar changes it can happens that test breaks, this can be happen for two main issues: -* A TOKEN name changed so the `ast_walker.ts` doesn't find it any more. Go there and rename the TOKEN name. -* TOKEN order changed and tests started failing. This probably generated some TOKEN id reorder and there are two functions in `ast_helpers.ts` who rely on hardcoded ids: `getQuotedText` and `getUnquotedText`. - * to fix this just look at the commented tokens and update the ids. If a new token add it and leave a comment to point to the new token name. - * This choice was made to reduce the bundle size, as importing the `esql_parser` adds some hundreds of Kbs to the bundle otherwise. \ No newline at end of file diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/literals.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/literals.ts deleted file mode 100644 index 3cc61683372a7..0000000000000 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/literals.ts +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import type { Literals } from './types'; - -export const timeLiterals: Literals[] = [ - { - name: 'year', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.year', { - defaultMessage: 'Year', - }), - }, - { - name: 'years', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.years', { - defaultMessage: 'Years (Plural)', - }), - }, - { - name: 'month', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.month', { - defaultMessage: 'Month', - }), - }, - { - name: 'months', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.months', { - defaultMessage: 'Months (Plural)', - }), - }, - { - name: 'week', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.week', { - defaultMessage: 'Week', - }), - }, - { - name: 'weeks', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.weeks', { - defaultMessage: 'Weeks (Plural)', - }), - }, - { - name: 'day', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.day', { - defaultMessage: 'Day', - }), - }, - { - name: 'days', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.days', { - defaultMessage: 'Days (Plural)', - }), - }, - { - name: 'hour', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.hour', { - defaultMessage: 'Hour', - }), - }, - { - name: 'hours', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.hours', { - defaultMessage: 'Hours (Plural)', - }), - }, - { - name: 'minute', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.minute', { - defaultMessage: 'Minute', - }), - }, - { - name: 'minutes', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.minutes', { - defaultMessage: 'Minutes (Plural)', - }), - }, - { - name: 'second', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.second', { - defaultMessage: 'Second', - }), - }, - { - name: 'seconds', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.seconds', { - defaultMessage: 'Seconds (Plural)', - }), - }, - { - name: 'millisecond', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.millisecond', { - defaultMessage: 'Millisecond', - }), - }, - { - name: 'milliseconds', - description: i18n.translate('monaco.esql.definitions.dateDurationDefinition.milliseconds', { - defaultMessage: 'Milliseconds (Plural)', - }), - }, -]; - -export const chronoLiterals: Literals[] = [ - 'ALIGNED_DAY_OF_WEEK_IN_MONTH', - 'ALIGNED_DAY_OF_WEEK_IN_YEAR', - 'ALIGNED_WEEK_OF_MONTH', - 'ALIGNED_WEEK_OF_YEAR', - 'AMPM_OF_DAY', - 'CLOCK_HOUR_OF_AMPM', - 'CLOCK_HOUR_OF_DAY', - 'DAY_OF_MONTH', - 'DAY_OF_WEEK', - 'DAY_OF_YEAR', - 'EPOCH_DAY', - 'ERA', - 'HOUR_OF_AMPM', - 'HOUR_OF_DAY', - 'INSTANT_SECONDS', - 'MICRO_OF_DAY', - 'MICRO_OF_SECOND', - 'MILLI_OF_DAY', - 'MILLI_OF_SECOND', - 'MINUTE_OF_DAY', - 'MINUTE_OF_HOUR', - 'MONTH_OF_YEAR', - 'NANO_OF_DAY', - 'NANO_OF_SECOND', - 'OFFSET_SECONDS', - 'PROLEPTIC_MONTH', - 'SECOND_OF_DAY', - 'SECOND_OF_MINUTE', - 'YEAR', - 'YEAR_OF_ERA', -].map((name) => ({ name: `"${name}"`, description: '' })); diff --git a/packages/kbn-monaco/src/esql/lib/ast/definitions/settings.ts b/packages/kbn-monaco/src/esql/lib/ast/definitions/settings.ts deleted file mode 100644 index 4c76a87d9283c..0000000000000 --- a/packages/kbn-monaco/src/esql/lib/ast/definitions/settings.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import { CommandModeDefinition } from './types'; - -export const enrichModes: CommandModeDefinition = { - name: 'ccq.mode', - description: i18n.translate('monaco.esql.definitions.ccqModeDoc', { - defaultMessage: 'Cross-clusters query mode', - }), - prefix: '_', - values: [ - { - name: 'any', - description: i18n.translate('monaco.esql.definitions.ccqAnyDoc', { - defaultMessage: 'Enrich takes place on any cluster', - }), - }, - { - name: 'coordinator', - description: i18n.translate('monaco.esql.definitions.ccqCoordinatorDoc', { - defaultMessage: 'Enrich takes place on the coordinating cluster receiving an ES|QL', - }), - }, - { - name: 'remote', - description: i18n.translate('monaco.esql.definitions.ccqRemoteDoc', { - defaultMessage: 'Enrich takes place on the cluster hosting the target index.', - }), - }, - ], -}; diff --git a/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts b/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts deleted file mode 100644 index a0ae838429be5..0000000000000 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/errors.ts +++ /dev/null @@ -1,297 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { i18n } from '@kbn/i18n'; -import type { ESQLLocation, ESQLMessage } from '../types'; -import type { ErrorTypes, ErrorValues } from './types'; - -function getMessageAndTypeFromId({ - messageId, - values, -}: { - messageId: K; - values: ErrorValues; -}): { message: string; type?: 'error' | 'warning' } { - // Use a less strict type instead of doing a typecast on each message type - const out = values as unknown as Record; - // i18n validation wants to the values prop to be declared inline, so need to unpack and redeclare again all props - switch (messageId) { - case 'wrongArgumentType': - return { - message: i18n.translate('monaco.esql.validation.wrongArgumentType', { - defaultMessage: - 'Argument of [{name}] must be [{argType}], found value [{value}] type [{givenType}]', - values: { - name: out.name, - argType: out.argType, - value: out.value, - givenType: out.givenType, - }, - }), - }; - case 'unknownColumn': - return { - message: i18n.translate('monaco.esql.validation.unknownColumn', { - defaultMessage: 'Unknown column [{name}]', - values: { name: out.name }, - }), - }; - case 'unknownIndex': - return { - message: i18n.translate('monaco.esql.validation.unknownIndex', { - defaultMessage: 'Unknown index [{name}]', - values: { name: out.name }, - }), - }; - case 'unknownFunction': - return { - message: i18n.translate('monaco.esql.validation.missingFunction', { - defaultMessage: 'Unknown function [{name}]', - values: { name: out.name }, - }), - }; - case 'wrongArgumentNumber': - return { - message: i18n.translate('monaco.esql.validation.wrongArgumentExactNumber', { - defaultMessage: - 'Error: [{fn}] function expects exactly {numArgs, plural, one {one argument} other {{numArgs} arguments}}, got {passedArgs}.', - values: { - fn: out.fn, - numArgs: out.numArgs, - passedArgs: out.passedArgs, - }, - }), - }; - case 'wrongArgumentNumberTooMany': - return { - message: i18n.translate('monaco.esql.validation.wrongArgumentTooManyNumber', { - defaultMessage: - 'Error: [{fn}] function expects {extraArgs, plural, =0 {} other {no more than }}{numArgs, plural, one {one argument} other {{numArgs} arguments}}, got {passedArgs}.', - values: { - fn: out.fn, - numArgs: out.numArgs, - passedArgs: out.passedArgs, - extraArgs: out.extraArgs, - }, - }), - }; - case 'wrongArgumentNumberTooFew': - return { - message: i18n.translate('monaco.esql.validation.wrongArgumentTooFewNumber', { - defaultMessage: - 'Error: [{fn}] function expects {missingArgs, plural, =0 {} other {at least }}{numArgs, plural, one {one argument} other {{numArgs} arguments}}, got {passedArgs}.', - values: { - fn: out.fn, - numArgs: out.numArgs, - passedArgs: out.passedArgs, - missingArgs: out.missingArgs, - }, - }), - }; - case 'noNestedArgumentSupport': - return { - message: 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: out.name, argType: out.argType }, - }), - }; - case 'shadowFieldType': - return { - message: i18n.translate('monaco.esql.validation.typeOverwrite', { - defaultMessage: - 'Column [{field}] of type {fieldType} has been overwritten as new type: {newType}', - values: { field: out.field, fieldType: out.fieldType, newType: out.newType }, - }), - type: 'warning', - }; - case 'unsupportedColumnTypeForCommand': - 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}]', - values: { - command: out.command, - type: out.type, - typeCount: out.typeCount, - column: out.column, - givenType: out.givenType, - }, - }), - }; - case 'unknownOption': - return { - message: i18n.translate('monaco.esql.validation.unknownOption', { - defaultMessage: 'Invalid option for {command}: [{option}]', - values: { - command: out.command, - option: out.option, - }, - }), - }; - case 'unsupportedFunctionForCommand': - return { - message: i18n.translate('monaco.esql.validation.unsupportedFunctionForCommand', { - defaultMessage: '{command} does not support function {name}', - values: { - command: out.command, - name: out.name, - }, - }), - }; - case 'unsupportedFunctionForCommandOption': - return { - message: i18n.translate('monaco.esql.validation.unsupportedFunctionforCommandOption', { - defaultMessage: '{command} {option} does not support function {name}', - values: { - command: out.command, - option: out.option, - name: out.name, - }, - }), - }; - case 'unknownInterval': - return { - message: i18n.translate('monaco.esql.validation.unknownInterval', { - defaultMessage: `Unexpected time interval qualifier: '{value}'`, - values: { - value: out.value, - }, - }), - }; - case 'unsupportedTypeForCommand': - return { - message: i18n.translate('monaco.esql.validation.unsupportedTypeForCommand', { - defaultMessage: '{command} does not support [{type}] in expression [{value}]', - values: { - command: out.command, - type: out.type, - value: out.value, - }, - }), - }; - case 'unknownPolicy': - return { - message: i18n.translate('monaco.esql.validation.unknownPolicy', { - defaultMessage: 'Unknown policy [{name}]', - values: { - name: out.name, - }, - }), - }; - case 'unknownAggregateFunction': - return { - message: i18n.translate('monaco.esql.validation.unknowAggregateFunction', { - defaultMessage: - 'Expected an aggregate function or group but got [{value}] of type [{type}]', - values: { - type: out.type, - value: out.value, - }, - }), - }; - case 'wildcardNotSupportedForCommand': - return { - message: i18n.translate('monaco.esql.validation.wildcardNotSupportedForCommand', { - defaultMessage: 'Using wildcards (*) in {command} is not allowed [{value}]', - values: { - command: out.command, - value: out.value, - }, - }), - }; - case 'noWildcardSupportAsArg': - return { - message: i18n.translate('monaco.esql.validation.wildcardNotSupportedForFunction', { - defaultMessage: 'Using wildcards (*) in {name} is not allowed', - values: { - name: out.name, - }, - }), - }; - case 'unsupportedFieldType': - return { - message: i18n.translate('monaco.esql.validation.unsupportedFieldType', { - defaultMessage: - 'Field [{field}] cannot be retrieved, it is unsupported or not indexed; returning null', - values: { - field: out.field, - }, - }), - type: 'warning', - }; - case 'unsupportedSetting': - return { - message: i18n.translate('monaco.esql.validation.unsupportedSetting', { - defaultMessage: 'Unsupported setting [{setting}], expected [{expected}]', - values: { - setting: out.setting, - expected: out.expected, - }, - }), - type: 'error', - }; - case 'unsupportedSettingCommandValue': - return { - message: i18n.translate('monaco.esql.validation.unsupportedSettingValue', { - defaultMessage: - 'Unrecognized value [{value}] for {command}, mode needs to be one of [{expected}]', - values: { - expected: out.expected, - value: out.value, - command: out.command, - }, - }), - 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: '' }; -} - -export function getMessageFromId({ - locations, - ...payload -}: { - messageId: K; - values: ErrorValues; - locations: ESQLLocation; -}): ESQLMessage { - const { message, type = 'error' } = getMessageAndTypeFromId(payload); - return createMessage(type, message, locations, payload.messageId); -} - -export function createMessage( - type: 'error' | 'warning', - message: string, - location: ESQLLocation, - messageId: string -) { - return { - type, - text: message, - location, - 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/esql_validation_meta_tests.json b/packages/kbn-monaco/src/esql/lib/ast/validation/esql_validation_meta_tests.json deleted file mode 100644 index a1edd9cbac423..0000000000000 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/esql_validation_meta_tests.json +++ /dev/null @@ -1,8682 +0,0 @@ -{ - "indexes": [ - "a_index", - "index", - "other_index", - ".secret_index", - "my-index", - "unsupported_index" - ], - "fields": [ - { - "name": "numberField", - "type": "number" - }, - { - "name": "dateField", - "type": "date" - }, - { - "name": "booleanField", - "type": "boolean" - }, - { - "name": "ipField", - "type": "ip" - }, - { - "name": "stringField", - "type": "string" - }, - { - "name": "cartesianPointField", - "type": "cartesian_point" - }, - { - "name": "geoPointField", - "type": "geo_point" - }, - { - "name": "any#Char$Field", - "type": "number" - }, - { - "name": "kubernetes.something.something", - "type": "number" - }, - { - "name": "@timestamp", - "type": "date" - }, - { - "name": "otherStringField", - "type": "keyword" - } - ], - "enrichFields": [ - { - "name": "otherField", - "type": "string" - }, - { - "name": "yetAnotherField", - "type": "number" - }, - { - "name": "otherStringField", - "type": "keyword" - } - ], - "policies": [ - { - "name": "policy", - "sourceIndices": [ - "enrich_index" - ], - "matchField": "otherStringField", - "enrichFields": [ - "otherField", - "yetAnotherField" - ] - }, - { - "name": "policy$", - "sourceIndices": [ - "enrich_index" - ], - "matchField": "otherStringField", - "enrichFields": [ - "otherField", - "yetAnotherField" - ] - } - ], - "unsupported_field": [ - { - "name": "unsupported_field", - "type": "unsupported" - } - ], - "testCases": [ - { - "query": "eval", - "error": true - }, - { - "query": "stats", - "error": true - }, - { - "query": "rename", - "error": true - }, - { - "query": "limit", - "error": true - }, - { - "query": "keep", - "error": true - }, - { - "query": "drop", - "error": true - }, - { - "query": "mv_expand", - "error": true - }, - { - "query": "dissect", - "error": true - }, - { - "query": "grok", - "error": true - }, - { - "query": "f", - "error": true - }, - { - "query": "from ", - "error": true - }, - { - "query": "from index,", - "error": true - }, - { - "query": "from assignment = 1", - "error": true - }, - { - "query": "from index", - "error": false - }, - { - "query": "FROM index", - "error": false - }, - { - "query": "FrOm index", - "error": false - }, - { - "query": "from `index`", - "error": false - }, - { - "query": "from index, other_index", - "error": false - }, - { - "query": "from index, missingIndex", - "error": true - }, - { - "query": "from fn()", - "error": true - }, - { - "query": "from average()", - "error": true - }, - { - "query": "from index [METADATA _id]", - "error": false - }, - { - "query": "from index [metadata _id]", - "error": false - }, - { - "query": "from index [METADATA _id, _source]", - "error": false - }, - { - "query": "from index [METADATA _id, _source2]", - "error": true - }, - { - "query": "from index [metadata _id, _source] [METADATA _id2]", - "error": true - }, - { - "query": "from remote-ccs:indexes [METADATA _id]", - "error": false - }, - { - "query": "from *:indexes [METADATA _id]", - "error": false - }, - { - "query": "from index METADATA _id", - "error": false - }, - { - "query": "from index metadata _id", - "error": false - }, - { - "query": "from index METADATA _id, _source", - "error": false - }, - { - "query": "from index METADATA _id, _source2", - "error": true - }, - { - "query": "from index metadata _id, _source METADATA _id2", - "error": true - }, - { - "query": "from remote-ccs:indexes METADATA _id", - "error": false - }, - { - "query": "from *:indexes METADATA _id", - "error": false - }, - { - "query": "from index (metadata _id)", - "error": true - }, - { - "query": "from ind*, other*", - "error": false - }, - { - "query": "from index*", - "error": false - }, - { - "query": "from *a_i*dex*", - "error": false - }, - { - "query": "from in*ex*", - "error": false - }, - { - "query": "from *n*ex", - "error": false - }, - { - "query": "from *n*ex*", - "error": false - }, - { - "query": "from i*d*x*", - "error": false - }, - { - "query": "from i*d*x", - "error": false - }, - { - "query": "from i***x*", - "error": false - }, - { - "query": "from i****", - "error": false - }, - { - "query": "from i**", - "error": false - }, - { - "query": "from index**", - "error": false - }, - { - "query": "from *ex", - "error": false - }, - { - "query": "from *ex*", - "error": false - }, - { - "query": "from in*ex", - "error": false - }, - { - "query": "from ind*ex", - "error": false - }, - { - "query": "from indexes*", - "error": true - }, - { - "query": "from remote-*:indexes*", - "error": false - }, - { - "query": "from remote-*:indexes", - "error": false - }, - { - "query": "from remote-ccs:indexes", - "error": false - }, - { - "query": "from a_index, remote-ccs:indexes", - "error": false - }, - { - "query": "from .secret_index", - "error": false - }, - { - "query": "from my-index", - "error": false - }, - { - "query": "from numberField", - "error": true - }, - { - "query": "from policy", - "error": true - }, - { - "query": "row", - "error": true - }, - { - "query": "row missing_column", - "error": true - }, - { - "query": "row fn()", - "error": true - }, - { - "query": "row missing_column, missing_column2", - "error": true - }, - { - "query": "row a=1", - "error": false - }, - { - "query": "row a=1, missing_column", - "error": true - }, - { - "query": "row a=1, b = average()", - "error": true - }, - { - "query": "row a = [1, 2, 3]", - "error": false - }, - { - "query": "row a = [true, false]", - "error": false - }, - { - "query": "row a = [\"a\", \"b\"]", - "error": false - }, - { - "query": "row a = null", - "error": false - }, - { - "query": "row a = (1)", - "error": false - }, - { - "query": "row a = (1, 2, 3)", - "error": true - }, - { - "query": "row a=NOT true", - "error": false - }, - { - "query": "row NOT true", - "error": false - }, - { - "query": "row a=NOT false", - "error": false - }, - { - "query": "row NOT false", - "error": false - }, - { - "query": "row var = 1 in ", - "error": true - }, - { - "query": "row var = 1 in (", - "error": true - }, - { - "query": "row var = 1 not in ", - "error": true - }, - { - "query": "row var = 1 in (1, 2, 3)", - "error": false - }, - { - "query": "row var = 5 in (1, 2, 3)", - "error": false - }, - { - "query": "row var = 5 not in (1, 2, 3)", - "error": false - }, - { - "query": "row var = 1 in (1, 2, 3, round(5))", - "error": false - }, - { - "query": "row var = \"a\" in (\"a\", \"b\", \"c\")", - "error": false - }, - { - "query": "row var = \"a\" in (\"a\", \"b\", \"c\")", - "error": false - }, - { - "query": "row var = \"a\" not in (\"a\", \"b\", \"c\")", - "error": false - }, - { - "query": "row var = 1 in (\"a\", \"b\", \"c\")", - "error": true - }, - { - "query": "row var = 5 in (\"a\", \"b\", \"c\")", - "error": true - }, - { - "query": "row var = 5 not in (\"a\", \"b\", \"c\")", - "error": true - }, - { - "query": "row var = 5 not in (1, 2, 3, \"a\")", - "error": true - }, - { - "query": "row var = abs(5)", - "error": false - }, - { - "query": "row abs(5)", - "error": false - }, - { - "query": "row var = abs(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = abs(\"a\")", - "error": true - }, - { - "query": "row var = acos(5)", - "error": false - }, - { - "query": "row acos(5)", - "error": false - }, - { - "query": "row var = acos(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = acos(\"a\")", - "error": true - }, - { - "query": "row var = asin(5)", - "error": false - }, - { - "query": "row asin(5)", - "error": false - }, - { - "query": "row var = asin(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = asin(\"a\")", - "error": true - }, - { - "query": "row var = atan(5)", - "error": false - }, - { - "query": "row atan(5)", - "error": false - }, - { - "query": "row var = atan(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = atan(\"a\")", - "error": true - }, - { - "query": "row var = atan2(5, 5)", - "error": false - }, - { - "query": "row atan2(5, 5)", - "error": false - }, - { - "query": "row var = atan2(to_integer(\"a\"), to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = atan2(\"a\", \"a\")", - "error": true - }, - { - "query": "row var = auto_bucket(now(), 5, \"a\", \"a\")", - "error": false - }, - { - "query": "row auto_bucket(now(), 5, \"a\", \"a\")", - "error": false - }, - { - "query": "row var = auto_bucket(now(), 5, 5, 5)", - "error": false - }, - { - "query": "row auto_bucket(now(), 5, 5, 5)", - "error": false - }, - { - "query": "row var = case(true, \"a\")", - "error": false - }, - { - "query": "row case(true, \"a\")", - "error": false - }, - { - "query": "row var = ceil(5)", - "error": false - }, - { - "query": "row ceil(5)", - "error": false - }, - { - "query": "row var = ceil(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = ceil(\"a\")", - "error": true - }, - { - "query": "row var = cidr_match(to_ip(\"127.0.0.1\"), \"a\")", - "error": false - }, - { - "query": "row cidr_match(to_ip(\"127.0.0.1\"), \"a\")", - "error": false - }, - { - "query": "row var = cidr_match(to_ip(\"a\"), to_string(\"a\"))", - "error": false - }, - { - "query": "row var = cidr_match(\"a\", 5)", - "error": true - }, - { - "query": "row var = coalesce(\"a\")", - "error": false - }, - { - "query": "row coalesce(\"a\")", - "error": false - }, - { - "query": "row var = concat(\"a\", \"a\")", - "error": false - }, - { - "query": "row concat(\"a\", \"a\")", - "error": false - }, - { - "query": "row var = concat(to_string(\"a\"), to_string(\"a\"))", - "error": false - }, - { - "query": "row var = concat(5, 5)", - "error": true - }, - { - "query": "row var = cos(5)", - "error": false - }, - { - "query": "row cos(5)", - "error": false - }, - { - "query": "row var = cos(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = cos(\"a\")", - "error": true - }, - { - "query": "row var = cosh(5)", - "error": false - }, - { - "query": "row cosh(5)", - "error": false - }, - { - "query": "row var = cosh(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = cosh(\"a\")", - "error": true - }, - { - "query": "row var = date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", now())", - "error": false - }, - { - "query": "row date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", now())", - "error": false - }, - { - "query": "row var = date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", to_datetime(\"a\"))", - "error": false - }, - { - "query": "row var = date_extract(\"a\", \"a\")", - "error": true - }, - { - "query": "row var = date_format(now(), \"a\")", - "error": false - }, - { - "query": "row date_format(now(), \"a\")", - "error": false - }, - { - "query": "row var = date_format(to_datetime(\"a\"), to_string(\"a\"))", - "error": false - }, - { - "query": "row var = date_format(\"a\", 5)", - "error": true - }, - { - "query": "row var = date_parse(\"a\", \"a\")", - "error": false - }, - { - "query": "row date_parse(\"a\", \"a\")", - "error": false - }, - { - "query": "row var = date_parse(to_string(\"a\"), to_string(\"a\"))", - "error": false - }, - { - "query": "row var = date_parse(5, 5)", - "error": true - }, - { - "query": "row var = date_trunc(1 year, now())", - "error": false - }, - { - "query": "row date_trunc(1 year, now())", - "error": false - }, - { - "query": "row var = date_trunc(1 year, to_datetime(\"a\"))", - "error": false - }, - { - "query": "row var = date_trunc(\"a\", \"a\")", - "error": true - }, - { - "query": "row var = e()", - "error": false - }, - { - "query": "row e()", - "error": false - }, - { - "query": "row var = e()", - "error": false - }, - { - "query": "row var = e()", - "error": false - }, - { - "query": "row var = ends_with(\"a\", \"a\")", - "error": false - }, - { - "query": "row ends_with(\"a\", \"a\")", - "error": false - }, - { - "query": "row var = ends_with(to_string(\"a\"), to_string(\"a\"))", - "error": false - }, - { - "query": "row var = ends_with(5, 5)", - "error": true - }, - { - "query": "row var = floor(5)", - "error": false - }, - { - "query": "row floor(5)", - "error": false - }, - { - "query": "row var = floor(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = floor(\"a\")", - "error": true - }, - { - "query": "row var = greatest(\"a\")", - "error": false - }, - { - "query": "row greatest(\"a\")", - "error": false - }, - { - "query": "row var = least(\"a\")", - "error": false - }, - { - "query": "row least(\"a\")", - "error": false - }, - { - "query": "row var = left(\"a\", 5)", - "error": false - }, - { - "query": "row left(\"a\", 5)", - "error": false - }, - { - "query": "row var = left(to_string(\"a\"), to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = left(5, \"a\")", - "error": true - }, - { - "query": "row var = length(\"a\")", - "error": false - }, - { - "query": "row length(\"a\")", - "error": false - }, - { - "query": "row var = length(to_string(\"a\"))", - "error": false - }, - { - "query": "row var = length(5)", - "error": true - }, - { - "query": "row var = log(5, 5)", - "error": false - }, - { - "query": "row log(5, 5)", - "error": false - }, - { - "query": "row var = log(to_integer(\"a\"), to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = log(\"a\", \"a\")", - "error": true - }, - { - "query": "row var = log10(5)", - "error": false - }, - { - "query": "row log10(5)", - "error": false - }, - { - "query": "row var = log10(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = log10(\"a\")", - "error": true - }, - { - "query": "row var = ltrim(\"a\")", - "error": false - }, - { - "query": "row ltrim(\"a\")", - "error": false - }, - { - "query": "row var = ltrim(to_string(\"a\"))", - "error": false - }, - { - "query": "row var = ltrim(5)", - "error": true - }, - { - "query": "row var = mv_avg(5)", - "error": false - }, - { - "query": "row mv_avg(5)", - "error": false - }, - { - "query": "row var = mv_avg(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = mv_avg(\"a\")", - "error": true - }, - { - "query": "row var = mv_concat(\"a\", \"a\")", - "error": false - }, - { - "query": "row mv_concat(\"a\", \"a\")", - "error": false - }, - { - "query": "row var = mv_concat(to_string(\"a\"), to_string(\"a\"))", - "error": false - }, - { - "query": "row var = mv_concat(5, 5)", - "error": true - }, - { - "query": "row var = mv_count(\"a\")", - "error": false - }, - { - "query": "row mv_count(\"a\")", - "error": false - }, - { - "query": "row var = mv_dedupe(\"a\")", - "error": false - }, - { - "query": "row mv_dedupe(\"a\")", - "error": false - }, - { - "query": "row var = mv_first(\"a\")", - "error": false - }, - { - "query": "row mv_first(\"a\")", - "error": false - }, - { - "query": "row var = mv_last(\"a\")", - "error": false - }, - { - "query": "row mv_last(\"a\")", - "error": false - }, - { - "query": "row var = mv_max(\"a\")", - "error": false - }, - { - "query": "row mv_max(\"a\")", - "error": false - }, - { - "query": "row var = mv_median(5)", - "error": false - }, - { - "query": "row mv_median(5)", - "error": false - }, - { - "query": "row var = mv_median(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = mv_median(\"a\")", - "error": true - }, - { - "query": "row var = mv_min(\"a\")", - "error": false - }, - { - "query": "row mv_min(\"a\")", - "error": false - }, - { - "query": "row var = mv_sum(5)", - "error": false - }, - { - "query": "row mv_sum(5)", - "error": false - }, - { - "query": "row var = mv_sum(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = mv_sum(\"a\")", - "error": true - }, - { - "query": "row var = now()", - "error": false - }, - { - "query": "row now()", - "error": false - }, - { - "query": "row var = now()", - "error": false - }, - { - "query": "row var = now()", - "error": false - }, - { - "query": "row var = pi()", - "error": false - }, - { - "query": "row pi()", - "error": false - }, - { - "query": "row var = pi()", - "error": false - }, - { - "query": "row var = pi()", - "error": false - }, - { - "query": "row var = pow(5, 5)", - "error": false - }, - { - "query": "row pow(5, 5)", - "error": false - }, - { - "query": "row var = pow(to_integer(\"a\"), to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = pow(\"a\", \"a\")", - "error": true - }, - { - "query": "row var = replace(\"a\", \"a\", \"a\")", - "error": false - }, - { - "query": "row replace(\"a\", \"a\", \"a\")", - "error": false - }, - { - "query": "row var = replace(to_string(\"a\"), to_string(\"a\"), to_string(\"a\"))", - "error": false - }, - { - "query": "row var = replace(5, 5, 5)", - "error": true - }, - { - "query": "row var = right(\"a\", 5)", - "error": false - }, - { - "query": "row right(\"a\", 5)", - "error": false - }, - { - "query": "row var = right(to_string(\"a\"), to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = right(5, \"a\")", - "error": true - }, - { - "query": "row var = round(5, 5)", - "error": false - }, - { - "query": "row round(5, 5)", - "error": false - }, - { - "query": "row var = round(to_integer(\"a\"), to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = round(\"a\", \"a\")", - "error": true - }, - { - "query": "row var = rtrim(\"a\")", - "error": false - }, - { - "query": "row rtrim(\"a\")", - "error": false - }, - { - "query": "row var = rtrim(to_string(\"a\"))", - "error": false - }, - { - "query": "row var = rtrim(5)", - "error": true - }, - { - "query": "row var = sin(5)", - "error": false - }, - { - "query": "row sin(5)", - "error": false - }, - { - "query": "row var = sin(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = sin(\"a\")", - "error": true - }, - { - "query": "row var = sinh(5)", - "error": false - }, - { - "query": "row sinh(5)", - "error": false - }, - { - "query": "row var = sinh(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = sinh(\"a\")", - "error": true - }, - { - "query": "row var = split(\"a\", \"a\")", - "error": false - }, - { - "query": "row split(\"a\", \"a\")", - "error": false - }, - { - "query": "row var = split(to_string(\"a\"), to_string(\"a\"))", - "error": false - }, - { - "query": "row var = split(5, 5)", - "error": true - }, - { - "query": "row var = sqrt(5)", - "error": false - }, - { - "query": "row sqrt(5)", - "error": false - }, - { - "query": "row var = sqrt(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = sqrt(\"a\")", - "error": true - }, - { - "query": "row var = starts_with(\"a\", \"a\")", - "error": false - }, - { - "query": "row starts_with(\"a\", \"a\")", - "error": false - }, - { - "query": "row var = starts_with(to_string(\"a\"), to_string(\"a\"))", - "error": false - }, - { - "query": "row var = starts_with(5, 5)", - "error": true - }, - { - "query": "row var = substring(\"a\", 5, 5)", - "error": false - }, - { - "query": "row substring(\"a\", 5, 5)", - "error": false - }, - { - "query": "row var = substring(to_string(\"a\"), to_integer(\"a\"), to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = substring(5, \"a\", \"a\")", - "error": true - }, - { - "query": "row var = tan(5)", - "error": false - }, - { - "query": "row tan(5)", - "error": false - }, - { - "query": "row var = tan(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = tan(\"a\")", - "error": true - }, - { - "query": "row var = tanh(5)", - "error": false - }, - { - "query": "row tanh(5)", - "error": false - }, - { - "query": "row var = tanh(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = tanh(\"a\")", - "error": true - }, - { - "query": "row var = tau()", - "error": false - }, - { - "query": "row tau()", - "error": false - }, - { - "query": "row var = tau()", - "error": false - }, - { - "query": "row var = tau()", - "error": false - }, - { - "query": "row var = to_boolean(\"a\")", - "error": false - }, - { - "query": "row to_boolean(\"a\")", - "error": false - }, - { - "query": "row var = to_bool(\"a\")", - "error": false - }, - { - "query": "row var = to_cartesianpoint(\"a\")", - "error": false - }, - { - "query": "row to_cartesianpoint(\"a\")", - "error": false - }, - { - "query": "row var = to_cartesianshape(\"a\")", - "error": false - }, - { - "query": "row to_cartesianshape(\"a\")", - "error": false - }, - { - "query": "row var = to_datetime(\"a\")", - "error": false - }, - { - "query": "row to_datetime(\"a\")", - "error": false - }, - { - "query": "row var = to_dt(\"a\")", - "error": false - }, - { - "query": "row var = to_degrees(5)", - "error": false - }, - { - "query": "row to_degrees(5)", - "error": false - }, - { - "query": "row var = to_degrees(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = to_degrees(\"a\")", - "error": true - }, - { - "query": "row var = to_double(\"a\")", - "error": false - }, - { - "query": "row to_double(\"a\")", - "error": false - }, - { - "query": "row var = to_dbl(\"a\")", - "error": false - }, - { - "query": "row var = to_geopoint(\"a\")", - "error": false - }, - { - "query": "row to_geopoint(\"a\")", - "error": false - }, - { - "query": "row var = to_geoshape(\"a\")", - "error": false - }, - { - "query": "row to_geoshape(\"a\")", - "error": false - }, - { - "query": "row var = to_integer(\"a\")", - "error": false - }, - { - "query": "row to_integer(\"a\")", - "error": false - }, - { - "query": "row var = to_int(\"a\")", - "error": false - }, - { - "query": "row var = to_ip(\"a\")", - "error": false - }, - { - "query": "row to_ip(\"a\")", - "error": false - }, - { - "query": "row var = to_long(\"a\")", - "error": false - }, - { - "query": "row to_long(\"a\")", - "error": false - }, - { - "query": "row var = to_lower(\"a\")", - "error": false - }, - { - "query": "row to_lower(\"a\")", - "error": false - }, - { - "query": "row var = to_lower(to_string(\"a\"))", - "error": false - }, - { - "query": "row var = to_lower(5)", - "error": true - }, - { - "query": "row var = to_radians(5)", - "error": false - }, - { - "query": "row to_radians(5)", - "error": false - }, - { - "query": "row var = to_radians(to_integer(\"a\"))", - "error": false - }, - { - "query": "row var = to_radians(\"a\")", - "error": true - }, - { - "query": "row var = to_string(\"a\")", - "error": false - }, - { - "query": "row to_string(\"a\")", - "error": false - }, - { - "query": "row var = to_str(\"a\")", - "error": false - }, - { - "query": "row var = to_unsigned_long(\"a\")", - "error": false - }, - { - "query": "row to_unsigned_long(\"a\")", - "error": false - }, - { - "query": "row var = to_ul(\"a\")", - "error": false - }, - { - "query": "row var = to_ulong(\"a\")", - "error": false - }, - { - "query": "row var = to_upper(\"a\")", - "error": false - }, - { - "query": "row to_upper(\"a\")", - "error": false - }, - { - "query": "row var = to_upper(to_string(\"a\"))", - "error": false - }, - { - "query": "row var = to_upper(5)", - "error": true - }, - { - "query": "row var = to_version(\"a\")", - "error": false - }, - { - "query": "row to_version(\"a\")", - "error": false - }, - { - "query": "row var = to_ver(\"a\")", - "error": false - }, - { - "query": "row var = to_version(\"a\")", - "error": false - }, - { - "query": "row to_version(\"a\")", - "error": false - }, - { - "query": "row var = to_ver(\"a\")", - "error": false - }, - { - "query": "row var = trim(\"a\")", - "error": false - }, - { - "query": "row trim(\"a\")", - "error": false - }, - { - "query": "row var = trim(to_string(\"a\"))", - "error": false - }, - { - "query": "row var = trim(5)", - "error": true - }, - { - "query": "row var = 5 > 0", - "error": false - }, - { - "query": "row var = NOT 5 > 0", - "error": false - }, - { - "query": "row var = (numberField > 0)", - "error": true - }, - { - "query": "row var = (NOT (5 > 0))", - "error": false - }, - { - "query": "row var = \"a\" > 0", - "error": true - }, - { - "query": "row var = 5 >= 0", - "error": false - }, - { - "query": "row var = NOT 5 >= 0", - "error": false - }, - { - "query": "row var = (numberField >= 0)", - "error": true - }, - { - "query": "row var = (NOT (5 >= 0))", - "error": false - }, - { - "query": "row var = \"a\" >= 0", - "error": true - }, - { - "query": "row var = 5 < 0", - "error": false - }, - { - "query": "row var = NOT 5 < 0", - "error": false - }, - { - "query": "row var = (numberField < 0)", - "error": true - }, - { - "query": "row var = (NOT (5 < 0))", - "error": false - }, - { - "query": "row var = \"a\" < 0", - "error": true - }, - { - "query": "row var = 5 <= 0", - "error": false - }, - { - "query": "row var = NOT 5 <= 0", - "error": false - }, - { - "query": "row var = (numberField <= 0)", - "error": true - }, - { - "query": "row var = (NOT (5 <= 0))", - "error": false - }, - { - "query": "row var = \"a\" <= 0", - "error": true - }, - { - "query": "row var = 5 == 0", - "error": false - }, - { - "query": "row var = NOT 5 == 0", - "error": false - }, - { - "query": "row var = (numberField == 0)", - "error": true - }, - { - "query": "row var = (NOT (5 == 0))", - "error": false - }, - { - "query": "row var = \"a\" == 0", - "error": true - }, - { - "query": "row var = 1 + 1", - "error": false - }, - { - "query": "row var = (5 + 1)", - "error": false - }, - { - "query": "row var = 1 - 1", - "error": false - }, - { - "query": "row var = (5 - 1)", - "error": false - }, - { - "query": "row var = 1 * 1", - "error": false - }, - { - "query": "row var = (5 * 1)", - "error": false - }, - { - "query": "row var = 1 / 1", - "error": false - }, - { - "query": "row var = (5 / 1)", - "error": false - }, - { - "query": "row var = 1 % 1", - "error": false - }, - { - "query": "row var = (5 % 1)", - "error": false - }, - { - "query": "row var = \"a\" like \"?a\"", - "error": false - }, - { - "query": "row var = \"a\" NOT like \"?a\"", - "error": false - }, - { - "query": "row var = NOT \"a\" like \"?a\"", - "error": false - }, - { - "query": "row var = NOT \"a\" NOT like \"?a\"", - "error": false - }, - { - "query": "row var = 5 like \"?a\"", - "error": true - }, - { - "query": "row var = 5 NOT like \"?a\"", - "error": true - }, - { - "query": "row var = NOT 5 like \"?a\"", - "error": true - }, - { - "query": "row var = NOT 5 NOT like \"?a\"", - "error": true - }, - { - "query": "row var = \"a\" rlike \"?a\"", - "error": false - }, - { - "query": "row var = \"a\" NOT rlike \"?a\"", - "error": false - }, - { - "query": "row var = NOT \"a\" rlike \"?a\"", - "error": false - }, - { - "query": "row var = NOT \"a\" NOT rlike \"?a\"", - "error": false - }, - { - "query": "row var = 5 rlike \"?a\"", - "error": true - }, - { - "query": "row var = 5 NOT rlike \"?a\"", - "error": true - }, - { - "query": "row var = NOT 5 rlike \"?a\"", - "error": true - }, - { - "query": "row var = NOT 5 NOT rlike \"?a\"", - "error": true - }, - { - "query": "row 1 anno", - "error": true - }, - { - "query": "row var = 1 anno", - "error": true - }, - { - "query": "row now() + 1 anno", - "error": true - }, - { - "query": "row 1 year", - "error": true - }, - { - "query": "row 1 year", - "error": true - }, - { - "query": "row var = now() - 1 year", - "error": false - }, - { - "query": "row var = now() - 1 YEAR", - "error": false - }, - { - "query": "row var = now() - 1 Year", - "error": false - }, - { - "query": "row var = now() + 1 year", - "error": false - }, - { - "query": "row 1 year + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 year", - "error": true - }, - { - "query": "row var = now() / 1 year", - "error": true - }, - { - "query": "row var = now() % 1 year", - "error": true - }, - { - "query": "row 1 years", - "error": true - }, - { - "query": "row 1 years", - "error": true - }, - { - "query": "row var = now() - 1 years", - "error": false - }, - { - "query": "row var = now() - 1 YEARS", - "error": false - }, - { - "query": "row var = now() - 1 Years", - "error": false - }, - { - "query": "row var = now() + 1 years", - "error": false - }, - { - "query": "row 1 years + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 years", - "error": true - }, - { - "query": "row var = now() / 1 years", - "error": true - }, - { - "query": "row var = now() % 1 years", - "error": true - }, - { - "query": "row 1 month", - "error": true - }, - { - "query": "row 1 month", - "error": true - }, - { - "query": "row var = now() - 1 month", - "error": false - }, - { - "query": "row var = now() - 1 MONTH", - "error": false - }, - { - "query": "row var = now() - 1 Month", - "error": false - }, - { - "query": "row var = now() + 1 month", - "error": false - }, - { - "query": "row 1 month + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 month", - "error": true - }, - { - "query": "row var = now() / 1 month", - "error": true - }, - { - "query": "row var = now() % 1 month", - "error": true - }, - { - "query": "row 1 months", - "error": true - }, - { - "query": "row 1 months", - "error": true - }, - { - "query": "row var = now() - 1 months", - "error": false - }, - { - "query": "row var = now() - 1 MONTHS", - "error": false - }, - { - "query": "row var = now() - 1 Months", - "error": false - }, - { - "query": "row var = now() + 1 months", - "error": false - }, - { - "query": "row 1 months + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 months", - "error": true - }, - { - "query": "row var = now() / 1 months", - "error": true - }, - { - "query": "row var = now() % 1 months", - "error": true - }, - { - "query": "row 1 week", - "error": true - }, - { - "query": "row 1 week", - "error": true - }, - { - "query": "row var = now() - 1 week", - "error": false - }, - { - "query": "row var = now() - 1 WEEK", - "error": false - }, - { - "query": "row var = now() - 1 Week", - "error": false - }, - { - "query": "row var = now() + 1 week", - "error": false - }, - { - "query": "row 1 week + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 week", - "error": true - }, - { - "query": "row var = now() / 1 week", - "error": true - }, - { - "query": "row var = now() % 1 week", - "error": true - }, - { - "query": "row 1 weeks", - "error": true - }, - { - "query": "row 1 weeks", - "error": true - }, - { - "query": "row var = now() - 1 weeks", - "error": false - }, - { - "query": "row var = now() - 1 WEEKS", - "error": false - }, - { - "query": "row var = now() - 1 Weeks", - "error": false - }, - { - "query": "row var = now() + 1 weeks", - "error": false - }, - { - "query": "row 1 weeks + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 weeks", - "error": true - }, - { - "query": "row var = now() / 1 weeks", - "error": true - }, - { - "query": "row var = now() % 1 weeks", - "error": true - }, - { - "query": "row 1 day", - "error": true - }, - { - "query": "row 1 day", - "error": true - }, - { - "query": "row var = now() - 1 day", - "error": false - }, - { - "query": "row var = now() - 1 DAY", - "error": false - }, - { - "query": "row var = now() - 1 Day", - "error": false - }, - { - "query": "row var = now() + 1 day", - "error": false - }, - { - "query": "row 1 day + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 day", - "error": true - }, - { - "query": "row var = now() / 1 day", - "error": true - }, - { - "query": "row var = now() % 1 day", - "error": true - }, - { - "query": "row 1 days", - "error": true - }, - { - "query": "row 1 days", - "error": true - }, - { - "query": "row var = now() - 1 days", - "error": false - }, - { - "query": "row var = now() - 1 DAYS", - "error": false - }, - { - "query": "row var = now() - 1 Days", - "error": false - }, - { - "query": "row var = now() + 1 days", - "error": false - }, - { - "query": "row 1 days + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 days", - "error": true - }, - { - "query": "row var = now() / 1 days", - "error": true - }, - { - "query": "row var = now() % 1 days", - "error": true - }, - { - "query": "row 1 hour", - "error": true - }, - { - "query": "row 1 hour", - "error": true - }, - { - "query": "row var = now() - 1 hour", - "error": false - }, - { - "query": "row var = now() - 1 HOUR", - "error": false - }, - { - "query": "row var = now() - 1 Hour", - "error": false - }, - { - "query": "row var = now() + 1 hour", - "error": false - }, - { - "query": "row 1 hour + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 hour", - "error": true - }, - { - "query": "row var = now() / 1 hour", - "error": true - }, - { - "query": "row var = now() % 1 hour", - "error": true - }, - { - "query": "row 1 hours", - "error": true - }, - { - "query": "row 1 hours", - "error": true - }, - { - "query": "row var = now() - 1 hours", - "error": false - }, - { - "query": "row var = now() - 1 HOURS", - "error": false - }, - { - "query": "row var = now() - 1 Hours", - "error": false - }, - { - "query": "row var = now() + 1 hours", - "error": false - }, - { - "query": "row 1 hours + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 hours", - "error": true - }, - { - "query": "row var = now() / 1 hours", - "error": true - }, - { - "query": "row var = now() % 1 hours", - "error": true - }, - { - "query": "row 1 minute", - "error": true - }, - { - "query": "row 1 minute", - "error": true - }, - { - "query": "row var = now() - 1 minute", - "error": false - }, - { - "query": "row var = now() - 1 MINUTE", - "error": false - }, - { - "query": "row var = now() - 1 Minute", - "error": false - }, - { - "query": "row var = now() + 1 minute", - "error": false - }, - { - "query": "row 1 minute + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 minute", - "error": true - }, - { - "query": "row var = now() / 1 minute", - "error": true - }, - { - "query": "row var = now() % 1 minute", - "error": true - }, - { - "query": "row 1 minutes", - "error": true - }, - { - "query": "row 1 minutes", - "error": true - }, - { - "query": "row var = now() - 1 minutes", - "error": false - }, - { - "query": "row var = now() - 1 MINUTES", - "error": false - }, - { - "query": "row var = now() - 1 Minutes", - "error": false - }, - { - "query": "row var = now() + 1 minutes", - "error": false - }, - { - "query": "row 1 minutes + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 minutes", - "error": true - }, - { - "query": "row var = now() / 1 minutes", - "error": true - }, - { - "query": "row var = now() % 1 minutes", - "error": true - }, - { - "query": "row 1 second", - "error": true - }, - { - "query": "row 1 second", - "error": true - }, - { - "query": "row var = now() - 1 second", - "error": false - }, - { - "query": "row var = now() - 1 SECOND", - "error": false - }, - { - "query": "row var = now() - 1 Second", - "error": false - }, - { - "query": "row var = now() + 1 second", - "error": false - }, - { - "query": "row 1 second + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 second", - "error": true - }, - { - "query": "row var = now() / 1 second", - "error": true - }, - { - "query": "row var = now() % 1 second", - "error": true - }, - { - "query": "row 1 seconds", - "error": true - }, - { - "query": "row 1 seconds", - "error": true - }, - { - "query": "row var = now() - 1 seconds", - "error": false - }, - { - "query": "row var = now() - 1 SECONDS", - "error": false - }, - { - "query": "row var = now() - 1 Seconds", - "error": false - }, - { - "query": "row var = now() + 1 seconds", - "error": false - }, - { - "query": "row 1 seconds + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 seconds", - "error": true - }, - { - "query": "row var = now() / 1 seconds", - "error": true - }, - { - "query": "row var = now() % 1 seconds", - "error": true - }, - { - "query": "row 1 millisecond", - "error": true - }, - { - "query": "row 1 millisecond", - "error": true - }, - { - "query": "row var = now() - 1 millisecond", - "error": false - }, - { - "query": "row var = now() - 1 MILLISECOND", - "error": false - }, - { - "query": "row var = now() - 1 Millisecond", - "error": false - }, - { - "query": "row var = now() + 1 millisecond", - "error": false - }, - { - "query": "row 1 millisecond + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 millisecond", - "error": true - }, - { - "query": "row var = now() / 1 millisecond", - "error": true - }, - { - "query": "row var = now() % 1 millisecond", - "error": true - }, - { - "query": "row 1 milliseconds", - "error": true - }, - { - "query": "row 1 milliseconds", - "error": true - }, - { - "query": "row var = now() - 1 milliseconds", - "error": false - }, - { - "query": "row var = now() - 1 MILLISECONDS", - "error": false - }, - { - "query": "row var = now() - 1 Milliseconds", - "error": false - }, - { - "query": "row var = now() + 1 milliseconds", - "error": false - }, - { - "query": "row 1 milliseconds + 1 year", - "error": true - }, - { - "query": "row var = now() * 1 milliseconds", - "error": true - }, - { - "query": "row var = now() / 1 milliseconds", - "error": true - }, - { - "query": "row var = now() % 1 milliseconds", - "error": true - }, - { - "query": "meta", - "error": true - }, - { - "query": "meta functions", - "error": false - }, - { - "query": "meta functions()", - "error": true - }, - { - "query": "meta functions blah", - "error": true - }, - { - "query": "meta info", - "error": true - }, - { - "query": "show", - "error": true - }, - { - "query": "show functions", - "error": true - }, - { - "query": "show info", - "error": false - }, - { - "query": "show numberField", - "error": true - }, - { - "query": "from index | limit ", - "error": true - }, - { - "query": "from index | limit 4 ", - "error": false - }, - { - "query": "from index | limit 4.5", - "error": true - }, - { - "query": "from index | limit a", - "error": true - }, - { - "query": "from index | limit numberField", - "error": true - }, - { - "query": "from index | limit stringField", - "error": true - }, - { - "query": "from index | limit 4", - "error": false - }, - { - "query": "from index | keep ", - "error": true - }, - { - "query": "from index | keep stringField, numberField, dateField", - "error": false - }, - { - "query": "from index | keep `stringField`, `numberField`, `dateField`", - "error": false - }, - { - "query": "from index | keep 4.5", - "error": true - }, - { - "query": "from index | keep `4.5`", - "error": true - }, - { - "query": "from index | keep missingField, numberField, dateField", - "error": true - }, - { - "query": "from index | keep `any#Char$Field`", - "error": false - }, - { - "query": "from index | project ", - "error": true - }, - { - "query": "from index | project stringField, numberField, dateField", - "error": true - }, - { - "query": "from index | PROJECT stringField, numberField, dateField", - "error": true - }, - { - "query": "from index | project missingField, numberField, dateField", - "error": true - }, - { - "query": "from index | keep s*", - "error": false - }, - { - "query": "from index | keep *Field", - "error": false - }, - { - "query": "from index | keep s*Field", - "error": false - }, - { - "query": "from index | keep string*Field", - "error": false - }, - { - "query": "from index | keep s*, n*", - "error": false - }, - { - "query": "from index | keep m*", - "error": true - }, - { - "query": "from index | keep *m", - "error": true - }, - { - "query": "from index | keep d*m", - "error": true - }, - { - "query": "from unsupported_index | keep unsupported_field", - "error": false - }, - { - "query": "FROM index | STATS ROUND(AVG(numberField * 1.5)), COUNT(*), MIN(numberField * 10) | KEEP `MIN(numberField * 10)`", - "error": false - }, - { - "query": "FROM index | STATS COUNT(*), MIN(numberField * 10), MAX(numberField)| KEEP `COUNT(*)`", - "error": false - }, - { - "query": "from index | drop ", - "error": true - }, - { - "query": "from index | drop stringField, numberField, dateField", - "error": false - }, - { - "query": "from index | drop 4.5", - "error": true - }, - { - "query": "from index | drop missingField, numberField, dateField", - "error": true - }, - { - "query": "from index | drop `any#Char$Field`", - "error": false - }, - { - "query": "from index | drop s*", - "error": false - }, - { - "query": "from index | drop s**Field", - "error": false - }, - { - "query": "from index | drop *Field*", - "error": false - }, - { - "query": "from index | drop s*F*d", - "error": false - }, - { - "query": "from index | drop *Field", - "error": false - }, - { - "query": "from index | drop s*Field", - "error": false - }, - { - "query": "from index | drop string*Field", - "error": false - }, - { - "query": "from index | drop s*, n*", - "error": false - }, - { - "query": "from index | drop m*", - "error": true - }, - { - "query": "from index | drop *m", - "error": true - }, - { - "query": "from index | drop d*m", - "error": true - }, - { - "query": "from index | drop *", - "error": true - }, - { - "query": "from index | drop stringField, *", - "error": true - }, - { - "query": "from index | drop @timestamp", - "error": false - }, - { - "query": "from index | drop stringField, @timestamp", - "error": false - }, - { - "query": "FROM index | STATS ROUND(AVG(numberField * 1.5)), COUNT(*), MIN(numberField * 10) | DROP `MIN(numberField * 10)`", - "error": false - }, - { - "query": "FROM index | STATS COUNT(*), MIN(numberField * 10), MAX(numberField)| DROP `COUNT(*)`", - "error": false - }, - { - "query": "from a_index | mv_expand ", - "error": true - }, - { - "query": "from a_index | mv_expand stringField", - "error": false - }, - { - "query": "from a_index | mv_expand numberField", - "error": false - }, - { - "query": "from a_index | mv_expand dateField", - "error": false - }, - { - "query": "from a_index | mv_expand booleanField", - "error": false - }, - { - "query": "from a_index | mv_expand ipField", - "error": false - }, - { - "query": "from a_index | mv_expand numberField, b", - "error": true - }, - { - "query": "row a = \"a\" | mv_expand a", - "error": false - }, - { - "query": "row a = [1, 2, 3] | mv_expand a", - "error": false - }, - { - "query": "row a = [true, false] | mv_expand a", - "error": false - }, - { - "query": "row a = [\"a\", \"b\"] | mv_expand a", - "error": false - }, - { - "query": "from a_index | rename", - "error": true - }, - { - "query": "from a_index | rename stringField", - "error": true - }, - { - "query": "from a_index | rename a", - "error": true - }, - { - "query": "from a_index | rename stringField as", - "error": true - }, - { - "query": "from a_index | rename missingField as", - "error": true - }, - { - "query": "from a_index | rename stringField as b", - "error": false - }, - { - "query": "from a_index | rename stringField AS b", - "error": false - }, - { - "query": "from a_index | rename stringField As b", - "error": false - }, - { - "query": "from a_index | rename stringField As b, b AS c", - "error": false - }, - { - "query": "from a_index | rename fn() as a", - "error": true - }, - { - "query": "from a_index | eval numberField + 1 | rename `numberField + 1` as a", - "error": false - }, - { - "query": "from a_index | stats avg(numberField) | rename `avg(numberField)` as avg0", - "error": false - }, - { - "query": "from a_index |eval numberField + 1 | rename `numberField + 1` as ", - "error": true - }, - { - "query": "from a_index | rename s* as strings", - "error": true - }, - { - "query": "row a = 10 | rename a as `this``is fine`", - "error": false - }, - { - "query": "row a = 10 | rename a as this is fine", - "error": true - }, - { - "query": "from a_index | dissect", - "error": true - }, - { - "query": "from a_index | dissect stringField", - "error": true - }, - { - "query": "from a_index | dissect stringField 2", - "error": true - }, - { - "query": "from a_index | dissect stringField .", - "error": true - }, - { - "query": "from a_index | dissect stringField %a", - "error": true - }, - { - "query": "from a_index | dissect stringField \"%{firstWord}\"", - "error": false - }, - { - "query": "from a_index | dissect numberField \"%{firstWord}\"", - "error": true - }, - { - "query": "from a_index | dissect stringField \"%{firstWord}\" option ", - "error": true - }, - { - "query": "from a_index | dissect stringField \"%{firstWord}\" option = ", - "error": true - }, - { - "query": "from a_index | dissect stringField \"%{firstWord}\" option = 1", - "error": true - }, - { - "query": "from a_index | dissect stringField \"%{firstWord}\" append_separator = \"-\"", - "error": false - }, - { - "query": "from a_index | dissect stringField \"%{firstWord}\" ignore_missing = true", - "error": true - }, - { - "query": "from a_index | dissect stringField \"%{firstWord}\" append_separator = true", - "error": true - }, - { - "query": "from a_index | dissect stringField \"%{firstWord}\" | keep firstWord", - "error": false - }, - { - "query": "from a_index | grok", - "error": true - }, - { - "query": "from a_index | grok stringField", - "error": true - }, - { - "query": "from a_index | grok stringField 2", - "error": true - }, - { - "query": "from a_index | grok stringField .", - "error": true - }, - { - "query": "from a_index | grok stringField %a", - "error": true - }, - { - "query": "from a_index | grok stringField \"%{firstWord}\"", - "error": false - }, - { - "query": "from a_index | grok numberField \"%{firstWord}\"", - "error": true - }, - { - "query": "from a_index | grok stringField \"%{firstWord}\" | keep firstWord", - "error": false - }, - { - "query": "from a_index | where b", - "error": true - }, - { - "query": "from a_index | where true", - "error": false - }, - { - "query": "from a_index | where NOT true", - "error": false - }, - { - "query": "from a_index | where false", - "error": false - }, - { - "query": "from a_index | where NOT false", - "error": false - }, - { - "query": "from a_index | where 1 > 0", - "error": false - }, - { - "query": "from a_index | where NOT 1 > 0", - "error": false - }, - { - "query": "from a_index | where +1 > 0", - "error": false - }, - { - "query": "from a_index | where NOT +1 > 0", - "error": false - }, - { - "query": "from a_index | where 1 * 1 > 0", - "error": false - }, - { - "query": "from a_index | where NOT 1 * 1 > 0", - "error": false - }, - { - "query": "from a_index | where -1 > 0", - "error": false - }, - { - "query": "from a_index | where NOT -1 > 0", - "error": false - }, - { - "query": "from a_index | where 1 / 1 > 0", - "error": false - }, - { - "query": "from a_index | where NOT 1 / 1 > 0", - "error": false - }, - { - "query": "from a_index | where 1.0 > 0", - "error": false - }, - { - "query": "from a_index | where NOT 1.0 > 0", - "error": false - }, - { - "query": "from a_index | where 1.5 > 0", - "error": false - }, - { - "query": "from a_index | where NOT 1.5 > 0", - "error": false - }, - { - "query": "from a_index | where numberField > 0", - "error": false - }, - { - "query": "from a_index | where NOT numberField > 0", - "error": false - }, - { - "query": "from a_index | where (numberField > 0)", - "error": false - }, - { - "query": "from a_index | where (NOT (numberField > 0))", - "error": false - }, - { - "query": "from a_index | where 1 > 0", - "error": false - }, - { - "query": "from a_index | eval stringField > 0", - "error": true - }, - { - "query": "from a_index | where numberField >= 0", - "error": false - }, - { - "query": "from a_index | where NOT numberField >= 0", - "error": false - }, - { - "query": "from a_index | where (numberField >= 0)", - "error": false - }, - { - "query": "from a_index | where (NOT (numberField >= 0))", - "error": false - }, - { - "query": "from a_index | where 1 >= 0", - "error": false - }, - { - "query": "from a_index | eval stringField >= 0", - "error": true - }, - { - "query": "from a_index | where numberField < 0", - "error": false - }, - { - "query": "from a_index | where NOT numberField < 0", - "error": false - }, - { - "query": "from a_index | where (numberField < 0)", - "error": false - }, - { - "query": "from a_index | where (NOT (numberField < 0))", - "error": false - }, - { - "query": "from a_index | where 1 < 0", - "error": false - }, - { - "query": "from a_index | eval stringField < 0", - "error": true - }, - { - "query": "from a_index | where numberField <= 0", - "error": false - }, - { - "query": "from a_index | where NOT numberField <= 0", - "error": false - }, - { - "query": "from a_index | where (numberField <= 0)", - "error": false - }, - { - "query": "from a_index | where (NOT (numberField <= 0))", - "error": false - }, - { - "query": "from a_index | where 1 <= 0", - "error": false - }, - { - "query": "from a_index | eval stringField <= 0", - "error": true - }, - { - "query": "from a_index | where numberField == 0", - "error": false - }, - { - "query": "from a_index | where NOT numberField == 0", - "error": false - }, - { - "query": "from a_index | where (numberField == 0)", - "error": false - }, - { - "query": "from a_index | where (NOT (numberField == 0))", - "error": false - }, - { - "query": "from a_index | where 1 == 0", - "error": false - }, - { - "query": "from a_index | eval stringField == 0", - "error": true - }, - { - "query": "from a_index | where - numberField > 0", - "error": false - }, - { - "query": "from a_index | where - round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + - numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 - numberField > 0", - "error": false - }, - { - "query": "from a_index | where - numberField > 0", - "error": false - }, - { - "query": "from a_index | where - round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + - numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 - numberField > 0", - "error": false - }, - { - "query": "from a_index | where + numberField > 0", - "error": false - }, - { - "query": "from a_index | where + round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + + numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 + numberField > 0", - "error": false - }, - { - "query": "from a_index | where + numberField > 0", - "error": false - }, - { - "query": "from a_index | where + round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + + numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 + numberField > 0", - "error": false - }, - { - "query": "from a_index | where not booleanField", - "error": false - }, - { - "query": "from a_index | where -- numberField > 0", - "error": false - }, - { - "query": "from a_index | where -- round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + -- numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 -- numberField > 0", - "error": false - }, - { - "query": "from a_index | where -+ numberField > 0", - "error": false - }, - { - "query": "from a_index | where -+ round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + -+ numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 -+ numberField > 0", - "error": false - }, - { - "query": "from a_index | where +- numberField > 0", - "error": false - }, - { - "query": "from a_index | where +- round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + +- numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 +- numberField > 0", - "error": false - }, - { - "query": "from a_index | where ++ numberField > 0", - "error": false - }, - { - "query": "from a_index | where ++ round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + ++ numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 ++ numberField > 0", - "error": false - }, - { - "query": "from a_index | where not not booleanField", - "error": false - }, - { - "query": "from a_index | where --- numberField > 0", - "error": false - }, - { - "query": "from a_index | where --- round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + --- numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 --- numberField > 0", - "error": false - }, - { - "query": "from a_index | where -+- numberField > 0", - "error": false - }, - { - "query": "from a_index | where -+- round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + -+- numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 -+- numberField > 0", - "error": false - }, - { - "query": "from a_index | where +-+ numberField > 0", - "error": false - }, - { - "query": "from a_index | where +-+ round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + +-+ numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 +-+ numberField > 0", - "error": false - }, - { - "query": "from a_index | where +++ numberField > 0", - "error": false - }, - { - "query": "from a_index | where +++ round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + +++ numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 +++ numberField > 0", - "error": false - }, - { - "query": "from a_index | where not not not booleanField", - "error": false - }, - { - "query": "from a_index | where ---- numberField > 0", - "error": false - }, - { - "query": "from a_index | where ---- round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + ---- numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 ---- numberField > 0", - "error": false - }, - { - "query": "from a_index | where -+-+ numberField > 0", - "error": false - }, - { - "query": "from a_index | where -+-+ round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + -+-+ numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 -+-+ numberField > 0", - "error": false - }, - { - "query": "from a_index | where +-+- numberField > 0", - "error": false - }, - { - "query": "from a_index | where +-+- round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + +-+- numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 +-+- numberField > 0", - "error": false - }, - { - "query": "from a_index | where ++++ numberField > 0", - "error": false - }, - { - "query": "from a_index | where ++++ round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where 1 + ++++ numberField > 0", - "error": false - }, - { - "query": "from a_index | where 1 ++++ numberField > 0", - "error": false - }, - { - "query": "from a_index | where not not not not booleanField", - "error": false - }, - { - "query": "from a_index | where *+ numberField", - "error": true - }, - { - "query": "from a_index | where /+ numberField", - "error": true - }, - { - "query": "from a_index | where %+ numberField", - "error": true - }, - { - "query": "from a_index | where numberField =~ 0", - "error": true - }, - { - "query": "from a_index | where NOT numberField =~ 0", - "error": true - }, - { - "query": "from a_index | where (numberField =~ 0)", - "error": true - }, - { - "query": "from a_index | where (NOT (numberField =~ 0))", - "error": true - }, - { - "query": "from a_index | where 1 =~ 0", - "error": true - }, - { - "query": "from a_index | eval stringField =~ 0", - "error": true - }, - { - "query": "from a_index | where stringField like \"?a\"", - "error": false - }, - { - "query": "from a_index | where stringField NOT like \"?a\"", - "error": false - }, - { - "query": "from a_index | where NOT stringField like \"?a\"", - "error": false - }, - { - "query": "from a_index | where NOT stringField NOT like \"?a\"", - "error": false - }, - { - "query": "from a_index | where numberField like \"?a\"", - "error": true - }, - { - "query": "from a_index | where numberField NOT like \"?a\"", - "error": true - }, - { - "query": "from a_index | where NOT numberField like \"?a\"", - "error": true - }, - { - "query": "from a_index | where NOT numberField NOT like \"?a\"", - "error": true - }, - { - "query": "from a_index | where stringField rlike \"?a\"", - "error": false - }, - { - "query": "from a_index | where stringField NOT rlike \"?a\"", - "error": false - }, - { - "query": "from a_index | where NOT stringField rlike \"?a\"", - "error": false - }, - { - "query": "from a_index | where NOT stringField NOT rlike \"?a\"", - "error": false - }, - { - "query": "from a_index | where numberField rlike \"?a\"", - "error": true - }, - { - "query": "from a_index | where numberField NOT rlike \"?a\"", - "error": true - }, - { - "query": "from a_index | where NOT numberField rlike \"?a\"", - "error": true - }, - { - "query": "from a_index | where NOT numberField NOT rlike \"?a\"", - "error": true - }, - { - "query": "from a_index | where cidr_match(ipField)", - "error": true - }, - { - "query": "from a_index | eval cidr = \"172.0.0.1/30\" | where cidr_match(ipField, \"172.0.0.1/30\", cidr)", - "error": false - }, - { - "query": "from a_index | where numberField IS NULL", - "error": false - }, - { - "query": "from a_index | where numberField IS null", - "error": false - }, - { - "query": "from a_index | where numberField is null", - "error": false - }, - { - "query": "from a_index | where numberField is NULL", - "error": false - }, - { - "query": "from a_index | where numberField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | where numberField IS NOT null", - "error": false - }, - { - "query": "from a_index | where numberField IS not NULL", - "error": false - }, - { - "query": "from a_index | where numberField Is nOt NuLL", - "error": false - }, - { - "query": "from a_index | where dateField IS NULL", - "error": false - }, - { - "query": "from a_index | where dateField IS null", - "error": false - }, - { - "query": "from a_index | where dateField is null", - "error": false - }, - { - "query": "from a_index | where dateField is NULL", - "error": false - }, - { - "query": "from a_index | where dateField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | where dateField IS NOT null", - "error": false - }, - { - "query": "from a_index | where dateField IS not NULL", - "error": false - }, - { - "query": "from a_index | where dateField Is nOt NuLL", - "error": false - }, - { - "query": "from a_index | where booleanField IS NULL", - "error": false - }, - { - "query": "from a_index | where booleanField IS null", - "error": false - }, - { - "query": "from a_index | where booleanField is null", - "error": false - }, - { - "query": "from a_index | where booleanField is NULL", - "error": false - }, - { - "query": "from a_index | where booleanField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | where booleanField IS NOT null", - "error": false - }, - { - "query": "from a_index | where booleanField IS not NULL", - "error": false - }, - { - "query": "from a_index | where booleanField Is nOt NuLL", - "error": false - }, - { - "query": "from a_index | where ipField IS NULL", - "error": false - }, - { - "query": "from a_index | where ipField IS null", - "error": false - }, - { - "query": "from a_index | where ipField is null", - "error": false - }, - { - "query": "from a_index | where ipField is NULL", - "error": false - }, - { - "query": "from a_index | where ipField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | where ipField IS NOT null", - "error": false - }, - { - "query": "from a_index | where ipField IS not NULL", - "error": false - }, - { - "query": "from a_index | where ipField Is nOt NuLL", - "error": false - }, - { - "query": "from a_index | where stringField IS NULL", - "error": false - }, - { - "query": "from a_index | where stringField IS null", - "error": false - }, - { - "query": "from a_index | where stringField is null", - "error": false - }, - { - "query": "from a_index | where stringField is NULL", - "error": false - }, - { - "query": "from a_index | where stringField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | where stringField IS NOT null", - "error": false - }, - { - "query": "from a_index | where stringField IS not NULL", - "error": false - }, - { - "query": "from a_index | where stringField Is nOt NuLL", - "error": false - }, - { - "query": "from a_index | where cartesianPointField IS NULL", - "error": false - }, - { - "query": "from a_index | where cartesianPointField IS null", - "error": false - }, - { - "query": "from a_index | where cartesianPointField is null", - "error": false - }, - { - "query": "from a_index | where cartesianPointField is NULL", - "error": false - }, - { - "query": "from a_index | where cartesianPointField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | where cartesianPointField IS NOT null", - "error": false - }, - { - "query": "from a_index | where cartesianPointField IS not NULL", - "error": false - }, - { - "query": "from a_index | where cartesianPointField Is nOt NuLL", - "error": false - }, - { - "query": "from a_index | where geoPointField IS NULL", - "error": false - }, - { - "query": "from a_index | where geoPointField IS null", - "error": false - }, - { - "query": "from a_index | where geoPointField is null", - "error": false - }, - { - "query": "from a_index | where geoPointField is NULL", - "error": false - }, - { - "query": "from a_index | where geoPointField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | where geoPointField IS NOT null", - "error": false - }, - { - "query": "from a_index | where geoPointField IS not NULL", - "error": false - }, - { - "query": "from a_index | where geoPointField Is nOt NuLL", - "error": false - }, - { - "query": "from a_index | where avg(numberField)", - "error": true - }, - { - "query": "from a_index | where avg(numberField) > 0", - "error": true - }, - { - "query": "from a_index | where max(numberField)", - "error": true - }, - { - "query": "from a_index | where max(numberField) > 0", - "error": true - }, - { - "query": "from a_index | where min(numberField)", - "error": true - }, - { - "query": "from a_index | where min(numberField) > 0", - "error": true - }, - { - "query": "from a_index | where sum(numberField)", - "error": true - }, - { - "query": "from a_index | where sum(numberField) > 0", - "error": true - }, - { - "query": "from a_index | where median(numberField)", - "error": true - }, - { - "query": "from a_index | where median(numberField) > 0", - "error": true - }, - { - "query": "from a_index | where median_absolute_deviation(numberField)", - "error": true - }, - { - "query": "from a_index | where median_absolute_deviation(numberField) > 0", - "error": true - }, - { - "query": "from a_index | where percentile(numberField, 5)", - "error": true - }, - { - "query": "from a_index | where percentile(numberField, 5) > 0", - "error": true - }, - { - "query": "from a_index | where count(stringField)", - "error": true - }, - { - "query": "from a_index | where count(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where count_distinct(stringField, numberField)", - "error": true - }, - { - "query": "from a_index | where count_distinct(stringField, numberField) > 0", - "error": true - }, - { - "query": "from a_index | where abs(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where abs(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where acos(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where acos(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where asin(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where asin(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where atan(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where atan(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where atan2(numberField, numberField) > 0", - "error": false - }, - { - "query": "from a_index | where atan2(stringField, stringField) > 0", - "error": true - }, - { - "query": "from a_index | where ceil(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where ceil(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where length(concat(stringField, stringField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(concat(numberField, numberField)) > 0", - "error": true - }, - { - "query": "from a_index | where cos(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where cos(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where cosh(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where cosh(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where e() > 0", - "error": false - }, - { - "query": "from a_index | where e() > 0", - "error": false - }, - { - "query": "from a_index | where floor(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where floor(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where length(left(stringField, numberField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(left(numberField, stringField)) > 0", - "error": true - }, - { - "query": "from a_index | where length(stringField) > 0", - "error": false - }, - { - "query": "from a_index | where length(numberField) > 0", - "error": true - }, - { - "query": "from a_index | where log(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where log(stringField, stringField) > 0", - "error": true - }, - { - "query": "from a_index | where log10(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where log10(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where length(ltrim(stringField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(ltrim(numberField)) > 0", - "error": true - }, - { - "query": "from a_index | where mv_avg(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where mv_avg(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where length(mv_concat(stringField, stringField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(mv_concat(numberField, numberField)) > 0", - "error": true - }, - { - "query": "from a_index | where mv_median(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where mv_median(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where mv_sum(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where mv_sum(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where pi() > 0", - "error": false - }, - { - "query": "from a_index | where pi() > 0", - "error": false - }, - { - "query": "from a_index | where pow(numberField, numberField) > 0", - "error": false - }, - { - "query": "from a_index | where pow(stringField, stringField) > 0", - "error": true - }, - { - "query": "from a_index | where length(replace(stringField, stringField, stringField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(replace(numberField, numberField, numberField)) > 0", - "error": true - }, - { - "query": "from a_index | where length(right(stringField, numberField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(right(numberField, stringField)) > 0", - "error": true - }, - { - "query": "from a_index | where round(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where round(stringField, stringField) > 0", - "error": true - }, - { - "query": "from a_index | where length(rtrim(stringField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(rtrim(numberField)) > 0", - "error": true - }, - { - "query": "from a_index | where sin(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where sin(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where sinh(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where sinh(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where length(split(stringField, stringField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(split(numberField, numberField)) > 0", - "error": true - }, - { - "query": "from a_index | where sqrt(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where sqrt(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where length(substring(stringField, numberField, numberField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(substring(numberField, stringField, stringField)) > 0", - "error": true - }, - { - "query": "from a_index | where tan(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where tan(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where tanh(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where tanh(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where tau() > 0", - "error": false - }, - { - "query": "from a_index | where tau() > 0", - "error": false - }, - { - "query": "from a_index | where to_degrees(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where to_degrees(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where length(to_lower(stringField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(to_lower(numberField)) > 0", - "error": true - }, - { - "query": "from a_index | where to_radians(numberField) > 0", - "error": false - }, - { - "query": "from a_index | where to_radians(stringField) > 0", - "error": true - }, - { - "query": "from a_index | where length(to_upper(stringField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(to_upper(numberField)) > 0", - "error": true - }, - { - "query": "from a_index | where length(trim(stringField)) > 0", - "error": false - }, - { - "query": "from a_index | where length(trim(numberField)) > 0", - "error": true - }, - { - "query": "from a_index | eval ", - "error": true - }, - { - "query": "from a_index | eval stringField ", - "error": false - }, - { - "query": "from a_index | eval b = stringField", - "error": false - }, - { - "query": "from a_index | eval numberField + 1", - "error": false - }, - { - "query": "from a_index | eval numberField + ", - "error": true - }, - { - "query": "from a_index | eval stringField + 1", - "error": true - }, - { - "query": "from a_index | eval a=b", - "error": true - }, - { - "query": "from a_index | eval a=b, ", - "error": true - }, - { - "query": "from a_index | eval a=round", - "error": true - }, - { - "query": "from a_index | eval a=round(", - "error": true - }, - { - "query": "from a_index | eval a=round(numberField) ", - "error": false - }, - { - "query": "from a_index | eval a=round(numberField), ", - "error": true - }, - { - "query": "from a_index | eval a=round(numberField) + round(numberField) ", - "error": false - }, - { - "query": "from a_index | eval a=round(numberField) + round(stringField) ", - "error": true - }, - { - "query": "from a_index | eval a=round(numberField) + round(stringField), numberField ", - "error": true - }, - { - "query": "from a_index | eval a=round(numberField) + round(numberField), numberField ", - "error": false - }, - { - "query": "from a_index | eval a=round(numberField) + round(numberField), b = numberField ", - "error": false - }, - { - "query": "from a_index | eval a=[1, 2, 3]", - "error": false - }, - { - "query": "from a_index | eval a=[true, false]", - "error": false - }, - { - "query": "from a_index | eval a=[\"a\", \"b\"]", - "error": false - }, - { - "query": "from a_index | eval a=null", - "error": false - }, - { - "query": "from a_index | eval numberField IS NULL", - "error": false - }, - { - "query": "from a_index | eval numberField IS null", - "error": false - }, - { - "query": "from a_index | eval numberField is null", - "error": false - }, - { - "query": "from a_index | eval numberField is NULL", - "error": false - }, - { - "query": "from a_index | eval numberField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | eval numberField IS NOT null", - "error": false - }, - { - "query": "from a_index | eval numberField IS not NULL", - "error": false - }, - { - "query": "from a_index | eval dateField IS NULL", - "error": false - }, - { - "query": "from a_index | eval dateField IS null", - "error": false - }, - { - "query": "from a_index | eval dateField is null", - "error": false - }, - { - "query": "from a_index | eval dateField is NULL", - "error": false - }, - { - "query": "from a_index | eval dateField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | eval dateField IS NOT null", - "error": false - }, - { - "query": "from a_index | eval dateField IS not NULL", - "error": false - }, - { - "query": "from a_index | eval booleanField IS NULL", - "error": false - }, - { - "query": "from a_index | eval booleanField IS null", - "error": false - }, - { - "query": "from a_index | eval booleanField is null", - "error": false - }, - { - "query": "from a_index | eval booleanField is NULL", - "error": false - }, - { - "query": "from a_index | eval booleanField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | eval booleanField IS NOT null", - "error": false - }, - { - "query": "from a_index | eval booleanField IS not NULL", - "error": false - }, - { - "query": "from a_index | eval ipField IS NULL", - "error": false - }, - { - "query": "from a_index | eval ipField IS null", - "error": false - }, - { - "query": "from a_index | eval ipField is null", - "error": false - }, - { - "query": "from a_index | eval ipField is NULL", - "error": false - }, - { - "query": "from a_index | eval ipField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | eval ipField IS NOT null", - "error": false - }, - { - "query": "from a_index | eval ipField IS not NULL", - "error": false - }, - { - "query": "from a_index | eval stringField IS NULL", - "error": false - }, - { - "query": "from a_index | eval stringField IS null", - "error": false - }, - { - "query": "from a_index | eval stringField is null", - "error": false - }, - { - "query": "from a_index | eval stringField is NULL", - "error": false - }, - { - "query": "from a_index | eval stringField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | eval stringField IS NOT null", - "error": false - }, - { - "query": "from a_index | eval stringField IS not NULL", - "error": false - }, - { - "query": "from a_index | eval cartesianPointField IS NULL", - "error": false - }, - { - "query": "from a_index | eval cartesianPointField IS null", - "error": false - }, - { - "query": "from a_index | eval cartesianPointField is null", - "error": false - }, - { - "query": "from a_index | eval cartesianPointField is NULL", - "error": false - }, - { - "query": "from a_index | eval cartesianPointField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | eval cartesianPointField IS NOT null", - "error": false - }, - { - "query": "from a_index | eval cartesianPointField IS not NULL", - "error": false - }, - { - "query": "from a_index | eval geoPointField IS NULL", - "error": false - }, - { - "query": "from a_index | eval geoPointField IS null", - "error": false - }, - { - "query": "from a_index | eval geoPointField is null", - "error": false - }, - { - "query": "from a_index | eval geoPointField is NULL", - "error": false - }, - { - "query": "from a_index | eval geoPointField IS NOT NULL", - "error": false - }, - { - "query": "from a_index | eval geoPointField IS NOT null", - "error": false - }, - { - "query": "from a_index | eval geoPointField IS not NULL", - "error": false - }, - { - "query": "from a_index | eval - numberField", - "error": false - }, - { - "query": "from a_index | eval a=- numberField", - "error": false - }, - { - "query": "from a_index | eval a=- round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + - numberField", - "error": false - }, - { - "query": "from a_index | eval 1 - numberField", - "error": false - }, - { - "query": "from a_index | eval - numberField", - "error": false - }, - { - "query": "from a_index | eval a=- numberField", - "error": false - }, - { - "query": "from a_index | eval a=- round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + - numberField", - "error": false - }, - { - "query": "from a_index | eval 1 - numberField", - "error": false - }, - { - "query": "from a_index | eval + numberField", - "error": false - }, - { - "query": "from a_index | eval a=+ numberField", - "error": false - }, - { - "query": "from a_index | eval a=+ round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + + numberField", - "error": false - }, - { - "query": "from a_index | eval 1 + numberField", - "error": false - }, - { - "query": "from a_index | eval + numberField", - "error": false - }, - { - "query": "from a_index | eval a=+ numberField", - "error": false - }, - { - "query": "from a_index | eval a=+ round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + + numberField", - "error": false - }, - { - "query": "from a_index | eval 1 + numberField", - "error": false - }, - { - "query": "from a_index | eval not booleanField", - "error": false - }, - { - "query": "from a_index | eval -- numberField", - "error": false - }, - { - "query": "from a_index | eval a=-- numberField", - "error": false - }, - { - "query": "from a_index | eval a=-- round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + -- numberField", - "error": false - }, - { - "query": "from a_index | eval 1 -- numberField", - "error": false - }, - { - "query": "from a_index | eval -+ numberField", - "error": false - }, - { - "query": "from a_index | eval a=-+ numberField", - "error": false - }, - { - "query": "from a_index | eval a=-+ round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + -+ numberField", - "error": false - }, - { - "query": "from a_index | eval 1 -+ numberField", - "error": false - }, - { - "query": "from a_index | eval +- numberField", - "error": false - }, - { - "query": "from a_index | eval a=+- numberField", - "error": false - }, - { - "query": "from a_index | eval a=+- round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + +- numberField", - "error": false - }, - { - "query": "from a_index | eval 1 +- numberField", - "error": false - }, - { - "query": "from a_index | eval ++ numberField", - "error": false - }, - { - "query": "from a_index | eval a=++ numberField", - "error": false - }, - { - "query": "from a_index | eval a=++ round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + ++ numberField", - "error": false - }, - { - "query": "from a_index | eval 1 ++ numberField", - "error": false - }, - { - "query": "from a_index | eval not not booleanField", - "error": false - }, - { - "query": "from a_index | eval --- numberField", - "error": false - }, - { - "query": "from a_index | eval a=--- numberField", - "error": false - }, - { - "query": "from a_index | eval a=--- round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + --- numberField", - "error": false - }, - { - "query": "from a_index | eval 1 --- numberField", - "error": false - }, - { - "query": "from a_index | eval -+- numberField", - "error": false - }, - { - "query": "from a_index | eval a=-+- numberField", - "error": false - }, - { - "query": "from a_index | eval a=-+- round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + -+- numberField", - "error": false - }, - { - "query": "from a_index | eval 1 -+- numberField", - "error": false - }, - { - "query": "from a_index | eval +-+ numberField", - "error": false - }, - { - "query": "from a_index | eval a=+-+ numberField", - "error": false - }, - { - "query": "from a_index | eval a=+-+ round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + +-+ numberField", - "error": false - }, - { - "query": "from a_index | eval 1 +-+ numberField", - "error": false - }, - { - "query": "from a_index | eval +++ numberField", - "error": false - }, - { - "query": "from a_index | eval a=+++ numberField", - "error": false - }, - { - "query": "from a_index | eval a=+++ round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + +++ numberField", - "error": false - }, - { - "query": "from a_index | eval 1 +++ numberField", - "error": false - }, - { - "query": "from a_index | eval not not not booleanField", - "error": false - }, - { - "query": "from a_index | eval ---- numberField", - "error": false - }, - { - "query": "from a_index | eval a=---- numberField", - "error": false - }, - { - "query": "from a_index | eval a=---- round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + ---- numberField", - "error": false - }, - { - "query": "from a_index | eval 1 ---- numberField", - "error": false - }, - { - "query": "from a_index | eval -+-+ numberField", - "error": false - }, - { - "query": "from a_index | eval a=-+-+ numberField", - "error": false - }, - { - "query": "from a_index | eval a=-+-+ round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + -+-+ numberField", - "error": false - }, - { - "query": "from a_index | eval 1 -+-+ numberField", - "error": false - }, - { - "query": "from a_index | eval +-+- numberField", - "error": false - }, - { - "query": "from a_index | eval a=+-+- numberField", - "error": false - }, - { - "query": "from a_index | eval a=+-+- round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + +-+- numberField", - "error": false - }, - { - "query": "from a_index | eval 1 +-+- numberField", - "error": false - }, - { - "query": "from a_index | eval ++++ numberField", - "error": false - }, - { - "query": "from a_index | eval a=++++ numberField", - "error": false - }, - { - "query": "from a_index | eval a=++++ round(numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 + ++++ numberField", - "error": false - }, - { - "query": "from a_index | eval 1 ++++ numberField", - "error": false - }, - { - "query": "from a_index | eval not not not not booleanField", - "error": false - }, - { - "query": "from a_index | eval *+ numberField", - "error": true - }, - { - "query": "from a_index | eval /+ numberField", - "error": true - }, - { - "query": "from a_index | eval %+ numberField", - "error": true - }, - { - "query": "from a_index | eval var = avg(numberField)", - "error": true - }, - { - "query": "from a_index | eval var = avg(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval avg(numberField)", - "error": true - }, - { - "query": "from a_index | eval avg(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval var = max(numberField)", - "error": true - }, - { - "query": "from a_index | eval var = max(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval max(numberField)", - "error": true - }, - { - "query": "from a_index | eval max(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval var = min(numberField)", - "error": true - }, - { - "query": "from a_index | eval var = min(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval min(numberField)", - "error": true - }, - { - "query": "from a_index | eval min(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval var = sum(numberField)", - "error": true - }, - { - "query": "from a_index | eval var = sum(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval sum(numberField)", - "error": true - }, - { - "query": "from a_index | eval sum(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval var = median(numberField)", - "error": true - }, - { - "query": "from a_index | eval var = median(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval median(numberField)", - "error": true - }, - { - "query": "from a_index | eval median(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval var = median_absolute_deviation(numberField)", - "error": true - }, - { - "query": "from a_index | eval var = median_absolute_deviation(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval median_absolute_deviation(numberField)", - "error": true - }, - { - "query": "from a_index | eval median_absolute_deviation(numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval var = percentile(numberField, 5)", - "error": true - }, - { - "query": "from a_index | eval var = percentile(numberField, 5) > 0", - "error": true - }, - { - "query": "from a_index | eval percentile(numberField, 5)", - "error": true - }, - { - "query": "from a_index | eval percentile(numberField, 5) > 0", - "error": true - }, - { - "query": "from a_index | eval var = count(stringField)", - "error": true - }, - { - "query": "from a_index | eval var = count(stringField) > 0", - "error": true - }, - { - "query": "from a_index | eval count(stringField)", - "error": true - }, - { - "query": "from a_index | eval count(stringField) > 0", - "error": true - }, - { - "query": "from a_index | eval var = count_distinct(stringField, numberField)", - "error": true - }, - { - "query": "from a_index | eval var = count_distinct(stringField, numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval count_distinct(stringField, numberField)", - "error": true - }, - { - "query": "from a_index | eval count_distinct(stringField, numberField) > 0", - "error": true - }, - { - "query": "from a_index | eval var = st_centroid(cartesianPointField)", - "error": true - }, - { - "query": "from a_index | eval var = st_centroid(cartesianPointField) > 0", - "error": true - }, - { - "query": "from a_index | eval st_centroid(cartesianPointField)", - "error": true - }, - { - "query": "from a_index | eval st_centroid(cartesianPointField) > 0", - "error": true - }, - { - "query": "from a_index | eval var = st_centroid(geoPointField)", - "error": true - }, - { - "query": "from a_index | eval var = st_centroid(geoPointField) > 0", - "error": true - }, - { - "query": "from a_index | eval st_centroid(geoPointField)", - "error": true - }, - { - "query": "from a_index | eval st_centroid(geoPointField) > 0", - "error": true - }, - { - "query": "from a_index | eval var = abs(numberField)", - "error": false - }, - { - "query": "from a_index | eval abs(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = abs(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval abs(stringField)", - "error": true - }, - { - "query": "from a_index | eval abs(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = abs(*)", - "error": true - }, - { - "query": "from a_index | eval var = acos(numberField)", - "error": false - }, - { - "query": "from a_index | eval acos(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = acos(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval acos(stringField)", - "error": true - }, - { - "query": "from a_index | eval acos(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = acos(*)", - "error": true - }, - { - "query": "from a_index | eval var = asin(numberField)", - "error": false - }, - { - "query": "from a_index | eval asin(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = asin(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval asin(stringField)", - "error": true - }, - { - "query": "from a_index | eval asin(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = asin(*)", - "error": true - }, - { - "query": "from a_index | eval var = atan(numberField)", - "error": false - }, - { - "query": "from a_index | eval atan(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = atan(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval atan(stringField)", - "error": true - }, - { - "query": "from a_index | eval atan(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = atan(*)", - "error": true - }, - { - "query": "from a_index | eval var = atan2(numberField, numberField)", - "error": false - }, - { - "query": "from a_index | eval atan2(numberField, numberField)", - "error": false - }, - { - "query": "from a_index | eval var = atan2(to_integer(stringField), to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval atan2(stringField, stringField)", - "error": true - }, - { - "query": "from a_index | eval atan2(numberField, numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = auto_bucket(dateField, numberField, \"a\", \"a\")", - "error": false - }, - { - "query": "from a_index | eval auto_bucket(dateField, numberField, \"a\", \"a\")", - "error": false - }, - { - "query": "from a_index | eval auto_bucket(dateField, numberField, stringField, stringField)", - "error": true - }, - { - "query": "from a_index | eval var = auto_bucket(dateField, numberField, 5, 5)", - "error": false - }, - { - "query": "from a_index | eval auto_bucket(dateField, numberField, 5, 5)", - "error": false - }, - { - "query": "from a_index | eval auto_bucket(dateField, numberField, numberField, numberField)", - "error": true - }, - { - "query": "from a_index | eval var = case(booleanField, stringField)", - "error": false - }, - { - "query": "from a_index | eval case(booleanField, stringField)", - "error": false - }, - { - "query": "from a_index | eval var = ceil(numberField)", - "error": false - }, - { - "query": "from a_index | eval ceil(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = ceil(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval ceil(stringField)", - "error": true - }, - { - "query": "from a_index | eval ceil(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = ceil(*)", - "error": true - }, - { - "query": "from a_index | eval var = cidr_match(ipField, stringField)", - "error": false - }, - { - "query": "from a_index | eval cidr_match(ipField, stringField)", - "error": false - }, - { - "query": "from a_index | eval var = cidr_match(to_ip(stringField), to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval cidr_match(stringField, numberField)", - "error": true - }, - { - "query": "from a_index | eval var = coalesce(stringField)", - "error": false - }, - { - "query": "from a_index | eval coalesce(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = concat(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval concat(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval var = concat(to_string(stringField), to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval concat(numberField, numberField)", - "error": true - }, - { - "query": "from a_index | eval var = cos(numberField)", - "error": false - }, - { - "query": "from a_index | eval cos(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = cos(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval cos(stringField)", - "error": true - }, - { - "query": "from a_index | eval cos(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = cos(*)", - "error": true - }, - { - "query": "from a_index | eval var = cosh(numberField)", - "error": false - }, - { - "query": "from a_index | eval cosh(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = cosh(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval cosh(stringField)", - "error": true - }, - { - "query": "from a_index | eval cosh(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = cosh(*)", - "error": true - }, - { - "query": "from a_index | eval var = date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", dateField)", - "error": false - }, - { - "query": "from a_index | eval date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", dateField)", - "error": false - }, - { - "query": "from a_index | eval var = date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", to_datetime(stringField))", - "error": false - }, - { - "query": "from a_index | eval date_extract(stringField, stringField)", - "error": true - }, - { - "query": "from a_index | eval date_extract(\"ALIGNED_DAY_OF_WEEK_IN_MONTH\", dateField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = date_format(dateField, stringField)", - "error": false - }, - { - "query": "from a_index | eval date_format(dateField, stringField)", - "error": false - }, - { - "query": "from a_index | eval var = date_format(to_datetime(stringField), to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval date_format(stringField, numberField)", - "error": true - }, - { - "query": "from a_index | eval date_format(dateField, stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = date_parse(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval date_parse(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval var = date_parse(to_string(stringField), to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval date_parse(numberField, numberField)", - "error": true - }, - { - "query": "from a_index | eval date_parse(stringField, stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = date_trunc(1 year, dateField)", - "error": false - }, - { - "query": "from a_index | eval date_trunc(1 year, dateField)", - "error": false - }, - { - "query": "from a_index | eval var = date_trunc(1 year, to_datetime(stringField))", - "error": false - }, - { - "query": "from a_index | eval date_trunc(stringField, stringField)", - "error": true - }, - { - "query": "from a_index | eval date_trunc(1 year, dateField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = e()", - "error": false - }, - { - "query": "from a_index | eval e()", - "error": false - }, - { - "query": "from a_index | eval var = e()", - "error": false - }, - { - "query": "from a_index | eval e()", - "error": false - }, - { - "query": "from a_index | eval e(extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = ends_with(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval ends_with(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval var = ends_with(to_string(stringField), to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval ends_with(numberField, numberField)", - "error": true - }, - { - "query": "from a_index | eval ends_with(stringField, stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = floor(numberField)", - "error": false - }, - { - "query": "from a_index | eval floor(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = floor(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval floor(stringField)", - "error": true - }, - { - "query": "from a_index | eval floor(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = floor(*)", - "error": true - }, - { - "query": "from a_index | eval var = greatest(stringField)", - "error": false - }, - { - "query": "from a_index | eval greatest(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = least(stringField)", - "error": false - }, - { - "query": "from a_index | eval least(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = left(stringField, numberField)", - "error": false - }, - { - "query": "from a_index | eval left(stringField, numberField)", - "error": false - }, - { - "query": "from a_index | eval var = left(to_string(stringField), to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval left(numberField, stringField)", - "error": true - }, - { - "query": "from a_index | eval left(stringField, numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = length(stringField)", - "error": false - }, - { - "query": "from a_index | eval length(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = length(to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval length(numberField)", - "error": true - }, - { - "query": "from a_index | eval length(stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = length(*)", - "error": true - }, - { - "query": "from a_index | eval var = log(numberField, numberField)", - "error": false - }, - { - "query": "from a_index | eval log(numberField, numberField)", - "error": false - }, - { - "query": "from a_index | eval var = log(to_integer(stringField), to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval log(stringField, stringField)", - "error": true - }, - { - "query": "from a_index | eval log(numberField, numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = log10(numberField)", - "error": false - }, - { - "query": "from a_index | eval log10(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = log10(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval log10(stringField)", - "error": true - }, - { - "query": "from a_index | eval log10(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = log10(*)", - "error": true - }, - { - "query": "from a_index | eval var = ltrim(stringField)", - "error": false - }, - { - "query": "from a_index | eval ltrim(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = ltrim(to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval ltrim(numberField)", - "error": true - }, - { - "query": "from a_index | eval ltrim(stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = ltrim(*)", - "error": true - }, - { - "query": "from a_index | eval var = mv_avg(numberField)", - "error": false - }, - { - "query": "from a_index | eval mv_avg(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = mv_avg(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval mv_avg(stringField)", - "error": true - }, - { - "query": "from a_index | eval mv_avg(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = mv_avg(*)", - "error": true - }, - { - "query": "from a_index | eval var = mv_concat(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval mv_concat(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval var = mv_concat(to_string(stringField), to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval mv_concat(numberField, numberField)", - "error": true - }, - { - "query": "from a_index | eval mv_concat(stringField, stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = mv_count(stringField)", - "error": false - }, - { - "query": "from a_index | eval mv_count(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = mv_count(*)", - "error": true - }, - { - "query": "from a_index | eval var = mv_dedupe(stringField)", - "error": false - }, - { - "query": "from a_index | eval mv_dedupe(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = mv_dedupe(*)", - "error": true - }, - { - "query": "from a_index | eval var = mv_first(stringField)", - "error": false - }, - { - "query": "from a_index | eval mv_first(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = mv_first(*)", - "error": true - }, - { - "query": "from a_index | eval var = mv_last(stringField)", - "error": false - }, - { - "query": "from a_index | eval mv_last(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = mv_last(*)", - "error": true - }, - { - "query": "from a_index | eval var = mv_max(stringField)", - "error": false - }, - { - "query": "from a_index | eval mv_max(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = mv_max(*)", - "error": true - }, - { - "query": "from a_index | eval var = mv_median(numberField)", - "error": false - }, - { - "query": "from a_index | eval mv_median(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = mv_median(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval mv_median(stringField)", - "error": true - }, - { - "query": "from a_index | eval mv_median(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = mv_median(*)", - "error": true - }, - { - "query": "from a_index | eval var = mv_min(stringField)", - "error": false - }, - { - "query": "from a_index | eval mv_min(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = mv_min(*)", - "error": true - }, - { - "query": "from a_index | eval var = mv_sum(numberField)", - "error": false - }, - { - "query": "from a_index | eval mv_sum(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = mv_sum(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval mv_sum(stringField)", - "error": true - }, - { - "query": "from a_index | eval mv_sum(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = mv_sum(*)", - "error": true - }, - { - "query": "from a_index | eval var = now()", - "error": false - }, - { - "query": "from a_index | eval now()", - "error": false - }, - { - "query": "from a_index | eval var = now()", - "error": false - }, - { - "query": "from a_index | eval now()", - "error": false - }, - { - "query": "from a_index | eval now(extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = pi()", - "error": false - }, - { - "query": "from a_index | eval pi()", - "error": false - }, - { - "query": "from a_index | eval var = pi()", - "error": false - }, - { - "query": "from a_index | eval pi()", - "error": false - }, - { - "query": "from a_index | eval pi(extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = pow(numberField, numberField)", - "error": false - }, - { - "query": "from a_index | eval pow(numberField, numberField)", - "error": false - }, - { - "query": "from a_index | eval var = pow(to_integer(stringField), to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval pow(stringField, stringField)", - "error": true - }, - { - "query": "from a_index | eval pow(numberField, numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = replace(stringField, stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval replace(stringField, stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval var = replace(to_string(stringField), to_string(stringField), to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval replace(numberField, numberField, numberField)", - "error": true - }, - { - "query": "from a_index | eval replace(stringField, stringField, stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = right(stringField, numberField)", - "error": false - }, - { - "query": "from a_index | eval right(stringField, numberField)", - "error": false - }, - { - "query": "from a_index | eval var = right(to_string(stringField), to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval right(numberField, stringField)", - "error": true - }, - { - "query": "from a_index | eval right(stringField, numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = round(numberField, numberField)", - "error": false - }, - { - "query": "from a_index | eval round(numberField, numberField)", - "error": false - }, - { - "query": "from a_index | eval var = round(to_integer(stringField), to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval round(stringField, stringField)", - "error": true - }, - { - "query": "from a_index | eval round(numberField, numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = rtrim(stringField)", - "error": false - }, - { - "query": "from a_index | eval rtrim(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = rtrim(to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval rtrim(numberField)", - "error": true - }, - { - "query": "from a_index | eval rtrim(stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = rtrim(*)", - "error": true - }, - { - "query": "from a_index | eval var = sin(numberField)", - "error": false - }, - { - "query": "from a_index | eval sin(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = sin(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval sin(stringField)", - "error": true - }, - { - "query": "from a_index | eval sin(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = sin(*)", - "error": true - }, - { - "query": "from a_index | eval var = sinh(numberField)", - "error": false - }, - { - "query": "from a_index | eval sinh(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = sinh(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval sinh(stringField)", - "error": true - }, - { - "query": "from a_index | eval sinh(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = sinh(*)", - "error": true - }, - { - "query": "from a_index | eval var = split(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval split(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval var = split(to_string(stringField), to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval split(numberField, numberField)", - "error": true - }, - { - "query": "from a_index | eval split(stringField, stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = sqrt(numberField)", - "error": false - }, - { - "query": "from a_index | eval sqrt(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = sqrt(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval sqrt(stringField)", - "error": true - }, - { - "query": "from a_index | eval sqrt(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = sqrt(*)", - "error": true - }, - { - "query": "from a_index | eval var = starts_with(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval starts_with(stringField, stringField)", - "error": false - }, - { - "query": "from a_index | eval var = starts_with(to_string(stringField), to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval starts_with(numberField, numberField)", - "error": true - }, - { - "query": "from a_index | eval starts_with(stringField, stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = substring(stringField, numberField, numberField)", - "error": false - }, - { - "query": "from a_index | eval substring(stringField, numberField, numberField)", - "error": false - }, - { - "query": "from a_index | eval var = substring(to_string(stringField), to_integer(stringField), to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval substring(numberField, stringField, stringField)", - "error": true - }, - { - "query": "from a_index | eval substring(stringField, numberField, numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = tan(numberField)", - "error": false - }, - { - "query": "from a_index | eval tan(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = tan(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval tan(stringField)", - "error": true - }, - { - "query": "from a_index | eval tan(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = tan(*)", - "error": true - }, - { - "query": "from a_index | eval var = tanh(numberField)", - "error": false - }, - { - "query": "from a_index | eval tanh(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = tanh(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval tanh(stringField)", - "error": true - }, - { - "query": "from a_index | eval tanh(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = tanh(*)", - "error": true - }, - { - "query": "from a_index | eval var = tau()", - "error": false - }, - { - "query": "from a_index | eval tau()", - "error": false - }, - { - "query": "from a_index | eval var = tau()", - "error": false - }, - { - "query": "from a_index | eval tau()", - "error": false - }, - { - "query": "from a_index | eval tau(extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = to_boolean(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_boolean(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_bool(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_boolean(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_cartesianpoint(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_cartesianpoint(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_cartesianpoint(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_cartesianshape(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_cartesianshape(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_cartesianshape(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_datetime(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_datetime(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_dt(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_datetime(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_degrees(numberField)", - "error": false - }, - { - "query": "from a_index | eval to_degrees(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = to_degrees(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval to_degrees(stringField)", - "error": true - }, - { - "query": "from a_index | eval to_degrees(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = to_degrees(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_double(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_double(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_dbl(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_double(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_geopoint(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_geopoint(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_geopoint(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_geoshape(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_geoshape(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_geoshape(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_integer(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_integer(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_int(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_integer(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_ip(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_ip(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_ip(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_long(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_long(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_long(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_lower(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_lower(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_lower(to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval to_lower(numberField)", - "error": true - }, - { - "query": "from a_index | eval to_lower(stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = to_lower(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_radians(numberField)", - "error": false - }, - { - "query": "from a_index | eval to_radians(numberField)", - "error": false - }, - { - "query": "from a_index | eval var = to_radians(to_integer(stringField))", - "error": false - }, - { - "query": "from a_index | eval to_radians(stringField)", - "error": true - }, - { - "query": "from a_index | eval to_radians(numberField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = to_radians(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_string(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_string(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_str(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_string(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_unsigned_long(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_unsigned_long(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_ul(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_ulong(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_unsigned_long(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_upper(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_upper(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_upper(to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval to_upper(numberField)", - "error": true - }, - { - "query": "from a_index | eval to_upper(stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = to_upper(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_version(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_version(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_ver(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_version(*)", - "error": true - }, - { - "query": "from a_index | eval var = to_version(stringField)", - "error": false - }, - { - "query": "from a_index | eval to_version(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_ver(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = to_version(*)", - "error": true - }, - { - "query": "from a_index | eval var = trim(stringField)", - "error": false - }, - { - "query": "from a_index | eval trim(stringField)", - "error": false - }, - { - "query": "from a_index | eval var = trim(to_string(stringField))", - "error": false - }, - { - "query": "from a_index | eval trim(numberField)", - "error": true - }, - { - "query": "from a_index | eval trim(stringField, extraArg)", - "error": true - }, - { - "query": "from a_index | eval var = trim(*)", - "error": true - }, - { - "query": "from a_index | eval log10(-1)", - "error": false - }, - { - "query": "from a_index | eval log(-1)", - "error": false - }, - { - "query": "from a_index | eval log(-1, 20)", - "error": false - }, - { - "query": "from a_index | eval log(-1, -20)", - "error": false - }, - { - "query": "from a_index | eval var0 = log(-1, -20)", - "error": false - }, - { - "query": "from a_index | eval numberField > 0", - "error": false - }, - { - "query": "from a_index | eval NOT numberField > 0", - "error": false - }, - { - "query": "from a_index | eval (numberField > 0)", - "error": false - }, - { - "query": "from a_index | eval (NOT (numberField > 0))", - "error": false - }, - { - "query": "from a_index | eval 1 > 0", - "error": false - }, - { - "query": "from a_index | eval stringField > 0", - "error": true - }, - { - "query": "from a_index | eval numberField >= 0", - "error": false - }, - { - "query": "from a_index | eval NOT numberField >= 0", - "error": false - }, - { - "query": "from a_index | eval (numberField >= 0)", - "error": false - }, - { - "query": "from a_index | eval (NOT (numberField >= 0))", - "error": false - }, - { - "query": "from a_index | eval 1 >= 0", - "error": false - }, - { - "query": "from a_index | eval stringField >= 0", - "error": true - }, - { - "query": "from a_index | eval numberField < 0", - "error": false - }, - { - "query": "from a_index | eval NOT numberField < 0", - "error": false - }, - { - "query": "from a_index | eval (numberField < 0)", - "error": false - }, - { - "query": "from a_index | eval (NOT (numberField < 0))", - "error": false - }, - { - "query": "from a_index | eval 1 < 0", - "error": false - }, - { - "query": "from a_index | eval stringField < 0", - "error": true - }, - { - "query": "from a_index | eval numberField <= 0", - "error": false - }, - { - "query": "from a_index | eval NOT numberField <= 0", - "error": false - }, - { - "query": "from a_index | eval (numberField <= 0)", - "error": false - }, - { - "query": "from a_index | eval (NOT (numberField <= 0))", - "error": false - }, - { - "query": "from a_index | eval 1 <= 0", - "error": false - }, - { - "query": "from a_index | eval stringField <= 0", - "error": true - }, - { - "query": "from a_index | eval numberField == 0", - "error": false - }, - { - "query": "from a_index | eval NOT numberField == 0", - "error": false - }, - { - "query": "from a_index | eval (numberField == 0)", - "error": false - }, - { - "query": "from a_index | eval (NOT (numberField == 0))", - "error": false - }, - { - "query": "from a_index | eval 1 == 0", - "error": false - }, - { - "query": "from a_index | eval stringField == 0", - "error": true - }, - { - "query": "from a_index | eval numberField + 1", - "error": false - }, - { - "query": "from a_index | eval (numberField + 1)", - "error": false - }, - { - "query": "from a_index | eval 1 + 1", - "error": false - }, - { - "query": "from a_index | eval numberField - 1", - "error": false - }, - { - "query": "from a_index | eval (numberField - 1)", - "error": false - }, - { - "query": "from a_index | eval 1 - 1", - "error": false - }, - { - "query": "from a_index | eval numberField * 1", - "error": false - }, - { - "query": "from a_index | eval (numberField * 1)", - "error": false - }, - { - "query": "from a_index | eval 1 * 1", - "error": false - }, - { - "query": "from a_index | eval numberField / 1", - "error": false - }, - { - "query": "from a_index | eval (numberField / 1)", - "error": false - }, - { - "query": "from a_index | eval 1 / 1", - "error": false - }, - { - "query": "from a_index | eval numberField % 1", - "error": false - }, - { - "query": "from a_index | eval (numberField % 1)", - "error": false - }, - { - "query": "from a_index | eval 1 % 1", - "error": false - }, - { - "query": "from a_index | eval 1/0", - "error": false - }, - { - "query": "from a_index | eval var = 1/0", - "error": false - }, - { - "query": "from a_index | eval 1 + 1/0", - "error": false - }, - { - "query": "from a_index | eval 1%0", - "error": false - }, - { - "query": "from a_index | eval var = 1%0", - "error": false - }, - { - "query": "from a_index | eval 1 + 1%0", - "error": false - }, - { - "query": "from a_index | eval stringField like \"?a\"", - "error": false - }, - { - "query": "from a_index | eval stringField NOT like \"?a\"", - "error": false - }, - { - "query": "from a_index | eval NOT stringField like \"?a\"", - "error": false - }, - { - "query": "from a_index | eval NOT stringField NOT like \"?a\"", - "error": false - }, - { - "query": "from a_index | eval numberField like \"?a\"", - "error": true - }, - { - "query": "from a_index | eval numberField NOT like \"?a\"", - "error": true - }, - { - "query": "from a_index | eval NOT numberField like \"?a\"", - "error": true - }, - { - "query": "from a_index | eval NOT numberField NOT like \"?a\"", - "error": true - }, - { - "query": "from a_index | eval stringField rlike \"?a\"", - "error": false - }, - { - "query": "from a_index | eval stringField NOT rlike \"?a\"", - "error": false - }, - { - "query": "from a_index | eval NOT stringField rlike \"?a\"", - "error": false - }, - { - "query": "from a_index | eval NOT stringField NOT rlike \"?a\"", - "error": false - }, - { - "query": "from a_index | eval numberField rlike \"?a\"", - "error": true - }, - { - "query": "from a_index | eval numberField NOT rlike \"?a\"", - "error": true - }, - { - "query": "from a_index | eval NOT numberField rlike \"?a\"", - "error": true - }, - { - "query": "from a_index | eval NOT numberField NOT rlike \"?a\"", - "error": true - }, - { - "query": "from a_index | eval 1 in (1, 2, 3)", - "error": false - }, - { - "query": "from a_index | eval numberField in (1, 2, 3)", - "error": false - }, - { - "query": "from a_index | eval numberField not in (1, 2, 3)", - "error": false - }, - { - "query": "from a_index | eval numberField not in (1, 2, 3, numberField)", - "error": false - }, - { - "query": "from a_index | eval 1 in (1, 2, 3, round(numberField))", - "error": false - }, - { - "query": "from a_index | eval \"a\" in (\"a\", \"b\", \"c\")", - "error": false - }, - { - "query": "from a_index | eval stringField in (\"a\", \"b\", \"c\")", - "error": false - }, - { - "query": "from a_index | eval stringField not in (\"a\", \"b\", \"c\")", - "error": false - }, - { - "query": "from a_index | eval stringField not in (\"a\", \"b\", \"c\", stringField)", - "error": false - }, - { - "query": "from a_index | eval 1 in (\"a\", \"b\", \"c\")", - "error": true - }, - { - "query": "from a_index | eval numberField in (\"a\", \"b\", \"c\")", - "error": true - }, - { - "query": "from a_index | eval numberField not in (\"a\", \"b\", \"c\")", - "error": true - }, - { - "query": "from a_index | eval numberField not in (1, 2, 3, stringField)", - "error": true - }, - { - "query": "from a_index | eval avg(numberField)", - "error": true - }, - { - "query": "from a_index | stats avg(numberField) | eval `avg(numberField)` + 1", - "error": false - }, - { - "query": "from a_index | eval not", - "error": true - }, - { - "query": "from a_index | eval in", - "error": true - }, - { - "query": "from a_index | eval stringField in stringField", - "error": true - }, - { - "query": "from a_index | eval stringField in stringField)", - "error": true - }, - { - "query": "from a_index | eval stringField not in stringField", - "error": true - }, - { - "query": "from a_index | eval 1 anno", - "error": true - }, - { - "query": "from a_index | eval var = 1 anno", - "error": true - }, - { - "query": "from a_index | eval now() + 1 anno", - "error": true - }, - { - "query": "from a_index | eval 1 year", - "error": true - }, - { - "query": "from a_index | eval 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 year", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 year", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 YEAR", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Year", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 year", - "error": false - }, - { - "query": "from a_index | eval 1 year + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 year", - "error": true - }, - { - "query": "from a_index | eval 1 years", - "error": true - }, - { - "query": "from a_index | eval 1 years", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 years", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 years", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 YEARS", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Years", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 years", - "error": false - }, - { - "query": "from a_index | eval 1 years + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 years", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 years", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 years", - "error": true - }, - { - "query": "from a_index | eval 1 month", - "error": true - }, - { - "query": "from a_index | eval 1 month", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 month", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 month", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 MONTH", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Month", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 month", - "error": false - }, - { - "query": "from a_index | eval 1 month + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 month", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 month", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 month", - "error": true - }, - { - "query": "from a_index | eval 1 months", - "error": true - }, - { - "query": "from a_index | eval 1 months", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 months", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 months", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 MONTHS", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Months", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 months", - "error": false - }, - { - "query": "from a_index | eval 1 months + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 months", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 months", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 months", - "error": true - }, - { - "query": "from a_index | eval 1 week", - "error": true - }, - { - "query": "from a_index | eval 1 week", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 week", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 week", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 WEEK", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Week", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 week", - "error": false - }, - { - "query": "from a_index | eval 1 week + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 week", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 week", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 week", - "error": true - }, - { - "query": "from a_index | eval 1 weeks", - "error": true - }, - { - "query": "from a_index | eval 1 weeks", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 weeks", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 weeks", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 WEEKS", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Weeks", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 weeks", - "error": false - }, - { - "query": "from a_index | eval 1 weeks + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 weeks", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 weeks", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 weeks", - "error": true - }, - { - "query": "from a_index | eval 1 day", - "error": true - }, - { - "query": "from a_index | eval 1 day", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 day", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 day", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 DAY", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Day", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 day", - "error": false - }, - { - "query": "from a_index | eval 1 day + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 day", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 day", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 day", - "error": true - }, - { - "query": "from a_index | eval 1 days", - "error": true - }, - { - "query": "from a_index | eval 1 days", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 days", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 days", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 DAYS", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Days", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 days", - "error": false - }, - { - "query": "from a_index | eval 1 days + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 days", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 days", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 days", - "error": true - }, - { - "query": "from a_index | eval 1 hour", - "error": true - }, - { - "query": "from a_index | eval 1 hour", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 hour", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 hour", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 HOUR", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Hour", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 hour", - "error": false - }, - { - "query": "from a_index | eval 1 hour + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 hour", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 hour", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 hour", - "error": true - }, - { - "query": "from a_index | eval 1 hours", - "error": true - }, - { - "query": "from a_index | eval 1 hours", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 hours", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 hours", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 HOURS", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Hours", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 hours", - "error": false - }, - { - "query": "from a_index | eval 1 hours + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 hours", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 hours", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 hours", - "error": true - }, - { - "query": "from a_index | eval 1 minute", - "error": true - }, - { - "query": "from a_index | eval 1 minute", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 minute", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 minute", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 MINUTE", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Minute", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 minute", - "error": false - }, - { - "query": "from a_index | eval 1 minute + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 minute", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 minute", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 minute", - "error": true - }, - { - "query": "from a_index | eval 1 minutes", - "error": true - }, - { - "query": "from a_index | eval 1 minutes", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 minutes", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 minutes", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 MINUTES", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Minutes", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 minutes", - "error": false - }, - { - "query": "from a_index | eval 1 minutes + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 minutes", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 minutes", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 minutes", - "error": true - }, - { - "query": "from a_index | eval 1 second", - "error": true - }, - { - "query": "from a_index | eval 1 second", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 second", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 second", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 SECOND", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Second", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 second", - "error": false - }, - { - "query": "from a_index | eval 1 second + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 second", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 second", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 second", - "error": true - }, - { - "query": "from a_index | eval 1 seconds", - "error": true - }, - { - "query": "from a_index | eval 1 seconds", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 seconds", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 seconds", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 SECONDS", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Seconds", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 seconds", - "error": false - }, - { - "query": "from a_index | eval 1 seconds + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 seconds", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 seconds", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 seconds", - "error": true - }, - { - "query": "from a_index | eval 1 millisecond", - "error": true - }, - { - "query": "from a_index | eval 1 millisecond", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 millisecond", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 millisecond", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 MILLISECOND", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Millisecond", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 millisecond", - "error": false - }, - { - "query": "from a_index | eval 1 millisecond + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 millisecond", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 millisecond", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 millisecond", - "error": true - }, - { - "query": "from a_index | eval 1 milliseconds", - "error": true - }, - { - "query": "from a_index | eval 1 milliseconds", - "error": true - }, - { - "query": "from a_index | eval var = now() - 1 milliseconds", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 milliseconds", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 MILLISECONDS", - "error": false - }, - { - "query": "from a_index | eval var = dateField - 1 Milliseconds", - "error": false - }, - { - "query": "from a_index | eval var = dateField + 1 milliseconds", - "error": false - }, - { - "query": "from a_index | eval 1 milliseconds + 1 year", - "error": true - }, - { - "query": "from a_index | eval var = now() * 1 milliseconds", - "error": true - }, - { - "query": "from a_index | eval var = now() / 1 milliseconds", - "error": true - }, - { - "query": "from a_index | eval var = now() % 1 milliseconds", - "error": true - }, - { - "query": "from a_index | stats ", - "error": true - }, - { - "query": "from a_index | stats by stringField", - "error": false - }, - { - "query": "from a_index | stats by ", - "error": true - }, - { - "query": "from a_index | stats numberField ", - "error": true - }, - { - "query": "from a_index | stats numberField=", - "error": true - }, - { - "query": "from a_index | stats numberField=5 by ", - "error": true - }, - { - "query": "from a_index | stats avg(numberField) by wrongField", - "error": true - }, - { - "query": "from a_index | stats avg(numberField) by wrongField + 1", - "error": true - }, - { - "query": "from a_index | stats avg(numberField) by var0 = wrongField + 1", - "error": true - }, - { - "query": "from a_index | stats avg(numberField) by 1", - "error": false - }, - { - "query": "from a_index | stats avg(numberField) by percentile(numberField)", - "error": true - }, - { - "query": "from a_index | stats count(`numberField`)", - "error": false - }, - { - "query": "from a_index | stats count(`numberField`) | keep `count(``numberField``)` ", - "error": false - }, - { - "query": "from a_index | stats count(`numberField`) | drop `count(``numberField``)` ", - "error": false - }, - { - "query": "from a_index | stats count(`numberField`) | eval `count(``numberField``)` ", - "error": false - }, - { - "query": "from a_index | stats avg(numberField) by stringField, percentile(numberField) by ipField", - "error": true - }, - { - "query": "from a_index | stats avg(numberField), percentile(numberField, 50) by ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), percentile(numberField, 50) BY ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField) + percentile(numberField, 50) BY ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField) - percentile(numberField, 50) BY ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField) * percentile(numberField, 50) BY ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField) / percentile(numberField, 50) BY ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField) % percentile(numberField, 50) BY ipField", - "error": false - }, - { - "query": "from a_index | stats count(* + 1) BY ipField", - "error": true - }, - { - "query": "from a_index | stats count(* + round(numberField)) BY ipField", - "error": true - }, - { - "query": "from a_index | stats count(round(*)) BY ipField", - "error": true - }, - { - "query": "from a_index | stats count(count(*)) BY ipField", - "error": true - }, - { - "query": "from a_index | stats numberField + 1", - "error": true - }, - { - "query": "from a_index | stats 5 + avg(numberField) +1", - "error": false - }, - { - "query": "from a_index | stats 5 +1 + avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats 5 +1 + numberField", - "error": true - }, - { - "query": "from a_index | stats 5 + numberField +1", - "error": true - }, - { - "query": "from a_index | stats 5 + numberField +1, var0 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats round( sum(numberField) )", - "error": false - }, - { - "query": "from a_index | stats round( sum(numberField) ) + round( sum(numberField) )", - "error": false - }, - { - "query": "from a_index | stats round( numberField + sum(numberField) )", - "error": true - }, - { - "query": "from a_index | stats round( numberField + sum(numberField) ), var0 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats var0 = round( numberField + sum(numberField) ), var1 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats round( sum(numberField + numberField) )", - "error": false - }, - { - "query": "from a_index | stats round( sum(numberField + round(numberField)) )", - "error": false - }, - { - "query": "from a_index | stats round( sum(numberField + round(numberField)) ) + round( sum(numberField + round(numberField)) )", - "error": false - }, - { - "query": "from a_index | stats sum(round( numberField ) )", - "error": false - }, - { - "query": "from a_index | stats sum(round( numberField ) ) + sum(round( numberField ) )", - "error": false - }, - { - "query": "from a_index | stats 5 + avg(numberField) +1+1", - "error": false - }, - { - "query": "from a_index | stats 5 +1+1 + avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats 5 +1+1 + numberField", - "error": true - }, - { - "query": "from a_index | stats 5 + numberField +1+1", - "error": true - }, - { - "query": "from a_index | stats 5 + numberField +1+1, var0 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats round(round( sum(numberField) ))", - "error": false - }, - { - "query": "from a_index | stats round(round( sum(numberField) )) + round(round( sum(numberField) ))", - "error": false - }, - { - "query": "from a_index | stats round(round( numberField + sum(numberField) ))", - "error": true - }, - { - "query": "from a_index | stats round(round( numberField + sum(numberField) )), var0 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats var0 = round(round( numberField + sum(numberField) )), var1 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats round(round( sum(numberField + numberField) ))", - "error": false - }, - { - "query": "from a_index | stats round(round( sum(numberField + round(numberField)) ))", - "error": false - }, - { - "query": "from a_index | stats round(round( sum(numberField + round(numberField)) )) + round(round( sum(numberField + round(numberField)) ))", - "error": false - }, - { - "query": "from a_index | stats sum(round(round( numberField )) )", - "error": false - }, - { - "query": "from a_index | stats sum(round(round( numberField )) ) + sum(round(round( numberField )) )", - "error": false - }, - { - "query": "from a_index | stats 5 + avg(numberField) +1+1+1", - "error": false - }, - { - "query": "from a_index | stats 5 +1+1+1 + avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats 5 +1+1+1 + numberField", - "error": true - }, - { - "query": "from a_index | stats 5 + numberField +1+1+1", - "error": true - }, - { - "query": "from a_index | stats 5 + numberField +1+1+1, var0 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats round(round(round( sum(numberField) )))", - "error": false - }, - { - "query": "from a_index | stats round(round(round( sum(numberField) ))) + round(round(round( sum(numberField) )))", - "error": false - }, - { - "query": "from a_index | stats round(round(round( numberField + sum(numberField) )))", - "error": true - }, - { - "query": "from a_index | stats round(round(round( numberField + sum(numberField) ))), var0 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats var0 = round(round(round( numberField + sum(numberField) ))), var1 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats round(round(round( sum(numberField + numberField) )))", - "error": false - }, - { - "query": "from a_index | stats round(round(round( sum(numberField + round(numberField)) )))", - "error": false - }, - { - "query": "from a_index | stats round(round(round( sum(numberField + round(numberField)) ))) + round(round(round( sum(numberField + round(numberField)) )))", - "error": false - }, - { - "query": "from a_index | stats sum(round(round(round( numberField ))) )", - "error": false - }, - { - "query": "from a_index | stats sum(round(round(round( numberField ))) ) + sum(round(round(round( numberField ))) )", - "error": false - }, - { - "query": "from a_index | stats 5 + avg(numberField) +1+1+1+1", - "error": false - }, - { - "query": "from a_index | stats 5 +1+1+1+1 + avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats 5 +1+1+1+1 + numberField", - "error": true - }, - { - "query": "from a_index | stats 5 + numberField +1+1+1+1", - "error": true - }, - { - "query": "from a_index | stats 5 + numberField +1+1+1+1, var0 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats round(round(round(round( sum(numberField) ))))", - "error": false - }, - { - "query": "from a_index | stats round(round(round(round( sum(numberField) )))) + round(round(round(round( sum(numberField) ))))", - "error": false - }, - { - "query": "from a_index | stats round(round(round(round( numberField + sum(numberField) ))))", - "error": true - }, - { - "query": "from a_index | stats round(round(round(round( numberField + sum(numberField) )))), var0 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats var0 = round(round(round(round( numberField + sum(numberField) )))), var1 = sum(numberField)", - "error": true - }, - { - "query": "from a_index | stats round(round(round(round( sum(numberField + numberField) ))))", - "error": false - }, - { - "query": "from a_index | stats round(round(round(round( sum(numberField + round(numberField)) ))))", - "error": false - }, - { - "query": "from a_index | stats round(round(round(round( sum(numberField + round(numberField)) )))) + round(round(round(round( sum(numberField + round(numberField)) ))))", - "error": false - }, - { - "query": "from a_index | stats sum(round(round(round(round( numberField )))) )", - "error": false - }, - { - "query": "from a_index | stats sum(round(round(round(round( numberField )))) ) + sum(round(round(round(round( numberField )))) )", - "error": false - }, - { - "query": "from a_index | stats 5 + numberField + 1", - "error": true - }, - { - "query": "from a_index | stats numberField + 1 by ipField", - "error": true - }, - { - "query": "from a_index | stats avg(numberField), percentile(numberField, 50) + 1 by ipField", - "error": false - }, - { - "query": "from a_index | stats count(*)", - "error": false - }, - { - "query": "from a_index | stats count()", - "error": false - }, - { - "query": "from a_index | stats var0 = count(*)", - "error": false - }, - { - "query": "from a_index | stats var0 = count()", - "error": false - }, - { - "query": "from a_index | stats var0 = avg(numberField), count(*)", - "error": false - }, - { - "query": "from a_index | stats var0 = avg(fn(number)), count(*)", - "error": true - }, - { - "query": "from a_index | STATS sum( numberField ) + abs( numberField ) ", - "error": true - }, - { - "query": "from a_index | STATS abs( numberField + sum( numberField )) ", - "error": true - }, - { - "query": "from a_index | stats var = avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats var = round(avg(numberField))", - "error": false - }, - { - "query": "from a_index | stats round(avg(numberField))", - "error": false - }, - { - "query": "from a_index | stats var = round(avg(numberField)) + avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats round(avg(numberField)) + avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = avg(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), avg(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = avg(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats var0 = avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = avg(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField) by round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = avg(numberField) by var1 = round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), avg(numberField) by round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = avg(numberField) by var1 = round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), avg(numberField) by round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = avg(numberField) by var1 = round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats var = avg(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats avg(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats avg(stringField)", - "error": true - }, - { - "query": "from a_index | stats var = avg(*)", - "error": true - }, - { - "query": "from a_index | stats var = max(numberField)", - "error": false - }, - { - "query": "from a_index | stats max(numberField)", - "error": false - }, - { - "query": "from a_index | stats var = round(max(numberField))", - "error": false - }, - { - "query": "from a_index | stats round(max(numberField))", - "error": false - }, - { - "query": "from a_index | stats var = round(max(numberField)) + max(numberField)", - "error": false - }, - { - "query": "from a_index | stats round(max(numberField)) + max(numberField)", - "error": false - }, - { - "query": "from a_index | stats max(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = max(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), max(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = max(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats max(numberField)", - "error": false - }, - { - "query": "from a_index | stats var0 = max(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), max(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = max(numberField)", - "error": false - }, - { - "query": "from a_index | stats max(numberField) by round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = max(numberField) by var1 = round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), max(numberField) by round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = max(numberField) by var1 = round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), max(numberField) by round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = max(numberField) by var1 = round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats var = max(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats max(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats max(stringField)", - "error": true - }, - { - "query": "from a_index | stats var = max(*)", - "error": true - }, - { - "query": "from a_index | stats var = min(numberField)", - "error": false - }, - { - "query": "from a_index | stats min(numberField)", - "error": false - }, - { - "query": "from a_index | stats var = round(min(numberField))", - "error": false - }, - { - "query": "from a_index | stats round(min(numberField))", - "error": false - }, - { - "query": "from a_index | stats var = round(min(numberField)) + min(numberField)", - "error": false - }, - { - "query": "from a_index | stats round(min(numberField)) + min(numberField)", - "error": false - }, - { - "query": "from a_index | stats min(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = min(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), min(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = min(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats min(numberField)", - "error": false - }, - { - "query": "from a_index | stats var0 = min(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), min(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = min(numberField)", - "error": false - }, - { - "query": "from a_index | stats min(numberField) by round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = min(numberField) by var1 = round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), min(numberField) by round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = min(numberField) by var1 = round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), min(numberField) by round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = min(numberField) by var1 = round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats var = min(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats min(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats min(stringField)", - "error": true - }, - { - "query": "from a_index | stats var = min(*)", - "error": true - }, - { - "query": "from a_index | stats var = sum(numberField)", - "error": false - }, - { - "query": "from a_index | stats sum(numberField)", - "error": false - }, - { - "query": "from a_index | stats var = round(sum(numberField))", - "error": false - }, - { - "query": "from a_index | stats round(sum(numberField))", - "error": false - }, - { - "query": "from a_index | stats var = round(sum(numberField)) + sum(numberField)", - "error": false - }, - { - "query": "from a_index | stats round(sum(numberField)) + sum(numberField)", - "error": false - }, - { - "query": "from a_index | stats sum(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = sum(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), sum(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = sum(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats sum(numberField)", - "error": false - }, - { - "query": "from a_index | stats var0 = sum(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), sum(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = sum(numberField)", - "error": false - }, - { - "query": "from a_index | stats sum(numberField) by round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = sum(numberField) by var1 = round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), sum(numberField) by round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = sum(numberField) by var1 = round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), sum(numberField) by round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = sum(numberField) by var1 = round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats var = sum(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats sum(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats sum(stringField)", - "error": true - }, - { - "query": "from a_index | stats var = sum(*)", - "error": true - }, - { - "query": "from a_index | stats var = median(numberField)", - "error": false - }, - { - "query": "from a_index | stats median(numberField)", - "error": false - }, - { - "query": "from a_index | stats var = round(median(numberField))", - "error": false - }, - { - "query": "from a_index | stats round(median(numberField))", - "error": false - }, - { - "query": "from a_index | stats var = round(median(numberField)) + median(numberField)", - "error": false - }, - { - "query": "from a_index | stats round(median(numberField)) + median(numberField)", - "error": false - }, - { - "query": "from a_index | stats median(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = median(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), median(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = median(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats median(numberField)", - "error": false - }, - { - "query": "from a_index | stats var0 = median(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), median(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = median(numberField)", - "error": false - }, - { - "query": "from a_index | stats median(numberField) by round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = median(numberField) by var1 = round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), median(numberField) by round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = median(numberField) by var1 = round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), median(numberField) by round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = median(numberField) by var1 = round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats var = median(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats median(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats median(stringField)", - "error": true - }, - { - "query": "from a_index | stats var = median(*)", - "error": true - }, - { - "query": "from a_index | stats var = median_absolute_deviation(numberField)", - "error": false - }, - { - "query": "from a_index | stats median_absolute_deviation(numberField)", - "error": false - }, - { - "query": "from a_index | stats var = round(median_absolute_deviation(numberField))", - "error": false - }, - { - "query": "from a_index | stats round(median_absolute_deviation(numberField))", - "error": false - }, - { - "query": "from a_index | stats var = round(median_absolute_deviation(numberField)) + median_absolute_deviation(numberField)", - "error": false - }, - { - "query": "from a_index | stats round(median_absolute_deviation(numberField)) + median_absolute_deviation(numberField)", - "error": false - }, - { - "query": "from a_index | stats median_absolute_deviation(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = median_absolute_deviation(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), median_absolute_deviation(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = median_absolute_deviation(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats median_absolute_deviation(numberField)", - "error": false - }, - { - "query": "from a_index | stats var0 = median_absolute_deviation(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), median_absolute_deviation(numberField)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = median_absolute_deviation(numberField)", - "error": false - }, - { - "query": "from a_index | stats median_absolute_deviation(numberField) by round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = median_absolute_deviation(numberField) by var1 = round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), median_absolute_deviation(numberField) by round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = median_absolute_deviation(numberField) by var1 = round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), median_absolute_deviation(numberField) by round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = median_absolute_deviation(numberField) by var1 = round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats var = median_absolute_deviation(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats median_absolute_deviation(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats median_absolute_deviation(stringField)", - "error": true - }, - { - "query": "from a_index | stats var = median_absolute_deviation(*)", - "error": true - }, - { - "query": "from a_index | stats var = percentile(numberField, 5)", - "error": false - }, - { - "query": "from a_index | stats percentile(numberField, 5)", - "error": false - }, - { - "query": "from a_index | stats var = round(percentile(numberField, 5))", - "error": false - }, - { - "query": "from a_index | stats round(percentile(numberField, 5))", - "error": false - }, - { - "query": "from a_index | stats var = round(percentile(numberField, 5)) + percentile(numberField, 5)", - "error": false - }, - { - "query": "from a_index | stats round(percentile(numberField, 5)) + percentile(numberField, 5)", - "error": false - }, - { - "query": "from a_index | stats percentile(numberField, numberField)", - "error": true - }, - { - "query": "from a_index | stats percentile(numberField / 2, 5)", - "error": false - }, - { - "query": "from a_index | stats var0 = percentile(numberField / 2, 5)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), percentile(numberField / 2, 5)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = percentile(numberField / 2, 5)", - "error": false - }, - { - "query": "from a_index | stats percentile(numberField, 5)", - "error": false - }, - { - "query": "from a_index | stats var0 = percentile(numberField, 5)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), percentile(numberField, 5)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = percentile(numberField, 5)", - "error": false - }, - { - "query": "from a_index | stats percentile(numberField, 5) by round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats var0 = percentile(numberField, 5) by var1 = round(numberField / 2)", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), percentile(numberField, 5) by round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = percentile(numberField, 5) by var1 = round(numberField / 2), ipField", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), percentile(numberField, 5) by round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats avg(numberField), var0 = percentile(numberField, 5) by var1 = round(numberField / 2), numberField / 2", - "error": false - }, - { - "query": "from a_index | stats var = percentile(avg(numberField), 5)", - "error": true - }, - { - "query": "from a_index | stats percentile(avg(numberField), 5)", - "error": true - }, - { - "query": "from a_index | stats percentile(stringField, 5)", - "error": true - }, - { - "query": "from a_index | stats var = count(stringField)", - "error": false - }, - { - "query": "from a_index | stats count(stringField)", - "error": false - }, - { - "query": "from a_index | stats var = round(count(stringField))", - "error": false - }, - { - "query": "from a_index | stats round(count(stringField))", - "error": false - }, - { - "query": "from a_index | stats var = round(count(stringField)) + count(stringField)", - "error": false - }, - { - "query": "from a_index | stats round(count(stringField)) + count(stringField)", - "error": false - }, - { - "query": "from a_index | stats var = count_distinct(stringField, numberField)", - "error": false - }, - { - "query": "from a_index | stats count_distinct(stringField, numberField)", - "error": false - }, - { - "query": "from a_index | stats var = round(count_distinct(stringField, numberField))", - "error": false - }, - { - "query": "from a_index | stats round(count_distinct(stringField, numberField))", - "error": false - }, - { - "query": "from a_index | stats var = round(count_distinct(stringField, numberField)) + count_distinct(stringField, numberField)", - "error": false - }, - { - "query": "from a_index | stats round(count_distinct(stringField, numberField)) + count_distinct(stringField, numberField)", - "error": false - }, - { - "query": "from a_index | stats var = st_centroid(cartesianPointField)", - "error": false - }, - { - "query": "from a_index | stats st_centroid(cartesianPointField)", - "error": false - }, - { - "query": "from a_index | stats var = st_centroid(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats st_centroid(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats st_centroid(stringField)", - "error": true - }, - { - "query": "from a_index | stats var = st_centroid(*)", - "error": true - }, - { - "query": "from a_index | stats var = st_centroid(geoPointField)", - "error": false - }, - { - "query": "from a_index | stats st_centroid(geoPointField)", - "error": false - }, - { - "query": "from a_index | stats var = st_centroid(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats st_centroid(avg(numberField))", - "error": true - }, - { - "query": "from a_index | stats st_centroid(stringField)", - "error": true - }, - { - "query": "from a_index | stats var = st_centroid(*)", - "error": true - }, - { - "query": "FROM index\n | EVAL numberField * 3.281\n | STATS avg_numberField = AVG(`numberField * 3.281`)", - "error": false - }, - { - "query": "FROM index | STATS AVG(numberField) by round(numberField) + 1 | EVAL `round(numberField) + 1` / 2", - "error": false - }, - { - "query": "from a_index | sort ", - "error": true - }, - { - "query": "from a_index | sort \"field\" ", - "error": false - }, - { - "query": "from a_index | sort wrongField ", - "error": true - }, - { - "query": "from a_index | sort numberField, ", - "error": true - }, - { - "query": "from a_index | sort numberField, stringField", - "error": false - }, - { - "query": "from a_index | sort \"field\" desc ", - "error": false - }, - { - "query": "from a_index | sort numberField desc ", - "error": false - }, - { - "query": "from a_index | sort numberField desc nulls ", - "error": true - }, - { - "query": "from a_index | sort numberField desc nulls first", - "error": false - }, - { - "query": "from a_index | sort numberField desc first", - "error": true - }, - { - "query": "from a_index | sort numberField desc nulls last", - "error": false - }, - { - "query": "from a_index | sort numberField desc last", - "error": true - }, - { - "query": "from a_index | sort \"field\" asc ", - "error": false - }, - { - "query": "from a_index | sort numberField asc ", - "error": false - }, - { - "query": "from a_index | sort numberField asc nulls ", - "error": true - }, - { - "query": "from a_index | sort numberField asc nulls first", - "error": false - }, - { - "query": "from a_index | sort numberField asc first", - "error": true - }, - { - "query": "from a_index | sort numberField asc nulls last", - "error": false - }, - { - "query": "from a_index | sort numberField asc last", - "error": true - }, - { - "query": "from a_index | sort numberField nulls first", - "error": false - }, - { - "query": "from a_index | sort numberField first", - "error": true - }, - { - "query": "from a_index | sort numberField nulls last", - "error": false - }, - { - "query": "from a_index | sort numberField last", - "error": true - }, - { - "query": "row a = 1 | stats COUNT(*) | sort `COUNT(*)`", - "error": false - }, - { - "query": "ROW a = 1 | STATS couNt(*) | SORT `couNt(*)`", - "error": false - }, - { - "query": "from a_index | enrich", - "error": true - }, - { - "query": "from a_index | enrich _", - "error": true - }, - { - "query": "from a_index | enrich _:", - "error": true - }, - { - "query": "from a_index | enrich _:policy", - "error": true - }, - { - "query": "from a_index | enrich :policy", - "error": true - }, - { - "query": "from a_index | enrich any:", - "error": true - }, - { - "query": "from a_index | enrich _any:", - "error": true - }, - { - "query": "from a_index | enrich any:policy", - "error": true - }, - { - "query": "from a_index | enrich policy ", - "error": false - }, - { - "query": "from a_index | enrich `this``is fine`", - "error": true - }, - { - "query": "from a_index | enrich this is fine", - "error": true - }, - { - "query": "from a_index | enrich _any:policy ", - "error": false - }, - { - "query": "from a_index | enrich _any : policy ", - "error": true - }, - { - "query": "from a_index | enrich _any: policy ", - "error": true - }, - { - "query": "from a_index | enrich _any:policy ", - "error": false - }, - { - "query": "from a_index | enrich _ANY:policy ", - "error": false - }, - { - "query": "from a_index | enrich _coordinator:policy ", - "error": false - }, - { - "query": "from a_index | enrich _coordinator : policy ", - "error": true - }, - { - "query": "from a_index | enrich _coordinator: policy ", - "error": true - }, - { - "query": "from a_index | enrich _coordinator:policy ", - "error": false - }, - { - "query": "from a_index | enrich _COORDINATOR:policy ", - "error": false - }, - { - "query": "from a_index | enrich _remote:policy ", - "error": false - }, - { - "query": "from a_index | enrich _remote : policy ", - "error": true - }, - { - "query": "from a_index | enrich _remote: policy ", - "error": true - }, - { - "query": "from a_index | enrich _remote:policy ", - "error": false - }, - { - "query": "from a_index | enrich _REMOTE:policy ", - "error": false - }, - { - "query": "from a_index | enrich _unknown:policy", - "error": true - }, - { - "query": "from a_index |enrich missing-policy ", - "error": true - }, - { - "query": "from a_index |enrich policy on ", - "error": true - }, - { - "query": "from a_index | enrich policy on b ", - "error": true - }, - { - "query": "from a_index | enrich policy on `this``is fine`", - "error": true - }, - { - "query": "from a_index | enrich policy on this is fine", - "error": true - }, - { - "query": "from a_index | enrich policy on stringField with ", - "error": true - }, - { - "query": "from a_index | enrich policy on stringField with var0 ", - "error": true - }, - { - "query": "from a_index |enrich policy on numberField with var0 = ", - "error": true - }, - { - "query": "from a_index | enrich policy on stringField with var0 = c ", - "error": true - }, - { - "query": "from a_index |enrich policy on numberField with var0 = , ", - "error": true - }, - { - "query": "from a_index | enrich policy on stringField with var0 = otherField, var1 ", - "error": true - }, - { - "query": "from a_index | enrich policy on stringField with var0 = otherField ", - "error": false - }, - { - "query": "from a_index | enrich policy on stringField with var0 = otherField, yetAnotherField ", - "error": false - }, - { - "query": "from a_index |enrich policy on numberField with var0 = otherField, var1 = ", - "error": true - }, - { - "query": "from a_index | enrich policy on stringField with var0 = otherField, var1 = yetAnotherField", - "error": false - }, - { - "query": "from a_index | enrich policy on stringField with var0 = otherField, `this``is fine` = yetAnotherField", - "error": false - }, - { - "query": "from a_index | enrich policy with ", - "error": true - }, - { - "query": "from a_index | enrich policy with otherField", - "error": false - }, - { - "query": "from a_index | enrich policy | eval otherField", - "error": false - }, - { - "query": "from a_index | enrich policy with var0 = otherField | eval var0", - "error": false - }, - { - "query": "from a_index | enrich my-pol*", - "error": true - }, - { - "query": "from a_index | eval stringField = 5", - "error": false - }, - { - "query": "from a_index | eval numberField = \"5\"", - "error": false - }, - { - "query": "from a_index | eval round(numberField) + 1 | eval `round(numberField) + 1` + 1 | keep ```round(numberField) + 1`` + 1`", - "error": false - }, - { - "query": "from a_index | eval round(numberField) + 1 | eval `round(numberField) + 1` + 1 | eval ```round(numberField) + 1`` + 1` + 1 | keep ```````round(numberField) + 1```` + 1`` + 1`", - "error": false - }, - { - "query": "from a_index | eval round(numberField) + 1 | eval `round(numberField) + 1` + 1 | eval ```round(numberField) + 1`` + 1` + 1 | eval ```````round(numberField) + 1```` + 1`` + 1` + 1 | keep ```````````````round(numberField) + 1```````` + 1```` + 1`` + 1`", - "error": false - }, - { - "query": "from a_index | eval round(numberField) + 1 | eval `round(numberField) + 1` + 1 | eval ```round(numberField) + 1`` + 1` + 1 | eval ```````round(numberField) + 1```` + 1`` + 1` + 1 | eval ```````````````round(numberField) + 1```````` + 1```` + 1`` + 1` + 1 | keep ```````````````````````````````round(numberField) + 1```````````````` + 1```````` + 1```` + 1`` + 1`", - "error": false - } - ] -} \ No newline at end of file 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 deleted file mode 100644 index 3f45d16a60593..0000000000000 --- a/packages/kbn-monaco/src/esql/lib/ast/validation/validation.test.ts +++ /dev/null @@ -1,2426 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { CharStreams } from 'antlr4'; -import { getParser, ROOT_STATEMENT } from '../../antlr_facade'; -import { join } from 'path'; -import { writeFile } from 'fs/promises'; -import { AstListener } from '../ast_factory'; -import { validateAst } from './validation'; -import { ESQLAst } from '../types'; -import { ESQLErrorListener } from '../../monaco/esql_error_listener'; -import { evalFunctionsDefinitions } from '../definitions/functions'; -import { getFunctionSignatures } from '../definitions/helpers'; -import { FunctionDefinition } from '../definitions/types'; -import { chronoLiterals, timeLiterals } from '../definitions/literals'; -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'], - }, -]; - -const NESTING_LEVELS = 4; -const NESTED_DEPTHS = Array(NESTING_LEVELS) - .fill(0) - .map((_, i) => i + 1); - -function getCallbackMocks() { - return { - getFieldsFor: jest.fn(async ({ query }) => { - if (/enrich/.test(query)) { - return enrichFields; - } - if (/unsupported_index/.test(query)) { - return unsupported_field; - } - if (/dissect|grok/.test(query)) { - return [{ name: 'firstWord', type: 'string' }]; - } - return fields; - }), - getSources: jest.fn(async () => - indexes.map((name) => ({ - name, - hidden: name.startsWith('.'), - })) - ), - getPolicies: jest.fn(async () => policies), - getMetaFields: jest.fn(async () => ['_id', '_source']), - }; -} - -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')!; -const toIpSignature = evalFunctionsDefinitions.find(({ name }) => name === 'to_ip')!; -const toGeoPointSignature = evalFunctionsDefinitions.find(({ name }) => name === 'to_geopoint')!; -const toCartesianPointSignature = evalFunctionsDefinitions.find( - ({ name }) => name === 'to_cartesianpoint' -)!; - -const toAvgSignature = statsAggregationFunctionDefinitions.find(({ name }) => name === 'avg')!; - -const nestedFunctions = { - number: prepareNestedFunction(toInteger), - string: prepareNestedFunction(toStringSignature), - date: prepareNestedFunction(toDateSignature), - boolean: prepareNestedFunction(toBooleanSignature), - ip: prepareNestedFunction(toIpSignature), - geo_point: prepareNestedFunction(toGeoPointSignature), - cartesian_point: prepareNestedFunction(toCartesianPointSignature), -}; - -const literals = { - chrono_literal: chronoLiterals[0].name, - time_literal: timeLiterals[0].name, -}; -function getLiteralType(typeString: 'chrono_literal' | 'time_literal') { - if (typeString === 'chrono_literal') { - return literals[typeString]; - } - return `1 ${literals[typeString]}`; -} -function getFieldName( - typeString: string, - { useNestedFunction, isStats }: { useNestedFunction: boolean; isStats: boolean } -) { - if (useNestedFunction && isStats) { - return prepareNestedFunction(toAvgSignature); - } - return useNestedFunction && typeString in nestedFunctions - ? nestedFunctions[typeString as keyof typeof nestedFunctions] - : `${camelCase(typeString)}Field`; -} - -function getMultiValue(type: string) { - if (/string|any/.test(type)) { - return `["a", "b", "c"]`; - } - if (/number/.test(type)) { - return `[1, 2, 3]`; - } - return `[true, false]`; -} - -function prepareNestedFunction(fnSignature: FunctionDefinition): string { - return getFunctionSignatures( - { - ...fnSignature, - signatures: [ - { - ...fnSignature?.signatures[0]!, - params: getFieldMapping(fnSignature?.signatures[0]!.params), - }, - ], - }, - { withTypes: false } - )[0].declaration; -} -function getFieldMapping( - params: FunctionDefinition['signatures'][number]['params'], - { useNestedFunction, useLiterals }: { useNestedFunction: boolean; useLiterals: boolean } = { - useNestedFunction: false, - useLiterals: true, - } -) { - 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: fieldName, - type, - ...rest, - }; - } - if (/literal$/.test(typeString) && useLiterals) { - return { - name: getLiteralType(typeString as 'chrono_literal' | 'time_literal'), - type, - ...rest, - }; - } - if (/[]$/.test(typeString)) { - return { - name: getMultiValue(typeString), - type, - ...rest, - }; - } - return { name: 'stringField', type, ...rest }; - }); -} - -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 testCases: Array<{ query: string; error: boolean }> = []; - - afterAll(async () => { - const targetFolder = join(__dirname, 'esql_validation_meta_tests.json'); - try { - await writeFile( - targetFolder, - JSON.stringify( - { - indexes, - fields: fields.concat([{ name: policies[0].matchField, type: 'keyword' }]), - enrichFields: enrichFields.concat([{ name: policies[0].matchField, type: 'keyword' }]), - policies, - unsupported_field, - testCases, - }, - null, - 2 - ) - ); - } catch (e) { - throw new Error(`Error writing test cases to ${targetFolder}: ${e.message}`); - } - }); - - const getAstAndErrors = async ( - text: string | undefined - ): Promise<{ - errors: EditorError[]; - ast: ESQLAst; - }> => { - if (text == null) { - return { ast: [], errors: [] }; - } - const errorListener = new ESQLErrorListener(); - const parseListener = new AstListener(); - const parser = getParser(CharStreams.fromString(text), errorListener, parseListener); - - parser[ROOT_STATEMENT](); - - return { ...parseListener.getAst(), errors: errorListener.getErrors() }; - }; - - function testErrorsAndWarningsFn( - statement: string, - expectedErrors: string[] = [], - expectedWarnings: string[] = [], - { only, skip }: { only?: boolean; skip?: boolean } = {} - ) { - const testFn = only ? it.only : skip ? it.skip : it; - testCases.push({ query: statement, error: Boolean(expectedErrors.length) }); - - testFn( - `${statement} => ${expectedErrors.length} errors, ${expectedWarnings.length} warnings`, - async () => { - const callbackMocks = getCallbackMocks(); - const { warnings, errors } = await validateAst(statement, getAstAndErrors, callbackMocks); - expect(errors.map((e) => ('message' in e ? e.message : e.text))).toEqual(expectedErrors); - expect(warnings.map((w) => w.text)).toEqual(expectedWarnings); - } - ); - } - - type TestArgs = [string, string[], string[]?]; - - // Make only and skip work with our custom wrapper - const testErrorsAndWarnings = Object.assign(testErrorsAndWarningsFn, { - skip: (...args: TestArgs) => { - const warningArgs = [[]].slice(args.length - 2); - return testErrorsAndWarningsFn( - ...((args.length > 1 ? [...args, ...warningArgs] : args) as TestArgs), - { - skip: true, - } - ); - }, - only: (...args: TestArgs) => { - const warningArgs = [[]].slice(args.length - 2); - return testErrorsAndWarningsFn( - ...((args.length > 1 ? [...args, ...warningArgs] : args) as TestArgs), - { - only: true, - } - ); - }, - }); - - describe('ESQL query should start with a source command', () => { - ['eval', 'stats', 'rename', 'limit', 'keep', 'drop', 'mv_expand', 'dissect', 'grok'].map( - (command) => - testErrorsAndWarnings(command, [ - `SyntaxError: mismatched input '${command}' expecting {'explain', 'from', 'meta', 'row', 'show'}`, - ]) - ); - }); - - describe('from', () => { - testErrorsAndWarnings('f', [ - "SyntaxError: mismatched input 'f' expecting {'explain', 'from', 'meta', 'row', 'show'}", - ]); - testErrorsAndWarnings(`from `, [ - "SyntaxError: missing {QUOTED_IDENTIFIER, FROM_UNQUOTED_IDENTIFIER} at ''", - ]); - testErrorsAndWarnings(`from index,`, [ - "SyntaxError: missing {QUOTED_IDENTIFIER, FROM_UNQUOTED_IDENTIFIER} at ''", - ]); - testErrorsAndWarnings(`from assignment = 1`, [ - "SyntaxError: mismatched input '=' expecting ", - 'Unknown index [assignment]', - ]); - testErrorsAndWarnings(`from index`, []); - testErrorsAndWarnings(`FROM index`, []); - testErrorsAndWarnings(`FrOm index`, []); - testErrorsAndWarnings('from `index`', []); - - testErrorsAndWarnings(`from index, other_index`, []); - testErrorsAndWarnings(`from index, missingIndex`, ['Unknown index [missingIndex]']); - testErrorsAndWarnings(`from fn()`, ['Unknown index [fn()]']); - testErrorsAndWarnings(`from average()`, ['Unknown index [average()]']); - for (const isWrapped of [true, false]) { - function setWrapping(option: string) { - return isWrapped ? `[${option}]` : option; - } - function addBracketsWarning() { - return isWrapped - ? ["Square brackets '[]' need to be removed from FROM METADATA declaration"] - : []; - } - testErrorsAndWarnings(`from index ${setWrapping('METADATA _id')}`, [], addBracketsWarning()); - testErrorsAndWarnings(`from index ${setWrapping('metadata _id')}`, [], addBracketsWarning()); - - testErrorsAndWarnings( - `from index ${setWrapping('METADATA _id, _source')}`, - [], - addBracketsWarning() - ); - testErrorsAndWarnings( - `from index ${setWrapping('METADATA _id, _source2')}`, - [ - 'Metadata field [_source2] is not available. Available metadata fields are: [_id, _source]', - ], - addBracketsWarning() - ); - testErrorsAndWarnings( - `from index ${setWrapping('metadata _id, _source')} ${setWrapping('METADATA _id2')}`, - [ - isWrapped - ? "SyntaxError: mismatched input '[' expecting " - : "SyntaxError: mismatched input 'METADATA' expecting ", - ], - addBracketsWarning() - ); - - testErrorsAndWarnings( - `from remote-ccs:indexes ${setWrapping('METADATA _id')}`, - [], - addBracketsWarning() - ); - testErrorsAndWarnings( - `from *:indexes ${setWrapping('METADATA _id')}`, - [], - addBracketsWarning() - ); - } - testErrorsAndWarnings(`from index (metadata _id)`, [ - "SyntaxError: mismatched input '(metadata' expecting ", - ]); - testErrorsAndWarnings(`from ind*, other*`, []); - testErrorsAndWarnings(`from index*`, []); - testErrorsAndWarnings(`from *a_i*dex*`, []); - testErrorsAndWarnings(`from in*ex*`, []); - testErrorsAndWarnings(`from *n*ex`, []); - testErrorsAndWarnings(`from *n*ex*`, []); - testErrorsAndWarnings(`from i*d*x*`, []); - testErrorsAndWarnings(`from i*d*x`, []); - testErrorsAndWarnings(`from i***x*`, []); - testErrorsAndWarnings(`from i****`, []); - testErrorsAndWarnings(`from i**`, []); - testErrorsAndWarnings(`from index**`, []); - testErrorsAndWarnings(`from *ex`, []); - testErrorsAndWarnings(`from *ex*`, []); - testErrorsAndWarnings(`from in*ex`, []); - testErrorsAndWarnings(`from ind*ex`, []); - testErrorsAndWarnings(`from indexes*`, ['Unknown index [indexes*]']); - - testErrorsAndWarnings(`from remote-*:indexes*`, []); - testErrorsAndWarnings(`from remote-*:indexes`, []); - testErrorsAndWarnings(`from remote-ccs:indexes`, []); - 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]']); - }); - - describe('row', () => { - testErrorsAndWarnings('row', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - testErrorsAndWarnings('row missing_column', ['Unknown column [missing_column]']); - testErrorsAndWarnings('row fn()', ['Unknown function [fn]']); - testErrorsAndWarnings('row missing_column, missing_column2', [ - 'Unknown column [missing_column]', - 'Unknown column [missing_column2]', - ]); - testErrorsAndWarnings('row a=1', []); - testErrorsAndWarnings('row a=1, missing_column', ['Unknown column [missing_column]']); - testErrorsAndWarnings('row a=1, b = average()', ['Unknown function [average]']); - testErrorsAndWarnings('row a = [1, 2, 3]', []); - testErrorsAndWarnings('row a = [true, false]', []); - testErrorsAndWarnings('row a = ["a", "b"]', []); - testErrorsAndWarnings('row a = null', []); - testErrorsAndWarnings('row a = (1)', []); - testErrorsAndWarnings('row a = (1, 2, 3)', [ - "SyntaxError: no viable alternative at input '(1,'", - "SyntaxError: extraneous input ')' expecting ", - ]); - for (const bool of ['true', 'false']) { - testErrorsAndWarnings(`row a=NOT ${bool}`, []); - testErrorsAndWarnings(`row NOT ${bool}`, []); - } - - testErrorsAndWarnings('row var = 1 in ', [ - "SyntaxError: mismatched input '' expecting '('", - ]); - testErrorsAndWarnings('row var = 1 in (', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - 'Error: [in] function expects exactly 2 arguments, got 1.', - ]); - testErrorsAndWarnings('row var = 1 not in ', [ - "SyntaxError: mismatched input '' expecting '('", - ]); - testErrorsAndWarnings('row var = 1 in (1, 2, 3)', []); - testErrorsAndWarnings('row var = 5 in (1, 2, 3)', []); - testErrorsAndWarnings('row var = 5 not in (1, 2, 3)', []); - testErrorsAndWarnings('row var = 1 in (1, 2, 3, round(5))', []); - testErrorsAndWarnings('row var = "a" in ("a", "b", "c")', []); - testErrorsAndWarnings('row var = "a" in ("a", "b", "c")', []); - testErrorsAndWarnings('row var = "a" not in ("a", "b", "c")', []); - testErrorsAndWarnings('row var = 1 in ("a", "b", "c")', [ - 'Argument of [in] must be [number[]], found value [("a", "b", "c")] type [(string, string, string)]', - ]); - testErrorsAndWarnings('row var = 5 in ("a", "b", "c")', [ - 'Argument of [in] must be [number[]], found value [("a", "b", "c")] type [(string, string, string)]', - ]); - testErrorsAndWarnings('row var = 5 not in ("a", "b", "c")', [ - 'Argument of [not_in] must be [number[]], found value [("a", "b", "c")] type [(string, string, string)]', - ]); - testErrorsAndWarnings('row var = 5 not in (1, 2, 3, "a")', [ - 'Argument of [not_in] must be [number[]], found value [(1, 2, 3, "a")] type [(number, number, number, string)]', - ]); - - function tweakSignatureForRowCommand(signature: string) { - /** - * row has no access to any field, so replace it with literal - * or functions (for dates) - */ - return signature - .replace(/numberField/g, '5') - .replace(/stringField/g, '"a"') - .replace(/dateField/g, 'now()') - .replace(/booleanField/g, 'true') - .replace(/ipField/g, 'to_ip("127.0.0.1")'); - } - - for (const { name, alias, signatures, ...defRest } of evalFunctionsDefinitions) { - for (const { params, ...signRest } of signatures) { - const fieldMapping = getFieldMapping(params); - const signatureStringCorrect = tweakSignatureForRowCommand( - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, ...signRest }] }, - { withTypes: false } - )[0].declaration - ); - - testErrorsAndWarnings(`row var = ${signatureStringCorrect}`, []); - testErrorsAndWarnings(`row ${signatureStringCorrect}`, []); - - if (alias) { - for (const otherName of alias) { - const signatureStringWithAlias = tweakSignatureForRowCommand( - getFunctionSignatures( - { - name: otherName, - ...defRest, - signatures: [{ params: fieldMapping, ...signRest }], - }, - { withTypes: false } - )[0].declaration - ); - - testErrorsAndWarnings(`row var = ${signatureStringWithAlias}`, []); - } - } - - // Skip functions that have only arguments of type "any", as it is not possible to pass "the wrong type". - // auto_bucket and to_version functions are a bit harder to test exactly a combination of argument and predict the - // the right error message - if ( - params.every(({ type }) => type !== 'any') && - !['auto_bucket', 'to_version'].includes(name) - ) { - // now test nested functions - const fieldMappingWithNestedFunctions = getFieldMapping(params, { - useNestedFunction: true, - useLiterals: true, - }); - const signatureString = tweakSignatureForRowCommand( - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMappingWithNestedFunctions, ...signRest }], - }, - { withTypes: false } - )[0].declaration - ); - - testErrorsAndWarnings(`row var = ${signatureString}`, []); - - const { wrongFieldMapping, expectedErrors } = generateWrongMappingForArgs( - name, - signatures, - params, - { stringField: '"a"', numberField: '5', booleanField: 'true' } - ); - const wrongSignatureString = tweakSignatureForRowCommand( - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: wrongFieldMapping, ...signRest }] }, - { withTypes: false } - )[0].declaration - ); - testErrorsAndWarnings(`row var = ${wrongSignatureString}`, expectedErrors); - } - } - } - for (const op of ['>', '>=', '<', '<=', '==']) { - testErrorsAndWarnings(`row var = 5 ${op} 0`, []); - testErrorsAndWarnings(`row var = NOT 5 ${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]`, - ]); - } - for (const op of ['+', '-', '*', '/', '%']) { - testErrorsAndWarnings(`row var = 1 ${op} 1`, []); - testErrorsAndWarnings(`row var = (5 ${op} 1)`, []); - } - - for (const op of ['like', 'rlike']) { - testErrorsAndWarnings(`row var = "a" ${op} "?a"`, []); - testErrorsAndWarnings(`row var = "a" NOT ${op} "?a"`, []); - testErrorsAndWarnings(`row var = NOT "a" ${op} "?a"`, []); - testErrorsAndWarnings(`row var = NOT "a" NOT ${op} "?a"`, []); - testErrorsAndWarnings(`row var = 5 ${op} "?a"`, [ - `Argument of [${op}] must be [string], found value [5] type [number]`, - ]); - testErrorsAndWarnings(`row var = 5 NOT ${op} "?a"`, [ - `Argument of [not_${op}] must be [string], found value [5] type [number]`, - ]); - testErrorsAndWarnings(`row var = NOT 5 ${op} "?a"`, [ - `Argument of [${op}] must be [string], found value [5] type [number]`, - ]); - testErrorsAndWarnings(`row var = NOT 5 NOT ${op} "?a"`, [ - `Argument of [not_${op}] must be [string], found value [5] type [number]`, - ]); - } - - describe('date math', () => { - testErrorsAndWarnings('row 1 anno', [ - 'ROW does not support [date_period] in expression [1 anno]', - ]); - testErrorsAndWarnings('row var = 1 anno', ["Unexpected time interval qualifier: 'anno'"]); - testErrorsAndWarnings('row now() + 1 anno', ["Unexpected time interval qualifier: 'anno'"]); - for (const timeLiteral of timeLiterals) { - testErrorsAndWarnings(`row 1 ${timeLiteral.name}`, [ - `ROW does not support [date_period] in expression [1 ${timeLiteral.name}]`, - ]); - testErrorsAndWarnings(`row 1 ${timeLiteral.name}`, [ - `ROW does not support [date_period] in expression [1 ${timeLiteral.name}]`, - ]); - - // this is not possible for now - // testErrorsAndWarnings(`row var = 1 ${timeLiteral.name}`, [ - // `Row does not support [date_period] in expression [1 ${timeLiteral.name}]`, - // ]); - testErrorsAndWarnings(`row var = now() - 1 ${timeLiteral.name}`, []); - testErrorsAndWarnings(`row var = now() - 1 ${timeLiteral.name.toUpperCase()}`, []); - testErrorsAndWarnings(`row var = now() - 1 ${capitalize(timeLiteral.name)}`, []); - testErrorsAndWarnings(`row var = now() + 1 ${timeLiteral.name}`, []); - testErrorsAndWarnings(`row 1 ${timeLiteral.name} + 1 year`, [ - `Argument of [+] must be [date], found value [1 ${timeLiteral.name}] type [duration]`, - ]); - for (const op of ['*', '/', '%']) { - testErrorsAndWarnings(`row 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]`, - ]); - } - } - }); - }); - - describe('meta', () => { - testErrorsAndWarnings('meta', ["SyntaxError: missing 'functions' at ''"]); - testErrorsAndWarnings('meta functions', []); - testErrorsAndWarnings('meta functions()', [ - "SyntaxError: token recognition error at: '('", - "SyntaxError: token recognition error at: ')'", - ]); - testErrorsAndWarnings('meta functions blah', [ - "SyntaxError: token recognition error at: 'b'", - "SyntaxError: token recognition error at: 'l'", - "SyntaxError: token recognition error at: 'a'", - "SyntaxError: token recognition error at: 'h'", - ]); - testErrorsAndWarnings('meta info', [ - "SyntaxError: token recognition error at: 'i'", - "SyntaxError: token recognition error at: 'n'", - "SyntaxError: token recognition error at: 'fo'", - "SyntaxError: missing 'functions' at ''", - ]); - }); - - describe('show', () => { - testErrorsAndWarnings('show', ["SyntaxError: missing 'info' at ''"]); - testErrorsAndWarnings('show functions', [ - "SyntaxError: token recognition error at: 'f'", - "SyntaxError: token recognition error at: 'u'", - "SyntaxError: token recognition error at: 'n'", - "SyntaxError: token recognition error at: 'c'", - "SyntaxError: token recognition error at: 't'", - "SyntaxError: token recognition error at: 'io'", - "SyntaxError: token recognition error at: 'n'", - "SyntaxError: token recognition error at: 's'", - "SyntaxError: missing 'info' at ''", - ]); - testErrorsAndWarnings('show info', []); - testErrorsAndWarnings('show numberField', [ - "SyntaxError: token recognition error at: 'n'", - "SyntaxError: token recognition error at: 'u'", - "SyntaxError: token recognition error at: 'm'", - "SyntaxError: token recognition error at: 'b'", - "SyntaxError: token recognition error at: 'e'", - "SyntaxError: token recognition error at: 'r'", - "SyntaxError: token recognition error at: 'F'", - "SyntaxError: token recognition error at: 'ie'", - "SyntaxError: token recognition error at: 'l'", - "SyntaxError: token recognition error at: 'd'", - "SyntaxError: missing 'info' at ''", - ]); - }); - - describe('limit', () => { - testErrorsAndWarnings('from index | limit ', [ - `SyntaxError: missing INTEGER_LITERAL at ''`, - ]); - testErrorsAndWarnings('from index | limit 4 ', []); - testErrorsAndWarnings('from index | limit 4.5', [ - "SyntaxError: mismatched input '4.5' expecting INTEGER_LITERAL", - ]); - testErrorsAndWarnings('from index | limit a', [ - "SyntaxError: mismatched input 'a' expecting INTEGER_LITERAL", - ]); - testErrorsAndWarnings('from index | limit numberField', [ - "SyntaxError: mismatched input 'numberField' expecting INTEGER_LITERAL", - ]); - testErrorsAndWarnings('from index | limit stringField', [ - "SyntaxError: mismatched input 'stringField' expecting INTEGER_LITERAL", - ]); - testErrorsAndWarnings('from index | limit 4', []); - }); - - describe('keep', () => { - 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 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', [ - 'Unknown column [missingField]', - ]); - testErrorsAndWarnings('from index | keep `any#Char$Field`', []); - testErrorsAndWarnings('from index | project ', [ - "SyntaxError: mismatched input 'project' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}", - ]); - testErrorsAndWarnings('from index | project stringField, numberField, dateField', [ - "SyntaxError: mismatched input 'project' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}", - ]); - testErrorsAndWarnings('from index | PROJECT stringField, numberField, dateField', [ - "SyntaxError: mismatched input 'PROJECT' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}", - ]); - testErrorsAndWarnings('from index | project missingField, numberField, dateField', [ - "SyntaxError: mismatched input 'project' expecting {'dissect', 'drop', 'enrich', 'eval', 'grok', 'inlinestats', 'keep', 'limit', 'mv_expand', 'rename', 'sort', 'stats', 'where'}", - ]); - testErrorsAndWarnings('from index | keep s*', []); - testErrorsAndWarnings('from index | keep *Field', []); - testErrorsAndWarnings('from index | keep s*Field', []); - testErrorsAndWarnings('from index | keep string*Field', []); - testErrorsAndWarnings('from index | keep s*, n*', []); - testErrorsAndWarnings('from index | keep m*', ['Unknown column [m*]']); - testErrorsAndWarnings('from index | keep *m', ['Unknown column [*m]']); - testErrorsAndWarnings('from index | keep d*m', ['Unknown column [d*m]']); - testErrorsAndWarnings( - 'from unsupported_index | keep unsupported_field', - [], - [ - '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 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 ID_PATTERN at '.'", - "SyntaxError: missing ID_PATTERN at ''", - ]); - testErrorsAndWarnings('from index | drop missingField, numberField, dateField', [ - 'Unknown column [missingField]', - ]); - testErrorsAndWarnings('from index | drop `any#Char$Field`', []); - testErrorsAndWarnings('from index | drop s*', []); - testErrorsAndWarnings('from index | drop s**Field', []); - testErrorsAndWarnings('from index | drop *Field*', []); - testErrorsAndWarnings('from index | drop s*F*d', []); - testErrorsAndWarnings('from index | drop *Field', []); - testErrorsAndWarnings('from index | drop s*Field', []); - testErrorsAndWarnings('from index | drop string*Field', []); - testErrorsAndWarnings('from index | drop s*, n*', []); - testErrorsAndWarnings('from index | drop m*', ['Unknown column [m*]']); - testErrorsAndWarnings('from index | drop *m', ['Unknown column [*m]']); - testErrorsAndWarnings('from index | drop d*m', ['Unknown column [d*m]']); - testErrorsAndWarnings('from index | drop *', ['Removing all fields is not allowed [*]']); - testErrorsAndWarnings('from index | drop stringField, *', [ - 'Removing all fields is not allowed [*]', - ]); - testErrorsAndWarnings( - 'from index | drop @timestamp', - [], - ['Drop [@timestamp] will remove all time filters to the search results'] - ); - testErrorsAndWarnings( - 'from index | drop stringField, @timestamp', - [], - ['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_index | mv_expand ', [ - "SyntaxError: missing {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER} at ''", - ]); - for (const type of ['string', 'number', 'date', 'boolean', 'ip']) { - testErrorsAndWarnings(`from a_index | mv_expand ${type}Field`, []); - } - - testErrorsAndWarnings('from a_index | mv_expand numberField, b', [ - "SyntaxError: token recognition error at: ','", - "SyntaxError: extraneous input 'b' expecting ", - ]); - - testErrorsAndWarnings('row a = "a" | mv_expand a', []); - testErrorsAndWarnings('row a = [1, 2, 3] | mv_expand a', []); - testErrorsAndWarnings('row a = [true, false] | mv_expand a', []); - testErrorsAndWarnings('row a = ["a", "b"] | mv_expand a', []); - }); - - describe('rename', () => { - testErrorsAndWarnings('from a_index | rename', [ - "SyntaxError: mismatched input '' expecting ID_PATTERN", - ]); - testErrorsAndWarnings('from a_index | rename stringField', [ - "SyntaxError: mismatched input '' expecting 'as'", - ]); - testErrorsAndWarnings('from a_index | rename a', [ - "SyntaxError: mismatched input '' expecting 'as'", - 'Unknown column [a]', - ]); - testErrorsAndWarnings('from a_index | rename stringField as', [ - "SyntaxError: missing ID_PATTERN at ''", - ]); - testErrorsAndWarnings('from a_index | rename missingField as', [ - "SyntaxError: missing ID_PATTERN at ''", - 'Unknown column [missingField]', - ]); - 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_index | eval numberField + 1 | rename `numberField + 1` as a', - [] - ); - 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_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: mismatched input 'is' expecting ", - ]); - }); - - describe('dissect', () => { - testErrorsAndWarnings('from a_index | dissect', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - testErrorsAndWarnings('from a_index | dissect stringField', [ - "SyntaxError: missing STRING at ''", - ]); - testErrorsAndWarnings('from a_index | dissect stringField 2', [ - "SyntaxError: mismatched input '2' expecting STRING", - ]); - testErrorsAndWarnings('from a_index | dissect stringField .', [ - "SyntaxError: mismatched input '' expecting {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - 'Unknown column [stringField.]', - ]); - testErrorsAndWarnings('from a_index | dissect stringField %a', [ - "SyntaxError: mismatched input '%' expecting STRING", - "SyntaxError: mismatched input '' expecting '='", - ]); - // Do not try to validate the dissect pattern string - 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_index | dissect stringField "%{firstWord}" option ', [ - "SyntaxError: mismatched input '' expecting '='", - ]); - testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option = ', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', 'null', '?', 'true', '+', '-', OPENING_BRACKET}", - 'Invalid option for DISSECT: [option]', - ]); - testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option = 1', [ - 'Invalid option for DISSECT: [option]', - ]); - 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_index | grok', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - testErrorsAndWarnings('from a_index | grok stringField', [ - "SyntaxError: missing STRING at ''", - ]); - testErrorsAndWarnings('from a_index | grok stringField 2', [ - "SyntaxError: mismatched input '2' expecting STRING", - ]); - testErrorsAndWarnings('from a_index | grok stringField .', [ - "SyntaxError: mismatched input '' expecting {UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - 'Unknown column [stringField.]', - ]); - testErrorsAndWarnings('from a_index | grok stringField %a', [ - "SyntaxError: mismatched input '%' expecting STRING", - ]); - // Do not try to validate the grok pattern string - 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_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_index | where b', ['Unknown column [b]']); - for (const cond of ['true', 'false']) { - 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_index | where ${nValue} > 0`, []); - testErrorsAndWarnings(`from a_index | where NOT ${nValue} > 0`, []); - } - for (const op of ['>', '>=', '<', '<=', '==']) { - 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]`, - ]); - } - - for (const nesting of NESTED_DEPTHS) { - for (const evenOp of ['-', '+']) { - for (const oddOp of ['-', '+']) { - // This builds a combination of +/- operators - // i.e. ---- something, -+-+ something, +-+- something, etc... - const unaryCombination = Array(nesting) - .fill('- ') - .map((_, i) => (i % 2 ? oddOp : evenOp)) - .join(''); - 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_index | where 1 ${unaryCombination} numberField > 0`, []); - } - } - testErrorsAndWarnings( - `from a_index | where ${Array(nesting).fill('not ').join('')} booleanField`, - [] - ); - } - for (const wrongOp of ['*', '/', '%']) { - 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}`, - ]); - } - - // Skip these tests until the insensitive case equality gets restored back - testErrorsAndWarnings.skip(`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.skip(`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.skip(`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.skip(`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.skip(`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.skip(`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_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_index | where numberField NOT ${op} "?a"`, [ - `Argument of [not_${op}] must be [string], found value [numberField] type [number]`, - ]); - testErrorsAndWarnings(`from a_index | where NOT numberField ${op} "?a"`, [ - `Argument of [${op}] must be [string], found value [numberField] type [number]`, - ]); - 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_index | where cidr_match(ipField)`, [ - `Error: [cidr_match] function expects at least 2 arguments, got 1.`, - ]); - testErrorsAndWarnings( - `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_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`, []); - } - - for (const { - name, - alias, - signatures, - ...defRest - } of statsAggregationFunctionDefinitions.filter( - ({ name: fnName, signatures: statsSignatures }) => - statsSignatures.some(({ returnType, params }) => ['number'].includes(returnType)) - )) { - for (const { params, ...signRest } of signatures) { - const fieldMapping = getFieldMapping(params); - - testErrorsAndWarnings( - `from a_index | where ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMapping, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - [`WHERE does not support function ${name}`] - ); - - testErrorsAndWarnings( - `from a_index | where ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMapping, ...signRest }], - }, - { withTypes: false } - )[0].declaration - } > 0`, - [`WHERE does not support function ${name}`] - ); - } - } - - // Test that all functions work in where - const numericOrStringFunctions = evalFunctionsDefinitions.filter(({ name, signatures }) => { - return signatures.some( - ({ returnType, params }) => - ['number', 'string'].includes(returnType) && - params.every(({ type }) => ['number', 'string'].includes(type)) - ); - }); - for (const { name, signatures, ...rest } of numericOrStringFunctions) { - const supportedSignatures = signatures.filter(({ returnType }) => - ['number', 'string'].includes(returnType) - ); - for (const { params, returnType, ...restSign } of supportedSignatures) { - const correctMapping = params - .filter(({ optional }) => !optional) - .map(({ type }) => - ['number', 'string'].includes(Array.isArray(type) ? type.join(', ') : type) - ? { name: `${type}Field`, type } - : { name: `numberField`, type } - ); - testErrorsAndWarnings( - `from a_index | where ${returnType !== 'number' ? 'length(' : ''}${ - // hijacking a bit this function to produce a function call - getFunctionSignatures( - { name, ...rest, signatures: [{ params: correctMapping, returnType, ...restSign }] }, - { withTypes: false } - )[0].declaration - }${returnType !== 'number' ? ')' : ''} > 0`, - [] - ); - - const { wrongFieldMapping, expectedErrors } = generateWrongMappingForArgs( - name, - signatures, - params, - { stringField: 'stringField', numberField: 'numberField', booleanField: 'booleanField' } - ); - testErrorsAndWarnings( - `from a_index | where ${returnType !== 'number' ? 'length(' : ''}${ - // hijacking a bit this function to produce a function call - getFunctionSignatures( - { - name, - ...rest, - signatures: [{ params: wrongFieldMapping, returnType, ...restSign }], - }, - { withTypes: false } - )[0].declaration - }${returnType !== 'number' ? ')' : ''} > 0`, - expectedErrors - ); - } - } - }); - - describe('eval', () => { - testErrorsAndWarnings('from a_index | eval ', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - 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: no viable alternative at input 'numberField + '", - ]); - testErrorsAndWarnings('from a_index | eval stringField + 1', [ - 'Argument of [+] must be [number], found value [stringField] type [string]', - ]); - testErrorsAndWarnings('from a_index | eval a=b', ['Unknown column [b]']); - testErrorsAndWarnings('from a_index | eval a=b, ', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - 'Unknown column [b]', - ]); - testErrorsAndWarnings('from a_index | eval a=round', ['Unknown column [round]']); - testErrorsAndWarnings('from a_index | eval a=round(', [ - "SyntaxError: no viable alternative at input 'round('", - ]); - testErrorsAndWarnings('from a_index | eval a=round(numberField) ', []); - testErrorsAndWarnings('from a_index | eval a=round(numberField), ', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - 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_index | eval a=round(numberField) + round(stringField), numberField ', - ['Argument of [round] must be [number], found value [stringField] type [string]'] - ); - testErrorsAndWarnings( - 'from a_index | eval a=round(numberField) + round(numberField), numberField ', - [] - ); - testErrorsAndWarnings( - 'from a_index | eval a=round(numberField) + round(numberField), b = numberField ', - [] - ); - - 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_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 NESTED_DEPTHS) { - for (const evenOp of ['-', '+']) { - for (const oddOp of ['-', '+']) { - // This builds a combination of +/- operators - // i.e. ---- something, -+-+ something, +-+- something, etc... - const unaryCombination = Array(nesting) - .fill('- ') - .map((_, i) => (i % 2 ? oddOp : evenOp)) - .join(''); - 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_index | eval 1 ${unaryCombination} numberField`, []); - } - } - - testErrorsAndWarnings( - `from a_index | eval ${Array(nesting).fill('not ').join('')} booleanField`, - [] - ); - } - - for (const wrongOp of ['*', '/', '%']) { - 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}`, - ]); - } - - for (const { name, alias, signatures, ...defRest } of statsAggregationFunctionDefinitions) { - for (const { params, ...signRest } of signatures) { - const fieldMapping = getFieldMapping(params); - testErrorsAndWarnings( - `from a_index | eval var = ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMapping, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - [`EVAL does not support function ${name}`] - ); - - testErrorsAndWarnings( - `from a_index | eval var = ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMapping, ...signRest }], - }, - { withTypes: false } - )[0].declaration - } > 0`, - [`EVAL does not support function ${name}`] - ); - - testErrorsAndWarnings( - `from a_index | eval ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMapping, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - [`EVAL does not support function ${name}`] - ); - - testErrorsAndWarnings( - `from a_index | eval ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMapping, ...signRest }], - }, - { withTypes: false } - )[0].declaration - } > 0`, - [`EVAL does not support function ${name}`] - ); - } - } - - for (const { name, alias, signatures, ...defRest } of evalFunctionsDefinitions) { - for (const { params, ...signRest } of signatures) { - const fieldMapping = getFieldMapping(params); - testErrorsAndWarnings( - `from a_index | eval var = ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMapping, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - [] - ); - testErrorsAndWarnings( - `from a_index | eval ${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, ...signRest }] }, - { 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, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - fieldReplacedType.map( - (type) => `Argument of [${name}] must be a constant, received [${type}Field]` - ) - ); - } - - if (alias) { - for (const otherName of alias) { - const signatureStringWithAlias = getFunctionSignatures( - { - name: otherName, - ...defRest, - signatures: [{ params: fieldMapping, ...signRest }], - }, - { withTypes: false } - )[0].declaration; - - testErrorsAndWarnings(`from a_index | eval var = ${signatureStringWithAlias}`, []); - } - } - - // Skip functions that have only arguments of type "any", as it is not possible to pass "the wrong type". - // auto_bucket and to_version functions are a bit harder to test exactly a combination of argument and predict the - // the right error message - if ( - params.every(({ type }) => type !== 'any') && - !['auto_bucket', 'to_version'].includes(name) - ) { - // now test nested functions - const fieldMappingWithNestedFunctions = getFieldMapping(params, { - useNestedFunction: true, - useLiterals: true, - }); - testErrorsAndWarnings( - `from a_index | eval var = ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMappingWithNestedFunctions, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }` - ); - - const { wrongFieldMapping, expectedErrors } = generateWrongMappingForArgs( - name, - signatures, - params, - { stringField: 'stringField', numberField: 'numberField', booleanField: 'booleanField' } - ); - testErrorsAndWarnings( - `from a_index | eval ${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: wrongFieldMapping, ...signRest }] }, - { withTypes: false } - )[0].declaration - }`, - expectedErrors - ); - - if (!signRest.minParams) { - // test that additional args are spotted - const fieldMappingWithOneExtraArg = getFieldMapping(params).concat({ - name: 'extraArg', - type: 'number', - }); - const refSignature = signatures[0]; - // get the expected args from the first signature in case of errors - const minNumberOfArgs = refSignature.params.filter(({ optional }) => !optional).length; - const fullNumberOfArgs = refSignature.params.length; - const hasOptionalArgs = minNumberOfArgs < fullNumberOfArgs; - const hasTooManyArgs = fieldMappingWithOneExtraArg.length > fullNumberOfArgs; - - // the validation engine tries to be smart about signatures with optional args - let messageQuantifier = 'exactly '; - if (hasOptionalArgs && hasTooManyArgs) { - messageQuantifier = 'no more than '; - } - if (!hasOptionalArgs && !hasTooManyArgs) { - messageQuantifier = 'at least '; - } - testErrorsAndWarnings( - `from a_index | eval ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMappingWithOneExtraArg, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - [ - `Error: [${name}] function expects ${messageQuantifier}${ - fullNumberOfArgs === 1 - ? 'one argument' - : fullNumberOfArgs === 0 - ? '0 arguments' - : `${fullNumberOfArgs} arguments` - }, got ${fieldMappingWithOneExtraArg.length}.`, - ] - ); - } - } - - // test that wildcard won't work as arg - if (fieldMapping.length === 1 && !signRest.minParams) { - const fieldMappingWithWildcard = [...fieldMapping]; - fieldMappingWithWildcard[0].name = '*'; - - testErrorsAndWarnings( - `from a_index | eval var = ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMappingWithWildcard, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - [`Using wildcards (*) in ${name} is not allowed`] - ); - } - } - } - testErrorsAndWarnings( - 'from a_index | eval log10(-1)', - [], - ['Log of a negative number results in null: -1'] - ); - testErrorsAndWarnings( - 'from a_index | eval log(-1)', - [], - ['Log of a negative number results in null: -1'] - ); - testErrorsAndWarnings( - 'from a_index | eval log(-1, 20)', - [], - ['Log of a negative number results in null: -1'] - ); - testErrorsAndWarnings( - 'from a_index | eval log(-1, -20)', - [], - [ - 'Log of a negative number results in null: -1', - 'Log of a negative number results in null: -20', - ] - ); - testErrorsAndWarnings( - 'from a_index | eval var0 = log(-1, -20)', - [], - [ - 'Log of a negative number results in null: -1', - 'Log of a negative number results in null: -20', - ] - ); - for (const op of ['>', '>=', '<', '<=', '==']) { - 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_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_index | eval ${divideByZeroExpr}`, - [], - ['Cannot divide by zero: 1/0'] - ); - } - for (const divideByZeroExpr of ['1%0', 'var = 1%0', '1 + 1%0']) { - testErrorsAndWarnings( - `from a_index | eval ${divideByZeroExpr}`, - [], - ['Module by zero can return null value: 1%0'] - ); - } - for (const op of ['like', 'rlike']) { - 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_index | eval numberField NOT ${op} "?a"`, [ - `Argument of [not_${op}] must be [string], found value [numberField] type [number]`, - ]); - testErrorsAndWarnings(`from a_index | eval NOT numberField ${op} "?a"`, [ - `Argument of [${op}] must be [string], found value [numberField] type [number]`, - ]); - 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_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_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_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_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_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: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - 'Error: [not] function expects exactly one argument, got 0.', - ]); - testErrorsAndWarnings('from a_index | eval in', [ - "SyntaxError: mismatched input 'in' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - - testErrorsAndWarnings('from a_index | eval stringField in stringField', [ - "SyntaxError: missing '(' at 'stringField'", - "SyntaxError: mismatched input '' expecting {',', ')'}", - ]); - - testErrorsAndWarnings('from a_index | eval stringField in stringField)', [ - "SyntaxError: missing '(' at 'stringField'", - 'Error: [in] function expects exactly 2 arguments, got 1.', - ]); - testErrorsAndWarnings('from a_index | eval stringField not in stringField', [ - "SyntaxError: missing '(' at 'stringField'", - "SyntaxError: mismatched input '' expecting {',', ')'}", - ]); - - describe('date math', () => { - testErrorsAndWarnings('from a_index | eval 1 anno', [ - 'EVAL does not support [date_period] in expression [1 anno]', - ]); - testErrorsAndWarnings('from a_index | eval var = 1 anno', [ - "Unexpected time interval qualifier: 'anno'", - ]); - testErrorsAndWarnings('from a_index | eval now() + 1 anno', [ - "Unexpected time interval qualifier: 'anno'", - ]); - for (const timeLiteral of timeLiterals) { - testErrorsAndWarnings(`from a_index | eval 1 ${timeLiteral.name}`, [ - `EVAL does not support [date_period] in expression [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_index | eval var = 1 ${timeLiteral.name}`, [ - // `Eval does not support [date_period] in expression [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_index | eval var = dateField - 1 ${timeLiteral.name.toUpperCase()}`, - [] - ); - testErrorsAndWarnings( - `from a_index | eval var = dateField - 1 ${capitalize(timeLiteral.name)}`, - [] - ); - 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_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]`, - ]); - } - } - }); - }); - - describe('stats', () => { - testErrorsAndWarnings('from a_index | stats ', [ - 'At least one aggregation or grouping expression required in [STATS]', - ]); - testErrorsAndWarnings('from a_index | stats by stringField', []); - testErrorsAndWarnings('from a_index | stats by ', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - testErrorsAndWarnings('from a_index | stats numberField ', [ - 'Expected an aggregate function or group but got [numberField] of type [FieldAttribute]', - ]); - testErrorsAndWarnings('from a_index | stats numberField=', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - testErrorsAndWarnings('from a_index | stats numberField=5 by ', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - testErrorsAndWarnings('from a_index | stats avg(numberField) by wrongField', [ - 'Unknown column [wrongField]', - ]); - testErrorsAndWarnings('from a_index | stats avg(numberField) by wrongField + 1', [ - 'Unknown column [wrongField]', - ]); - testErrorsAndWarnings('from a_index | stats avg(numberField) by var0 = wrongField + 1', [ - 'Unknown column [wrongField]', - ]); - 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_index | stats count(`numberField`)', []); - - for (const subCommand of ['keep', 'drop', 'eval']) { - testErrorsAndWarnings( - `from a_index | stats count(\`numberField\`) | ${subCommand} \`count(\`\`numberField\`\`)\` `, - [] - ); - } - - testErrorsAndWarnings( - 'from a_index | stats avg(numberField) by stringField, percentile(numberField) by ipField', - [ - "SyntaxError: mismatched input 'by' expecting ", - 'STATS BY does not support function percentile', - ] - ); - - testErrorsAndWarnings( - 'from a_index | stats avg(numberField), percentile(numberField, 50) by ipField', - [] - ); - - testErrorsAndWarnings( - 'from a_index | stats avg(numberField), percentile(numberField, 50) BY ipField', - [] - ); - for (const op of ['+', '-', '*', '/', '%']) { - testErrorsAndWarnings( - `from a_index | stats avg(numberField) ${op} percentile(numberField, 50) BY ipField`, - [] - ); - } - testErrorsAndWarnings('from a_index | stats count(* + 1) BY ipField', [ - "SyntaxError: no viable alternative at input 'count(* +'", - ]); - testErrorsAndWarnings('from a_index | stats count(* + round(numberField)) BY ipField', [ - "SyntaxError: no viable alternative at input 'count(* +'", - ]); - testErrorsAndWarnings('from a_index | stats count(round(*)) BY ipField', [ - 'Using wildcards (*) in round is not allowed', - ]); - 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_index | stats numberField + 1', [ - 'At least one aggregation function required in [STATS], found [numberField+1]', - ]); - - for (const nesting of NESTED_DEPTHS) { - 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_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_index | stats 5 + numberField + 1', [ - 'At least one aggregation function required in [STATS], found [5+numberField+1]', - ]); - - testErrorsAndWarnings('from a_index | stats numberField + 1 by ipField', [ - 'At least one aggregation function required in [STATS], found [numberField+1]', - ]); - - testErrorsAndWarnings( - 'from a_index | stats avg(numberField), percentile(numberField, 50) + 1 by ipField', - [] - ); - - 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 { params, ...signRest } of signatures) { - const fieldMapping = getFieldMapping(params); - - const correctSignature = getFunctionSignatures( - { name, ...defRest, signatures: [{ params: fieldMapping, ...signRest }] }, - { withTypes: false } - )[0].declaration; - testErrorsAndWarnings(`from a_index | stats var = ${correctSignature}`, []); - testErrorsAndWarnings(`from a_index | stats ${correctSignature}`, []); - - if (signRest.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, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - fieldReplacedType.map( - (type) => `Argument of [${name}] must be a constant, received [${type}Field]` - ) - ); - } - - if (alias) { - for (const otherName of alias) { - const signatureStringWithAlias = getFunctionSignatures( - { name: otherName, ...defRest, signatures: [{ params: fieldMapping, ...signRest }] }, - { withTypes: false } - )[0].declaration; - - testErrorsAndWarnings(`from a_index | stats var = ${signatureStringWithAlias}`, []); - } - } - - // test only numeric functions for now - if (params[0].type === 'number') { - const nestedBuiltin = 'numberField / 2'; - const fieldMappingWithNestedBuiltinFunctions = getFieldMapping(params); - fieldMappingWithNestedBuiltinFunctions[0].name = nestedBuiltin; - - const fnSignatureWithBuiltinString = getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMappingWithNestedBuiltinFunctions, ...signRest }], - }, - { withTypes: false } - )[0].declaration; - // from a_index | STATS aggFn( numberField / 2 ) - testErrorsAndWarnings(`from a_index | stats ${fnSignatureWithBuiltinString}`, []); - testErrorsAndWarnings(`from a_index | stats var0 = ${fnSignatureWithBuiltinString}`, []); - testErrorsAndWarnings( - `from a_index | stats avg(numberField), ${fnSignatureWithBuiltinString}`, - [] - ); - testErrorsAndWarnings( - `from a_index | stats avg(numberField), var0 = ${fnSignatureWithBuiltinString}`, - [] - ); - - const nestedEvalAndBuiltin = 'round(numberField / 2)'; - const fieldMappingWithNestedEvalAndBuiltinFunctions = getFieldMapping(params); - fieldMappingWithNestedBuiltinFunctions[0].name = nestedEvalAndBuiltin; - - const fnSignatureWithEvalAndBuiltinString = getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMappingWithNestedEvalAndBuiltinFunctions, ...signRest }], - }, - { withTypes: false } - )[0].declaration; - // from a_index | STATS aggFn( round(numberField / 2) ) - testErrorsAndWarnings(`from a_index | stats ${fnSignatureWithEvalAndBuiltinString}`, []); - testErrorsAndWarnings( - `from a_index | stats var0 = ${fnSignatureWithEvalAndBuiltinString}`, - [] - ); - testErrorsAndWarnings( - `from a_index | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString}`, - [] - ); - testErrorsAndWarnings( - `from a_index | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString}`, - [] - ); - // from a_index | STATS aggFn(round(numberField / 2) ) BY round(numberField / 2) - testErrorsAndWarnings( - `from a_index | stats ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}`, - [] - ); - testErrorsAndWarnings( - `from a_index | stats var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}`, - [] - ); - testErrorsAndWarnings( - `from a_index | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}, ipField`, - [] - ); - testErrorsAndWarnings( - `from a_index | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}, ipField`, - [] - ); - testErrorsAndWarnings( - `from a_index | stats avg(numberField), ${fnSignatureWithEvalAndBuiltinString} by ${nestedEvalAndBuiltin}, ${nestedBuiltin}`, - [] - ); - testErrorsAndWarnings( - `from a_index | stats avg(numberField), var0 = ${fnSignatureWithEvalAndBuiltinString} by var1 = ${nestedEvalAndBuiltin}, ${nestedBuiltin}`, - [] - ); - } - - // Skip functions that have only arguments of type "any", as it is not possible to pass "the wrong type". - // auto_bucket and to_version functions are a bit harder to test exactly a combination of argument and predict the - // the right error message - if ( - params.every(({ type }) => type !== 'any') && - !['auto_bucket', 'to_version'].includes(name) - ) { - // now test nested functions - const fieldMappingWithNestedAggsFunctions = getFieldMapping(params, { - 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_index | stats var = ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMappingWithNestedAggsFunctions, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - nestedAggsExpectedErrors - ); - testErrorsAndWarnings( - `from a_index | stats ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMappingWithNestedAggsFunctions, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - nestedAggsExpectedErrors - ); - 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_index | stats ${ - getFunctionSignatures( - { name, ...defRest, signatures: [{ params: wrongFieldMapping, ...signRest }] }, - { withTypes: false } - )[0].declaration - }`, - expectedErrors - ); - - // test that only count() accepts wildcard as arg - // just check that the function accepts only 1 arg as the parser cannot handle multiple args with * as start arg - if (fieldMapping.length === 1) { - const fieldMappingWithWildcard = [...fieldMapping]; - fieldMappingWithWildcard[0].name = '*'; - - testErrorsAndWarnings( - `from a_index | stats var = ${ - getFunctionSignatures( - { - name, - ...defRest, - signatures: [{ params: fieldMappingWithWildcard, ...signRest }], - }, - { withTypes: false } - )[0].declaration - }`, - name === 'count' ? [] : [`Using wildcards (*) in ${name} is not allowed`] - ); - } - } - } - } - testErrorsAndWarnings( - `FROM index - | EVAL numberField * 3.281 - | STATS avg_numberField = AVG(\`numberField * 3.281\`)`, - [] - ); - - testErrorsAndWarnings( - `FROM index | STATS AVG(numberField) by round(numberField) + 1 | EVAL \`round(numberField) + 1\` / 2`, - [] - ); - }); - - describe('sort', () => { - testErrorsAndWarnings('from a_index | sort ', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - testErrorsAndWarnings('from a_index | sort "field" ', []); - testErrorsAndWarnings('from a_index | sort wrongField ', ['Unknown column [wrongField]']); - testErrorsAndWarnings('from a_index | sort numberField, ', [ - "SyntaxError: mismatched input '' expecting {STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}", - ]); - testErrorsAndWarnings('from a_index | sort numberField, stringField', []); - for (const dir of ['desc', 'asc']) { - 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_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_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_index | enrich`, [ - "SyntaxError: missing ENRICH_POLICY_NAME at ''", - ]); - testErrorsAndWarnings(`from a_index | enrich _`, ['Unknown policy [_]']); - testErrorsAndWarnings(`from a_index | enrich _:`, [ - "SyntaxError: token recognition error at: ':'", - 'Unknown policy [_]', - ]); - testErrorsAndWarnings(`from a_index | enrich _:policy`, [ - 'Unrecognized value [_] for ENRICH, mode needs to be one of [_ANY, _COORDINATOR, _REMOTE]', - ]); - testErrorsAndWarnings(`from a_index | enrich :policy`, [ - "SyntaxError: token recognition error at: ':'", - ]); - testErrorsAndWarnings(`from a_index | enrich any:`, [ - "SyntaxError: token recognition error at: ':'", - 'Unknown policy [any]', - ]); - testErrorsAndWarnings(`from a_index | enrich _any:`, [ - "SyntaxError: token recognition error at: ':'", - 'Unknown policy [_any]', - ]); - testErrorsAndWarnings(`from a_index | enrich any:policy`, [ - 'Unrecognized value [any] for ENRICH, mode needs to be one of [_ANY, _COORDINATOR, _REMOTE]', - ]); - testErrorsAndWarnings(`from a_index | enrich policy `, []); - testErrorsAndWarnings('from a_index | enrich `this``is fine`', [ - "SyntaxError: mismatched input '`this``is fine`' expecting ENRICH_POLICY_NAME", - ]); - testErrorsAndWarnings('from a_index | enrich this is fine', [ - "SyntaxError: mismatched input 'is' expecting ", - 'Unknown policy [this]', - ]); - for (const value of ['any', 'coordinator', 'remote']) { - 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_index | enrich _${value}: policy `, [ - "SyntaxError: token recognition error at: ':'", - "SyntaxError: extraneous input 'policy' expecting ", - `Unknown policy [_${value}]`, - ]); - testErrorsAndWarnings(`from a_index | enrich _${camelCase(value)}:policy `, []); - testErrorsAndWarnings(`from a_index | enrich _${value.toUpperCase()}: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_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_index | enrich policy on this is fine', [ - "SyntaxError: mismatched input 'is' expecting ", - 'Unknown column [this]', - ]); - testErrorsAndWarnings(`from a_index | enrich policy on stringField with `, [ - "SyntaxError: mismatched input '' expecting ID_PATTERN", - ]); - testErrorsAndWarnings(`from a_index | enrich policy on stringField with var0 `, [ - 'Unknown column [var0]', - ]); - testErrorsAndWarnings(`from a_index |enrich policy on numberField with var0 = `, [ - "SyntaxError: missing ID_PATTERN at ''", - 'Unknown column [var0]', - ]); - 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_index | enrich policy on stringField with var0 = stringField `, [ - // `Unknown column [stringField]`, - // ]); - testErrorsAndWarnings(`from a_index |enrich policy on numberField with var0 = , `, [ - "SyntaxError: missing ID_PATTERN at ','", - "SyntaxError: mismatched input '' expecting ID_PATTERN", - 'Unknown column [var0]', - ]); - testErrorsAndWarnings( - `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_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_index | enrich policy on stringField with var0 = otherField, var1 = yetAnotherField`, - [] - ); - testErrorsAndWarnings( - 'from a_index | enrich policy on stringField with var0 = otherField, `this``is fine` = yetAnotherField', - [] - ); - testErrorsAndWarnings(`from a_index | enrich policy with `, [ - "SyntaxError: mismatched input '' expecting ID_PATTERN", - ]); - 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_index | eval stringField = 5', - [], - ['Column [stringField] of type string has been overwritten as new type: number'] - ); - testErrorsAndWarnings( - 'from a_index | eval numberField = "5"', - [], - ['Column [numberField] of type number has been overwritten as new type: string'] - ); - }); - - describe('quoting and escaping expressions', () => { - function getTicks(amount: number) { - return Array(amount).fill('`').join(''); - } - /** - * Given an initial quoted expression, build a new quoted expression - * that appends as many +1 to the previous one based on the nesting level - * i.e. given the expression `round(...) + 1` returns - * ```round(...) + 1`` + 1` (for nesting 1) - * ```````round(...) + 1```` + 1`` + 1` (for nesting 2) - * etc... - * Note how backticks double for each level + wrapping quotes - * The general rule follows an exponential curve given a nesting N: - * (`){ (2^N)-1 } ticks expression (`){ 2^N-1 } +1 (`){ 2^N-2 } +1 ... +1 - * - * Mind that nesting arg here is equivalent to N-1 - */ - function buildNestedExpression(expr: string, nesting: number) { - const openingTicks = getTicks(Math.pow(2, nesting + 1) - 1); - const firstClosingBatch = getTicks(Math.pow(2, nesting)); - const additionalPlusOneswithTicks = Array(nesting) - .fill(' + 1') - .reduce((acc, plusOneAppended, i) => { - // workout how many ticks to add: 2^N-i - const ticks = getTicks(Math.pow(2, nesting - 1 - i)); - return `${acc}${plusOneAppended}${ticks}`; - }, ''); - const ret = `${openingTicks}${expr}${firstClosingBatch}${additionalPlusOneswithTicks}`; - return ret; - } - - for (const nesting of NESTED_DEPTHS) { - // start with a quotable expression - const expr = 'round(numberField) + 1'; - const startingQuery = `from a_index | eval ${expr}`; - // now pipe for each nesting level a new eval command that appends a +1 to the previous quoted expression - const finalQuery = `${startingQuery} | ${Array(nesting) - .fill('') - .map((_, i) => { - return `eval ${buildNestedExpression(expr, i)} + 1`; - }) - .join(' | ')} | keep ${buildNestedExpression(expr, nesting)}`; - testErrorsAndWarnings(finalQuery, []); - } - }); - - describe('callbacks', () => { - it(`should not fetch source and fields list when a row command is set`, async () => { - const callbackMocks = getCallbackMocks(); - await validateAst(`row a = 1 | eval a`, getAstAndErrors, callbackMocks); - expect(callbackMocks.getFieldsFor).not.toHaveBeenCalled(); - expect(callbackMocks.getSources).not.toHaveBeenCalled(); - }); - - it(`should not fetch policies if no enrich command is found`, async () => { - const callbackMocks = getCallbackMocks(); - await validateAst(`row a = 1 | eval a`, getAstAndErrors, callbackMocks); - expect(callbackMocks.getPolicies).not.toHaveBeenCalled(); - }); - - it(`should not fetch source and fields for empty command`, async () => { - const callbackMocks = getCallbackMocks(); - await validateAst(` `, getAstAndErrors, callbackMocks); - expect(callbackMocks.getFieldsFor).not.toHaveBeenCalled(); - expect(callbackMocks.getSources).not.toHaveBeenCalled(); - }); - - it(`should skip initial source and fields call but still call fields for enriched policy`, async () => { - const callbackMocks = getCallbackMocks(); - await validateAst(`row a = 1 | eval b = a | enrich policy`, getAstAndErrors, callbackMocks); - expect(callbackMocks.getSources).not.toHaveBeenCalled(); - expect(callbackMocks.getPolicies).toHaveBeenCalled(); - expect(callbackMocks.getFieldsFor).toHaveBeenCalledTimes(1); - expect(callbackMocks.getFieldsFor).toHaveBeenLastCalledWith({ - query: `from enrich_index | keep otherField, yetAnotherField`, - }); - }); - - it('should call fields callbacks also for meta command', async () => { - const callbackMocks = getCallbackMocks(); - await validateAst(`meta functions | keep name`, getAstAndErrors, callbackMocks); - expect(callbackMocks.getSources).not.toHaveBeenCalled(); - expect(callbackMocks.getPolicies).not.toHaveBeenCalled(); - expect(callbackMocks.getFieldsFor).toHaveBeenCalledTimes(1); - expect(callbackMocks.getFieldsFor).toHaveBeenLastCalledWith({ - query: 'meta functions', - }); - }); - - it('should call fields callbacks also for show command', async () => { - const callbackMocks = getCallbackMocks(); - await validateAst(`show info | keep name`, getAstAndErrors, callbackMocks); - expect(callbackMocks.getSources).not.toHaveBeenCalled(); - expect(callbackMocks.getPolicies).not.toHaveBeenCalled(); - expect(callbackMocks.getFieldsFor).toHaveBeenCalledTimes(1); - expect(callbackMocks.getFieldsFor).toHaveBeenLastCalledWith({ - query: 'show info', - }); - }); - - it(`should fetch additional fields if an enrich command is found`, async () => { - const callbackMocks = getCallbackMocks(); - 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 enrich_index | keep otherField, yetAnotherField`, - }); - }); - - it(`should not crash if no callbacks are available`, async () => { - try { - await validateAst( - `from a_index | eval b = a | enrich policy | dissect stringField "%{firstWord}"`, - getAstAndErrors, - { - getFieldsFor: undefined, - getSources: undefined, - getPolicies: undefined, - getMetaFields: undefined, - } - ); - } catch { - fail('Should not throw'); - } - }); - - it(`should not crash if no callbacks are passed`, async () => { - try { - await validateAst( - `from a_index | eval b = a | enrich policy | dissect stringField "%{firstWord}"`, - getAstAndErrors - ); - } catch { - fail('Should not throw'); - } - }); - }); -}); diff --git a/packages/kbn-monaco/src/esql/lib/converters/actions.ts b/packages/kbn-monaco/src/esql/lib/converters/actions.ts new file mode 100644 index 0000000000000..3028395102535 --- /dev/null +++ b/packages/kbn-monaco/src/esql/lib/converters/actions.ts @@ -0,0 +1,40 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { CodeAction } from '@kbn/esql-validation-autocomplete'; +import { monaco } from '../../../monaco_imports'; +import { MonacoCodeAction } from '../types'; +import { wrapAsMonacoMessages } from './positions'; + +export function wrapAsMonacoCodeActions( + model: monaco.editor.ITextModel, + actions: CodeAction[] +): MonacoCodeAction[] { + const queryString = model.getValue(); + const uri = model.uri; + return actions.map((action) => { + const [error] = wrapAsMonacoMessages(queryString, action.diagnostics); + return { + title: action.title, + diagnostics: [error], + kind: action.kind, + edit: { + edits: action.edits.map((edit) => { + return { + resource: uri, + textEdit: { + range: error, + text: edit.text, + }, + versionId: undefined, + }; + }), + }, + }; + }); +} diff --git a/packages/kbn-monaco/src/esql/lib/ast/shared/monaco_utils.ts b/packages/kbn-monaco/src/esql/lib/converters/positions.ts similarity index 62% rename from packages/kbn-monaco/src/esql/lib/ast/shared/monaco_utils.ts rename to packages/kbn-monaco/src/esql/lib/converters/positions.ts index 4e7cf2cee7d8a..10805bc1319a1 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/shared/monaco_utils.ts +++ b/packages/kbn-monaco/src/esql/lib/converters/positions.ts @@ -6,9 +6,9 @@ * Side Public License, v 1. */ -import { EditorError } from '../../../../types'; -import { monaco } from '../../../../monaco_imports'; -import { ESQLMessage } from '../types'; +import type { EditorError, ESQLMessage } from '@kbn/esql-ast'; +import type { MonacoEditorError } from '../../../types'; +import { monaco } from '../../../monaco_imports'; // from linear offset to Monaco position export function offsetToRowColumn(expression: string, offset: number): monaco.Position { @@ -26,19 +26,28 @@ export function offsetToRowColumn(expression: string, offset: number): monaco.Po throw new Error('Algorithm failure'); } -export function wrapAsMonacoMessage( - type: 'error' | 'warning', - code: string, +function convertSeverityToMonacoKind(severity: 'error' | 'warning' | number) { + if (typeof severity === 'number') return severity; + return severity === 'error' ? monaco.MarkerSeverity.Error : monaco.MarkerSeverity.Warning; +} + +export function wrapAsMonacoMessages( + queryString: string, messages: Array -): EditorError[] { +): MonacoEditorError[] { const fallbackPosition = { column: 0, lineNumber: 0 }; return messages.map((e) => { if ('severity' in e) { - return e; + return { + ...e, + severity: convertSeverityToMonacoKind(e.severity), + }; } - const startPosition = e.location ? offsetToRowColumn(code, e.location.min) : fallbackPosition; + const startPosition = e.location + ? offsetToRowColumn(queryString, e.location.min) + : fallbackPosition; const endPosition = e.location - ? offsetToRowColumn(code, e.location.max || 0) + ? offsetToRowColumn(queryString, e.location.max || 0) : fallbackPosition; return { message: e.text, @@ -46,7 +55,7 @@ export function wrapAsMonacoMessage( startLineNumber: startPosition.lineNumber, endColumn: endPosition.column + 1, endLineNumber: endPosition.lineNumber, - severity: type === 'error' ? monaco.MarkerSeverity.Error : monaco.MarkerSeverity.Warning, + severity: convertSeverityToMonacoKind(e.type), _source: 'client' as const, code: e.code, }; diff --git a/packages/kbn-monaco/src/esql/lib/converters/suggestions.ts b/packages/kbn-monaco/src/esql/lib/converters/suggestions.ts new file mode 100644 index 0000000000000..0d02a19dda070 --- /dev/null +++ b/packages/kbn-monaco/src/esql/lib/converters/suggestions.ts @@ -0,0 +1,34 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { SuggestionRawDefinition } from '@kbn/esql-validation-autocomplete'; +import { monaco } from '../../../monaco_imports'; +import { MonacoAutocompleteCommandDefinition } from '../types'; + +export function wrapAsMonacoSuggestions( + suggestions: SuggestionRawDefinition[] +): MonacoAutocompleteCommandDefinition[] { + return suggestions.map( + ({ label, text, asSnippet, kind, detail, documentation, sortText, command }) => ({ + label, + insertText: text, + kind: + kind in monaco.languages.CompletionItemKind + ? monaco.languages.CompletionItemKind[kind] + : monaco.languages.CompletionItemKind.Method, // fallback to Method + detail, + documentation, + sortText, + command, + insertTextRules: asSnippet + ? monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet + : undefined, + range: undefined as unknown as monaco.IRange, + }) + ); +} diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_ast_provider.ts b/packages/kbn-monaco/src/esql/lib/esql_ast_provider.ts similarity index 67% rename from packages/kbn-monaco/src/esql/lib/monaco/esql_ast_provider.ts rename to packages/kbn-monaco/src/esql/lib/esql_ast_provider.ts index d968d79e7c32e..4b4d54de39e8b 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_ast_provider.ts +++ b/packages/kbn-monaco/src/esql/lib/esql_ast_provider.ts @@ -5,16 +5,19 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ - -import type { ESQLCallbacks } from '../ast/shared/types'; -import { monaco } from '../../../monaco_imports'; -import type { ESQLWorker } from '../../worker/esql_worker'; -import { suggest } from '../ast/autocomplete/autocomplete'; -import { getHoverItem } from '../ast/hover/hover'; -import { getSignatureHelp } from '../ast/signature'; -import { validateAst } from '../ast/validation/validation'; -import { getActions } from '../ast/code_actions/actions'; -import { wrapAsMonacoMessage } from '../ast/shared/monaco_utils'; +import type { EditorError } from '@kbn/esql-ast'; +import { + type ESQLCallbacks, + getActions, + suggest, + validateQuery, +} from '@kbn/esql-validation-autocomplete'; +import { monaco } from '../../monaco_imports'; +import type { ESQLWorker } from '../worker/esql_worker'; +import { wrapAsMonacoMessages } from './converters/positions'; +import { getHoverItem } from './hover/hover'; +import { monacoPositionToOffset } from './shared/utils'; +import { getSignatureHelp } from './signature'; export class ESQLAstAdapter { constructor( @@ -34,13 +37,10 @@ export class ESQLAstAdapter { async validate(model: monaco.editor.ITextModel, code: string) { const getAstFn = await this.getAstWorker(model); - const { errors, warnings } = await validateAst( - code ?? model.getValue(), - getAstFn, - this.callbacks - ); - const monacoErrors = wrapAsMonacoMessage('error', code, errors); - const monacoWarnings = wrapAsMonacoMessage('warning', code, warnings); + const text = code ?? model.getValue(); + const { errors, warnings } = await validateQuery(text, getAstFn, undefined, this.callbacks); + const monacoErrors = wrapAsMonacoMessages(text, errors); + const monacoWarnings = wrapAsMonacoMessages(text, warnings); return { errors: monacoErrors, warnings: monacoWarnings }; } @@ -68,7 +68,9 @@ export class ESQLAstAdapter { context: monaco.languages.CompletionContext ) { const getAstFn = await this.getAstWorker(model); - const suggestionEntries = await suggest(model, position, context, getAstFn, this.callbacks); + const fullText = model.getValue(); + const offset = monacoPositionToOffset(fullText, position); + const suggestionEntries = await suggest(fullText, offset, context, getAstFn, this.callbacks); return { suggestions: suggestionEntries.map((suggestion) => ({ ...suggestion, @@ -83,7 +85,12 @@ export class ESQLAstAdapter { context: monaco.languages.CodeActionContext ) { const getAstFn = await this.getAstWorker(model); - const codeActions = await getActions(model, range, context, getAstFn, this.callbacks); + const codeActions = await getActions( + model.getValue(), + context.markers as EditorError[], + getAstFn, + this.callbacks + ); return codeActions; } } diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_line_tokens.ts b/packages/kbn-monaco/src/esql/lib/esql_line_tokens.ts similarity index 93% rename from packages/kbn-monaco/src/esql/lib/monaco/esql_line_tokens.ts rename to packages/kbn-monaco/src/esql/lib/esql_line_tokens.ts index 0148884f9bf8b..c7a148509ebde 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_line_tokens.ts +++ b/packages/kbn-monaco/src/esql/lib/esql_line_tokens.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { monaco } from '../../../monaco_imports'; +import { monaco } from '../../monaco_imports'; import { ESQLState } from './esql_state'; /** @internal **/ diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_state.ts b/packages/kbn-monaco/src/esql/lib/esql_state.ts similarity index 94% rename from packages/kbn-monaco/src/esql/lib/monaco/esql_state.ts rename to packages/kbn-monaco/src/esql/lib/esql_state.ts index d69702ff926f4..1b616ef289df7 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_state.ts +++ b/packages/kbn-monaco/src/esql/lib/esql_state.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { monaco } from '../../../monaco_imports'; +import { monaco } from '../../monaco_imports'; /** @internal **/ export class ESQLState implements monaco.languages.IState { diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_theme.ts b/packages/kbn-monaco/src/esql/lib/esql_theme.ts similarity index 88% rename from packages/kbn-monaco/src/esql/lib/monaco/esql_theme.ts rename to packages/kbn-monaco/src/esql/lib/esql_theme.ts index c6a06d048e699..dcd1519db4dec 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_theme.ts +++ b/packages/kbn-monaco/src/esql/lib/esql_theme.ts @@ -7,15 +7,11 @@ */ import { euiThemeVars, darkMode } from '@kbn/ui-theme'; -import { ESQL_TOKEN_POSTFIX } from '../constants'; -import { monaco } from '../../../monaco_imports'; +import { themeRuleGroupBuilderFactory } from '../../common/theme'; +import { ESQL_TOKEN_POSTFIX } from './constants'; +import { monaco } from '../../monaco_imports'; -const buildRuleGroup = (tokens: string[], color: string, isBold: boolean = false) => - tokens.map((i) => ({ - token: i + ESQL_TOKEN_POSTFIX, - foreground: color, - fontStyle: isBold ? 'bold' : '', - })); +const buildRuleGroup = themeRuleGroupBuilderFactory(ESQL_TOKEN_POSTFIX); export const buildESQlTheme = (): monaco.editor.IStandaloneThemeData => ({ base: darkMode ? 'vs-dark' : 'vs', diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_token.ts b/packages/kbn-monaco/src/esql/lib/esql_token.ts similarity index 85% rename from packages/kbn-monaco/src/esql/lib/monaco/esql_token.ts rename to packages/kbn-monaco/src/esql/lib/esql_token.ts index 82058e68788f8..7db77c8b2061f 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_token.ts +++ b/packages/kbn-monaco/src/esql/lib/esql_token.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import { monaco } from '../../../monaco_imports'; -import { ESQL_TOKEN_POSTFIX } from '../constants'; +import { monaco } from '../../monaco_imports'; +import { ESQL_TOKEN_POSTFIX } from './constants'; /** @internal **/ export class ESQLToken implements monaco.languages.IToken { diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_token_helpers.ts b/packages/kbn-monaco/src/esql/lib/esql_token_helpers.ts similarity index 86% rename from packages/kbn-monaco/src/esql/lib/monaco/esql_token_helpers.ts rename to packages/kbn-monaco/src/esql/lib/esql_token_helpers.ts index 497344dd606c4..e77b9ccfe6e40 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_token_helpers.ts +++ b/packages/kbn-monaco/src/esql/lib/esql_token_helpers.ts @@ -6,9 +6,12 @@ * Side Public License, v 1. */ -import { monaco } from '../../../monaco_imports'; -import { nonNullable } from '../ast/ast_helpers'; -import { ESQL_TOKEN_POSTFIX } from '../constants'; +import { monaco } from '../../monaco_imports'; +import { ESQL_TOKEN_POSTFIX } from './constants'; + +function nonNullable(value: T | undefined): value is T { + return value != null; +} export function enrichTokensWithFunctionsMetadata( tokens: monaco.languages.IToken[] diff --git a/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts b/packages/kbn-monaco/src/esql/lib/esql_tokens_provider.ts similarity index 92% rename from packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts rename to packages/kbn-monaco/src/esql/lib/esql_tokens_provider.ts index 35689e0b56694..378e86cbfb27d 100644 --- a/packages/kbn-monaco/src/esql/lib/monaco/esql_tokens_provider.ts +++ b/packages/kbn-monaco/src/esql/lib/esql_tokens_provider.ts @@ -7,15 +7,14 @@ */ import { CharStreams, type Token } from 'antlr4'; -import { monaco } from '../../../monaco_imports'; -import { ESQLErrorListener } from './esql_error_listener'; +import { getLexer, ESQLErrorListener } from '@kbn/esql-ast'; +import { monaco } from '../../monaco_imports'; import { ESQLToken } from './esql_token'; import { ESQLLineTokens } from './esql_line_tokens'; import { ESQLState } from './esql_state'; -import { getLexer } from '../antlr_facade'; -import { ESQL_TOKEN_POSTFIX } from '../constants'; +import { ESQL_TOKEN_POSTFIX } from './constants'; import { enrichTokensWithFunctionsMetadata } from './esql_token_helpers'; const EOF = -1; diff --git a/packages/kbn-monaco/src/esql/lib/ast/hover/hover.test.ts b/packages/kbn-monaco/src/esql/lib/hover/hover.test.ts similarity index 85% rename from packages/kbn-monaco/src/esql/lib/ast/hover/hover.test.ts rename to packages/kbn-monaco/src/esql/lib/hover/hover.test.ts index c2a28f28ba3d6..2aba87123b480 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/hover/hover.test.ts +++ b/packages/kbn-monaco/src/esql/lib/hover/hover.test.ts @@ -6,15 +6,14 @@ * Side Public License, v 1. */ -import { monaco } from '../../../../monaco_imports'; -import { CharStreams } from 'antlr4'; -import { getParser, ROOT_STATEMENT } from '../../antlr_facade'; -import { ESQLErrorListener } from '../../monaco/esql_error_listener'; -import { AstListener } from '../ast_factory'; +import { monaco } from '../../../monaco_imports'; import { getHoverItem } from './hover'; -import { getFunctionDefinition } from '../shared/helpers'; -import { getFunctionSignatures } from '../definitions/helpers'; -import { enrichModes } from '../definitions/settings'; +import { getAstAndSyntaxErrors } from '@kbn/esql-ast'; +import { + ENRICH_MODES, + getFunctionDefinition, + getFunctionSignatures, +} from '@kbn/esql-validation-autocomplete'; const fields: Array<{ name: string; type: string; suggestedAs?: string }> = [ ...['string', 'number', 'date', 'boolean', 'ip'].map((type) => ({ @@ -88,16 +87,6 @@ function createModelAndPosition(text: string, string: string) { } describe('hover', () => { - const getAstAndErrors = async (text: string) => { - const errorListener = new ESQLErrorListener(); - const parseListener = new AstListener(); - const parser = getParser(CharStreams.fromString(text), errorListener, parseListener); - - parser[ROOT_STATEMENT](); - - return { ...parseListener.getAst(), errors: [] }; - }; - type TestArgs = [ string, string, @@ -135,7 +124,7 @@ describe('hover', () => { model, position, token, - async (text) => (text ? await getAstAndErrors(text) : { ast: [], errors: [] }), + async (text) => (text ? await getAstAndSyntaxErrors(text) : { ast: [], errors: [] }), callbackMocks ); expect(contents.map(({ value }) => value)).toEqual(expected); @@ -190,11 +179,11 @@ describe('hover', () => { testSuggestions(`from a | enrich policy on b `, 'non-policy', createPolicyContent); describe('ccq mode', () => { - for (const mode of enrichModes.values) { + for (const mode of ENRICH_MODES.values) { testSuggestions( - `from a | enrich ${enrichModes.prefix || ''}${mode.name}:policy`, - `${enrichModes.prefix || ''}${mode.name}`, - () => [enrichModes.description, `**${mode.name}**: ${mode.description}`] + `from a | enrich ${ENRICH_MODES.prefix || ''}${mode.name}:policy`, + `${ENRICH_MODES.prefix || ''}${mode.name}`, + () => [ENRICH_MODES.description, `**${mode.name}**: ${mode.description}`] ); } }); diff --git a/packages/kbn-monaco/src/esql/lib/ast/hover/hover.ts b/packages/kbn-monaco/src/esql/lib/hover/hover.ts similarity index 88% rename from packages/kbn-monaco/src/esql/lib/ast/hover/hover.ts rename to packages/kbn-monaco/src/esql/lib/hover/hover.ts index bcc2f8c76ec8a..f9f307b0298cf 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/hover/hover.ts +++ b/packages/kbn-monaco/src/esql/lib/hover/hover.ts @@ -7,19 +7,19 @@ */ import { i18n } from '@kbn/i18n'; -import type { monaco } from '../../../../monaco_imports'; -import { getFunctionSignatures } from '../definitions/helpers'; -import { getAstContext } from '../shared/context'; +import type { AstProviderFn } from '@kbn/esql-ast'; import { - monacoPositionToOffset, + getAstContext, getFunctionDefinition, + getFunctionSignatures, isSourceItem, isSettingItem, getCommandDefinition, -} from '../shared/helpers'; -import { getPolicyHelper } from '../shared/resources_helpers'; -import { ESQLCallbacks } from '../shared/types'; -import type { AstProviderFn } from '../types'; + type ESQLCallbacks, + getPolicyHelper, +} from '@kbn/esql-validation-autocomplete'; +import type { monaco } from '../../../monaco_imports'; +import { monacoPositionToOffset } from '../shared/utils'; export async function getHoverItem( model: monaco.editor.ITextModel, diff --git a/packages/kbn-monaco/src/esql/lib/monaco/index.ts b/packages/kbn-monaco/src/esql/lib/index.ts similarity index 100% rename from packages/kbn-monaco/src/esql/lib/monaco/index.ts rename to packages/kbn-monaco/src/esql/lib/index.ts diff --git a/packages/kbn-monaco/src/esql/lib/shared/utils.ts b/packages/kbn-monaco/src/esql/lib/shared/utils.ts new file mode 100644 index 0000000000000..9f2d6d4f22545 --- /dev/null +++ b/packages/kbn-monaco/src/esql/lib/shared/utils.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { monaco } from '../../../monaco_imports'; + +// From Monaco position to linear offset +export function monacoPositionToOffset(expression: string, position: monaco.Position): number { + const lines = expression.split(/\n/); + return lines + .slice(0, position.lineNumber) + .reduce( + (prev, current, index) => + prev + (index === position.lineNumber - 1 ? position.column - 1 : current.length + 1), + 0 + ); +} diff --git a/packages/kbn-monaco/src/esql/lib/ast/signature/index.ts b/packages/kbn-monaco/src/esql/lib/signature/index.ts similarity index 86% rename from packages/kbn-monaco/src/esql/lib/ast/signature/index.ts rename to packages/kbn-monaco/src/esql/lib/signature/index.ts index a3202591a9c7a..c858394479dc5 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/signature/index.ts +++ b/packages/kbn-monaco/src/esql/lib/signature/index.ts @@ -6,8 +6,8 @@ * Side Public License, v 1. */ -import type { monaco } from '../../../../monaco_imports'; -import type { AstProviderFn } from '../types'; +import type { AstProviderFn } from '@kbn/esql-ast'; +import type { monaco } from '../../../monaco_imports'; export function getSignatureHelp( model: monaco.editor.ITextModel, diff --git a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/types.ts b/packages/kbn-monaco/src/esql/lib/types.ts similarity index 70% rename from packages/kbn-monaco/src/esql/lib/ast/autocomplete/types.ts rename to packages/kbn-monaco/src/esql/lib/types.ts index ad6428fcbc771..6bd51a1690067 100644 --- a/packages/kbn-monaco/src/esql/lib/ast/autocomplete/types.ts +++ b/packages/kbn-monaco/src/esql/lib/types.ts @@ -6,16 +6,9 @@ * Side Public License, v 1. */ -import { monaco } from '../../../../..'; +import { monaco } from '../../monaco_imports'; -/** @internal **/ -export interface UserDefinedVariables { - userDefined: string[]; - policies: string[]; -} - -/** @internal **/ -export type AutocompleteCommandDefinition = Pick< +export type MonacoAutocompleteCommandDefinition = Pick< monaco.languages.CompletionItem, | 'label' | 'insertText' @@ -25,4 +18,7 @@ export type AutocompleteCommandDefinition = Pick< | 'sortText' | 'insertTextRules' | 'command' + | 'range' >; + +export type MonacoCodeAction = monaco.languages.CodeAction; diff --git a/packages/kbn-monaco/src/esql/worker/esql_worker.ts b/packages/kbn-monaco/src/esql/worker/esql_worker.ts index 537b08d9702aa..89ab95aa8cd21 100644 --- a/packages/kbn-monaco/src/esql/worker/esql_worker.ts +++ b/packages/kbn-monaco/src/esql/worker/esql_worker.ts @@ -7,11 +7,28 @@ */ import { CharStreams } from 'antlr4'; +import { + getAstAndSyntaxErrors, + getParser, + ROOT_STATEMENT, + ESQLErrorListener, + type EditorError, +} from '@kbn/esql-ast'; import type { monaco } from '../../monaco_imports'; import type { BaseWorkerDefinition } from '../../types'; -import { getParser, ROOT_STATEMENT } from '../lib/antlr_facade'; -import { AstListener } from '../lib/ast/ast_factory'; -import { ESQLErrorListener } from '../lib/monaco/esql_error_listener'; + +/** + * While this function looks similar to the wrapAsMonacoMessages one, it prevents from + * loading the whole monaco stuff within the WebWorker. + * Given that we're dealing only with EditorError objects here, and not other types, it is + * possible to use this simpler inline function to work. + */ +function inlineToMonacoErrors({ severity, ...error }: EditorError) { + return { + ...error, + severity: severity === 'error' ? 8 : 4, // monaco.MarkerSeverity.Error : monaco.MarkerSeverity.Warning + }; +} export class ESQLWorker implements BaseWorkerDefinition { private readonly _ctx: monaco.worker.IWorkerContext; @@ -38,26 +55,16 @@ export class ESQLWorker implements BaseWorkerDefinition { parser[ROOT_STATEMENT](); - return errorListener.getErrors(); + return errorListener.getErrors().map(inlineToMonacoErrors); } return []; } async getAst(text: string | undefined) { - if (!text) { - return { ast: [], errors: [] }; - } - const inputStream = CharStreams.fromString(text); - const errorListener = new ESQLErrorListener(); - const parserListener = new AstListener(); - const parser = getParser(inputStream, errorListener, parserListener); - - parser[ROOT_STATEMENT](); - - const { ast } = parserListener.getAst(); + const rawAst = await getAstAndSyntaxErrors(text); return { - ast, - errors: errorListener.getErrors(), + ast: rawAst.ast, + errors: rawAst.errors.map(inlineToMonacoErrors), }; } } diff --git a/packages/kbn-monaco/src/painless/worker/lib/parser.ts b/packages/kbn-monaco/src/painless/worker/lib/parser.ts index f33ca8b7e4667..eb7fa13cbdbbb 100644 --- a/packages/kbn-monaco/src/painless/worker/lib/parser.ts +++ b/packages/kbn-monaco/src/painless/worker/lib/parser.ts @@ -9,14 +9,14 @@ import { CommonTokenStream, CharStreams } from 'antlr4'; import { default as PainlessParser, SourceContext } from '../../antlr/painless_parser'; import { PainlessLexerEnhanced } from './lexer'; -import { EditorError } from '../../../types'; +import { MonacoEditorError } from '../../../types'; import { ANTLRErrorListener } from '../../../common/error_listener'; const parse = ( code: string ): { source: SourceContext; - errors: EditorError[]; + errors: MonacoEditorError[]; } => { const inputStream = CharStreams.fromString(code); const lexer = new PainlessLexerEnhanced(inputStream); @@ -30,7 +30,7 @@ const parse = ( lexer.addErrorListener(painlessLangErrorListener); parser.addErrorListener(painlessLangErrorListener); - const errors: EditorError[] = painlessLangErrorListener.getErrors(); + const errors: MonacoEditorError[] = painlessLangErrorListener.getErrors(); return { source: parser.source(), @@ -38,7 +38,7 @@ const parse = ( }; }; -export const parseAndGetSyntaxErrors = (code: string): EditorError[] => { +export const parseAndGetSyntaxErrors = (code: string): MonacoEditorError[] => { const { errors } = parse(code); return errors; }; diff --git a/packages/kbn-monaco/src/register_globals.ts b/packages/kbn-monaco/src/register_globals.ts index 8b12b34866a98..dc69e2ceaa8b0 100644 --- a/packages/kbn-monaco/src/register_globals.ts +++ b/packages/kbn-monaco/src/register_globals.ts @@ -13,7 +13,7 @@ import { monaco } from './monaco_imports'; import { ESQL_THEME_ID, ESQLLang, buildESQlTheme } from './esql'; import { YAML_LANG_ID } from './yaml'; import { registerLanguage, registerTheme } from './helpers'; -import { ConsoleLang } from './console'; +import { ConsoleLang, CONSOLE_THEME_ID, buildConsoleTheme } from './console'; export const DEFAULT_WORKER_ID = 'default'; const langSpecificWorkerIds = [ @@ -38,6 +38,7 @@ registerLanguage(ConsoleLang); * Register custom themes */ registerTheme(ESQL_THEME_ID, buildESQlTheme()); +registerTheme(CONSOLE_THEME_ID, buildConsoleTheme()); const monacoBundleDir = (window as any).__kbnPublicPath__?.['kbn-monaco']; diff --git a/packages/kbn-monaco/src/types.ts b/packages/kbn-monaco/src/types.ts index e2268caab771f..5a4d3c1793031 100644 --- a/packages/kbn-monaco/src/types.ts +++ b/packages/kbn-monaco/src/types.ts @@ -41,7 +41,7 @@ export interface CustomLangModuleType onLanguage: () => void; } -export interface EditorError { +export interface MonacoEditorError { severity: monaco.MarkerSeverity; startLineNumber: number; startColumn: number; @@ -54,13 +54,13 @@ export interface EditorError { export interface LangValidation { isValidating: boolean; isValid: boolean; - errors: EditorError[]; + errors: MonacoEditorError[]; } export interface SyntaxErrors { - [modelId: string]: EditorError[]; + [modelId: string]: MonacoEditorError[]; } export interface BaseWorkerDefinition { - getSyntaxErrors: (modelUri: string) => Promise; + getSyntaxErrors: (modelUri: string) => Promise; } diff --git a/packages/kbn-monaco/src/xjson/lexer_rules/xjson.ts b/packages/kbn-monaco/src/xjson/lexer_rules/xjson.ts index f2ab22f8c97df..e028ff38bb2af 100644 --- a/packages/kbn-monaco/src/xjson/lexer_rules/xjson.ts +++ b/packages/kbn-monaco/src/xjson/lexer_rules/xjson.ts @@ -8,16 +8,11 @@ import { monaco } from '../../monaco_imports'; -import { globals } from './shared'; +import { globals } from '../../common/lexer_rules'; -export const lexerRules: monaco.languages.IMonarchLanguage = { - ...(globals as any), - - defaultToken: 'invalid', - tokenPostfix: '', - - tokenizer: { - root: [ +export const buildXjsonRules = (root: string = 'root') => { + return { + [root]: [ [ /("(?:[^"]*_)?script"|"inline"|"source")(\s*?)(:)(\s*?)(""")/, [ @@ -106,7 +101,15 @@ export const lexerRules: monaco.languages.IMonarchLanguage = { [/\\""""/, { token: 'punctuation.end_triple_quote', next: '@pop' }], [/./, { token: 'multi_string' }], ], - }, + }; +}; +export const lexerRules: monaco.languages.IMonarchLanguage = { + ...(globals as any), + + defaultToken: 'invalid', + tokenPostfix: '', + + tokenizer: { ...buildXjsonRules() }, }; export const languageConfiguration: monaco.languages.LanguageConfiguration = { diff --git a/packages/kbn-monaco/tsconfig.json b/packages/kbn-monaco/tsconfig.json index f6ce023d74c67..4df3aa9b486b3 100644 --- a/packages/kbn-monaco/tsconfig.json +++ b/packages/kbn-monaco/tsconfig.json @@ -25,6 +25,8 @@ "@kbn/i18n", "@kbn/repo-info", "@kbn/ui-theme", + "@kbn/esql-ast", + "@kbn/esql-validation-autocomplete" ], "exclude": [ "target/**/*", diff --git a/packages/kbn-openapi-generator/src/openapi_generator.ts b/packages/kbn-openapi-generator/src/openapi_generator.ts index 60efd762dade7..bdbc8ecec3c97 100644 --- a/packages/kbn-openapi-generator/src/openapi_generator.ts +++ b/packages/kbn-openapi-generator/src/openapi_generator.ts @@ -23,14 +23,21 @@ import type { OpenApiDocument } from './parser/openapi_types'; import { initTemplateService, TemplateName } from './template_service/template_service'; export interface GeneratorConfig { + title?: string; rootDir: string; sourceGlob: string; templateName: TemplateName; skipLinting?: boolean; + bundle?: { + /** + * If provided, the OpenAPI specifications will be bundled and written to this file + */ + outFile: string; + }; } export const generate = async (config: GeneratorConfig) => { - const { rootDir, sourceGlob, templateName, skipLinting } = config; + const { title = 'API schemas', rootDir, sourceGlob, templateName, skipLinting, bundle } = config; if (!skipLinting) { await lint({ @@ -39,7 +46,7 @@ export const generate = async (config: GeneratorConfig) => { }); } - console.log(chalk.bold(`Generating API route schemas`)); + console.log(chalk.bold(`Generating ${config.title} `)); console.log(chalk.bold(`Working directory: ${chalk.underline(rootDir)}`)); console.log(`👀 Searching for source files`); @@ -47,40 +54,76 @@ export const generate = async (config: GeneratorConfig) => { const schemaPaths = await globby([sourceFilesGlob]); console.log(`🕵️‍♀️ Found ${schemaPaths.length} schemas, parsing`); - const parsedSources = await Promise.all( + let parsedSources = await Promise.all( schemaPaths.map(async (sourcePath) => { const parsedSchema = (await SwaggerParser.parse(sourcePath)) as OpenApiDocument; - return { sourcePath, parsedSchema }; + return { + sourcePath, + generationContext: getGenerationContext(parsedSchema), + }; }) ); + // If there are no operations or components to generate, skip this file + parsedSources = parsedSources.filter( + ({ generationContext }) => + generationContext.operations.length > 0 || generationContext.components !== undefined + ); console.log(`🧹 Cleaning up any previously generated artifacts`); - await removeGenArtifacts(rootDir); + if (bundle) { + await fs.rm(bundle.outFile, { force: true }); + } else { + await removeGenArtifacts(rootDir); + } console.log(`🪄 Generating new artifacts`); const TemplateService = await initTemplateService(); - await Promise.all( - parsedSources.map(async ({ sourcePath, parsedSchema }) => { - const generationContext = getGenerationContext(parsedSchema); + if (bundle) { + console.log(`📦 Bundling ${title}`); + const operations = parsedSources + .flatMap(({ generationContext, sourcePath }) => + // Add the sourcePath to each operation so we can generate the correct import paths for bundled operations + generationContext.operations.map((op) => ({ + ...op, + sourcePath, + version: generationContext.info.version, + })) + ) + // Sort the operations by operationId so the output is deterministic + .sort((a, b) => a.operationId.localeCompare(b.operationId)); - // If there are no operations or components to generate, skip this file - const shouldGenerate = - generationContext.operations.length > 0 || generationContext.components !== undefined; - if (!shouldGenerate) { - return; - } + const result = TemplateService.compileTemplate(templateName, { + operations, + components: {}, + info: { + title, + version: 'Bundle (no version)', + }, + imports: {}, + }); - const result = TemplateService.compileTemplate(templateName, generationContext); + await fs.writeFile(bundle.outFile, result); + console.log(`📖 Wrote bundled artifact to ${chalk.bold(bundle.outFile)}`); + } else { + await Promise.all( + parsedSources.map(async ({ sourcePath, generationContext }) => { + const result = TemplateService.compileTemplate(templateName, generationContext); - // Write the generation result to disk - await fs.writeFile(getGeneratedFilePath(sourcePath), result); - }) - ); + // Write the generation result to disk + await fs.writeFile(getGeneratedFilePath(sourcePath), result); + }) + ); + } // Format the output folder using prettier as the generator produces // unformatted code and fix any eslint errors console.log(`💅 Formatting output`); - const generatedArtifactsGlob = resolve(rootDir, './**/*.gen.ts'); - await formatOutput(generatedArtifactsGlob); - await fixEslint(generatedArtifactsGlob); + if (bundle) { + await formatOutput(bundle.outFile); + await fixEslint(bundle.outFile); + } else { + const generatedArtifactsGlob = resolve(rootDir, './**/*.gen.ts'); + await formatOutput(generatedArtifactsGlob); + await fixEslint(generatedArtifactsGlob); + } }; diff --git a/packages/kbn-openapi-generator/src/template_service/register_helpers.ts b/packages/kbn-openapi-generator/src/template_service/register_helpers.ts index 3b4b5fa9202fd..c676ae869c7ab 100644 --- a/packages/kbn-openapi-generator/src/template_service/register_helpers.ts +++ b/packages/kbn-openapi-generator/src/template_service/register_helpers.ts @@ -50,4 +50,10 @@ export function registerHelpers(handlebarsInstance: typeof Handlebars) { handlebarsInstance.registerHelper('startsWithSpecialChar', (val: string) => { return /^[^a-zA-Z0-9]/.test(val); }); + handlebarsInstance.registerHelper( + 'replace', + (val: string, searchValue: string, replaceValue: string) => { + return val.replace(searchValue, replaceValue); + } + ); } diff --git a/packages/kbn-openapi-generator/src/template_service/templates/api_client_supertest.handlebars b/packages/kbn-openapi-generator/src/template_service/templates/api_client_supertest.handlebars new file mode 100644 index 0000000000000..92b044d1abf49 --- /dev/null +++ b/packages/kbn-openapi-generator/src/template_service/templates/api_client_supertest.handlebars @@ -0,0 +1,67 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ELASTIC_HTTP_VERSION_HEADER, X_ELASTIC_INTERNAL_ORIGIN_REQUEST } from '@kbn/core-http-common'; +import { FtrProviderContext } from 'x-pack/test/api_integration/ftr_provider_context'; + +{{> disclaimer}} + +{{#each operations}} +import { + {{operationId}}RequestQueryInput, + {{operationId}}RequestParamsInput, + {{operationId}}RequestBodyInput +} from '{{replace sourcePath 'schema.yaml' 'gen'}}'; +{{/each}} + +export function SecuritySolutionApiProvider({ getService }: FtrProviderContext) { + const supertest = getService('supertest'); + + return { + {{#each operations}} + {{#if description}} + /** + * {{{description}}} + */ + {{/if}} + {{camelCase operationId}}({{#if (or requestQuery requestParams requestBody)}}props: {{operationId}}Props{{/if}}) { + return supertest + .{{method}}({{#if requestParams}}replaceParams('{{path}}', props.params){{else}}'{{path}}'{{/if}}) + .set('kbn-xsrf', 'true') + .set(ELASTIC_HTTP_VERSION_HEADER, '{{version}}') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') + {{~#if requestBody}}.send(props.body as object){{/if}} + {{~#if requestQuery}}.query(props.query){{/if}} + }, + {{/each}} + } +} + +{{#each operations}} +{{#if (or requestQuery requestParams requestBody)}} +export interface {{operationId}}Props { + {{~#if requestQuery}}query: {{operationId}}RequestQueryInput;{{/if}} + {{~#if requestParams}}params: {{operationId}}RequestParamsInput;{{/if}} + {{~#if requestBody}}body: {{operationId}}RequestBodyInput;{{/if}} +} +{{/if}} +{{/each}} + +/** + * Replaces placeholders in a path string with provided param value + * + * @param path Path string with placeholders for params + * @param params Object with params to replace + * @returns Path string with params replaced + */ +function replaceParams(path: string, params: Record): string { + let output = path; + Object.entries(params).forEach(([param, value]) => { + output = path.replace(`{${param}}`, `${value}`); + }); + return output; +} \ No newline at end of file diff --git a/packages/kbn-panel-loader/index.tsx b/packages/kbn-panel-loader/index.tsx index 475ffebacc7a2..710f4cafb7249 100644 --- a/packages/kbn-panel-loader/index.tsx +++ b/packages/kbn-panel-loader/index.tsx @@ -10,7 +10,11 @@ import React from 'react'; import { EuiLoadingChart, EuiPanel } from '@elastic/eui'; import { css } from '@emotion/react'; -export const PanelLoader = (props: { showShadow?: boolean; dataTestSubj?: string }) => { +export const PanelLoader = (props: { + showShadow?: boolean; + showBorder?: boolean; + dataTestSubj?: string; +}) => { return ( diff --git a/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts index fb5db89dbb229..3ebc7331aef71 100644 --- a/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts +++ b/packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts @@ -37,12 +37,11 @@ describe('threat_mapping', () => { }); test('it should fail validation with an extra entry item', () => { - const payload: ThreatMappingEntries & Array<{ extra: string }> = [ + const payload: Array = [ { field: 'field.one', type: 'mapping', value: 'field.one', - // @ts-expect-error upgrade typescript v4.9.5 extra: 'blah', }, ]; @@ -112,7 +111,7 @@ describe('threat_mapping', () => { }); test('it should fail validate with an extra key', () => { - const payload: ThreatMapping & Array<{ extra: string }> = [ + const payload: Array = [ { entries: [ { @@ -121,7 +120,6 @@ describe('threat_mapping', () => { value: 'field.one', }, ], - // @ts-expect-error upgrade typescript v4.9.5 extra: 'invalid', }, ]; @@ -135,14 +133,13 @@ describe('threat_mapping', () => { }); test('it should fail validate with an extra inner entry', () => { - const payload: ThreatMapping & Array<{ entries: Array<{ extra: string }> }> = [ + const payload: Array }> = [ { entries: [ { field: 'field.one', type: 'mapping', value: 'field.one', - // @ts-expect-error upgrade typescript v4.9.5 extra: 'blah', }, ], diff --git a/packages/kbn-securitysolution-utils/src/add_remove_id_to_item/index.ts b/packages/kbn-securitysolution-utils/src/add_remove_id_to_item/index.ts index d08b2f54e6e7e..7dff865312829 100644 --- a/packages/kbn-securitysolution-utils/src/add_remove_id_to_item/index.ts +++ b/packages/kbn-securitysolution-utils/src/add_remove_id_to_item/index.ts @@ -19,8 +19,7 @@ import { v4 as uuidv4 } from 'uuid'; */ type NotArray = T extends unknown[] ? never : T; export const addIdToItem = (item: NotArray): T => { - // @ts-expect-error upgrade typescript v4.9.5 - const maybeId: typeof item & { id?: string } = item; + const maybeId = item as typeof item & { id?: string }; if (maybeId.id != null) { return item; } else { @@ -42,8 +41,7 @@ export const removeIdFromItem = ( }, Exclude > => { - // @ts-expect-error upgrade typescript v4.9.5 - const maybeId: typeof item & { id?: string } = item; + const maybeId = item as typeof item & { id?: string }; if (maybeId.id != null) { const { id, ...noId } = maybeId; return noId; diff --git a/packages/kbn-text-based-editor/jest.config.js b/packages/kbn-text-based-editor/jest.config.js index dec942367396d..52ce99a1351a6 100644 --- a/packages/kbn-text-based-editor/jest.config.js +++ b/packages/kbn-text-based-editor/jest.config.js @@ -10,4 +10,5 @@ module.exports = { preset: '@kbn/test', rootDir: '../..', roots: ['/packages/kbn-text-based-editor'], + setupFilesAfterEnv: ['/packages/kbn-text-based-editor/setup_tests.ts'], }; diff --git a/packages/kbn-text-based-editor/kibana.jsonc b/packages/kbn-text-based-editor/kibana.jsonc index c9d3b8a2996ca..1046c18b094e7 100644 --- a/packages/kbn-text-based-editor/kibana.jsonc +++ b/packages/kbn-text-based-editor/kibana.jsonc @@ -1,5 +1,5 @@ { "type": "shared-browser", "id": "@kbn/text-based-editor", - "owner": "@elastic/kibana-visualizations", + "owner": "@elastic/kibana-esql", } \ No newline at end of file diff --git a/packages/kbn-text-based-editor/setup_tests.ts b/packages/kbn-text-based-editor/setup_tests.ts new file mode 100644 index 0000000000000..8d1acb9232934 --- /dev/null +++ b/packages/kbn-text-based-editor/setup_tests.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +// eslint-disable-next-line import/no-extraneous-dependencies +import '@testing-library/jest-dom'; diff --git a/packages/kbn-text-based-editor/src/editor_footer.tsx b/packages/kbn-text-based-editor/src/editor_footer.tsx index 10c31cd6ce7e7..ab3d051c6332a 100644 --- a/packages/kbn-text-based-editor/src/editor_footer.tsx +++ b/packages/kbn-text-based-editor/src/editor_footer.tsx @@ -6,11 +6,10 @@ * Side Public License, v 1. */ -import React, { memo, useState } from 'react'; +import React, { memo, useState, useCallback } from 'react'; import { i18n } from '@kbn/i18n'; import { - EuiCode, EuiText, EuiFlexGroup, EuiFlexItem, @@ -18,10 +17,12 @@ import { EuiButton, useEuiTheme, EuiLink, + EuiCode, } from '@elastic/eui'; import { Interpolation, Theme, css } from '@emotion/react'; import type { MonacoMessage } from './helpers'; import { ErrorsWarningsFooterPopover } from './errors_warnings_popover'; +import { QueryHistoryAction, QueryHistory } from './query_history'; const isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0; const COMMAND_KEY = isMac ? '⌘' : '^'; @@ -31,41 +32,71 @@ export function SubmitFeedbackComponent({ isSpaceReduced }: { isSpaceReduced?: b const { euiTheme } = useEuiTheme(); return ( <> - - - - - - {isSpaceReduced - ? i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.feedback', { - defaultMessage: 'Feedback', - }) - : i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.submitFeedback', { - defaultMessage: 'Submit feedback', - })} - - + {isSpaceReduced && ( + + + + + + )} + {!isSpaceReduced && ( + <> + + + + + + {isSpaceReduced + ? i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.feedback', { + defaultMessage: 'Feedback', + }) + : i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.submitFeedback', { + defaultMessage: 'Submit feedback', + })} + + + + )} ); } interface EditorFooterProps { lines: number; - containerCSS: Interpolation; + styles: { + bottomContainer: Interpolation; + historyContainer: Interpolation; + }; errors?: MonacoMessage[]; warnings?: MonacoMessage[]; detectTimestamp: boolean; onErrorClick: (error: MonacoMessage) => void; runQuery: () => void; + updateQuery: (qs: string) => void; + isHistoryOpen: boolean; + setIsHistoryOpen: (status: boolean) => void; + containerWidth: number; hideRunQueryText?: boolean; disableSubmitAction?: boolean; editorIsInline?: boolean; @@ -73,16 +104,19 @@ interface EditorFooterProps { isLoading?: boolean; allowQueryCancellation?: boolean; hideTimeFilterInfo?: boolean; + hideQueryHistory?: boolean; + refetchHistoryItems?: boolean; } export const EditorFooter = memo(function EditorFooter({ lines, - containerCSS, + styles, errors, warnings, detectTimestamp, onErrorClick, runQuery, + updateQuery, hideRunQueryText, disableSubmitAction, editorIsInline, @@ -90,173 +124,253 @@ export const EditorFooter = memo(function EditorFooter({ isLoading, allowQueryCancellation, hideTimeFilterInfo, + isHistoryOpen, + containerWidth, + setIsHistoryOpen, + hideQueryHistory, + refetchHistoryItems, }: EditorFooterProps) { const { euiTheme } = useEuiTheme(); const [isErrorPopoverOpen, setIsErrorPopoverOpen] = useState(false); const [isWarningPopoverOpen, setIsWarningPopoverOpen] = useState(false); + + const onUpdateAndSubmit = useCallback( + (qs: string) => { + // update the query first + updateQuery(qs); + // submit the query with some latency + // if I do it immediately there is some race condition until + // the state is updated and it won't be sumbitted correctly + setTimeout(() => { + runQuery(); + }, 300); + }, + [runQuery, updateQuery] + ); + return ( - - - -

- {i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.lineCount', { - defaultMessage: '{count} {count, plural, one {line} other {lines}}', - values: { count: lines }, - })} -

- - - {/* If there is no space and no @timestamp detected hide the information */} - {(detectTimestamp || !isSpaceReduced) && !hideTimeFilterInfo && ( - - - - -

- {isSpaceReduced - ? '@timestamp' - : detectTimestamp - ? i18n.translate( - 'textBasedEditor.query.textBasedLanguagesEditor.timestampDetected', - { - defaultMessage: '@timestamp found', - } - ) - : i18n.translate( - 'textBasedEditor.query.textBasedLanguagesEditor.timestampNotDetected', - { - defaultMessage: '@timestamp not found', - } - )} -

-
-
-
-
- )} - {errors && errors.length > 0 && ( - { - if (isOpen) { - setIsWarningPopoverOpen(false); - } - setIsErrorPopoverOpen(isOpen); - }} - onErrorClick={onErrorClick} - /> - )} - {warnings && warnings.length > 0 && ( - { - if (isOpen) { - setIsErrorPopoverOpen(false); - } - setIsWarningPopoverOpen(isOpen); - }} - onErrorClick={onErrorClick} - /> - )} - - - {!hideRunQueryText && ( - - - - - -

- {i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.runQuery', { - defaultMessage: 'Run query', - })} -

-
-
- - {`${COMMAND_KEY} + Enter`} - -
-
- )} - {Boolean(editorIsInline) && ( - <> + - - - - + + - +

+ {i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.lineCount', { + defaultMessage: '{count} {count, plural, one {line} other {lines}}', + values: { count: lines }, + })} +

+
+
+ {/* If there is no space and no @timestamp detected hide the information */} + {(detectTimestamp || !isSpaceReduced) && !hideTimeFilterInfo && ( + + + + +

+ {isSpaceReduced + ? '@timestamp' + : detectTimestamp + ? i18n.translate( + 'textBasedEditor.query.textBasedLanguagesEditor.timestampDetected', + { + defaultMessage: '@timestamp found', + } + ) + : i18n.translate( + 'textBasedEditor.query.textBasedLanguagesEditor.timestampNotDetected', + { + defaultMessage: '@timestamp not found', + } + )} +

+
+
+
+
+ )} + {errors && errors.length > 0 && ( + { + if (isOpen) { + setIsWarningPopoverOpen(false); + } + setIsErrorPopoverOpen(isOpen); + }} + onErrorClick={onErrorClick} + /> + )} + {warnings && warnings.length > 0 && ( + { + if (isOpen) { + setIsErrorPopoverOpen(false); + } + setIsWarningPopoverOpen(isOpen); + }} + onErrorClick={onErrorClick} + /> + )} +
+
+ + + {!Boolean(editorIsInline) && ( + <> + + {!hideQueryHistory && ( + setIsHistoryOpen(!isHistoryOpen)} + isHistoryOpen={isHistoryOpen} + /> + )} + + )} + {!hideRunQueryText && ( + + - {allowQueryCancellation && isLoading - ? i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.cancel', { - defaultMessage: 'Cancel', - }) - : isSpaceReduced - ? i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.run', { - defaultMessage: 'Run', - }) - : i18n.translate( + +

+ {i18n.translate( 'textBasedEditor.query.textBasedLanguagesEditor.runQuery', { defaultMessage: 'Run query', } )} +

+
- - {allowQueryCancellation && isLoading ? 'X' : `${COMMAND_KEY}⏎`} - + >{`${COMMAND_KEY} + Enter`}
- -
+
+ )}
- + {Boolean(editorIsInline) && ( + <> + + + + {!hideQueryHistory && ( + setIsHistoryOpen(!isHistoryOpen)} + isHistoryOpen={isHistoryOpen} + isSpaceReduced={true} + /> + )} + + + + + {allowQueryCancellation && isLoading + ? i18n.translate( + 'textBasedEditor.query.textBasedLanguagesEditor.cancel', + { + defaultMessage: 'Cancel', + } + ) + : isSpaceReduced + ? i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.run', { + defaultMessage: 'Run', + }) + : i18n.translate( + 'textBasedEditor.query.textBasedLanguagesEditor.runQuery', + { + defaultMessage: 'Run query', + } + )} + + + + {allowQueryCancellation && isLoading ? 'X' : `${COMMAND_KEY}⏎`} + + + + + + + + + )} + + + {isHistoryOpen && ( + + + )} ); diff --git a/packages/kbn-text-based-editor/src/history_local_storage.test.ts b/packages/kbn-text-based-editor/src/history_local_storage.test.ts new file mode 100644 index 0000000000000..18e76c8e0560a --- /dev/null +++ b/packages/kbn-text-based-editor/src/history_local_storage.test.ts @@ -0,0 +1,54 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { addQueriesToCache, getCachedQueries, updateCachedQueries } from './history_local_storage'; + +describe('history local storage', function () { + const mockGetItem = jest.fn(); + const mockSetItem = jest.fn(); + Object.defineProperty(window, 'localStorage', { + value: { + getItem: (...args: string[]) => mockGetItem(...args), + setItem: (...args: string[]) => mockSetItem(...args), + }, + }); + it('should add queries to cache correctly ', function () { + addQueriesToCache({ + queryString: 'from kibana_sample_data_flights | limit 10', + timeZone: 'Browser', + }); + const historyItems = getCachedQueries(); + expect(historyItems.length).toBe(1); + expect(historyItems[0].queryRunning).toBe(true); + expect(historyItems[0].timeRan).toBeDefined(); + expect(historyItems[0].duration).toBeUndefined(); + expect(historyItems[0].status).toBeUndefined(); + }); + + it('should update queries to cache correctly ', function () { + addQueriesToCache({ + queryString: 'from kibana_sample_data_flights \n | limit 10 \n | stats meow = avg(woof)', + timeZone: 'Browser', + }); + updateCachedQueries({ + queryString: 'from kibana_sample_data_flights \n | limit 10 \n | stats meow = avg(woof)', + status: 'success', + }); + + const historyItems = getCachedQueries(); + expect(historyItems.length).toBe(2); + expect(historyItems[1].queryRunning).toBe(false); + expect(historyItems[1].timeRan).toBeDefined(); + expect(historyItems[1].duration).toBeDefined(); + expect(historyItems[1].status).toBe('success'); + + expect(mockSetItem).toHaveBeenCalledWith( + 'QUERY_HISTORY_ITEM_KEY', + JSON.stringify(historyItems) + ); + }); +}); diff --git a/packages/kbn-text-based-editor/src/history_local_storage.ts b/packages/kbn-text-based-editor/src/history_local_storage.ts new file mode 100644 index 0000000000000..f2ac26680354e --- /dev/null +++ b/packages/kbn-text-based-editor/src/history_local_storage.ts @@ -0,0 +1,104 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import moment from 'moment'; +import 'moment-timezone'; +const QUERY_HISTORY_ITEM_KEY = 'QUERY_HISTORY_ITEM_KEY'; +const dateFormat = 'MMM. D, YY HH:mm:ss.SSS'; + +/** + * We show maximum 20 ES|QL queries in the Query history component + */ + +export interface QueryHistoryItem { + status?: 'success' | 'error' | 'warning'; + queryString: string; + startDateMilliseconds?: number; + timeRan?: string; + timeZone?: string; + duration?: string; + queryRunning?: boolean; +} + +const MAX_QUERIES_NUMBER = 20; + +const getKey = (queryString: string) => { + return queryString.replaceAll('\n', '').trim(); +}; + +const getMomentTimeZone = (timeZone?: string) => { + return !timeZone || timeZone === 'Browser' ? moment.tz.guess() : timeZone; +}; + +const sortDates = (date1?: number, date2?: number) => { + return moment(date1)?.valueOf() - moment(date2)?.valueOf(); +}; + +export const getHistoryItems = (sortDirection: 'desc' | 'asc'): QueryHistoryItem[] => { + const localStorageString = localStorage.getItem(QUERY_HISTORY_ITEM_KEY) ?? '[]'; + const historyItems: QueryHistoryItem[] = JSON.parse(localStorageString); + const sortedByDate = historyItems.sort((a, b) => { + return sortDirection === 'desc' + ? sortDates(b.startDateMilliseconds, a.startDateMilliseconds) + : sortDates(a.startDateMilliseconds, b.startDateMilliseconds); + }); + return sortedByDate; +}; + +const cachedQueries = new Map(); +const localStorageQueries = getHistoryItems('desc'); + +localStorageQueries.forEach((queryItem) => { + const trimmedQueryString = getKey(queryItem.queryString); + cachedQueries.set(trimmedQueryString, queryItem); +}); + +export const getCachedQueries = (): QueryHistoryItem[] => { + return Array.from(cachedQueries, ([name, value]) => ({ ...value })); +}; + +export const addQueriesToCache = (item: QueryHistoryItem) => { + const trimmedQueryString = getKey(item.queryString); + + if (item.queryString) { + const tz = getMomentTimeZone(item.timeZone); + cachedQueries.set(trimmedQueryString, { + ...item, + timeRan: moment().tz(tz).format(dateFormat), + startDateMilliseconds: moment().valueOf(), + queryRunning: true, + }); + } +}; + +export const updateCachedQueries = (item: QueryHistoryItem) => { + const trimmedQueryString = getKey(item.queryString); + const query = cachedQueries.get(trimmedQueryString); + + if (query) { + const now = moment().valueOf(); + const duration = moment(now).diff(moment(query?.startDateMilliseconds)); + cachedQueries.set(trimmedQueryString, { + ...query, + timeRan: query.queryRunning ? query.timeRan : moment().format('MMM. D, YY HH:mm:ss'), + duration: query.queryRunning ? `${duration}ms` : query.duration, + status: item.status, + queryRunning: false, + }); + } + const queriesToStore = getCachedQueries(); + if (queriesToStore.length === MAX_QUERIES_NUMBER) { + const sortedByDate = queriesToStore.sort((a, b) => + sortDates(b?.startDateMilliseconds, a?.startDateMilliseconds) + ); + + // delete the last element + const toBeDeletedQuery = sortedByDate[MAX_QUERIES_NUMBER - 1]; + cachedQueries.delete(toBeDeletedQuery.queryString); + } + localStorage.setItem(QUERY_HISTORY_ITEM_KEY, JSON.stringify(queriesToStore)); +}; diff --git a/packages/kbn-text-based-editor/src/query_history.test.tsx b/packages/kbn-text-based-editor/src/query_history.test.tsx new file mode 100644 index 0000000000000..74cdb096a81f1 --- /dev/null +++ b/packages/kbn-text-based-editor/src/query_history.test.tsx @@ -0,0 +1,196 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not 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 { QueryHistoryAction, getTableColumns, QueryHistory, QueryColumn } from './query_history'; +import { render, screen } from '@testing-library/react'; + +jest.mock('./history_local_storage', () => { + const module = jest.requireActual('./history_local_storage'); + return { + ...module, + getHistoryItems: () => [ + { + queryString: 'from kibana_sample_data_flights | limit 10', + timeZone: 'Browser', + timeRan: 'Mar. 25, 24 08:45:27', + queryRunning: false, + duration: '2ms', + status: 'success', + }, + ], + }; +}); + +describe('QueryHistory', () => { + describe('QueryHistoryAction', () => { + it('should render the history action component as a button if is spaceReduced is undefined', () => { + render(); + expect( + screen.getByTestId('TextBasedLangEditor-toggle-query-history-button-container') + ).toBeInTheDocument(); + + expect( + screen.getByTestId('TextBasedLangEditor-toggle-query-history-button-container') + ).toHaveTextContent('Hide recent queries'); + }); + + it('should render the history action component as an icon if is spaceReduced is true', () => { + render(); + expect( + screen.getByTestId('TextBasedLangEditor-toggle-query-history-icon') + ).toBeInTheDocument(); + }); + }); + + describe('getTableColumns', () => { + it('should get the history table columns correctly', async () => { + const columns = getTableColumns(50, false, []); + expect(columns).toEqual([ + { + css: { + height: '100%', + }, + 'data-test-subj': 'status', + field: 'status', + name: '', + render: expect.anything(), + sortable: false, + width: '40px', + }, + { + 'data-test-subj': 'queryString', + field: 'queryString', + name: 'Recent queries', + render: expect.anything(), + }, + { + 'data-test-subj': 'timeRan', + field: 'timeRan', + name: 'Time ran', + render: expect.anything(), + sortable: true, + width: '240px', + }, + { + 'data-test-subj': 'lastDuration', + field: 'duration', + name: 'Last duration', + sortable: false, + width: '120px', + }, + { + actions: [], + 'data-test-subj': 'actions', + name: '', + width: '40px', + }, + ]); + }); + }); + + it('should get the history table columns correctly for reduced space', async () => { + const columns = getTableColumns(50, true, []); + expect(columns).toEqual([ + { + css: { + height: '100%', + }, + 'data-test-subj': 'status', + field: 'status', + name: '', + render: expect.anything(), + sortable: false, + width: 'auto', + }, + { + 'data-test-subj': 'timeRan', + field: 'timeRan', + name: 'Time ran', + render: expect.anything(), + sortable: true, + width: 'auto', + }, + { + 'data-test-subj': 'queryString', + field: 'queryString', + name: 'Recent queries', + render: expect.anything(), + }, + { + 'data-test-subj': 'lastDuration', + field: 'duration', + name: 'Last duration', + sortable: false, + width: 'auto', + }, + { + actions: [], + 'data-test-subj': 'actions', + name: '', + width: 'auto', + }, + ]); + }); + + describe('QueryHistory component', () => { + it('should not fetch the query items if refetchHistoryItems is not given', async () => { + render(); + expect(screen.getByRole('table')).toHaveTextContent('No items found'); + }); + + it('should fetch the query items if refetchHistoryItems is given ', async () => { + render( + + ); + expect(screen.getByRole('table')).toHaveTextContent( + 'Time ranRecent queriesLast durationTime ranMar. 25, 24 08:45:27Recent queriesfrom kibana_sample_data_flights | limit 10Last duration2ms' + ); + }); + }); + + describe('Querystring column', () => { + it('should not render the expanded button for large viewports', async () => { + render( + + ); + expect( + screen.queryByTestId('TextBasedLangEditor-queryHistory-queryString-expanded') + ).not.toBeInTheDocument(); + }); + + it('should render the expanded button for small viewports', async () => { + Object.defineProperty(HTMLElement.prototype, 'scrollWidth', { + configurable: true, + value: 400, + }); + Object.defineProperty(HTMLElement.prototype, 'offsetWidth', { + configurable: true, + value: 200, + }); + render( + + ); + expect( + screen.getByTestId('TextBasedLangEditor-queryHistory-queryString-expanded') + ).toBeInTheDocument(); + }); + }); +}); diff --git a/packages/kbn-text-based-editor/src/query_history.tsx b/packages/kbn-text-based-editor/src/query_history.tsx new file mode 100644 index 0000000000000..2a5a5b05dc2c8 --- /dev/null +++ b/packages/kbn-text-based-editor/src/query_history.tsx @@ -0,0 +1,392 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useState, useRef, useEffect, useMemo } from 'react'; +import { i18n } from '@kbn/i18n'; +import { + EuiFlexGroup, + EuiFlexItem, + EuiIcon, + useEuiTheme, + EuiInMemoryTable, + EuiBasicTableColumn, + EuiButtonEmpty, + Criteria, + EuiButtonIcon, + CustomItemAction, + EuiCopy, + EuiToolTip, + euiScrollBarStyles, +} from '@elastic/eui'; +import { css, Interpolation, Theme } from '@emotion/react'; +import { type QueryHistoryItem, getHistoryItems } from './history_local_storage'; +import { getReducedSpaceStyling, swapArrayElements } from './query_history_helpers'; + +const CONTAINER_MAX_HEIGHT = 190; + +export function QueryHistoryAction({ + toggleHistory, + isHistoryOpen, + isSpaceReduced, +}: { + toggleHistory: () => void; + isHistoryOpen: boolean; + isSpaceReduced?: boolean; +}) { + const { euiTheme } = useEuiTheme(); + // get history items from local storage + const items: QueryHistoryItem[] = getHistoryItems('desc'); + if (!items.length) return null; + return ( + <> + {isSpaceReduced && ( + + + + )} + {!isSpaceReduced && ( + + + {isHistoryOpen + ? i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.hideQueriesLabel', { + defaultMessage: 'Hide recent queries', + }) + : i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.showQueriesLabel', { + defaultMessage: 'Show recent queries', + })} + + + )} + + ); +} + +export const getTableColumns = ( + width: number, + isOnReducedSpaceLayout: boolean, + actions: Array> +): Array> => { + const columnsArray = [ + { + field: 'status', + name: '', + sortable: false, + 'data-test-subj': 'status', + render: (status: QueryHistoryItem['status']) => { + switch (status) { + case 'success': + default: + return ( + + ); + case 'error': + return ( + + ); + case 'warning': + return ( + + ); + } + }, + width: isOnReducedSpaceLayout ? 'auto' : '40px', + css: { height: '100%' }, // Vertically align icon + }, + { + field: 'queryString', + 'data-test-subj': 'queryString', + name: i18n.translate( + 'textBasedEditor.query.textBasedLanguagesEditor.recentQueriesColumnLabel', + { + defaultMessage: 'Recent queries', + } + ), + render: (queryString: QueryHistoryItem['queryString']) => ( + + ), + }, + { + field: 'timeRan', + 'data-test-subj': 'timeRan', + name: i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.timeRanColumnLabel', { + defaultMessage: 'Time ran', + }), + sortable: true, + render: (timeRan: QueryHistoryItem['timeRan']) => timeRan, + width: isOnReducedSpaceLayout ? 'auto' : '240px', + }, + { + field: 'duration', + 'data-test-subj': 'lastDuration', + name: i18n.translate( + 'textBasedEditor.query.textBasedLanguagesEditor.lastDurationColumnLabel', + { + defaultMessage: 'Last duration', + } + ), + sortable: false, + width: isOnReducedSpaceLayout ? 'auto' : '120px', + }, + { + name: '', + actions, + 'data-test-subj': 'actions', + width: isOnReducedSpaceLayout ? 'auto' : '40px', + }, + ]; + + // I need to swap the elements here to get the desired design + return isOnReducedSpaceLayout ? swapArrayElements(columnsArray, 1, 2) : columnsArray; +}; + +export function QueryHistory({ + containerCSS, + containerWidth, + refetchHistoryItems, + onUpdateAndSubmit, +}: { + containerCSS: Interpolation; + containerWidth: number; + onUpdateAndSubmit: (qs: string) => void; + refetchHistoryItems?: boolean; +}) { + const theme = useEuiTheme(); + const scrollBarStyles = euiScrollBarStyles(theme); + const [sortDirection, setSortDirection] = useState<'asc' | 'desc'>('desc'); + const [historyItems, setHistoryItems] = useState([]); + + useEffect(() => { + if (refetchHistoryItems) { + // get history items from local storage + setHistoryItems(getHistoryItems(sortDirection)); + } + }, [refetchHistoryItems, sortDirection]); + + const actions: Array> = useMemo(() => { + return [ + { + render: (item: QueryHistoryItem) => { + return ( + + + + onUpdateAndSubmit(item.queryString)} + css={css` + cursor: pointer; + `} + /> + + + + + {(copy) => ( + + )} + + + + ); + }, + }, + ]; + }, [onUpdateAndSubmit]); + const isOnReducedSpaceLayout = containerWidth < 560; + const columns = useMemo(() => { + return getTableColumns(containerWidth, isOnReducedSpaceLayout, actions); + }, [actions, containerWidth, isOnReducedSpaceLayout]); + + const onTableChange = ({ page, sort }: Criteria) => { + if (sort) { + const { direction } = sort; + setSortDirection(direction); + } + }; + + const sorting = { + sort: { + field: 'timeRan', + direction: sortDirection, + }, + }; + const { euiTheme } = theme; + const extraStyling = isOnReducedSpaceLayout + ? getReducedSpaceStyling() + : `width: ${containerWidth}px`; + const tableStyling = css` + .euiTable { + background-color: ${euiTheme.colors.lightestShade}; + } + .euiTable tbody tr:nth-child(odd) { + background-color: ${euiTheme.colors.emptyShade}; + } + max-height: ${CONTAINER_MAX_HEIGHT}px; + overflow-y: auto; + ${scrollBarStyles} + ${extraStyling} + `; + + return ( +
+ +
+ ); +} + +export function QueryColumn({ + queryString, + containerWidth, + isOnReducedSpaceLayout, +}: { + containerWidth: number; + queryString: string; + isOnReducedSpaceLayout: boolean; +}) { + const { euiTheme } = useEuiTheme(); + const containerRef = useRef(null); + + const [isExpandable, setIsExpandable] = useState(false); + const [isRowExpanded, setIsRowExpanded] = useState(false); + + useEffect(() => { + if (containerRef.current) { + const textIsOverlapping = containerRef.current.offsetWidth < containerRef.current.scrollWidth; + setIsExpandable(textIsOverlapping); + } + }, [containerWidth]); + + return ( + <> + {isExpandable && ( + { + setIsRowExpanded(!isRowExpanded); + }} + data-test-subj="TextBasedLangEditor-queryHistory-queryString-expanded" + aria-label={ + isRowExpanded + ? i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.collapseLabel', { + defaultMessage: 'Collapse', + }) + : i18n.translate('textBasedEditor.query.textBasedLanguagesEditor.expandLabel', { + defaultMessage: 'Expand', + }) + } + iconType={isRowExpanded ? 'arrowDown' : 'arrowRight'} + size="xs" + /> + )} + + {queryString} + + + ); +} diff --git a/packages/kbn-text-based-editor/src/query_history_helpers.test.ts b/packages/kbn-text-based-editor/src/query_history_helpers.test.ts new file mode 100644 index 0000000000000..c0f9f26d4315a --- /dev/null +++ b/packages/kbn-text-based-editor/src/query_history_helpers.test.ts @@ -0,0 +1,37 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import { swapArrayElements } from './query_history_helpers'; + +describe('query history helpers', function () { + it('should swap 2 elements in an array', function () { + const array = [ + { + field: 'woof', + name: 'woof', + sortable: true, + }, + { + field: 'meow', + name: 'meow', + sortable: false, + }, + ]; + expect(swapArrayElements(array, 1, 0)).toEqual([ + { + field: 'meow', + name: 'meow', + sortable: false, + }, + { + field: 'woof', + name: 'woof', + sortable: true, + }, + ]); + }); +}); diff --git a/packages/kbn-text-based-editor/src/query_history_helpers.ts b/packages/kbn-text-based-editor/src/query_history_helpers.ts new file mode 100644 index 0000000000000..97c9ceac454c6 --- /dev/null +++ b/packages/kbn-text-based-editor/src/query_history_helpers.ts @@ -0,0 +1,69 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import type { EuiBasicTableColumn } from '@elastic/eui'; +import type { QueryHistoryItem } from './history_local_storage'; + +export const getReducedSpaceStyling = () => { + return ` + /* Use grid display instead of standard table display CSS */ + .euiTable thead, + .euiTable tbody { + display: block; + } + .euiTable thead tr { + display: grid; + grid-template-columns: 40px 1fr 0 auto 72px; + } + .euiTable tbody tr { + display: grid; + grid-template-columns: 40px 1fr auto 72px; + grid-template-areas: + 'status timeRan lastDuration actions' + '. queryString queryString queryString'; + } + /* Set grid template areas */ + .euiTable td[data-test-subj='status'] { + grid-area: status; + } + .euiTable td[data-test-subj='timeRan'] { + grid-area: timeRan; + } + .euiTable td[data-test-subj='lastDuration'] { + grid-area: lastDuration; + } + .euiTable td[data-test-subj='actions'] { + grid-area: actions; + } + /** + * Special full-width cell that comes after all other cells + */ + .euiTable td[data-test-subj='queryString'] { + grid-area: queryString; + border: 0; + .euiTableCellContent { + padding-top: 0; + } + } + /* Unset the border between this cell and other cells */ + .euiTable .euiTableRowCell:not([data-test-subj='queryString']) { + border-bottom: 0; + } + `; +}; + +export const swapArrayElements = ( + array: Array>, + index1: number, + index2: number +) => { + const temp = array[index1]; + array[index1] = array[index2]; + array[index2] = temp; + + return array; +}; diff --git a/packages/kbn-text-based-editor/src/text_based_languages_editor.styles.ts b/packages/kbn-text-based-editor/src/text_based_languages_editor.styles.ts index 44874074e8464..8d8bd72eb8dcd 100644 --- a/packages/kbn-text-based-editor/src/text_based_languages_editor.styles.ts +++ b/packages/kbn-text-based-editor/src/text_based_languages_editor.styles.ts @@ -21,7 +21,8 @@ export const textBasedLanguagedEditorStyles = ( hasWarning: boolean, isCodeEditorExpandedFocused: boolean, hasReference: boolean, - editorIsInline: boolean + editorIsInline: boolean, + historyIsOpen: boolean ) => { let position = isCompactFocused ? ('absolute' as 'absolute') : ('relative' as 'relative'); // cast string to type 'relative' | 'absolute' if (isCodeEditorExpanded) { @@ -86,6 +87,20 @@ export const textBasedLanguagedEditorStyles = ( marginTop: 0, marginLeft: 0, marginBottom: 0, + borderBottomLeftRadius: editorIsInline || historyIsOpen ? 0 : euiTheme.border.radius.medium, + borderBottomRightRadius: editorIsInline || historyIsOpen ? 0 : euiTheme.border.radius.medium, + }, + historyContainer: { + border: euiTheme.border.thin, + borderTop: `2px solid ${euiTheme.colors.lightShade}`, + borderLeft: editorIsInline ? 'none' : euiTheme.border.thin, + borderRight: editorIsInline ? 'none' : euiTheme.border.thin, + backgroundColor: euiTheme.colors.lightestShade, + width: 'calc(100% + 2px)', + position: 'relative' as 'relative', // cast string to type 'relative', + marginTop: 0, + marginLeft: 0, + marginBottom: 0, borderBottomLeftRadius: editorIsInline ? 0 : euiTheme.border.radius.medium, borderBottomRightRadius: editorIsInline ? 0 : euiTheme.border.radius.medium, }, 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 29bc09d321f26..bbcb29e253981 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 @@ -124,6 +124,44 @@ describe('TextBasedLanguagesEditor', () => { ).toStrictEqual('@timestamp found'); }); + it('should render the query history action if isLoading is defined', async () => { + const newProps = { + ...props, + isCodeEditorExpanded: true, + isLoading: true, + }; + const component = mount(renderTextBasedLanguagesEditorComponent({ ...newProps })); + expect( + component.find('[data-test-subj="TextBasedLangEditor-toggle-query-history-button-container"]') + .length + ).not.toBe(0); + }); + + it('should not render the query history action if isLoading is undefined', async () => { + const newProps = { + ...props, + isCodeEditorExpanded: true, + }; + const component = mount(renderTextBasedLanguagesEditorComponent({ ...newProps })); + expect( + component.find('[data-test-subj="TextBasedLangEditor-toggle-query-history-button-container"]') + .length + ).toBe(0); + }); + + it('should not render the query history action if hideQueryHistory is set to true', async () => { + const newProps = { + ...props, + isCodeEditorExpanded: true, + hideQueryHistory: true, + }; + const component = mount(renderTextBasedLanguagesEditorComponent({ ...newProps })); + expect( + component.find('[data-test-subj="TextBasedLangEditor-toggle-query-history-button-container"]') + .length + ).toBe(0); + }); + it('should render the errors badge for the inline mode by default if errors are provided', 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 3e848661edeac..96e6e879da6a0 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 @@ -21,6 +21,7 @@ import type { AggregateQuery } from '@kbn/es-query'; import { getAggregateQueryMode, getLanguageDisplayName } from '@kbn/es-query'; import type { DataViewsPublicPluginStart } from '@kbn/data-views-plugin/public'; import type { ExpressionsStart } from '@kbn/expressions-plugin/public'; +import type { CoreStart } from '@kbn/core/public'; import type { IndexManagementPluginSetup } from '@kbn/index-management-plugin/public'; import { TooltipWrapper } from '@kbn/visualization-utils'; import { @@ -63,6 +64,7 @@ import { EditorFooter } from './editor_footer'; import { ResizableButton } from './resizable_button'; import { fetchFieldsFromESQL } from './fetch_fields_from_esql'; import { ErrorsWarningsCompactViewPopover } from './errors_warnings_popover'; +import { addQueriesToCache, updateCachedQueries } from './history_local_storage'; import './overwrite.scss'; @@ -89,7 +91,9 @@ export interface TextBasedLanguagesEditorProps { errors?: Error[]; /** Warning string as it comes from ES */ warning?: string; - /** Disables the editor and displays loading icon in run button */ + /** Disables the editor and displays loading icon in run button + * It is also used for hiding the history component if it is not defined + */ isLoading?: boolean; /** Disables the editor */ isDisabled?: boolean; @@ -115,9 +119,13 @@ export interface TextBasedLanguagesEditorProps { /** hide @timestamp info **/ hideTimeFilterInfo?: boolean; + + /** hide query history **/ + hideQueryHistory?: boolean; } interface TextBasedEditorDeps { + core: CoreStart; dataViews: DataViewsPublicPluginStart; expressions: ExpressionsStart; indexManagementApiService?: IndexManagementPluginSetup['apiService']; @@ -170,13 +178,16 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ dataTestSubj, allowQueryCancellation, hideTimeFilterInfo, + hideQueryHistory, }: TextBasedLanguagesEditorProps) { const { euiTheme } = useEuiTheme(); const language = getAggregateQueryMode(query); const queryString: string = query[language] ?? ''; const kibana = useKibana(); - const { dataViews, expressions, indexManagementApiService, application, docLinks } = + const { dataViews, expressions, indexManagementApiService, application, docLinks, core } = kibana.services; + const timeZone = core?.uiSettings?.get('dateFormat:tz'); + const [code, setCode] = useState(queryString ?? ''); const [codeOneLiner, setCodeOneLiner] = useState(''); // To make server side errors less "sticky", register the state of the code when submitting @@ -185,11 +196,14 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ isCodeEditorExpanded ? EDITOR_INITIAL_HEIGHT_EXPANDED : EDITOR_INITIAL_HEIGHT ); const [isSpaceReduced, setIsSpaceReduced] = useState(false); + const [editorWidth, setEditorWidth] = useState(0); + const [isHistoryOpen, setIsHistoryOpen] = useState(false); const [showLineNumbers, setShowLineNumbers] = useState(isCodeEditorExpanded); const [isCompactFocused, setIsCompactFocused] = useState(isCodeEditorExpanded); const [isCodeEditorExpandedFocused, setIsCodeEditorExpandedFocused] = useState(false); const [isQueryLoading, setIsQueryLoading] = useState(true); const [abortController, setAbortController] = useState(new AbortController()); + // contains both client side validation and server messages const [editorMessages, setEditorMessages] = useState<{ errors: MonacoMessage[]; warnings: MonacoMessage[]; @@ -197,6 +211,28 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ errors: serverErrors ? parseErrors(serverErrors, code) : [], warnings: serverWarning ? parseWarning(serverWarning) : [], }); + // contains only client side validation messages + const [clientParserMessages, setClientParserMessages] = useState<{ + errors: MonacoMessage[]; + warnings: MonacoMessage[]; + }>({ + errors: [], + warnings: [], + }); + const [refetchHistoryItems, setRefetchHistoryItems] = useState(false); + + // as the duration on the history component is being calculated from + // the isLoading property, if this property is not defined we want + // to hide the history component + const hideHistoryComponent = hideQueryHistory || isLoading == null; + + const onQueryUpdate = useCallback( + (value: string) => { + setCode(value); + onTextLangQueryChange({ [language]: value } as AggregateQuery); + }, + [language, onTextLangQueryChange] + ); const onQuerySubmit = useCallback(() => { if (isQueryLoading && allowQueryCancellation) { @@ -224,6 +260,10 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ const codeRef = useRef(code); + const toggleHistory = useCallback((status: boolean) => { + setIsHistoryOpen(status); + }, []); + // Registers a command to redirect users to the index management page // to create a new policy. The command is called by the buildNoPoliciesAvailableDefinition monaco.editor.registerCommand('esql.policies.create', (...args) => { @@ -242,7 +282,8 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ Boolean(editorMessages.warnings.length), isCodeEditorExpandedFocused, Boolean(documentationSections), - Boolean(editorIsInline) + Boolean(editorIsInline), + isHistoryOpen ); const isDark = isDarkMode; const editorModel = useRef(); @@ -394,15 +435,52 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ ] ); + const parseMessages = useCallback(async () => { + if (editorModel.current) { + return await ESQLLang.validate(editorModel.current, queryString, esqlCallbacks); + } + return { + errors: [], + warnings: [], + }; + }, [esqlCallbacks, queryString]); + + useEffect(() => { + const validateQuery = async () => { + if (editorModel?.current) { + const parserMessages = await parseMessages(); + setClientParserMessages({ + errors: parserMessages?.errors ?? [], + warnings: parserMessages?.warnings ?? [], + }); + } + }; + if (isQueryLoading || isLoading) { + addQueriesToCache({ + queryString, + timeZone, + }); + validateQuery(); + setRefetchHistoryItems(false); + } else { + updateCachedQueries({ + queryString, + status: clientParserMessages.errors?.length + ? 'error' + : clientParserMessages.warnings.length + ? 'warning' + : 'success', + }); + + setRefetchHistoryItems(true); + } + }, [clientParserMessages, isLoading, isQueryLoading, parseMessages, queryString, timeZone]); + const queryValidation = useCallback( async ({ active }: { active: boolean }) => { if (!editorModel.current || language !== 'esql' || editorModel.current.isDisposed()) return; monaco.editor.setModelMarkers(editorModel.current, 'Unified search', []); - const { warnings: parserWarnings, errors: parserErrors } = await ESQLLang.validate( - editorModel.current, - code, - esqlCallbacks - ); + const { warnings: parserWarnings, errors: parserErrors } = await parseMessages(); const markers = []; if (parserErrors.length) { @@ -414,11 +492,11 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ return; } }, - [esqlCallbacks, language, code] + [language, parseMessages] ); useDebounceWithOptions( - () => { + async () => { if (!editorModel.current) return; const subscription = { active: true }; if (code === codeWhenSubmitted) { @@ -434,6 +512,11 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ 'Unified search', parsedErrors.length ? parsedErrors : [] ); + const parserMessages = await parseMessages(); + setClientParserMessages({ + errors: parserMessages?.errors ?? [], + warnings: parserMessages?.warnings ?? [], + }); return; } } else { @@ -538,19 +621,12 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ const onResize = ({ width }: { width: number }) => { setIsSpaceReduced(Boolean(editorIsInline && width < BREAKPOINT_WIDTH)); calculateVisibleCode(width); + setEditorWidth(width); if (editor1.current) { editor1.current.layout({ width, height: editorHeight }); } }; - const onQueryUpdate = useCallback( - (value: string) => { - setCode(value); - onTextLangQueryChange({ [language]: value } as AggregateQuery); - }, - [language, onTextLangQueryChange] - ); - useEffect(() => { async function getDocumentation() { const sections = await getDocumentationSections(language); @@ -871,14 +947,14 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ {isCompactFocused && !isCodeEditorExpanded && ( { - if (editorMessages.errors.some((e) => e.source !== 'client')) { - onQuerySubmit(); - } - }} + runQuery={onQuerySubmit} + updateQuery={onQueryUpdate} detectTimestamp={detectTimestamp} editorIsInline={editorIsInline} disableSubmitAction={disableSubmitAction} @@ -887,6 +963,11 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ isLoading={isQueryLoading} allowQueryCancellation={allowQueryCancellation} hideTimeFilterInfo={hideTimeFilterInfo} + isHistoryOpen={isHistoryOpen} + setIsHistoryOpen={toggleHistory} + containerWidth={editorWidth} + hideQueryHistory={hideHistoryComponent} + refetchHistoryItems={refetchHistoryItems} /> )} @@ -971,11 +1052,13 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ {isCodeEditorExpanded && ( { - onQuerySubmit(); + styles={{ + bottomContainer: styles.bottomContainer, + historyContainer: styles.historyContainer, }} + onErrorClick={onErrorClick} + runQuery={onQuerySubmit} + updateQuery={onQueryUpdate} detectTimestamp={detectTimestamp} hideRunQueryText={hideRunQueryText} editorIsInline={editorIsInline} @@ -985,6 +1068,11 @@ export const TextBasedLanguagesEditor = memo(function TextBasedLanguagesEditor({ allowQueryCancellation={allowQueryCancellation} hideTimeFilterInfo={hideTimeFilterInfo} {...editorMessages} + isHistoryOpen={isHistoryOpen} + setIsHistoryOpen={toggleHistory} + containerWidth={editorWidth} + hideQueryHistory={hideHistoryComponent} + refetchHistoryItems={refetchHistoryItems} /> )} {isCodeEditorExpanded && ( diff --git a/packages/kbn-visualization-ui-components/components/chart_switch_trigger.tsx b/packages/kbn-visualization-ui-components/components/chart_switch_trigger.tsx index 183d1ee48574f..bdd6d03fae28f 100644 --- a/packages/kbn-visualization-ui-components/components/chart_switch_trigger.tsx +++ b/packages/kbn-visualization-ui-components/components/chart_switch_trigger.tsx @@ -17,13 +17,11 @@ export const ChartSwitchTrigger = function ({ icon, onClick, dataTestSubj, - size = 's', }: { label: string; icon?: IconType; onClick: () => void; dataTestSubj?: string; - size?: 's' | 'm'; }) { return ( - ) : ( - - ) - } + label={} /> ); }; -const ChartSwitchLabel = function ({ label, icon }: { label: string; icon?: IconType }) { - return ( - <> - {icon && } - {label} - - ); -}; - const LayerChartSwitchLabel = function ({ label, icon }: { label: string; icon?: IconType }) { return ( diff --git a/packages/presentation/presentation_containers/index.ts b/packages/presentation/presentation_containers/index.ts index 7d5c9c435c98f..5305e2438f072 100644 --- a/packages/presentation/presentation_containers/index.ts +++ b/packages/presentation/presentation_containers/index.ts @@ -9,7 +9,6 @@ export { apiCanDuplicatePanels, apiCanExpandPanels, - useExpandedPanelId, type CanDuplicatePanels, type CanExpandPanels, } from './interfaces/panel_management'; diff --git a/packages/presentation/presentation_containers/interfaces/panel_management.ts b/packages/presentation/presentation_containers/interfaces/panel_management.ts index 9408b6b756694..1d18f43bc4442 100644 --- a/packages/presentation/presentation_containers/interfaces/panel_management.ts +++ b/packages/presentation/presentation_containers/interfaces/panel_management.ts @@ -6,10 +6,7 @@ * Side Public License, v 1. */ -import { - PublishingSubject, - useStateFromPublishingSubject, -} from '@kbn/presentation-publishing/publishing_subject'; +import { PublishingSubject } from '@kbn/presentation-publishing/publishing_subject'; export interface CanDuplicatePanels { duplicatePanel: (panelId: string) => void; @@ -29,9 +26,3 @@ export interface CanExpandPanels { export const apiCanExpandPanels = (unknownApi: unknown | null): unknownApi is CanExpandPanels => { return Boolean((unknownApi as CanExpandPanels)?.expandPanel !== undefined); }; - -/** - * Gets this API's expanded panel state as a reactive variable which will cause re-renders on change. - */ -export const useExpandedPanelId = (api: Partial | undefined) => - useStateFromPublishingSubject(apiCanExpandPanels(api) ? api.expandedPanelId : undefined); diff --git a/packages/presentation/presentation_library/README.md b/packages/presentation/presentation_library/README.md deleted file mode 100644 index 9201a647600fc..0000000000000 --- a/packages/presentation/presentation_library/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# @kbn/presentation-library - -Contains interfaces and type guards to be used to mediate the relationship between panels / charts, and a content library. diff --git a/packages/presentation/presentation_library/interfaces/can_unlink_from_library.ts b/packages/presentation/presentation_library/interfaces/can_unlink_from_library.ts deleted file mode 100644 index e2ae44712cdc7..0000000000000 --- a/packages/presentation/presentation_library/interfaces/can_unlink_from_library.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -export interface CanUnlinkFromLibrary { - canUnlinkFromLibrary: () => Promise; - unlinkFromLibrary: () => Promise; -} - -export const apiCanUnlinkFromLibrary = (api: unknown): api is CanUnlinkFromLibrary => - typeof (api as CanUnlinkFromLibrary).canUnlinkFromLibrary === 'function' && - typeof (api as CanUnlinkFromLibrary).unlinkFromLibrary === 'function'; diff --git a/packages/presentation/presentation_library/kibana.jsonc b/packages/presentation/presentation_library/kibana.jsonc deleted file mode 100644 index a34f520c0bb00..0000000000000 --- a/packages/presentation/presentation_library/kibana.jsonc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "shared-common", - "id": "@kbn/presentation-library", - "owner": "@elastic/kibana-presentation" -} diff --git a/packages/presentation/presentation_library/package.json b/packages/presentation/presentation_library/package.json deleted file mode 100644 index 4c9a053aed2bb..0000000000000 --- a/packages/presentation/presentation_library/package.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "@kbn/presentation-library", - "private": true, - "version": "1.0.0", - "license": "SSPL-1.0 OR Elastic License 2.0" -} \ No newline at end of file diff --git a/packages/presentation/presentation_library/tsconfig.json b/packages/presentation/presentation_library/tsconfig.json deleted file mode 100644 index da5e9144757c4..0000000000000 --- a/packages/presentation/presentation_library/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "target/types", - "types": ["jest", "node", "react"] - }, - "include": ["**/*.ts", "**/*.tsx"], - "exclude": ["target/**/*"], - "kbn_references": [] -} diff --git a/packages/presentation/presentation_publishing/index.ts b/packages/presentation/presentation_publishing/index.ts index 08b76826b727e..2bcae2da53a1c 100644 --- a/packages/presentation/presentation_publishing/index.ts +++ b/packages/presentation/presentation_publishing/index.ts @@ -44,22 +44,15 @@ export { export { apiHasUniqueId, type HasUniqueId } from './interfaces/has_uuid'; export { apiPublishesBlockingError, - useBlockingError, type PublishesBlockingError, } from './interfaces/publishes_blocking_error'; export { apiPublishesDataLoading, - useDataLoading, type PublishesDataLoading, } from './interfaces/publishes_data_loading'; -export { - apiPublishesDataViews, - useDataViews, - type PublishesDataViews, -} from './interfaces/publishes_data_views'; +export { apiPublishesDataViews, type PublishesDataViews } from './interfaces/publishes_data_views'; export { apiPublishesDisabledActionIds, - useDisabledActionIds, type PublishesDisabledActionIds, } from './interfaces/publishes_disabled_action_ids'; export { @@ -80,18 +73,15 @@ export { export { initializeTimeRange } from './interfaces/unified_search/initialize_time_range'; export { apiPublishesSavedObjectId, - useSavedObjectId, type PublishesSavedObjectId, } from './interfaces/publishes_saved_object_id'; export { apiPublishesUnsavedChanges, - useUnsavedChanges, type PublishesUnsavedChanges, } from './interfaces/publishes_unsaved_changes'; export { apiPublishesViewMode, apiPublishesWritableViewMode, - useViewMode, type PublishesViewMode, type PublishesWritableViewMode, type ViewMode, @@ -99,8 +89,6 @@ export { export { apiPublishesPanelDescription, apiPublishesWritablePanelDescription, - useDefaultPanelDescription, - usePanelDescription, type PublishesPanelDescription, type PublishesWritablePanelDescription, } from './interfaces/titles/publishes_panel_description'; @@ -112,6 +100,12 @@ export { type PublishesWritablePanelTitle, } from './interfaces/titles/publishes_panel_title'; export { initializeTitles, type SerializedTitles } from './interfaces/titles/titles_api'; +export { + type HasLibraryTransforms, + apiHasLibraryTransforms, + type HasLegacyLibraryTransforms, + apiHasLegacyLibraryTransforms, +} from './interfaces/has_library_transforms'; export { useBatchedPublishingSubjects, usePublishingSubject, diff --git a/packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts b/packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts new file mode 100644 index 0000000000000..a7bcff849b572 --- /dev/null +++ b/packages/presentation/presentation_publishing/interfaces/has_library_transforms.ts @@ -0,0 +1,88 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export interface HasLibraryTransforms { + // + // Add to library methods + // + /** + * + * @returns {Promise} + * True when embeddable is by-value and can be converted to by-reference + */ + canLinkToLibrary: () => Promise; + /** + * Saves embeddable to library + * + * @returns {Promise<{ state: StateT; savedObjectId: string }>} + * state: by-reference embeddable state replacing by-value embeddable state + * savedObjectId: Saved object id for new saved object added to library + */ + saveStateToSavedObject: (title: string) => Promise<{ state: StateT; savedObjectId: string }>; + checkForDuplicateTitle: ( + newTitle: string, + isTitleDuplicateConfirmed: boolean, + onTitleDuplicate: () => void + ) => Promise; + + // + // Unlink from library methods + // + /** + * + * @returns {Promise} + * True when embeddable is by-reference and can be converted to by-value + */ + canUnlinkFromLibrary: () => Promise; + /** + * + * @returns {StateT} + * by-value embeddable state replacing by-reference embeddable state + */ + savedObjectAttributesToState: () => StateT; +} + +export const apiHasLibraryTransforms = ( + unknownApi: null | unknown +): unknownApi is HasLibraryTransforms => { + return Boolean( + unknownApi && + typeof (unknownApi as HasLibraryTransforms).canLinkToLibrary === 'function' && + typeof (unknownApi as HasLibraryTransforms).canUnlinkFromLibrary === 'function' && + typeof (unknownApi as HasLibraryTransforms).saveStateToSavedObject === 'function' && + typeof (unknownApi as HasLibraryTransforms).savedObjectAttributesToState === + 'function' && + typeof (unknownApi as HasLibraryTransforms).checkForDuplicateTitle === 'function' + ); +}; + +/** + * @deprecated use HasLibraryTransforms instead + */ +export type HasLegacyLibraryTransforms = Pick< + HasLibraryTransforms, + 'canLinkToLibrary' | 'canUnlinkFromLibrary' +> & { + linkToLibrary: () => Promise; + unlinkFromLibrary: () => Promise; +}; + +/** + * @deprecated use apiHasLibraryTransforms instead + */ +export const apiHasLegacyLibraryTransforms = ( + unknownApi: null | unknown +): unknownApi is HasLegacyLibraryTransforms => { + return Boolean( + unknownApi && + typeof (unknownApi as HasLegacyLibraryTransforms).canLinkToLibrary === 'function' && + typeof (unknownApi as HasLegacyLibraryTransforms).canUnlinkFromLibrary === 'function' && + typeof (unknownApi as HasLegacyLibraryTransforms).linkToLibrary === 'function' && + typeof (unknownApi as HasLegacyLibraryTransforms).unlinkFromLibrary === 'function' + ); +}; diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_blocking_error.ts b/packages/presentation/presentation_publishing/interfaces/publishes_blocking_error.ts index fac7d8dda9568..68bea175bce8c 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_blocking_error.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_blocking_error.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { PublishingSubject, useStateFromPublishingSubject } from '../publishing_subject'; +import { PublishingSubject } from '../publishing_subject'; export interface PublishesBlockingError { blockingError: PublishingSubject; @@ -17,9 +17,3 @@ export const apiPublishesBlockingError = ( ): unknownApi is PublishesBlockingError => { return Boolean(unknownApi && (unknownApi as PublishesBlockingError)?.blockingError !== undefined); }; - -/** - * Gets this API's fatal error as a reactive variable which will cause re-renders on change. - */ -export const useBlockingError = (api: Partial | undefined) => - useStateFromPublishingSubject(api?.blockingError); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_data_loading.ts b/packages/presentation/presentation_publishing/interfaces/publishes_data_loading.ts index a7cedcac6d34d..439d05de0fd41 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_data_loading.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_data_loading.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { PublishingSubject, useStateFromPublishingSubject } from '../publishing_subject'; +import { PublishingSubject } from '../publishing_subject'; export interface PublishesDataLoading { dataLoading: PublishingSubject; @@ -17,9 +17,3 @@ export const apiPublishesDataLoading = ( ): unknownApi is PublishesDataLoading => { return Boolean(unknownApi && (unknownApi as PublishesDataLoading)?.dataLoading !== undefined); }; - -/** - * Gets this API's data loading state as a reactive variable which will cause re-renders on change. - */ -export const useDataLoading = (api: Partial | undefined) => - useStateFromPublishingSubject(apiPublishesDataLoading(api) ? api.dataLoading : undefined); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_data_views.ts b/packages/presentation/presentation_publishing/interfaces/publishes_data_views.ts index 3daf0412d93d3..9a8dce48bac4b 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_data_views.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_data_views.ts @@ -7,7 +7,7 @@ */ import { DataView } from '@kbn/data-views-plugin/common'; -import { PublishingSubject, useStateFromPublishingSubject } from '../publishing_subject'; +import { PublishingSubject } from '../publishing_subject'; export interface PublishesDataViews { dataViews: PublishingSubject; @@ -18,9 +18,3 @@ export const apiPublishesDataViews = ( ): unknownApi is PublishesDataViews => { return Boolean(unknownApi && (unknownApi as PublishesDataViews)?.dataViews !== undefined); }; - -/** - * Gets this API's data views as a reactive variable which will cause re-renders on change. - */ -export const useDataViews = (api: Partial | undefined) => - useStateFromPublishingSubject(apiPublishesDataViews(api) ? api.dataViews : undefined); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_disabled_action_ids.ts b/packages/presentation/presentation_publishing/interfaces/publishes_disabled_action_ids.ts index 05a1ac6ac143c..5872b8a0dd0bf 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_disabled_action_ids.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_disabled_action_ids.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { PublishingSubject, useStateFromPublishingSubject } from '../publishing_subject'; +import { PublishingSubject } from '../publishing_subject'; export interface PublishesDisabledActionIds { disabledActionIds: PublishingSubject; @@ -24,9 +24,3 @@ export const apiPublishesDisabledActionIds = ( unknownApi && (unknownApi as PublishesDisabledActionIds)?.disabledActionIds !== undefined ); }; - -/** - * Gets this API's disabled action IDs as a reactive variable which will cause re-renders on change. - */ -export const useDisabledActionIds = (api: Partial | undefined) => - useStateFromPublishingSubject(api?.disabledActionIds); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_saved_object_id.ts b/packages/presentation/presentation_publishing/interfaces/publishes_saved_object_id.ts index 9bf527ca8a8e9..72019226ee90f 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_saved_object_id.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_saved_object_id.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { PublishingSubject, useStateFromPublishingSubject } from '../publishing_subject'; +import { PublishingSubject } from '../publishing_subject'; /** * This API publishes a saved object id which can be used to determine which saved object this API is linked to. @@ -23,9 +23,3 @@ export const apiPublishesSavedObjectId = ( ): unknownApi is PublishesSavedObjectId => { return Boolean(unknownApi && (unknownApi as PublishesSavedObjectId)?.savedObjectId !== undefined); }; - -/** - * A hook that gets this API's saved object ID as a reactive variable which will cause re-renders on change. - */ -export const useSavedObjectId = (api: PublishesSavedObjectId | undefined) => - useStateFromPublishingSubject(api?.savedObjectId); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts b/packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts index 9c43a82ff9038..4ac551620c376 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_unsaved_changes.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { PublishingSubject, useStateFromPublishingSubject } from '../publishing_subject'; +import { PublishingSubject } from '../publishing_subject'; export interface PublishesUnsavedChanges { unsavedChanges: PublishingSubject; @@ -20,9 +20,3 @@ export const apiPublishesUnsavedChanges = (api: unknown): api is PublishesUnsave (api as PublishesUnsavedChanges).resetUnsavedChanges ); }; - -/** - * A hook that gets this API's unsaved changes as a reactive variable which will cause re-renders on change. - */ -export const useUnsavedChanges = (api: PublishesUnsavedChanges | undefined) => - useStateFromPublishingSubject(api?.unsavedChanges); diff --git a/packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts b/packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts index 80633f90fc00e..57772a6b40f6a 100644 --- a/packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts +++ b/packages/presentation/presentation_publishing/interfaces/publishes_view_mode.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { PublishingSubject, useStateFromPublishingSubject } from '../publishing_subject'; +import { PublishingSubject } from '../publishing_subject'; export type ViewMode = 'view' | 'edit' | 'print' | 'preview'; @@ -44,12 +44,3 @@ export const apiPublishesWritableViewMode = ( typeof (unknownApi as PublishesWritableViewMode).setViewMode === 'function' ); }; - -/** - * A hook that gets this API's view mode as a reactive variable which will cause re-renders on change. - */ -export const useViewMode = < - ApiType extends Partial = Partial ->( - api: ApiType | undefined -) => useStateFromPublishingSubject(api?.viewMode); diff --git a/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts b/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts index b5dfd530d4d5e..7cf0f06a8a9fd 100644 --- a/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts +++ b/packages/presentation/presentation_publishing/interfaces/titles/publishes_panel_description.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { PublishingSubject, useStateFromPublishingSubject } from '../../publishing_subject'; +import { PublishingSubject } from '../../publishing_subject'; export interface PublishesPanelDescription { panelDescription: PublishingSubject; @@ -34,15 +34,3 @@ export const apiPublishesWritablePanelDescription = ( typeof (unknownApi as PublishesWritablePanelDescription).setPanelDescription === 'function' ); }; - -/** - * A hook that gets this API's panel description as a reactive variable which will cause re-renders on change. - */ -export const usePanelDescription = (api: Partial | undefined) => - useStateFromPublishingSubject(api?.panelDescription); - -/** - * A hook that gets this API's default panel description as a reactive variable which will cause re-renders on change. - */ -export const useDefaultPanelDescription = (api: Partial | undefined) => - useStateFromPublishingSubject(api?.defaultPanelDescription); diff --git a/packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts b/packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts index 2c3cbe32be4a9..c3efa5c06319c 100644 --- a/packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts +++ b/packages/presentation/presentation_publishing/publishing_subject/publishing_batcher.ts @@ -8,7 +8,7 @@ import { useEffect, useMemo, useRef, useState } from 'react'; import { combineLatest } from 'rxjs'; -import { debounceTime } from 'rxjs/operators'; +import { debounceTime, skip } from 'rxjs/operators'; import { AnyPublishingSubject, PublishingSubject, UnwrapPublishingSubjectTuple } from './types'; const hasSubjectsArrayChanged = ( @@ -27,10 +27,13 @@ const hasSubjectsArrayChanged = ( /** * Batches the latest values of multiple publishing subjects into a single object. Use this to avoid unnecessary re-renders. * You should avoid using this hook with subjects that your component pushes values to on user interaction, as it can cause a slight delay. + * @param subjects Publishing subjects array. + * When 'subjects' is expected to change, 'subjects' must be part of component react state. */ export const useBatchedPublishingSubjects = ( ...subjects: [...SubjectsType] ): UnwrapPublishingSubjectTuple => { + const isFirstRender = useRef(true); /** * memoize and deep diff subjects to avoid rebuilding the subscription when the subjects are the same. */ @@ -46,17 +49,20 @@ export const useBatchedPublishingSubjects = unwrapPublishingSubjectArray(subjectsToUse), - [subjectsToUse] - ); - const [latestPublishedValues, setLatestPublishedValues] = - useState>(initialSubjectValues); + const [latestPublishedValues, setLatestPublishedValues] = useState< + UnwrapPublishingSubjectTuple + >(() => unwrapPublishingSubjectArray(subjectsToUse)); /** * Subscribe to all subjects and update the latest values when any of them change. */ useEffect(() => { + if (!isFirstRender.current) { + setLatestPublishedValues(unwrapPublishingSubjectArray(subjectsToUse)); + } else { + isFirstRender.current = false; + } + const definedSubjects: Array> = []; const definedSubjectIndices: number[] = []; @@ -67,7 +73,11 @@ export const useBatchedPublishingSubjects = { setLatestPublishedValues((lastPublishedValues) => { const newLatestPublishedValues: UnwrapPublishingSubjectTuple = [ diff --git a/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.test.tsx b/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.test.tsx index 7e84d2593d392..e58ca06d54f9b 100644 --- a/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.test.tsx +++ b/packages/presentation/presentation_publishing/publishing_subject/publishing_subject.test.tsx @@ -6,150 +6,227 @@ * Side Public License, v 1. */ -import React from 'react'; +import React, { useState } from 'react'; import { BehaviorSubject } from 'rxjs'; import { render, screen, waitFor } from '@testing-library/react'; import '@testing-library/jest-dom'; import userEvent from '@testing-library/user-event'; import { useBatchedPublishingSubjects } from './publishing_batcher'; import { useStateFromPublishingSubject } from './publishing_subject'; +import { PublishingSubject } from './types'; describe('useBatchedPublishingSubjects', () => { - let subject1: BehaviorSubject; - let subject2: BehaviorSubject; - let subject3: BehaviorSubject; - let subject4: BehaviorSubject; - let subject5: BehaviorSubject; - let subject6: BehaviorSubject; - beforeEach(() => { - subject1 = new BehaviorSubject(0); - subject2 = new BehaviorSubject(0); - subject3 = new BehaviorSubject(0); - subject4 = new BehaviorSubject(0); - subject5 = new BehaviorSubject(0); - subject6 = new BehaviorSubject(0); - }); + describe('render', () => { + let subject1: BehaviorSubject; + let subject2: BehaviorSubject; + let subject3: BehaviorSubject; + let subject4: BehaviorSubject; + let subject5: BehaviorSubject; + let subject6: BehaviorSubject; + beforeEach(() => { + subject1 = new BehaviorSubject(0); + subject2 = new BehaviorSubject(0); + subject3 = new BehaviorSubject(0); + subject4 = new BehaviorSubject(0); + subject5 = new BehaviorSubject(0); + subject6 = new BehaviorSubject(0); + }); - function incrementAll() { - subject1.next(subject1.getValue() + 1); - subject2.next(subject2.getValue() + 1); - subject3.next(subject3.getValue() + 1); - subject4.next(subject4.getValue() + 1); - subject5.next(subject5.getValue() + 1); - subject6.next(subject6.getValue() + 1); - } + function incrementAll() { + subject1.next(subject1.getValue() + 1); + subject2.next(subject2.getValue() + 1); + subject3.next(subject3.getValue() + 1); + subject4.next(subject4.getValue() + 1); + subject5.next(subject5.getValue() + 1); + subject6.next(subject6.getValue() + 1); + } - test('should render once when all state changes are in click handler (react batch)', async () => { - let renderCount = 0; - function Component() { - const value1 = useStateFromPublishingSubject(subject1); - const value2 = useStateFromPublishingSubject(subject2); - const value3 = useStateFromPublishingSubject(subject3); - const value4 = useStateFromPublishingSubject(subject4); - const value5 = useStateFromPublishingSubject(subject5); - const value6 = useStateFromPublishingSubject(subject6); + test('should render once when all state changes are in click handler (react batch)', async () => { + let renderCount = 0; + function Component() { + const value1 = useStateFromPublishingSubject(subject1); + const value2 = useStateFromPublishingSubject(subject2); + const value3 = useStateFromPublishingSubject(subject3); + const value4 = useStateFromPublishingSubject(subject4); + const value5 = useStateFromPublishingSubject(subject5); + const value6 = useStateFromPublishingSubject(subject6); - renderCount++; - return ( - <> -