diff --git a/.buildkite/ftr_security_serverless_configs.yml b/.buildkite/ftr_security_serverless_configs.yml index 4c3b037ce9f8a..9f54a402a8bbf 100644 --- a/.buildkite/ftr_security_serverless_configs.yml +++ b/.buildkite/ftr_security_serverless_configs.yml @@ -35,6 +35,7 @@ enabled: - x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.basic.ts - x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.essentials.ts - x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless.ts + - x-pack/test_serverless/functional/test_suites/security/config.cloud_security_posture.agentless_api.ts - x-pack/test_serverless/functional/test_suites/security/config.saved_objects_management.ts - x-pack/test_serverless/functional/test_suites/security/config.context_awareness.ts - x-pack/test_serverless/functional/test_suites/security/common_configs/config.group1.ts diff --git a/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml b/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml index b9ff060e706e7..72af06600ada7 100644 --- a/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml +++ b/.buildkite/pipelines/security_solution_quality_gate/mki_periodic/mki_periodic_defend_workflows.yml @@ -2,7 +2,7 @@ steps: - group: "Cypress MKI - Defend Workflows" key: cypress_test_defend_workflows steps: - - label: "Running cypress:dw:qa:serverless:run" + - label: "Cypress - DW - Running cypress:dw:qa:serverless:run" command: .buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows.sh cypress:dw:qa:serverless:run key: test_defend_workflows agents: @@ -14,7 +14,7 @@ steps: localSsdInterface: nvme machineType: n2-standard-4 timeout_in_minutes: 300 - parallelism: 6 + parallelism: 5 retry: automatic: - exit_status: "*" @@ -91,7 +91,7 @@ steps: # - exit_status: "1" # limit: 1 - - label: "Running edr_workflows:policy_response:qa:serverless" + - label: "API - DW - Running edr_workflows:policy_response:qa:serverless" command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh edr_workflows:policy_response:qa:serverless key: edr_workflows:policy_response:qa:serverless agents: @@ -108,7 +108,7 @@ steps: - exit_status: "1" limit: 1 - - label: "Running edr_workflows:resolver:qa:serverless" + - label: "API - DW - Running edr_workflows:resolver:qa:serverless" command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh edr_workflows:resolver:qa:serverless key: edr_workflows:resolver:qa:serverless agents: @@ -125,7 +125,7 @@ steps: - exit_status: "1" limit: 1 - - label: "Running edr_workflows:response_actions:qa:serverless" + - label: "API - DW - Running edr_workflows:response_actions:qa:serverless" command: .buildkite/scripts/pipelines/security_solution_quality_gate/api_integration/api-integration-tests.sh edr_workflows:response_actions:qa:serverless key: edr_workflows:response_actions:qa:serverless agents: @@ -141,3 +141,24 @@ steps: automatic: - exit_status: "1" limit: 1 + + - group: "Osquery MKI - Defend Workflows" + key: cypress_test_osquery_defend_workflows + steps: + - label: "Osquery - Cypress - DW - Running cypress:qa:serverless:run" + command: .buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh cypress:qa:serverless:run + key: test_osquery_defend_workflows + agents: + image: family/kibana-ubuntu-2004 + imageProject: elastic-images-prod + provider: gcp + enableNestedVirtualization: true + localSsds: 1 + localSsdInterface: nvme + machineType: n2-standard-4 + timeout_in_minutes: 300 + parallelism: 3 + retry: + automatic: + - exit_status: "*" + limit: 1 diff --git a/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh new file mode 100755 index 0000000000000..5dd9ef114b48d --- /dev/null +++ b/.buildkite/scripts/pipelines/security_solution_quality_gate/edr_workflows/mki_security_solution_defend_workflows_osquery.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +set -euo pipefail + +if [ -z "$1" ] + then + echo "No target script from the package.json file, is supplied" + exit 1 +fi + + +source .buildkite/scripts/common/util.sh +.buildkite/scripts/bootstrap.sh + +export JOB=kibana-defend-workflows-osquery-serverless-cypress + +buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" "true" + +source .buildkite/scripts/pipelines/security_solution_quality_gate/prepare_vault_entries.sh + +cd x-pack/plugins/osquery +set +e + +export BK_ANALYTICS_API_KEY=$(vault_get security-solution-quality-gate serverless-cypress-defend-workflows) + +echo "--- Running the tests for target $1" +BK_ANALYTICS_API_KEY=$BK_ANALYTICS_API_KEY yarn $1; status=$?; yarn junit:merge || :; exit $status diff --git a/.github/workflows/fix-version-gaps.yml b/.github/workflows/fix-version-gaps.yml deleted file mode 100644 index d3eb1be40f6d2..0000000000000 --- a/.github/workflows/fix-version-gaps.yml +++ /dev/null @@ -1,42 +0,0 @@ -on: - pull_request: - branches: - - main - types: - - closed - -jobs: - gaps: - name: Fix Version Label Gaps - # This fix also runs as part of the backport action (because backport depends on the labels) - # So we only need to trigger it for merged PRs that also won't be auto-backported - if: | - github.event.pull_request.merged == true - && !contains(github.event.pull_request.labels.*.name, 'auto-backport') - && !( - contains(github.event.pull_request.labels.*.name, 'backport:prev-minor') - || contains(github.event.pull_request.labels.*.name, 'backport:prev-major') - || contains(github.event.pull_request.labels.*.name, 'backport:current-major') - || contains(github.event.pull_request.labels.*.name, 'backport:all-open') - || contains(github.event.pull_request.labels.*.name, 'backport:version') - ) - && !( - (github.event.action == 'labeled' && github.event.label.name == 'auto-backport') - || (github.event.action == 'closed') - ) - runs-on: ubuntu-latest - steps: - - name: Checkout Actions - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - with: - repository: 'elastic/kibana-github-actions' - ref: main - path: ./actions - - - name: Install Actions - run: npm ci --omit=dev --prefix ./actions - - - name: Run Fix Gaps - uses: ./actions/fix-version-gaps - with: - github_token: ${{secrets.KIBANAMACHINE_TOKEN}} diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 9d1c807453eb3..b2b30c8c113bd 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-08-19 +date: 2024-08-20 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 97bf91e1fc901..8ee2c22cb6402 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-08-19 +date: 2024-08-20 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 ae762819416c2..dd1aa2fbc1ea4 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-08-19 +date: 2024-08-20 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 2bedc87b07c22..e4cffdfcb6ea4 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-08-19 +date: 2024-08-20 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 3b4c372f8ea63..093c0a2a72a8c 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -3710,26 +3710,6 @@ "deprecated": false, "trackAdoption": false, "children": [ - { - "parentPluginId": "alerting", - "id": "def-server.RuleExecutorServices.searchSourceClient", - "type": "Object", - "tags": [], - "label": "searchSourceClient", - "description": [], - "signature": [ - { - "pluginId": "data", - "scope": "common", - "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchStartSearchSource", - "text": "ISearchStartSearchSource" - } - ], - "path": "x-pack/plugins/alerting/server/types.ts", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "alerting", "id": "def-server.RuleExecutorServices.savedObjectsClient", @@ -3930,344 +3910,66 @@ }, { "parentPluginId": "alerting", - "id": "def-server.RuleExecutorServices.dataViews", + "id": "def-server.RuleExecutorServices.ruleResultService", "type": "Object", "tags": [], - "label": "dataViews", + "label": "ruleResultService", "description": [], "signature": [ - "{ create: (spec: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - ", skipFetchFields?: boolean, displayErrors?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">; get: (id: string, displayErrors?: boolean, refreshFields?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">; delete: (indexPatternId: string) => Promise; find: (search: string, size?: number) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - "[]>; getCanSave: () => Promise; getIds: (refresh?: boolean) => Promise; getTitles: (refresh?: boolean) => Promise; findLazy: (search: string, size?: number) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewLazy", - "text": "DataViewLazy" - }, - "[]>; getIdsWithTitle: (refresh?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewListItem", - "text": "DataViewListItem" - }, - "[]>; getAllDataViewLazy: (refresh?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewLazy", - "text": "DataViewLazy" - }, - "[]>; clearCache: () => void; clearInstanceCache: (id?: string | undefined) => void; getCache: () => Promise<", - { - "pluginId": "@kbn/core-saved-objects-common", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsCommonPluginApi", - "section": "def-common.SavedObject", - "text": "SavedObject" - }, - "<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSavedObjectAttrs", - "text": "DataViewSavedObjectAttrs" - }, - ">[] | null | undefined>; getDefault: (displayErrors?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | null>; getDefaultId: () => Promise; setDefault: (id: string | null, force?: boolean) => Promise; hasUserDataView: () => Promise; getMetaFields: () => Promise; getShortDotsEnable: () => Promise; getFieldsForWildcard: (options: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - }, - ") => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]>; getFieldsForIndexPattern: (indexPattern: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - ", options?: Omit<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.GetFieldsOptions", - "text": "GetFieldsOptions" - }, - ", \"allowNoIndex\"> | undefined) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[]>; refreshFields: (dataView: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ", displayErrors?: boolean, forceRefresh?: boolean) => Promise; fieldArrayToMap: (fields: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldSpec", - "text": "FieldSpec" - }, - "[], fieldAttrs?: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.FieldAttrs", - "text": "FieldAttrs" - }, - " | undefined) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewFieldMap", - "text": "DataViewFieldMap" - }, - "; savedObjectToSpec: (savedObject: ", - { - "pluginId": "@kbn/core-saved-objects-common", - "scope": "common", - "docId": "kibKbnCoreSavedObjectsCommonPluginApi", - "section": "def-common.SavedObject", - "text": "SavedObject" - }, - "<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewAttributes", - "text": "DataViewAttributes" - }, - ">) => ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - "; getDataViewLazy: (id: string) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewLazy", - "text": "DataViewLazy" - }, - ">; getDataViewLazyFromCache: (id: string) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewLazy", - "text": "DataViewLazy" - }, - " | undefined>; createDataViewLazy: (spec: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - ") => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewLazy", - "text": "DataViewLazy" - }, - ">; createAndSaveDataViewLazy: (spec: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - ", overwrite?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewLazy", - "text": "DataViewLazy" - }, - ">; createAndSave: (spec: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewSpec", - "text": "DataViewSpec" - }, - ", overwrite?: boolean, skipFetchFields?: boolean, displayErrors?: boolean) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">; createSavedObject: (dataView: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.AbstractDataView", - "text": "AbstractDataView" - }, - ", overwrite?: boolean) => Promise; updateSavedObject: (indexPattern: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.AbstractDataView", - "text": "AbstractDataView" - }, - ", saveAttempts?: number, ignoreErrors?: boolean, displayErrors?: boolean) => Promise; defaultDataViewExists: () => Promise; getDefaultDataViewLazy: () => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewLazy", - "text": "DataViewLazy" - }, - " | null>; getDefaultDataView: (options?: { displayErrors?: boolean | undefined; refreshFields?: boolean | undefined; }) => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - " | null>; toDataView: (dataViewLazy: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewLazy", - "text": "DataViewLazy" - }, - ") => Promise<", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ">; toDataViewLazy: (dataView: ", - { - "pluginId": "dataViews", - "scope": "common", - "docId": "kibDataViewsPluginApi", - "section": "def-common.DataView", - "text": "DataView" - }, - ") => Promise<", + "PublicLastRunSetters", + " | undefined" + ], + "path": "x-pack/plugins/alerting/server/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "alerting", + "id": "def-server.RuleExecutorServices.getDataViews", + "type": "Function", + "tags": [], + "label": "getDataViews", + "description": [], + "signature": [ + "() => Promise<", { "pluginId": "dataViews", "scope": "common", "docId": "kibDataViewsPluginApi", - "section": "def-common.DataViewLazy", - "text": "DataViewLazy" + "section": "def-common.DataViewsContract", + "text": "DataViewsContract" }, - ">; }" + ">" ], "path": "x-pack/plugins/alerting/server/types.ts", "deprecated": false, - "trackAdoption": false + "trackAdoption": false, + "children": [], + "returnComment": [] }, { "parentPluginId": "alerting", - "id": "def-server.RuleExecutorServices.ruleResultService", - "type": "Object", + "id": "def-server.RuleExecutorServices.getSearchSourceClient", + "type": "Function", "tags": [], - "label": "ruleResultService", + "label": "getSearchSourceClient", "description": [], "signature": [ - "PublicLastRunSetters", - " | undefined" + "() => Promise<", + { + "pluginId": "data", + "scope": "common", + "docId": "kibDataSearchPluginApi", + "section": "def-common.ISearchStartSearchSource", + "text": "ISearchStartSearchSource" + }, + ">" ], "path": "x-pack/plugins/alerting/server/types.ts", "deprecated": false, - "trackAdoption": false + "trackAdoption": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index b7c3f4891380e..26b4fe0f4d36f 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index 63e4f70803049..53675d16eced0 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-08-19 +date: 2024-08-20 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 1c040f449a548..0d97d4e43b00e 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apmDataAccess'] --- import apmDataAccessObj from './apm_data_access.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 2660c8f1d16e0..d9ad7be3b7c14 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-08-19 +date: 2024-08-20 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 cbfd2e74a6a85..6b47ca7fd10b9 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-08-19 +date: 2024-08-20 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 1d60fa49bbe62..0f7be04e2fa40 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-08-19 +date: 2024-08-20 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 3f95a3994ad09..bc248bec1b256 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.devdocs.json'; diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index b1ebc9873bb03..c26962257ce54 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-08-19 +date: 2024-08-20 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 ba2de295f153f..695e6995a5531 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-08-19 +date: 2024-08-20 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 584c5727eb68b..95c116cc92e52 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-08-19 +date: 2024-08-20 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 3300c6670884e..5b04c81f4d27f 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-08-19 +date: 2024-08-20 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 2995afa4a79a4..d7830855c9814 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-08-19 +date: 2024-08-20 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 5a8beecef5711..21fc9732c6b27 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-08-19 +date: 2024-08-20 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 99c3948c6297a..906ca12273de6 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-08-19 +date: 2024-08-20 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 fce5361fc4712..bf87f55710c7d 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-08-19 +date: 2024-08-20 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 ad2d35a559a16..492aac189eb7a 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-08-19 +date: 2024-08-20 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 24a9d1b833d42..28607aa51310e 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-08-19 +date: 2024-08-20 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 3500b50b6973b..22b46916ece70 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-08-19 +date: 2024-08-20 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 a409e9109fc22..73ea02118618c 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.mdx b/api_docs/data.mdx index ca5716510d3e6..c764144816d51 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; diff --git a/api_docs/data_quality.mdx b/api_docs/data_quality.mdx index fab2671f62d3d..4e4f54b655e96 100644 --- a/api_docs/data_quality.mdx +++ b/api_docs/data_quality.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/dataQuality title: "dataQuality" image: https://source.unsplash.com/400x175/?github description: API docs for the dataQuality plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataQuality'] --- import dataQualityObj from './data_quality.devdocs.json'; diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 3c33afe5ea2b8..95cd022aee9d4 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index c1643585c06be..fcbb450296e84 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index e431853d77e39..2619195a57132 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-08-19 +date: 2024-08-20 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 cfcc2c34e4845..cee77b2efc91e 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-08-19 +date: 2024-08-20 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 dd66ee2f62fda..8cba19293b591 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-08-19 +date: 2024-08-20 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 64fbde62fb821..655bf8c50b024 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -14028,7 +14028,7 @@ }, { "plugin": "@kbn/unified-field-list", - "path": "packages/kbn-unified-field-list/src/hooks/use_existing_fields.ts" + "path": "packages/kbn-unified-field-list/src/services/field_stats/load_field_stats.ts" }, { "plugin": "@kbn/unified-field-list", @@ -14036,7 +14036,7 @@ }, { "plugin": "@kbn/unified-field-list", - "path": "packages/kbn-unified-field-list/src/services/field_stats/load_field_stats.ts" + "path": "packages/kbn-unified-field-list/src/hooks/use_existing_fields.ts" }, { "plugin": "lens", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index e46b9928a1792..50f97e8f4264e 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 821ec06a28231..bb0dadf167ec4 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-08-19 +date: 2024-08-20 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 bf86a2b2a8639..179f72a75bf46 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-08-19 +date: 2024-08-20 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 55a7d5f3b8e7b..fe01e4eb5dbba 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -51,7 +51,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/core-saved-objects-common, @kbn/core-saved-objects-server, @kbn/core, actions, @kbn/alerting-types, alerting, savedSearch, canvas, enterpriseSearch, securitySolution, taskManager, @kbn/core-saved-objects-server-internal, @kbn/core-saved-objects-api-server | - | | | @kbn/core-saved-objects-api-browser, @kbn/core-saved-objects-browser-internal, @kbn/core-saved-objects-api-server, @kbn/core, home, savedObjectsTagging, canvas, savedObjects, @kbn/core-saved-objects-browser-mocks, @kbn/core-saved-objects-import-export-server-internal, savedObjectsTaggingOss, lists, securitySolution, upgradeAssistant, savedObjectsManagement, @kbn/core-ui-settings-server-internal | - | | | @kbn/core-saved-objects-migration-server-internal, actions, dataViews, data, alerting, lens, cases, savedSearch, canvas, savedObjectsTagging, graph, lists, maps, visualizations, securitySolution, dashboard, @kbn/core-test-helpers-so-type-serializer | - | -| | security, securitySolution, cloudLinks, observabilityAIAssistantApp, cases | - | +| | security, securitySolution, cloudLinks, cases | - | | | security, cases, searchPlayground, securitySolution | - | | | lists, securitySolution, @kbn/securitysolution-io-ts-list-types | - | | | lists, securitySolution, @kbn/securitysolution-io-ts-list-types | - | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index 4aa3569e2bf0c..90c13de0ed69e 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -452,7 +452,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [use_existing_fields.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-unified-field-list/src/hooks/use_existing_fields.ts#:~:text=title), [use_existing_fields.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-unified-field-list/src/hooks/use_existing_fields.ts#:~:text=title), [load_field_stats.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-unified-field-list/src/services/field_stats/load_field_stats.ts#:~:text=title) | - | +| | [load_field_stats.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-unified-field-list/src/services/field_stats/load_field_stats.ts#:~:text=title), [use_existing_fields.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-unified-field-list/src/hooks/use_existing_fields.ts#:~:text=title), [use_existing_fields.ts](https://github.com/elastic/kibana/tree/main/packages/kbn-unified-field-list/src/hooks/use_existing_fields.ts#:~:text=title) | - | @@ -1125,14 +1125,6 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] -## observabilityAIAssistantApp - -| Deprecated API | Reference location(s) | Remove By | -| ---------------|-----------|-----------| -| | [use_current_user.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_current_user.ts#:~:text=authc) | - | - - - ## observabilityOnboarding | Deprecated API | Reference location(s) | Remove By | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index fbd1e41794c67..d554a4db8ef01 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index e26a1f9f2c50c..41acaa543b245 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.devdocs.json b/api_docs/discover.devdocs.json index ed0d600efff04..b55e78eeafff9 100644 --- a/api_docs/discover.devdocs.json +++ b/api_docs/discover.devdocs.json @@ -511,6 +511,29 @@ "path": "src/plugins/discover/public/application/main/state_management/discover_app_state_container.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "discover", + "id": "def-public.DiscoverAppState.density", + "type": "CompoundType", + "tags": [], + "label": "density", + "description": [ + "\nDensity of table" + ], + "signature": [ + { + "pluginId": "@kbn/unified-data-table", + "scope": "public", + "docId": "kibKbnUnifiedDataTablePluginApi", + "section": "def-public.DataGridDensity", + "text": "DataGridDensity" + }, + " | undefined" + ], + "path": "src/plugins/discover/public/application/main/state_management/discover_app_state_container.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index a166beed4cc12..2d5305b10eb1d 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.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 | |-------------------|-----------|------------------------|-----------------| -| 149 | 0 | 102 | 26 | +| 150 | 0 | 102 | 26 | ## Client diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index 15dd45df1a9d8..9328b7a5641c7 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/discover_shared.mdx b/api_docs/discover_shared.mdx index 70f75a3292a11..18cd436abe610 100644 --- a/api_docs/discover_shared.mdx +++ b/api_docs/discover_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/discoverShared title: "discoverShared" image: https://source.unsplash.com/400x175/?github description: API docs for the discoverShared plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverShared'] --- import discoverSharedObj from './discover_shared.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 2b3592a7ae876..25de3fd4323d6 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-08-19 +date: 2024-08-20 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 ca5e68bc94459..58c88c0f6200f 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'elasticAssistant'] --- import elasticAssistantObj from './elastic_assistant.devdocs.json'; diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index b5392910db935..b3fd154612926 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index a28b3ee236c88..d1210572ae124 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-08-19 +date: 2024-08-20 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 d315d1db4b17c..09e28387df16e 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-08-19 +date: 2024-08-20 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 79be6e5cd00c4..1f613d2f13da3 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/entities_data_access.mdx b/api_docs/entities_data_access.mdx index 9117b46c9579d..6cf3faf818db0 100644 --- a/api_docs/entities_data_access.mdx +++ b/api_docs/entities_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entitiesDataAccess title: "entitiesDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the entitiesDataAccess plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entitiesDataAccess'] --- import entitiesDataAccessObj from './entities_data_access.devdocs.json'; diff --git a/api_docs/entity_manager.mdx b/api_docs/entity_manager.mdx index b2380aa207dc1..0f3c92740bd52 100644 --- a/api_docs/entity_manager.mdx +++ b/api_docs/entity_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/entityManager title: "entityManager" image: https://source.unsplash.com/400x175/?github description: API docs for the entityManager plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'entityManager'] --- import entityManagerObj from './entity_manager.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index d7003da8f9310..a3f5a2103a2a0 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/esql.mdx b/api_docs/esql.mdx index 6d1ed9c8c4375..38bb3a68102f0 100644 --- a/api_docs/esql.mdx +++ b/api_docs/esql.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esql title: "esql" image: https://source.unsplash.com/400x175/?github description: API docs for the esql plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esql'] --- import esqlObj from './esql.devdocs.json'; diff --git a/api_docs/esql_data_grid.mdx b/api_docs/esql_data_grid.mdx index b2db4ab55f251..04abfe831f23c 100644 --- a/api_docs/esql_data_grid.mdx +++ b/api_docs/esql_data_grid.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/esqlDataGrid title: "esqlDataGrid" image: https://source.unsplash.com/400x175/?github description: API docs for the esqlDataGrid plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esqlDataGrid'] --- import esqlDataGridObj from './esql_data_grid.devdocs.json'; diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index ba17cb88ddd66..b6a24ab8f4249 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-08-19 +date: 2024-08-20 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 c302810062230..24f0b81943949 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-08-19 +date: 2024-08-20 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 91278fff2e488..64e2012a24539 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-08-19 +date: 2024-08-20 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 03184ef6a3fd5..e706aff805fe7 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-08-19 +date: 2024-08-20 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 14cfc135f58c5..738ed59dacc50 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionError'] --- import expressionErrorObj from './expression_error.devdocs.json'; diff --git a/api_docs/expression_gauge.mdx b/api_docs/expression_gauge.mdx index 53c208b6a93af..3617d254b9eed 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index cf08fc1cfa87e..e3406768b4caa 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-08-19 +date: 2024-08-20 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 b210a24711736..07965a814fafd 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-08-19 +date: 2024-08-20 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 5947bb5e09f9f..de8d8e8b002ed 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-08-19 +date: 2024-08-20 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 f3fbc61ace2ce..f57fe7c318a06 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionMetric'] --- import expressionMetricObj from './expression_metric.devdocs.json'; diff --git a/api_docs/expression_metric_vis.mdx b/api_docs/expression_metric_vis.mdx index 5e3897fd83343..d2e4564b812dc 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-08-19 +date: 2024-08-20 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 a14c1d4cb8245..808db20607abf 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-08-19 +date: 2024-08-20 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 c558f6046463f..ab2e1376a7ff6 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-08-19 +date: 2024-08-20 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 cbd3163c4bc6d..44dc510be4bc9 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-08-19 +date: 2024-08-20 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 494b31e0a4fc2..f5e288faac95d 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-08-19 +date: 2024-08-20 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 fffab03a8906b..a408dfac6c048 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionTagcloud'] --- import expressionTagcloudObj from './expression_tagcloud.devdocs.json'; diff --git a/api_docs/expression_x_y.mdx b/api_docs/expression_x_y.mdx index aff76f516812b..1a65224858cb1 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-08-19 +date: 2024-08-20 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 031f164ceebb9..dbd29cbedbdda 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-08-19 +date: 2024-08-20 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 9311ffa3446b5..4093398c05005 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-08-19 +date: 2024-08-20 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 9d613588d1090..ae0ecf571b8fa 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/fields_metadata.mdx b/api_docs/fields_metadata.mdx index 83e2bb5c62a37..6390fc83a526a 100644 --- a/api_docs/fields_metadata.mdx +++ b/api_docs/fields_metadata.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/fieldsMetadata title: "fieldsMetadata" image: https://source.unsplash.com/400x175/?github description: API docs for the fieldsMetadata plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldsMetadata'] --- import fieldsMetadataObj from './fields_metadata.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index d4f43a08d56a4..4db4bc4ab31c6 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-08-19 +date: 2024-08-20 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 74ec4ad738663..cdbf54820f8f8 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-08-19 +date: 2024-08-20 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 cf4d6b0688627..aedfbe71fad8e 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-08-19 +date: 2024-08-20 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 439593bac7a30..9fc9b1a536241 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-08-19 +date: 2024-08-20 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 b94fd7472f9ca..9a21ea17392fb 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-08-19 +date: 2024-08-20 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 447423ac29a0f..b3ed26b43c47e 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-08-19 +date: 2024-08-20 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 a9d482c6d78ab..54cda04fb3618 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-08-19 +date: 2024-08-20 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 b4bb2c2a491fb..6e44d098af8ed 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-08-19 +date: 2024-08-20 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 5c441a9807ab4..1ad0278afdebc 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexLifecycleManagement'] --- import indexLifecycleManagementObj from './index_lifecycle_management.devdocs.json'; diff --git a/api_docs/index_management.mdx b/api_docs/index_management.mdx index eac0474136e82..b9c44efd5d299 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/inference.mdx b/api_docs/inference.mdx index c836488a15869..082b139da924c 100644 --- a/api_docs/inference.mdx +++ b/api_docs/inference.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/inference title: "inference" image: https://source.unsplash.com/400x175/?github description: API docs for the inference plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inference'] --- import inferenceObj from './inference.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 63d881a737faa..7f17a289c7f47 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-08-19 +date: 2024-08-20 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 a62cc025efb6c..c6b99db44abbd 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-08-19 +date: 2024-08-20 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 0004139e1d7e5..efe0037100fda 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/integration_assistant.mdx b/api_docs/integration_assistant.mdx index 0097d1e649780..6b9525011d812 100644 --- a/api_docs/integration_assistant.mdx +++ b/api_docs/integration_assistant.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/integrationAssistant title: "integrationAssistant" image: https://source.unsplash.com/400x175/?github description: API docs for the integrationAssistant plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'integrationAssistant'] --- import integrationAssistantObj from './integration_assistant.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index c595b386ce4d3..85bbf4abd1e88 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/investigate.devdocs.json b/api_docs/investigate.devdocs.json index 6661ec5358168..d90742c490ead 100644 --- a/api_docs/investigate.devdocs.json +++ b/api_docs/investigate.devdocs.json @@ -27,7 +27,7 @@ "section": "def-public.EsqlWidgetParameters", "text": "EsqlWidgetParameters" }, - ">, PredefinedKeys>>(widgetCreate: T) => Pick<", + ">, \"type\">>(widgetCreate: T) => Pick<", { "pluginId": "investigate", "scope": "common", @@ -43,7 +43,7 @@ "section": "def-public.EsqlWidgetParameters", "text": "EsqlWidgetParameters" }, - ">, PredefinedKeys> & Omit & { parameters: T[\"parameters\"] & ", + ">, \"type\"> & Omit & { parameters: T[\"parameters\"] & ", "_DeepPartialObject", "<", "GlobalWidgetParameters", @@ -79,15 +79,7 @@ "label": "createWidgetFactory", "description": [], "signature": [ - "(type: string, defaults: Pick>, AllowedDefaultKeys> | undefined) => ", + "(type: string) => ", "WidgetFactory", "" ], @@ -109,29 +101,6 @@ "deprecated": false, "trackAdoption": false, "isRequired": true - }, - { - "parentPluginId": "investigate", - "id": "def-public.createWidgetFactory.$2", - "type": "Object", - "tags": [], - "label": "defaults", - "description": [], - "signature": [ - "Pick>, AllowedDefaultKeys> | undefined" - ], - "path": "x-pack/plugins/observability_solution/investigate/public/create_widget.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": false } ], "returnComment": [], @@ -615,51 +584,6 @@ "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", "deprecated": false, "trackAdoption": false - }, - { - "parentPluginId": "investigate", - "id": "def-public.InvestigateWidget.description", - "type": "string", - "tags": [], - "label": "description", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "investigate", - "id": "def-public.InvestigateWidget.columns", - "type": "Enum", - "tags": [], - "label": "columns", - "description": [], - "signature": [ - { - "pluginId": "investigate", - "scope": "common", - "docId": "kibInvestigatePluginApi", - "section": "def-common.InvestigateWidgetColumnSpan", - "text": "InvestigateWidgetColumnSpan" - } - ], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "investigate", - "id": "def-public.InvestigateWidget.rows", - "type": "number", - "tags": [], - "label": "rows", - "description": [], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", - "deprecated": false, - "trackAdoption": false } ], "initialIsOpen": false @@ -697,26 +621,6 @@ "deprecated": false, "trackAdoption": false }, - { - "parentPluginId": "investigate", - "id": "def-public.Investigation.user", - "type": "Object", - "tags": [], - "label": "user", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-security-common", - "scope": "common", - "docId": "kibKbnCoreSecurityCommonPluginApi", - "section": "def-common.AuthenticatedUser", - "text": "AuthenticatedUser" - } - ], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "investigate", "id": "def-public.Investigation.title", @@ -786,115 +690,9 @@ } ], "initialIsOpen": false - }, - { - "parentPluginId": "investigate", - "id": "def-public.WidgetRenderAPI", - "type": "Interface", - "tags": [], - "label": "WidgetRenderAPI", - "description": [], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "investigate", - "id": "def-public.WidgetRenderAPI.onDelete", - "type": "Function", - "tags": [], - "label": "onDelete", - "description": [], - "signature": [ - "() => void" - ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "returnComment": [] - }, - { - "parentPluginId": "investigate", - "id": "def-public.WidgetRenderAPI.onWidgetAdd", - "type": "Function", - "tags": [], - "label": "onWidgetAdd", - "description": [], - "signature": [ - "(create: ", - { - "pluginId": "investigate", - "scope": "common", - "docId": "kibInvestigatePluginApi", - "section": "def-common.InvestigateWidgetCreate", - "text": "InvestigateWidgetCreate" - }, - "<{}>) => Promise" - ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "investigate", - "id": "def-public.WidgetRenderAPI.onWidgetAdd.$1", - "type": "CompoundType", - "tags": [], - "label": "create", - "description": [], - "signature": [ - "Pick<", - { - "pluginId": "investigate", - "scope": "common", - "docId": "kibInvestigatePluginApi", - "section": "def-common.InvestigateWidget", - "text": "InvestigateWidget" - }, - "<{}, {}>, \"type\" | \"title\" | \"columns\" | \"description\" | \"rows\"> & { parameters: ", - "_DeepPartialObject", - "<", - "GlobalWidgetParameters", - ">; }" - ], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", - "deprecated": false, - "trackAdoption": false - } - ] - } - ], - "initialIsOpen": false - } - ], - "enums": [ - { - "parentPluginId": "investigate", - "id": "def-public.ChromeOption", - "type": "Enum", - "tags": [], - "label": "ChromeOption", - "description": [], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, - { - "parentPluginId": "investigate", - "id": "def-public.InvestigateWidgetColumnSpan", - "type": "Enum", - "tags": [], - "label": "InvestigateWidgetColumnSpan", - "description": [], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false } ], + "enums": [], "misc": [ { "parentPluginId": "investigate", @@ -927,7 +725,7 @@ "section": "def-common.InvestigateWidget", "text": "InvestigateWidget" }, - "<{}, {}>, \"type\" | \"title\" | \"columns\" | \"description\" | \"rows\"> & { parameters: ", + "<{}, {}>, \"type\" | \"title\"> & { parameters: ", "_DeepPartialObject", "<", "GlobalWidgetParameters", @@ -977,7 +775,7 @@ "section": "def-common.InvestigateWidget", "text": "InvestigateWidget" }, - "<{}, {}>, \"type\" | \"title\" | \"columns\" | \"description\" | \"rows\"> & { parameters: ", + "<{}, {}>, \"type\" | \"title\"> & { parameters: ", "_DeepPartialObject", "<", "GlobalWidgetParameters", @@ -1088,7 +886,7 @@ "section": "def-common.AuthenticatedUser", "text": "AuthenticatedUser" }, - "; from: string; to: string; }) => ", + "; investigationData?: { id: string; title: string; createdAt: number; createdBy: string; params: { timeRange: { from: number; to: number; }; }; origin: { type: \"alert\"; id: string; } | { type: \"blank\"; }; status: \"closed\" | \"ongoing\"; notes: { id: string; content: string; createdAt: number; createdBy: string; }[]; } | undefined; }) => ", "UseInvestigationApi" ], "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", @@ -1128,22 +926,14 @@ }, { "parentPluginId": "investigate", - "id": "def-public.InvestigatePublicStart.useInvestigation.$1.from", - "type": "string", - "tags": [], - "label": "from", - "description": [], - "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "investigate", - "id": "def-public.InvestigatePublicStart.useInvestigation.$1.to", - "type": "string", + "id": "def-public.InvestigatePublicStart.useInvestigation.$1.investigationData", + "type": "Object", "tags": [], - "label": "to", + "label": "investigationData", "description": [], + "signature": [ + "{ id: string; title: string; createdAt: number; createdBy: string; params: { timeRange: { from: number; to: number; }; }; origin: { type: \"alert\"; id: string; } | { type: \"blank\"; }; status: \"closed\" | \"ongoing\"; notes: { id: string; content: string; createdAt: number; createdBy: string; }[]; } | undefined" + ], "path": "x-pack/plugins/observability_solution/investigate/public/types.ts", "deprecated": false, "trackAdoption": false @@ -1563,51 +1353,6 @@ "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", "deprecated": false, "trackAdoption": false - }, - { - "parentPluginId": "investigate", - "id": "def-common.InvestigateWidget.description", - "type": "string", - "tags": [], - "label": "description", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "investigate", - "id": "def-common.InvestigateWidget.columns", - "type": "Enum", - "tags": [], - "label": "columns", - "description": [], - "signature": [ - { - "pluginId": "investigate", - "scope": "common", - "docId": "kibInvestigatePluginApi", - "section": "def-common.InvestigateWidgetColumnSpan", - "text": "InvestigateWidgetColumnSpan" - } - ], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "investigate", - "id": "def-common.InvestigateWidget.rows", - "type": "number", - "tags": [], - "label": "rows", - "description": [], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", - "deprecated": false, - "trackAdoption": false } ], "initialIsOpen": false @@ -1645,26 +1390,6 @@ "deprecated": false, "trackAdoption": false }, - { - "parentPluginId": "investigate", - "id": "def-common.Investigation.user", - "type": "Object", - "tags": [], - "label": "user", - "description": [], - "signature": [ - { - "pluginId": "@kbn/core-security-common", - "scope": "common", - "docId": "kibKbnCoreSecurityCommonPluginApi", - "section": "def-common.AuthenticatedUser", - "text": "AuthenticatedUser" - } - ], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "investigate", "id": "def-common.Investigation.title", @@ -1794,20 +1519,7 @@ "initialIsOpen": false } ], - "enums": [ - { - "parentPluginId": "investigate", - "id": "def-common.InvestigateWidgetColumnSpan", - "type": "Enum", - "tags": [], - "label": "InvestigateWidgetColumnSpan", - "description": [], - "path": "x-pack/plugins/observability_solution/investigate/common/types.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - } - ], + "enums": [], "misc": [ { "parentPluginId": "investigate", @@ -1825,7 +1537,7 @@ "section": "def-common.InvestigateWidget", "text": "InvestigateWidget" }, - "<{}, {}>, \"type\" | \"title\" | \"columns\" | \"description\" | \"rows\"> & { parameters: ", + "<{}, {}>, \"type\" | \"title\"> & { parameters: ", "_DeepPartialObject", "<", "GlobalWidgetParameters", diff --git a/api_docs/investigate.mdx b/api_docs/investigate.mdx index 8ff2176bdc89f..e29ce3810e12e 100644 --- a/api_docs/investigate.mdx +++ b/api_docs/investigate.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigate title: "investigate" image: https://source.unsplash.com/400x175/?github description: API docs for the investigate plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigate'] --- import investigateObj from './investigate.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 | |-------------------|-----------|------------------------|-----------------| -| 111 | 0 | 111 | 5 | +| 94 | 0 | 94 | 5 | ## Client @@ -37,9 +37,6 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ ### Interfaces -### Enums - - ### Consts, variables and types @@ -59,9 +56,6 @@ Contact [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/ ### Interfaces -### Enums - - ### Consts, variables and types diff --git a/api_docs/investigate_app.devdocs.json b/api_docs/investigate_app.devdocs.json index b667febacd1a2..63620cf5df62f 100644 --- a/api_docs/investigate_app.devdocs.json +++ b/api_docs/investigate_app.devdocs.json @@ -50,7 +50,19 @@ "label": "InvestigateAppServerRouteRepository", "description": [], "signature": [ - "{ \"GET /api/observability/investigations/{id}/notes 2023-10-31\": { endpoint: \"GET /api/observability/investigations/{id}/notes 2023-10-31\"; params?: ", + "{ \"DELETE /api/observability/investigations/{id}/notes/{noteId} 2023-10-31\": { endpoint: \"DELETE /api/observability/investigations/{id}/notes/{noteId} 2023-10-31\"; params?: ", + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; noteId: ", + "StringC", + "; }>; }> | undefined; handler: ({}: ", + "InvestigateAppRouteHandlerResources", + " & { params: { path: { id: string; noteId: string; }; }; }) => Promise; } & ", + "InvestigateAppRouteCreateOptions", + "; \"GET /api/observability/investigations/{id}/notes 2023-10-31\": { endpoint: \"GET /api/observability/investigations/{id}/notes 2023-10-31\"; params?: ", "TypeC", "<{ path: ", "TypeC", diff --git a/api_docs/investigate_app.mdx b/api_docs/investigate_app.mdx index b4f4fbbbc065f..0df20463eecd8 100644 --- a/api_docs/investigate_app.mdx +++ b/api_docs/investigate_app.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/investigateApp title: "investigateApp" image: https://source.unsplash.com/400x175/?github description: API docs for the investigateApp plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'investigateApp'] --- import investigateAppObj from './investigate_app.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 9423eff689d02..1891c895d4829 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-08-19 +date: 2024-08-20 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 d406eb9eaa829..2e82b5445a648 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/actions-types'] --- import kbnActionsTypesObj from './kbn_actions_types.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index 13a82da1d3047..7e0d226d6981a 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_pattern_analysis.mdx b/api_docs/kbn_aiops_log_pattern_analysis.mdx index 2bd358ffe673f..28806583b5dc5 100644 --- a/api_docs/kbn_aiops_log_pattern_analysis.mdx +++ b/api_docs/kbn_aiops_log_pattern_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-pattern-analysis title: "@kbn/aiops-log-pattern-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-pattern-analysis plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-pattern-analysis'] --- import kbnAiopsLogPatternAnalysisObj from './kbn_aiops_log_pattern_analysis.devdocs.json'; diff --git a/api_docs/kbn_aiops_log_rate_analysis.mdx b/api_docs/kbn_aiops_log_rate_analysis.mdx index 95faf700846cf..4608dfe594631 100644 --- a/api_docs/kbn_aiops_log_rate_analysis.mdx +++ b/api_docs/kbn_aiops_log_rate_analysis.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-log-rate-analysis title: "@kbn/aiops-log-rate-analysis" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-log-rate-analysis plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-log-rate-analysis'] --- import kbnAiopsLogRateAnalysisObj from './kbn_aiops_log_rate_analysis.devdocs.json'; diff --git a/api_docs/kbn_alerting_api_integration_helpers.mdx b/api_docs/kbn_alerting_api_integration_helpers.mdx index 5e3e373f77ffe..dcf1a231f4283 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-08-19 +date: 2024-08-20 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_comparators.mdx b/api_docs/kbn_alerting_comparators.mdx index 0f8f2e39f4d10..1008977a94c2e 100644 --- a/api_docs/kbn_alerting_comparators.mdx +++ b/api_docs/kbn_alerting_comparators.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerting-comparators title: "@kbn/alerting-comparators" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerting-comparators plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-comparators'] --- import kbnAlertingComparatorsObj from './kbn_alerting_comparators.devdocs.json'; diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 7cca696ea25fd..a656241db563f 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-08-19 +date: 2024-08-20 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 63cec3fadb511..abd3e2249f069 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-08-19 +date: 2024-08-20 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 fcac09f09d71e..cfa4620e33bbe 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-08-19 +date: 2024-08-20 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_grouping.devdocs.json b/api_docs/kbn_alerts_grouping.devdocs.json index 718a5c1791d96..e3042f1c99a59 100644 --- a/api_docs/kbn_alerts_grouping.devdocs.json +++ b/api_docs/kbn_alerts_grouping.devdocs.json @@ -13,15 +13,15 @@ "\nA coordinator component to show multiple alert tables grouped by one or more fields\n" ], "signature": [ - "React.NamedExoticComponent<", + "> & { readonly type: (props: ", + ">(props: ", { "pluginId": "@kbn/alerts-grouping", "scope": "public", @@ -29,7 +29,7 @@ "section": "def-public.AlertsGroupingProps", "text": "AlertsGroupingProps" }, - "<{}>) => JSX.Element; }" + ") => JSX.Element" ], "path": "packages/kbn-alerts-grouping/src/components/alerts_grouping.tsx", "deprecated": false, @@ -39,14 +39,21 @@ { "parentPluginId": "@kbn/alerts-grouping", "id": "def-public.AlertsGrouping.$1", - "type": "Uncategorized", + "type": "Object", "tags": [], "label": "props", "description": [], "signature": [ - "P" + { + "pluginId": "@kbn/alerts-grouping", + "scope": "public", + "docId": "kibKbnAlertsGroupingPluginApi", + "section": "def-public.AlertsGroupingProps", + "text": "AlertsGroupingProps" + }, + "" ], - "path": "node_modules/@types/react/index.d.ts", + "path": "packages/kbn-alerts-grouping/src/components/alerts_grouping.tsx", "deprecated": false, "trackAdoption": false } @@ -92,6 +99,70 @@ } ], "interfaces": [ + { + "parentPluginId": "@kbn/alerts-grouping", + "id": "def-public.AlertsGroupAggregationBucket", + "type": "Interface", + "tags": [], + "label": "AlertsGroupAggregationBucket", + "description": [], + "path": "packages/kbn-alerts-grouping/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/alerts-grouping", + "id": "def-public.AlertsGroupAggregationBucket.key", + "type": "string", + "tags": [], + "label": "key", + "description": [], + "path": "packages/kbn-alerts-grouping/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/alerts-grouping", + "id": "def-public.AlertsGroupAggregationBucket.doc_count", + "type": "number", + "tags": [], + "label": "doc_count", + "description": [], + "path": "packages/kbn-alerts-grouping/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/alerts-grouping", + "id": "def-public.AlertsGroupAggregationBucket.isNullGroup", + "type": "CompoundType", + "tags": [], + "label": "isNullGroup", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "packages/kbn-alerts-grouping/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/alerts-grouping", + "id": "def-public.AlertsGroupAggregationBucket.unitsCount", + "type": "Object", + "tags": [], + "label": "unitsCount", + "description": [], + "signature": [ + "{ value: number; } | undefined" + ], + "path": "packages/kbn-alerts-grouping/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/alerts-grouping", "id": "def-public.AlertsGroupingProps", @@ -467,6 +538,70 @@ } ], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/alerts-grouping", + "id": "def-public.BaseAlertsGroupAggregations", + "type": "Interface", + "tags": [], + "label": "BaseAlertsGroupAggregations", + "description": [], + "path": "packages/kbn-alerts-grouping/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/alerts-grouping", + "id": "def-public.BaseAlertsGroupAggregations.groupByFields", + "type": "Object", + "tags": [], + "label": "groupByFields", + "description": [], + "signature": [ + "{ doc_count_error_upper_bound: number; sum_other_doc_count: number; buckets: ", + { + "pluginId": "@kbn/alerts-grouping", + "scope": "public", + "docId": "kibKbnAlertsGroupingPluginApi", + "section": "def-public.AlertsGroupAggregationBucket", + "text": "AlertsGroupAggregationBucket" + }, + "[]; }" + ], + "path": "packages/kbn-alerts-grouping/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/alerts-grouping", + "id": "def-public.BaseAlertsGroupAggregations.groupsCount", + "type": "Object", + "tags": [], + "label": "groupsCount", + "description": [], + "signature": [ + "{ value: number; }" + ], + "path": "packages/kbn-alerts-grouping/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/alerts-grouping", + "id": "def-public.BaseAlertsGroupAggregations.unitsCount", + "type": "Object", + "tags": [], + "label": "unitsCount", + "description": [], + "signature": [ + "{ value: number; }" + ], + "path": "packages/kbn-alerts-grouping/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false } ], "enums": [], diff --git a/api_docs/kbn_alerts_grouping.mdx b/api_docs/kbn_alerts_grouping.mdx index 7849436bd1b80..a5e0f9e1eec97 100644 --- a/api_docs/kbn_alerts_grouping.mdx +++ b/api_docs/kbn_alerts_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-alerts-grouping title: "@kbn/alerts-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/alerts-grouping plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-grouping'] --- import kbnAlertsGroupingObj from './kbn_alerts_grouping.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-o | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 22 | 0 | 5 | 1 | +| 31 | 0 | 15 | 1 | ## Client diff --git a/api_docs/kbn_alerts_ui_shared.devdocs.json b/api_docs/kbn_alerts_ui_shared.devdocs.json index 10feecc712b89..e9204e1654b32 100644 --- a/api_docs/kbn_alerts_ui_shared.devdocs.json +++ b/api_docs/kbn_alerts_ui_shared.devdocs.json @@ -425,7 +425,7 @@ "tags": [], "label": "useGetAlertsGroupAggregationsQuery", "description": [ - "\nFetches alerts aggregations for a given groupByField.\n\nSome default aggregations are applied:\n- `groupByFields`, to get the buckets based on the provided grouping field,\n - `unitsCount`, to count the number of alerts in each bucket,\n- `unitsCount`, to count the total number of alerts targeted by the query,\n- `groupsCount`, to count the total number of groups.\n\nThe provided `aggregations` are applied within `groupByFields`. Here the `groupByField` runtime\nfield can be used to perform grouping-based aggregations.\n\nApplies alerting RBAC through featureIds." + "\nFetches alerts aggregations for a given groupByField.\n\nSome default aggregations are applied:\n- `groupByFields`, to get the buckets based on the provided grouping field,\n - `unitsCount`, to count the number of alerts in each bucket,\n- `unitsCount`, to count the total number of alerts targeted by the query,\n- `groupsCount`, to count the total number of groups.\n\nThe provided `aggregations` are applied within `groupByFields`. Here the `groupByField` runtime\nfield can be used to perform grouping-based aggregations.\n`groupByField` buckets computed over a field with a null/absent value are marked with the\n`isNullGroup` flag set to true and their key is set to the `--` string.\n\nApplies alerting RBAC through featureIds." ], "signature": [ "({ http, toasts, enabled, params, }: ", diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index b2ee40edcb610..c8d07a46d7d1f 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-08-19 +date: 2024-08-20 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 99f7f846b939e..2f62dee354570 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_collection_utils.mdx b/api_docs/kbn_analytics_collection_utils.mdx index d710c5e2277d7..d143b71454a45 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-collection-utils'] --- import kbnAnalyticsCollectionUtilsObj from './kbn_analytics_collection_utils.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 4ad715a24a7fd..08b3f60e157ea 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_data_view.mdx b/api_docs/kbn_apm_data_view.mdx index c147c6e47a8a5..16f663e7ef1f9 100644 --- a/api_docs/kbn_apm_data_view.mdx +++ b/api_docs/kbn_apm_data_view.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-data-view title: "@kbn/apm-data-view" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-data-view plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-data-view'] --- import kbnApmDataViewObj from './kbn_apm_data_view.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 59a36c9eecca0..c50eab761be20 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-08-19 +date: 2024-08-20 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 dd32979f54122..0b78f7ab76cc5 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-08-19 +date: 2024-08-20 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_types.mdx b/api_docs/kbn_apm_types.mdx index cbad5433fb049..b045e8782c557 100644 --- a/api_docs/kbn_apm_types.mdx +++ b/api_docs/kbn_apm_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-apm-types title: "@kbn/apm-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/apm-types plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-types'] --- import kbnApmTypesObj from './kbn_apm_types.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 498c301a9f9ae..e03f015a5e271 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_avc_banner.mdx b/api_docs/kbn_avc_banner.mdx index 0b58fc4673ac0..79c06d8f594ca 100644 --- a/api_docs/kbn_avc_banner.mdx +++ b/api_docs/kbn_avc_banner.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-avc-banner title: "@kbn/avc-banner" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/avc-banner plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/avc-banner'] --- import kbnAvcBannerObj from './kbn_avc_banner.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index d3a1ad7380a64..dc27506223ae3 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-08-19 +date: 2024-08-20 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 eca557e580f1a..17cb51f517a52 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-08-19 +date: 2024-08-20 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 b02e000aaa181..418bb5af4ccb1 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-08-19 +date: 2024-08-20 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 7482510b07a0b..297f05cd9b0fb 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-08-19 +date: 2024-08-20 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 a8e9741f60382..0c99bcb5eff5d 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-08-19 +date: 2024-08-20 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 8e111ef5b4dc1..21504e831f967 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-08-19 +date: 2024-08-20 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 7c052a960b9d4..8b96c903c8a59 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-expressions-common'] --- import kbnChartExpressionsCommonObj from './kbn_chart_expressions_common.devdocs.json'; diff --git a/api_docs/kbn_chart_icons.mdx b/api_docs/kbn_chart_icons.mdx index e82d3666502f8..4b91ce1b94e32 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/chart-icons'] --- import kbnChartIconsObj from './kbn_chart_icons.devdocs.json'; diff --git a/api_docs/kbn_ci_stats_core.mdx b/api_docs/kbn_ci_stats_core.mdx index 90f09c9d51c6b..c36348ff50ef0 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-08-19 +date: 2024-08-20 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 31a6a087e2e2e..1d50289ed2ea2 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-08-19 +date: 2024-08-20 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 66986cd1b88c2..1846e372b149b 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-08-19 +date: 2024-08-20 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 f03a1f2ab20fa..3e640eceb29f0 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-08-19 +date: 2024-08-20 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 b7691efd37b3b..d170eaec9053d 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-08-19 +date: 2024-08-20 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 088bb68ec5b21..2e39b5efcbfb8 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-08-19 +date: 2024-08-20 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 e28860f81a6d1..aa2f5936ebf57 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-08-19 +date: 2024-08-20 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 a1c8ea791b82e..146a0819f58ed 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-08-19 +date: 2024-08-20 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 7037b8420efa6..fd0c266138c3f 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-08-19 +date: 2024-08-20 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 ac7f32cb34cf9..15b54cacd8526 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-08-19 +date: 2024-08-20 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 e452d92b58a8c..043c537e88567 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-08-19 +date: 2024-08-20 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 d307b9c16b2f8..4386452ec1088 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-08-19 +date: 2024-08-20 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_favorites_public.mdx b/api_docs/kbn_content_management_favorites_public.mdx index 6462aa638d792..0699ccd9666b0 100644 --- a/api_docs/kbn_content_management_favorites_public.mdx +++ b/api_docs/kbn_content_management_favorites_public.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-public title: "@kbn/content-management-favorites-public" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-public plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-public'] --- import kbnContentManagementFavoritesPublicObj from './kbn_content_management_favorites_public.devdocs.json'; diff --git a/api_docs/kbn_content_management_favorites_server.mdx b/api_docs/kbn_content_management_favorites_server.mdx index 756ec41e33da6..4c3f22137aa3c 100644 --- a/api_docs/kbn_content_management_favorites_server.mdx +++ b/api_docs/kbn_content_management_favorites_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-favorites-server title: "@kbn/content-management-favorites-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-favorites-server plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-favorites-server'] --- import kbnContentManagementFavoritesServerObj from './kbn_content_management_favorites_server.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 f6f0e3ef1fe64..d052e1a704c8a 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-08-19 +date: 2024-08-20 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 dcea9298e076c..50c4d7efcf5b3 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-08-19 +date: 2024-08-20 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 909de4f38befe..131ffb6c699a8 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-08-19 +date: 2024-08-20 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 c9cd0dcb1eb0d..6369b0a2c3233 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-08-19 +date: 2024-08-20 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_user_profiles.mdx b/api_docs/kbn_content_management_user_profiles.mdx index f0e179f43c1ee..f59b697c9502a 100644 --- a/api_docs/kbn_content_management_user_profiles.mdx +++ b/api_docs/kbn_content_management_user_profiles.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-content-management-user-profiles title: "@kbn/content-management-user-profiles" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/content-management-user-profiles plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-user-profiles'] --- import kbnContentManagementUserProfilesObj from './kbn_content_management_user_profiles.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 44778ee7c77f4..5323c9829fb3e 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-08-19 +date: 2024-08-20 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 ab7e495c492a6..640d0bf80d692 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-08-19 +date: 2024-08-20 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 e61c6f3165d2c..495fb1abe39af 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-08-19 +date: 2024-08-20 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 3149bb2c66e84..08a77ea02a1ff 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-08-19 +date: 2024-08-20 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 eb033c294a0a4..8df2fb3b0b478 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-08-19 +date: 2024-08-20 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 9b465e9b66770..6d646e6ad5ece 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-08-19 +date: 2024-08-20 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 deee68ada149c..c3eace7993b24 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-08-19 +date: 2024-08-20 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 ec4f281129c20..2933c5a5b30f0 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-08-19 +date: 2024-08-20 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 22a8e05f9b24f..eafc44496ae3c 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-08-19 +date: 2024-08-20 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 ca1e5c7eeaa4d..9fd1e913628e9 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-08-19 +date: 2024-08-20 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 718eb647ba44d..fc531656da10c 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-08-19 +date: 2024-08-20 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 3f75c978fbffd..71ea9e0c78058 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-08-19 +date: 2024-08-20 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 e4c4a5d4894c1..bb4f94a323667 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-08-19 +date: 2024-08-20 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 756de64c0663d..de47794a888cc 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-08-19 +date: 2024-08-20 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 04ca4c0c47fb0..a97bc356fb391 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-08-19 +date: 2024-08-20 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 0a283aacfebad..e73b19fc78e05 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-08-19 +date: 2024-08-20 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 8902980638234..32781b1866545 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-08-19 +date: 2024-08-20 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 34e02f505cbd5..ee2b29aeb53c9 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-08-19 +date: 2024-08-20 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 56cc8a0cb9552..3d1d96e608f44 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-08-19 +date: 2024-08-20 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 2d611af2fbc1d..0531780bd55b4 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-08-19 +date: 2024-08-20 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 d2e98b678659b..cccf4263478f7 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-08-19 +date: 2024-08-20 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 cc127d0f1b58a..e591b71d2ca8b 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-08-19 +date: 2024-08-20 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 c28e733007b29..5469f730d290d 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-08-19 +date: 2024-08-20 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 6c395194f1b7a..4558fe911c628 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-08-19 +date: 2024-08-20 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 88c4514ca1f3e..86ddf609d8751 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-08-19 +date: 2024-08-20 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 c13e2fbe1a097..5b2fded3187de 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-08-19 +date: 2024-08-20 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 9eeb046e7df46..eb41e02d2a054 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-08-19 +date: 2024-08-20 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 3d276d2ec6cc9..d88f0bc684b7a 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-08-19 +date: 2024-08-20 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 11748d22c327c..aa9d462be209c 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-08-19 +date: 2024-08-20 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 3b0b13b8b6595..c1b801c37712b 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-08-19 +date: 2024-08-20 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 638655b1c77b8..85ce0699f9318 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-08-19 +date: 2024-08-20 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 f308382fdefa0..9cf7b1e423046 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-08-19 +date: 2024-08-20 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 f0cee5b7e6c33..6858c5050813e 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-08-19 +date: 2024-08-20 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 9e6942ac2487e..877aefdceec3d 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-08-19 +date: 2024-08-20 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 a64cfbf3c3aa9..4be3ee1ba2524 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-08-19 +date: 2024-08-20 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 ffd41a05c3dfa..1b4d41faeafb1 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-08-19 +date: 2024-08-20 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 d6c09991cb053..696230e3dfb4a 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-08-19 +date: 2024-08-20 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 40b65422f864d..d8f78ef74560b 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-08-19 +date: 2024-08-20 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 f51c7ed44c0ad..04cb7e2a445bb 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-08-19 +date: 2024-08-20 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 5f18daf41eada..eaaf60ebdd416 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-08-19 +date: 2024-08-20 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 ff298ad37090e..d72e35930a501 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-08-19 +date: 2024-08-20 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 78bd6ee744a6e..9ab6f29e939c6 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-08-19 +date: 2024-08-20 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 0e6c1cae2991f..03dec05e315f3 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-08-19 +date: 2024-08-20 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 9dff5aafff47a..5ea983ca02c22 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-08-19 +date: 2024-08-20 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 dfa1ef098c2fd..3463b29d4b27a 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-08-19 +date: 2024-08-20 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 4dfff896be531..cdf6c56f115a0 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-08-19 +date: 2024-08-20 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 f87c034624c68..e41712059d209 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-08-19 +date: 2024-08-20 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 20533db43f5b1..dc21c9c878381 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-08-19 +date: 2024-08-20 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 88797c5aa920b..c506019c9bba2 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-08-19 +date: 2024-08-20 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 369bfef8124fa..5c3563e63c450 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-08-19 +date: 2024-08-20 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 979dab1ebb177..80653fc22ef7b 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-08-19 +date: 2024-08-20 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 c05eb24ab16cd..f22ebba137952 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-08-19 +date: 2024-08-20 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 1b97fcc147135..38820828cc0d5 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-08-19 +date: 2024-08-20 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 bac5ddc2baba8..23b72f73dd539 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-08-19 +date: 2024-08-20 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 4a4038a66ac6c..2ab684d32a396 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-08-19 +date: 2024-08-20 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 fc1678f7a9096..6ffda7793bce9 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-08-19 +date: 2024-08-20 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 339d22fcae086..6a5592be203af 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-08-19 +date: 2024-08-20 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 3a6df4c0dc180..caaacaa538bfc 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-08-19 +date: 2024-08-20 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 37c7db7456078..e86d88f110d76 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-08-19 +date: 2024-08-20 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 714e94c8249ea..fe2330ce32304 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-08-19 +date: 2024-08-20 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 3400a59774332..6199add59336f 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-08-19 +date: 2024-08-20 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 a5c3839e72d4c..14756696fb730 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-08-19 +date: 2024-08-20 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 7474390c265c7..71caac0e613f0 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-08-19 +date: 2024-08-20 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 4a85189b73bb9..548d965312d3d 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-08-19 +date: 2024-08-20 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 b431a33f303d3..7e8a414917f81 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-08-19 +date: 2024-08-20 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 f491162e2d6a1..84d81b87d0319 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-08-19 +date: 2024-08-20 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 7ed1d439f7455..120f3204ed3b7 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-08-19 +date: 2024-08-20 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 5cb7a752cdd16..5e61ad77c5f1a 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-08-19 +date: 2024-08-20 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 3272f394ef26b..e2f427ebe2737 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-08-19 +date: 2024-08-20 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 1c783fbbdbf69..56455a854c4f9 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 24adec79a163f..5e12e60f599b2 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-08-19 +date: 2024-08-20 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 044072f9df677..76779fcb9fdf3 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-08-19 +date: 2024-08-20 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 f2d4fdc8be494..a24b2348bbf4b 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-08-19 +date: 2024-08-20 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 98a4b104187fa..29b18265aa406 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-08-19 +date: 2024-08-20 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 2671df30fe75d..8ef86662d5f86 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-08-19 +date: 2024-08-20 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 746f3ef19e8d2..190757d28b753 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-08-19 +date: 2024-08-20 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 d2f88be1d1460..d2d57002a4de0 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-08-19 +date: 2024-08-20 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 ef244ec1875f8..578a9998a8611 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-08-19 +date: 2024-08-20 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 d84a959582018..697b7ca57ab28 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-08-19 +date: 2024-08-20 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 7c646a609df85..6bb379ceab154 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-08-19 +date: 2024-08-20 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 c7b787c95e02b..479876c764b5a 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-08-19 +date: 2024-08-20 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 d70daa05090ae..2e29148bfc8a6 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-08-19 +date: 2024-08-20 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 bf6cfe9219e03..b923bdd435706 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-08-19 +date: 2024-08-20 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 2eb28ff1958b6..8442d0e653a03 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-08-19 +date: 2024-08-20 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 78161eec50040..4cf78a3b853b7 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-08-19 +date: 2024-08-20 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 b888be0523781..746d87a8a20b4 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-08-19 +date: 2024-08-20 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 0e12a4074e6dc..1d6888e9be001 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-08-19 +date: 2024-08-20 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 48caca6a38f96..977c10124ccbd 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-08-19 +date: 2024-08-20 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 478fdfeca062f..765345f40a4ff 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-08-19 +date: 2024-08-20 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 2996fc3b5c017..373cc7a112b54 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-08-19 +date: 2024-08-20 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 e38ac2783e972..96af55adc65d7 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-08-19 +date: 2024-08-20 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 e312564688146..91b986b053fd8 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-08-19 +date: 2024-08-20 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 73eb651713daf..4cc161ed59025 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-08-19 +date: 2024-08-20 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 67ebc1f1718ba..6e7ddea26edbf 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-08-19 +date: 2024-08-20 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 db983ac6c3d6b..20f74749f0025 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-08-19 +date: 2024-08-20 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 049074aa05263..3c9895d90a17a 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-08-19 +date: 2024-08-20 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 59ff86868ef0d..f48dd77c553a3 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-08-19 +date: 2024-08-20 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 c97e70835d41c..5a960c14d37cb 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-08-19 +date: 2024-08-20 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 d972e4543b5d3..99013c2bade03 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-08-19 +date: 2024-08-20 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 b36327f830154..091b24e81a8b8 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-08-19 +date: 2024-08-20 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 9188184c88a47..92543bd7fba0f 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-08-19 +date: 2024-08-20 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 d2e8ba659fbfc..04aff151cc733 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-08-19 +date: 2024-08-20 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 f61f8f973b0d9..e99f4aa674398 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-08-19 +date: 2024-08-20 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 02a8ca2ac30d7..a3e275eedae66 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-08-19 +date: 2024-08-20 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 09d971aca7b3f..7dda1a138c464 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-08-19 +date: 2024-08-20 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 6dad818deee2f..ec8c3db14865e 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-08-19 +date: 2024-08-20 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 a39ac6a67da0b..6159be114a89e 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-08-19 +date: 2024-08-20 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 5af1b367428c6..581db11882b50 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-08-19 +date: 2024-08-20 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 141e1b21b9391..4951c2412aa44 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-08-19 +date: 2024-08-20 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 2e6ab04951434..d1a96cabcce85 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-08-19 +date: 2024-08-20 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 7692286913675..2ee5cb6aa1bc6 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-08-19 +date: 2024-08-20 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 8efc0c2e38e93..8d41f69425077 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-08-19 +date: 2024-08-20 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 4a21794709234..9f7b7422ee47d 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-08-19 +date: 2024-08-20 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 73bcac061f83f..af6a82b689af9 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-08-19 +date: 2024-08-20 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 467a02a4159a1..e95ffdf26dc3c 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-08-19 +date: 2024-08-20 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 eafc24d239684..67f0496939b61 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-08-19 +date: 2024-08-20 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 cd3709e009d54..41f4bb48c0aba 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-08-19 +date: 2024-08-20 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 9ec047c06ce24..b2ae6e4f22175 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-08-19 +date: 2024-08-20 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 3224ab5c54ebf..4774c328257ab 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-08-19 +date: 2024-08-20 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 ea71a259db3c5..e90699079d835 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-08-19 +date: 2024-08-20 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 08cbb56e226db..e45468d275001 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-08-19 +date: 2024-08-20 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 4822e6bacc467..3229ee441d1c9 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-08-19 +date: 2024-08-20 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 88e3951a6430e..5121aee2c344f 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-08-19 +date: 2024-08-20 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 8e037ff59150e..5c311d4375a23 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-08-19 +date: 2024-08-20 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 7c5f5ddf7d9a9..e1f55074223af 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-browser-mocks'] --- import kbnCoreSavedObjectsBrowserMocksObj from './kbn_core_saved_objects_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_saved_objects_common.mdx b/api_docs/kbn_core_saved_objects_common.mdx index c55157cf82850..c7f2757db0b6f 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-08-19 +date: 2024-08-20 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 fda478f985a85..948d24cea887f 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-08-19 +date: 2024-08-20 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 082ff04c9e713..91e6b137d5c98 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-08-19 +date: 2024-08-20 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 6b9df6c7b6af8..4a5539cc4a694 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-08-19 +date: 2024-08-20 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 a0ef93043144c..4428108edd4e7 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-08-19 +date: 2024-08-20 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 09c518f5c37c1..b528b1cf4ee34 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-08-19 +date: 2024-08-20 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 35588a1663bfa..935e83084b530 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-08-19 +date: 2024-08-20 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 4970154ce3fd9..32964fd3a993b 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-08-19 +date: 2024-08-20 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 017abe9ab8eb3..c27df6e6cd85a 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-08-19 +date: 2024-08-20 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 6d90ddebfcdc5..19d69222e9027 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-08-19 +date: 2024-08-20 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 5be28e429f069..5ffa5f8f88d6a 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-08-19 +date: 2024-08-20 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 80048b5ef918a..7d0ae11b1a951 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-08-19 +date: 2024-08-20 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 581736fc41a96..f8a796c72b862 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-08-19 +date: 2024-08-20 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 fdb43fd421a1d..50c5d083dc169 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-08-19 +date: 2024-08-20 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 ecc6e3523e458..e1d1c0a5a88bd 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-08-19 +date: 2024-08-20 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 9bc25e6a486f5..5bb278a72108e 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-08-19 +date: 2024-08-20 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 3b15599871633..0fe040744f043 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-08-19 +date: 2024-08-20 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 f8fbf212c3664..f10bf24d5612a 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-08-19 +date: 2024-08-20 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 e05d2ad6e8f3c..fa586b2c26a1f 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-08-19 +date: 2024-08-20 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 cbc63e794ced7..2b4e1113ec958 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-08-19 +date: 2024-08-20 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 8074d8ceec752..6a96658208a99 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-08-19 +date: 2024-08-20 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 abf3acecc7be5..be55a34888c94 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-08-19 +date: 2024-08-20 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 f4f0fce5c2df0..20521deacff68 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-08-19 +date: 2024-08-20 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 79dad7a3417f9..371bec508650c 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-08-19 +date: 2024-08-20 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 1ce34b7f74224..14c8af838c484 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-08-19 +date: 2024-08-20 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 2789d03cebb88..3cdd4479106e5 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-08-19 +date: 2024-08-20 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 187b1a567ad41..97f8ea29d3250 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-08-19 +date: 2024-08-20 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 9d4cd22836968..88aa3540565aa 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-08-19 +date: 2024-08-20 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 f4978f2765cf2..fb9bf1f42e7f6 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-08-19 +date: 2024-08-20 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 911d39a5193dc..336f1f080b4ce 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-08-19 +date: 2024-08-20 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 ff87e61508a8e..adf6da4b0d3b6 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-08-19 +date: 2024-08-20 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 e514a9ce199b9..52eac52db8610 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-08-19 +date: 2024-08-20 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 847ef2f30c0af..a48e28400d8e6 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-08-19 +date: 2024-08-20 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 e3856ee3e3946..0873f30efd588 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-08-19 +date: 2024-08-20 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 6ebd82a20a08d..e2533041d80ca 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-08-19 +date: 2024-08-20 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 65154378a4c71..55efa88246e2c 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-08-19 +date: 2024-08-20 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 d0f57e23ef3f5..90f330ce32798 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-08-19 +date: 2024-08-20 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 aa00fa63aeea1..f73c2bc2cf709 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-08-19 +date: 2024-08-20 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 98fadddcc4fcb..839db17480bc5 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser.mdx b/api_docs/kbn_core_user_profile_browser.mdx index 5b7d829897928..09ff6214c748e 100644 --- a/api_docs/kbn_core_user_profile_browser.mdx +++ b/api_docs/kbn_core_user_profile_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser title: "@kbn/core-user-profile-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser'] --- import kbnCoreUserProfileBrowserObj from './kbn_core_user_profile_browser.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_internal.mdx b/api_docs/kbn_core_user_profile_browser_internal.mdx index 1e5f9ca3a1985..ce216671dc08e 100644 --- a/api_docs/kbn_core_user_profile_browser_internal.mdx +++ b/api_docs/kbn_core_user_profile_browser_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-internal title: "@kbn/core-user-profile-browser-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-internal plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-internal'] --- import kbnCoreUserProfileBrowserInternalObj from './kbn_core_user_profile_browser_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_browser_mocks.mdx b/api_docs/kbn_core_user_profile_browser_mocks.mdx index a3e7432fa6efc..de57e65f874fb 100644 --- a/api_docs/kbn_core_user_profile_browser_mocks.mdx +++ b/api_docs/kbn_core_user_profile_browser_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-browser-mocks title: "@kbn/core-user-profile-browser-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-browser-mocks plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-browser-mocks'] --- import kbnCoreUserProfileBrowserMocksObj from './kbn_core_user_profile_browser_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_common.mdx b/api_docs/kbn_core_user_profile_common.mdx index 55cc6de87a902..3b6b97ee949df 100644 --- a/api_docs/kbn_core_user_profile_common.mdx +++ b/api_docs/kbn_core_user_profile_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-common title: "@kbn/core-user-profile-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-common plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-common'] --- import kbnCoreUserProfileCommonObj from './kbn_core_user_profile_common.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server.mdx b/api_docs/kbn_core_user_profile_server.mdx index 5ca670d5fecfa..e240940652fb6 100644 --- a/api_docs/kbn_core_user_profile_server.mdx +++ b/api_docs/kbn_core_user_profile_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server title: "@kbn/core-user-profile-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server'] --- import kbnCoreUserProfileServerObj from './kbn_core_user_profile_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_internal.mdx b/api_docs/kbn_core_user_profile_server_internal.mdx index d1fa008e51e75..14f8424519973 100644 --- a/api_docs/kbn_core_user_profile_server_internal.mdx +++ b/api_docs/kbn_core_user_profile_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-internal title: "@kbn/core-user-profile-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-internal plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-internal'] --- import kbnCoreUserProfileServerInternalObj from './kbn_core_user_profile_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_profile_server_mocks.mdx b/api_docs/kbn_core_user_profile_server_mocks.mdx index 27895b18e2fa7..873a0ce792823 100644 --- a/api_docs/kbn_core_user_profile_server_mocks.mdx +++ b/api_docs/kbn_core_user_profile_server_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-profile-server-mocks title: "@kbn/core-user-profile-server-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-profile-server-mocks plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-profile-server-mocks'] --- import kbnCoreUserProfileServerMocksObj from './kbn_core_user_profile_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 3236de14632c8..7355f525904ca 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index e363369482060..83b1d36b71f1c 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-08-19 +date: 2024-08-20 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 b1ba0ded689d5..9369783574a27 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-08-19 +date: 2024-08-20 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 3f49cfb480c11..61a0d41943c06 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-08-19 +date: 2024-08-20 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 fcbb8e9513fd2..d927e00fce572 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-08-19 +date: 2024-08-20 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 a0d718e0c5c7a..21f2e2cfb32f8 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-08-19 +date: 2024-08-20 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 2643b0747914b..660de103af006 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-08-19 +date: 2024-08-20 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 ede1db85ed2b3..7a1adcb23bf33 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-08-19 +date: 2024-08-20 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 431238c023acd..2e919dea8cc8d 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-08-19 +date: 2024-08-20 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 c56b8141b4f47..9bb6632bbba85 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-08-19 +date: 2024-08-20 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 08a626ab543a9..20ccf27922954 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-08-19 +date: 2024-08-20 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 b2f2cafe658f6..b7a13556b0d55 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-08-19 +date: 2024-08-20 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 39ec9ef4fd87c..14a5be1cc3099 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-08-19 +date: 2024-08-20 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 342282a76fdad..f11ba3dcb1af6 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-08-19 +date: 2024-08-20 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 4d356dc1a0559..5e82ffcfb768f 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-08-19 +date: 2024-08-20 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 963892628a183..828fd5fec24aa 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-08-19 +date: 2024-08-20 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 54d4022c8caf1..b218b8bc5913c 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-08-19 +date: 2024-08-20 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 6d9120788fb6a..ab86c450bf880 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-08-19 +date: 2024-08-20 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 3afdaca78b350..4a3c3d5553471 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-08-19 +date: 2024-08-20 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 d362d37b1a3e0..b482c6bce9b48 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-08-19 +date: 2024-08-20 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 f588ee0c92ade..232e0681e9a5b 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-08-19 +date: 2024-08-20 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 21b75f7ffbdd9..f52db82bdf439 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-08-19 +date: 2024-08-20 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 14c4a2ff445af..b64384458d146 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-08-19 +date: 2024-08-20 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 e736055bcf509..e5c325fb9ba86 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-08-19 +date: 2024-08-20 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 f8a9c040f32ac..14fec08960bb1 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-08-19 +date: 2024-08-20 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 79ed8e5c2a8d8..0d8e2d7554084 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-08-19 +date: 2024-08-20 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 24bd2872fd8e1..1d34f775d24dd 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-08-19 +date: 2024-08-20 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 48af295d8ca44..a8396d95f5ffd 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-08-19 +date: 2024-08-20 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 e247a5ec69948..290166ee39af0 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-08-19 +date: 2024-08-20 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 924e189385783..8def46909e278 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-08-19 +date: 2024-08-20 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 98086a1171dda..5b28689a78f06 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -560,7 +560,7 @@ "label": "query", "description": [], "signature": [ - "{ readonly eql: string; readonly kueryQuerySyntax: string; readonly luceneQuery: string; readonly luceneQuerySyntax: string; readonly percolate: string; readonly queryDsl: string; readonly queryESQL: string; }" + "{ readonly eql: string; readonly kueryQuerySyntax: string; readonly luceneQuery: string; readonly luceneQuerySyntax: string; readonly percolate: string; readonly queryDsl: string; readonly queryESQL: string; readonly queryESQLExamples: 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 4c97b02b71633..deed5918aed69 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-08-19 +date: 2024-08-20 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 24d5d4dc524e7..7ba560fb67c4c 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-08-19 +date: 2024-08-20 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 c3542e7846229..702cf0c5991c1 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-08-19 +date: 2024-08-20 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 f02b36dc6ffae..6ab556c865719 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-08-19 +date: 2024-08-20 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 3c60111485778..f9a51d8d6b6b4 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-08-19 +date: 2024-08-20 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 ba5061a05291f..08dba20e103a2 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-08-19 +date: 2024-08-20 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 f079e4fb3269e..c1890d76e6a82 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_elastic_assistant_common.mdx b/api_docs/kbn_elastic_assistant_common.mdx index ebce376a0c7cb..18d644a7ec488 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant-common'] --- import kbnElasticAssistantCommonObj from './kbn_elastic_assistant_common.devdocs.json'; diff --git a/api_docs/kbn_entities_schema.mdx b/api_docs/kbn_entities_schema.mdx index fa8decf4d6d4a..19a4d806016f3 100644 --- a/api_docs/kbn_entities_schema.mdx +++ b/api_docs/kbn_entities_schema.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-entities-schema title: "@kbn/entities-schema" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/entities-schema plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/entities-schema'] --- import kbnEntitiesSchemaObj from './kbn_entities_schema.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index d5d8d61376cd8..1bbcae9f142da 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-08-19 +date: 2024-08-20 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 66b0c39acd49c..efc32dfdda924 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-08-19 +date: 2024-08-20 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 aed04792fef3f..aeaf42769f733 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-08-19 +date: 2024-08-20 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 d4916a2fe9b71..c542ebf1281a7 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-08-19 +date: 2024-08-20 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 39b0fb4cdb802..811205e223b79 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-08-19 +date: 2024-08-20 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 86612f1cbe7dc..7eb45a549b888 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_esql_ast.mdx b/api_docs/kbn_esql_ast.mdx index 5d2105cc63162..2cb58fde397d3 100644 --- a/api_docs/kbn_esql_ast.mdx +++ b/api_docs/kbn_esql_ast.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-ast title: "@kbn/esql-ast" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-ast plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-ast'] --- import kbnEsqlAstObj from './kbn_esql_ast.devdocs.json'; diff --git a/api_docs/kbn_esql_utils.mdx b/api_docs/kbn_esql_utils.mdx index 5fb0ceebdba3e..690f130f3d787 100644 --- a/api_docs/kbn_esql_utils.mdx +++ b/api_docs/kbn_esql_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-utils title: "@kbn/esql-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-utils plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-utils'] --- import kbnEsqlUtilsObj from './kbn_esql_utils.devdocs.json'; diff --git a/api_docs/kbn_esql_validation_autocomplete.devdocs.json b/api_docs/kbn_esql_validation_autocomplete.devdocs.json index bcd6f31d966a7..ae6eee29d9988 100644 --- a/api_docs/kbn_esql_validation_autocomplete.devdocs.json +++ b/api_docs/kbn_esql_validation_autocomplete.devdocs.json @@ -3630,6 +3630,22 @@ "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/esql-validation-autocomplete", + "id": "def-common.SuggestionRawDefinition.rangeToReplace", + "type": "Object", + "tags": [], + "label": "rangeToReplace", + "description": [ + "\nThe range that should be replaced when the suggestion is applied" + ], + "signature": [ + "{ start: number; end: number; } | undefined" + ], + "path": "packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_esql_validation_autocomplete.mdx b/api_docs/kbn_esql_validation_autocomplete.mdx index 8f197cf44b006..1e8ad1f39b325 100644 --- a/api_docs/kbn_esql_validation_autocomplete.mdx +++ b/api_docs/kbn_esql_validation_autocomplete.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-esql-validation-autocomplete title: "@kbn/esql-validation-autocomplete" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/esql-validation-autocomplete plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/esql-validation-autocomplete'] --- import kbnEsqlValidationAutocompleteObj from './kbn_esql_validation_autocomplete.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 194 | 0 | 183 | 10 | +| 195 | 0 | 183 | 10 | ## Common diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 5c8cb4e8975af..1cd67403e81b0 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-08-19 +date: 2024-08-20 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 ce547bce445f9..16b335763de9e 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-08-19 +date: 2024-08-20 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 1e821e9a407f2..c47f2c71797ef 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-08-19 +date: 2024-08-20 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 f7667f7525350..5e616adfa5189 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-08-19 +date: 2024-08-20 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 2f12dd07958f0..8f9adbaea2166 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-08-19 +date: 2024-08-20 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 da31318b3239b..7d0c673893ca9 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-08-19 +date: 2024-08-20 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 d27751227678b..57852881ea34c 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-08-19 +date: 2024-08-20 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 5af3d0bcecd9f..e4aa2032ea3c3 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-08-19 +date: 2024-08-20 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 9fb5bca48b5d6..0fb8795bea87c 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-08-19 +date: 2024-08-20 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 19d991e1576f6..d10a5e0a9ab48 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-08-19 +date: 2024-08-20 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 556534f39b728..fcb9a14eef308 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-08-19 +date: 2024-08-20 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 35269f657a1a4..c9f5aae7305a2 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_grid_layout.mdx b/api_docs/kbn_grid_layout.mdx index 1e23862b27648..19ad32027b8e6 100644 --- a/api_docs/kbn_grid_layout.mdx +++ b/api_docs/kbn_grid_layout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grid-layout title: "@kbn/grid-layout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grid-layout plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grid-layout'] --- import kbnGridLayoutObj from './kbn_grid_layout.devdocs.json'; diff --git a/api_docs/kbn_grouping.mdx b/api_docs/kbn_grouping.mdx index 4e163854012ff..1eff13fc54490 100644 --- a/api_docs/kbn_grouping.mdx +++ b/api_docs/kbn_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-grouping title: "@kbn/grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/grouping plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/grouping'] --- import kbnGroupingObj from './kbn_grouping.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index c96edbd5e2137..f0ad8215c40cd 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-08-19 +date: 2024-08-20 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 0cf85044d056c..138079d35598a 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-08-19 +date: 2024-08-20 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 6aa3e37aa12d5..20d5a290ee0ea 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-08-19 +date: 2024-08-20 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 b825f10a8d481..2b38c977dcb6c 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-08-19 +date: 2024-08-20 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 1871c3df94425..100da203372fd 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-08-19 +date: 2024-08-20 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 bdd327f2c0f66..b6d3fbfcf0082 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-08-19 +date: 2024-08-20 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 85bc5c5c3ce11..9948a9e26a9de 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-08-19 +date: 2024-08-20 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 e8d96939c7bb4..dbca58f069069 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-08-19 +date: 2024-08-20 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 a18426f730d90..e0d620b78d2eb 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_index_management.mdx b/api_docs/kbn_index_management.mdx index ab4b661c4f468..6759eb39263e6 100644 --- a/api_docs/kbn_index_management.mdx +++ b/api_docs/kbn_index_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-index-management title: "@kbn/index-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/index-management plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/index-management'] --- import kbnIndexManagementObj from './kbn_index_management.devdocs.json'; diff --git a/api_docs/kbn_inference_integration_flyout.mdx b/api_docs/kbn_inference_integration_flyout.mdx index dcfa0661bdbe7..10c87dc04a508 100644 --- a/api_docs/kbn_inference_integration_flyout.mdx +++ b/api_docs/kbn_inference_integration_flyout.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-inference_integration_flyout title: "@kbn/inference_integration_flyout" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/inference_integration_flyout plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/inference_integration_flyout'] --- import kbnInferenceIntegrationFlyoutObj from './kbn_inference_integration_flyout.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 29e373730e701..8a5f4dd19657e 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-08-19 +date: 2024-08-20 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 bccbbc9a5bed0..60f4af181b5df 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_investigation_shared.devdocs.json b/api_docs/kbn_investigation_shared.devdocs.json index e735dbaca9c86..53f0e786dfdcc 100644 --- a/api_docs/kbn_investigation_shared.devdocs.json +++ b/api_docs/kbn_investigation_shared.devdocs.json @@ -112,6 +112,21 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.DeleteInvestigationNoteParams", + "type": "Type", + "tags": [], + "label": "DeleteInvestigationNoteParams", + "description": [], + "signature": [ + "{ id: string; noteId: string; }" + ], + "path": "packages/kbn-investigation-shared/src/schema/delete_note.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/investigation-shared", "id": "def-common.DeleteInvestigationParams", @@ -201,6 +216,21 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.InvestigationNoteResponse", + "type": "Type", + "tags": [], + "label": "InvestigationNoteResponse", + "description": [], + "signature": [ + "{ id: string; content: string; createdAt: number; createdBy: string; }" + ], + "path": "packages/kbn-investigation-shared/src/schema/investigation_note.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ], "objects": [ @@ -394,6 +424,28 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.deleteInvestigationNoteParamsSchema", + "type": "Object", + "tags": [], + "label": "deleteInvestigationNoteParamsSchema", + "description": [], + "signature": [ + "TypeC", + "<{ path: ", + "TypeC", + "<{ id: ", + "StringC", + "; noteId: ", + "StringC", + "; }>; }>" + ], + "path": "packages/kbn-investigation-shared/src/schema/delete_note.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/investigation-shared", "id": "def-common.deleteInvestigationParamsSchema", @@ -637,6 +689,30 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/investigation-shared", + "id": "def-common.investigationNoteResponseSchema", + "type": "Object", + "tags": [], + "label": "investigationNoteResponseSchema", + "description": [], + "signature": [ + "TypeC", + "<{ id: ", + "StringC", + "; content: ", + "StringC", + "; createdAt: ", + "NumberC", + "; createdBy: ", + "StringC", + "; }>" + ], + "path": "packages/kbn-investigation-shared/src/schema/investigation_note.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false } ] } diff --git a/api_docs/kbn_investigation_shared.mdx b/api_docs/kbn_investigation_shared.mdx index 8a4b5b6b2f826..97ede8b4b507f 100644 --- a/api_docs/kbn_investigation_shared.mdx +++ b/api_docs/kbn_investigation_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-investigation-shared title: "@kbn/investigation-shared" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/investigation-shared plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/investigation-shared'] --- import kbnInvestigationSharedObj from './kbn_investigation_shared.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 | |-------------------|-----------|------------------------|-----------------| -| 25 | 0 | 25 | 0 | +| 29 | 0 | 29 | 0 | ## Common diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 2c08669d3c049..13a038c9ee58a 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_ipynb.mdx b/api_docs/kbn_ipynb.mdx index a151f7455c7f3..72c84f952fd2e 100644 --- a/api_docs/kbn_ipynb.mdx +++ b/api_docs/kbn_ipynb.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ipynb title: "@kbn/ipynb" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ipynb plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ipynb'] --- import kbnIpynbObj from './kbn_ipynb.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index e5ab87cc6b1b7..2af2684a10427 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-08-19 +date: 2024-08-20 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 65a85750e4da3..42328acd34f0f 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-08-19 +date: 2024-08-20 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 cfbe9b540148f..84df9d31ddd12 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_json_schemas.mdx b/api_docs/kbn_json_schemas.mdx index 965065c06cf83..287ecf1dad2f6 100644 --- a/api_docs/kbn_json_schemas.mdx +++ b/api_docs/kbn_json_schemas.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-json-schemas title: "@kbn/json-schemas" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/json-schemas plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-schemas'] --- import kbnJsonSchemasObj from './kbn_json_schemas.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index 4ccd15f227e0f..9ed7ba9efc2f0 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-08-19 +date: 2024-08-20 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 648f515b009a6..35e45ea012be2 100644 --- a/api_docs/kbn_language_documentation_popover.mdx +++ b/api_docs/kbn_language_documentation_popover.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-language-documentation-popover title: "@kbn/language-documentation-popover" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/language-documentation-popover plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_lens_embeddable_utils.mdx b/api_docs/kbn_lens_embeddable_utils.mdx index 376eab3d3c792..7f3a2a893f93c 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-08-19 +date: 2024-08-20 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 f86e13e2f2d24..605da6cbe6181 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-08-19 +date: 2024-08-20 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 fc5b40fbd0a24..caf6d99558287 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-08-19 +date: 2024-08-20 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 0c5033ea929f6..bd8ece13ce61f 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-08-19 +date: 2024-08-20 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 a8a75eddecc3c..0cf0d0cb49f04 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-08-19 +date: 2024-08-20 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 48c5befadd2ea..50f2a017d87de 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-08-19 +date: 2024-08-20 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 9e6eeb970fd97..bd76e44f5ebd2 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-08-19 +date: 2024-08-20 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 9731e71979d97..e6c4c6dda98bc 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-08-19 +date: 2024-08-20 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 cbd57b07ab802..17550b84878ca 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-08-19 +date: 2024-08-20 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 f13a13f3819f2..ee7c9aacc52c4 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-08-19 +date: 2024-08-20 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 44ed3e9a98876..bc274020752cd 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-08-19 +date: 2024-08-20 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 031408f98abe8..1d46a784cee98 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-08-19 +date: 2024-08-20 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 5f3777a9abda3..a9f309b1c987a 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-field-definition'] --- import kbnManagementSettingsFieldDefinitionObj from './kbn_management_settings_field_definition.devdocs.json'; diff --git a/api_docs/kbn_management_settings_ids.mdx b/api_docs/kbn_management_settings_ids.mdx index 708727e65cb65..79e7baeef8b75 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/management-settings-ids'] --- import kbnManagementSettingsIdsObj from './kbn_management_settings_ids.devdocs.json'; diff --git a/api_docs/kbn_management_settings_section_registry.mdx b/api_docs/kbn_management_settings_section_registry.mdx index e8c9de1e630ca..ade560aad699e 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-08-19 +date: 2024-08-20 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 4187460c85ca6..76a5b8ab4a24a 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-08-19 +date: 2024-08-20 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 d35be3c2b0dda..52b2a3efe4147 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-08-19 +date: 2024-08-20 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 d2ae44e07679b..0cbe3d538fc37 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-08-19 +date: 2024-08-20 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 0abf144cbf376..147cbc75b1faf 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-08-19 +date: 2024-08-20 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 ffcc240a986ef..d17d4cf0c9ba9 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-08-19 +date: 2024-08-20 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 cc23189cfa646..3863e02f7c2e0 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-08-19 +date: 2024-08-20 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 6a835af3e8e41..67a6b6871d1b5 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-08-19 +date: 2024-08-20 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 098f7cfbb6b57..93b3198dec8e7 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-08-19 +date: 2024-08-20 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 802c7497eae2b..af81bdee4dc21 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-08-19 +date: 2024-08-20 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 5c3e4965e8385..315d487742bff 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-08-19 +date: 2024-08-20 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 cc830148313c7..2d65c288f9571 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-08-19 +date: 2024-08-20 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 b58ddac1fd709..745f913290446 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-08-19 +date: 2024-08-20 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 b85e3eaabd332..98d38b8b38ef5 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-08-19 +date: 2024-08-20 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 00a9fb895399f..552ccf250772b 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-08-19 +date: 2024-08-20 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 a263baf5f6681..84511d3e9cf76 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-08-19 +date: 2024-08-20 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 36566bd97d5e4..60bde14296ad6 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-08-19 +date: 2024-08-20 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 ef5c0ecda14b8..d9b37362d3605 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-08-19 +date: 2024-08-20 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 fa0e7f572f2a7..60ed80e1c4fc5 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-08-19 +date: 2024-08-20 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 4b7058149ccf7..36973750a50d5 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-08-19 +date: 2024-08-20 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 d54a2e73b050a..cd5c74e7d13e7 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-08-19 +date: 2024-08-20 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 29c1e400566a6..6b3882a6941f8 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-08-19 +date: 2024-08-20 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 8ace07659c3c5..1fea6c18e31c4 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-08-19 +date: 2024-08-20 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 bf470cec857e0..b7d94284a5cac 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-08-19 +date: 2024-08-20 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 f7e8fdf12abb6..f3815194e0436 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-08-19 +date: 2024-08-20 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 472b4450810ad..baf4629bf30cf 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-08-19 +date: 2024-08-20 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 fa4940b32dd50..5942118cab2df 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-08-19 +date: 2024-08-20 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 6c84eaa643f42..8ed30f450ef04 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-08-19 +date: 2024-08-20 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 18c502f320d6f..c31a9ce287353 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-08-19 +date: 2024-08-20 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 40a04ae07d38b..bee25e63cf7b3 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-08-19 +date: 2024-08-20 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 1c570ee00c9ad..d6ce429d62c50 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-08-19 +date: 2024-08-20 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 a1eac08f47d7b..29d0418e6b113 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-08-19 +date: 2024-08-20 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 149d990473fc0..aab560ea26f15 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/mock-idp-utils'] --- import kbnMockIdpUtilsObj from './kbn_mock_idp_utils.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 61c6dbd63aff9..3234794df6e1c 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/monaco'] --- import kbnMonacoObj from './kbn_monaco.devdocs.json'; diff --git a/api_docs/kbn_object_versioning.mdx b/api_docs/kbn_object_versioning.mdx index 1bdc529a287f5..5d9352e93d69a 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-08-19 +date: 2024-08-20 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 53f91d1e44f06..4d24c74ed477a 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-08-19 +date: 2024-08-20 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_rule_utils.mdx b/api_docs/kbn_observability_alerting_rule_utils.mdx index e136a89812f29..56b40b9a73824 100644 --- a/api_docs/kbn_observability_alerting_rule_utils.mdx +++ b/api_docs/kbn_observability_alerting_rule_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-observability-alerting-rule-utils title: "@kbn/observability-alerting-rule-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/observability-alerting-rule-utils plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alerting-rule-utils'] --- import kbnObservabilityAlertingRuleUtilsObj from './kbn_observability_alerting_rule_utils.devdocs.json'; diff --git a/api_docs/kbn_observability_alerting_test_data.mdx b/api_docs/kbn_observability_alerting_test_data.mdx index 09cb166315c38..215e76abbf4cc 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-08-19 +date: 2024-08-20 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 f893a3074fa8f..a476bd22c4b75 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-08-19 +date: 2024-08-20 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 7d2970bd2555a..8ce469b9588b3 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-08-19 +date: 2024-08-20 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 32b193915ca3c..2618e6f5c0364 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-08-19 +date: 2024-08-20 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 608bf80f3c923..08e76d88d0aac 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-08-19 +date: 2024-08-20 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 46a5eb81718a0..af5b58e0ce94a 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-08-19 +date: 2024-08-20 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 bf228cd431fbe..a8014d5506532 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/osquery-io-ts-types'] --- import kbnOsqueryIoTsTypesObj from './kbn_osquery_io_ts_types.devdocs.json'; diff --git a/api_docs/kbn_panel_loader.mdx b/api_docs/kbn_panel_loader.mdx index 25904b2d8abe9..d628bcbbb63b6 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/panel-loader'] --- import kbnPanelLoaderObj from './kbn_panel_loader.devdocs.json'; diff --git a/api_docs/kbn_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 69795d80b9819..726b97f9cec46 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-08-19 +date: 2024-08-20 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 3b25c8c8daf39..79c840956beb6 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-08-19 +date: 2024-08-20 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 f2ade00f9f621..2f6de3456cc0f 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-08-19 +date: 2024-08-20 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 bf4159c725612..e8ae94ba5143a 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_presentation_containers.mdx b/api_docs/kbn_presentation_containers.mdx index b545073de4cb5..b5acdb8ea1290 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-containers'] --- import kbnPresentationContainersObj from './kbn_presentation_containers.devdocs.json'; diff --git a/api_docs/kbn_presentation_publishing.mdx b/api_docs/kbn_presentation_publishing.mdx index 908ce583813ee..17e21a356aa7a 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/presentation-publishing'] --- import kbnPresentationPublishingObj from './kbn_presentation_publishing.devdocs.json'; diff --git a/api_docs/kbn_profiling_utils.mdx b/api_docs/kbn_profiling_utils.mdx index 8440cfa071dd1..242dd9f33cb70 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-08-19 +date: 2024-08-20 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 1ff024a3e2686..fbcb9a63161a1 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-08-19 +date: 2024-08-20 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 aa5819ad6a2f2..1208cc1ea1949 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_hooks.mdx b/api_docs/kbn_react_hooks.mdx index bac3a3c1cc46f..bb9cfdf71049d 100644 --- a/api_docs/kbn_react_hooks.mdx +++ b/api_docs/kbn_react_hooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-react-hooks title: "@kbn/react-hooks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/react-hooks plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-hooks'] --- import kbnReactHooksObj from './kbn_react_hooks.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index ee0c30b3650cf..b6a9f29071848 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-08-19 +date: 2024-08-20 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 424f0eaedc23a..8e736a8982249 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-08-19 +date: 2024-08-20 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 2d9128dce409e..7c6fd689a7e66 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-08-19 +date: 2024-08-20 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 691ceafbbcede..e3590be7b99c5 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-08-19 +date: 2024-08-20 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 1271fd2156bfe..c47c6e585b905 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-08-19 +date: 2024-08-20 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 e05a2ad5a275c..c03f8df08a9d3 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_recently_accessed.mdx b/api_docs/kbn_recently_accessed.mdx index b2d3d6cff1803..092ab663c58dd 100644 --- a/api_docs/kbn_recently_accessed.mdx +++ b/api_docs/kbn_recently_accessed.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-recently-accessed title: "@kbn/recently-accessed" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/recently-accessed plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/recently-accessed'] --- import kbnRecentlyAccessedObj from './kbn_recently_accessed.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index 564913fda8ead..1b006e5470aa1 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-08-19 +date: 2024-08-20 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 eb613c3f2baad..875119917e06d 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-08-19 +date: 2024-08-20 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 53da6f43268a7..1876940a32cf8 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-08-19 +date: 2024-08-20 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 5c8dd92787cf1..879277f6c8932 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-08-19 +date: 2024-08-20 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 19468da589b7b..ac0a67de6e3fd 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_reporting_csv_share_panel.mdx b/api_docs/kbn_reporting_csv_share_panel.mdx index ec5605628ca08..b4bc9f195043d 100644 --- a/api_docs/kbn_reporting_csv_share_panel.mdx +++ b/api_docs/kbn_reporting_csv_share_panel.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-reporting-csv-share-panel title: "@kbn/reporting-csv-share-panel" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/reporting-csv-share-panel plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-csv-share-panel'] --- import kbnReportingCsvSharePanelObj from './kbn_reporting_csv_share_panel.devdocs.json'; diff --git a/api_docs/kbn_reporting_export_types_csv.mdx b/api_docs/kbn_reporting_export_types_csv.mdx index b265b6d3d9b79..20175fa8deac9 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-08-19 +date: 2024-08-20 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 5f54e9c898ad1..eab48599cb032 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-08-19 +date: 2024-08-20 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 951b4ee1f3840..6902b9829c6f6 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-08-19 +date: 2024-08-20 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 cd4dc83f065cb..3af002971d707 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-08-19 +date: 2024-08-20 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 5ca00c04885ad..3950e6527b11e 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-08-19 +date: 2024-08-20 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 4724fa32f9a9d..86415d7a158be 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-08-19 +date: 2024-08-20 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 885283cac6650..d9b5ecf6932a7 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-08-19 +date: 2024-08-20 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 5c52486cbb945..adc83b097d5eb 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-08-19 +date: 2024-08-20 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 fa02decdb9b03..3176aee1bd63b 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-08-19 +date: 2024-08-20 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 1c8be6d85f051..fe457e65b50e2 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/resizable-layout'] --- import kbnResizableLayoutObj from './kbn_resizable_layout.devdocs.json'; diff --git a/api_docs/kbn_response_ops_feature_flag_service.mdx b/api_docs/kbn_response_ops_feature_flag_service.mdx index 12b557893ec0a..a136d39dea9f2 100644 --- a/api_docs/kbn_response_ops_feature_flag_service.mdx +++ b/api_docs/kbn_response_ops_feature_flag_service.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-response-ops-feature-flag-service title: "@kbn/response-ops-feature-flag-service" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/response-ops-feature-flag-service plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/response-ops-feature-flag-service'] --- import kbnResponseOpsFeatureFlagServiceObj from './kbn_response_ops_feature_flag_service.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index 14a353b0b0861..eadf66a2e8f31 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rollup.mdx b/api_docs/kbn_rollup.mdx index f173ff52d23b8..c5a97738ab4fa 100644 --- a/api_docs/kbn_rollup.mdx +++ b/api_docs/kbn_rollup.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-rollup title: "@kbn/rollup" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/rollup plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rollup'] --- import kbnRollupObj from './kbn_rollup.devdocs.json'; diff --git a/api_docs/kbn_router_to_openapispec.mdx b/api_docs/kbn_router_to_openapispec.mdx index 27028cc749c74..d659c04dd5ed0 100644 --- a/api_docs/kbn_router_to_openapispec.mdx +++ b/api_docs/kbn_router_to_openapispec.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-router-to-openapispec title: "@kbn/router-to-openapispec" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/router-to-openapispec plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/router-to-openapispec'] --- import kbnRouterToOpenapispecObj from './kbn_router_to_openapispec.devdocs.json'; diff --git a/api_docs/kbn_router_utils.mdx b/api_docs/kbn_router_utils.mdx index 657344001d438..6504c95c6dfcd 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-08-19 +date: 2024-08-20 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 f1ba18306d34c..15f4742462008 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-08-19 +date: 2024-08-20 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 be7eb8f4c959f..41eb192367a76 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-08-19 +date: 2024-08-20 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 79cc2c3dd19d9..a2cb9c3f014a2 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-08-19 +date: 2024-08-20 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 5b2d79a4128e5..fd05636e18d40 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-08-19 +date: 2024-08-20 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.mdx b/api_docs/kbn_search_connectors.mdx index a8ad02f21dbf6..4abfdc9b82f98 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-connectors'] --- import kbnSearchConnectorsObj from './kbn_search_connectors.devdocs.json'; diff --git a/api_docs/kbn_search_errors.mdx b/api_docs/kbn_search_errors.mdx index 4b514815b0440..f098d321973ff 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-08-19 +date: 2024-08-20 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 ff5167e02d39b..64ce31d979d0e 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-08-19 +date: 2024-08-20 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 90228e2180b65..c8f3dfb030f43 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-response-warnings'] --- import kbnSearchResponseWarningsObj from './kbn_search_response_warnings.devdocs.json'; diff --git a/api_docs/kbn_search_types.mdx b/api_docs/kbn_search_types.mdx index 95d5b9c7701bf..32ec06e901c39 100644 --- a/api_docs/kbn_search_types.mdx +++ b/api_docs/kbn_search_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-search-types title: "@kbn/search-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/search-types plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/search-types'] --- import kbnSearchTypesObj from './kbn_search_types.devdocs.json'; diff --git a/api_docs/kbn_security_api_key_management.mdx b/api_docs/kbn_security_api_key_management.mdx index a430a5349064b..d34bc8e4a786f 100644 --- a/api_docs/kbn_security_api_key_management.mdx +++ b/api_docs/kbn_security_api_key_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-api-key-management title: "@kbn/security-api-key-management" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-api-key-management plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-api-key-management'] --- import kbnSecurityApiKeyManagementObj from './kbn_security_api_key_management.devdocs.json'; diff --git a/api_docs/kbn_security_form_components.mdx b/api_docs/kbn_security_form_components.mdx index 8de67619a8b88..f4b5d5ce94f66 100644 --- a/api_docs/kbn_security_form_components.mdx +++ b/api_docs/kbn_security_form_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-form-components title: "@kbn/security-form-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-form-components plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-form-components'] --- import kbnSecurityFormComponentsObj from './kbn_security_form_components.devdocs.json'; diff --git a/api_docs/kbn_security_hardening.mdx b/api_docs/kbn_security_hardening.mdx index 935858c81f123..ff4a5de5adf2a 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-08-19 +date: 2024-08-20 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 6b47924c3f790..372e069ee96af 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-08-19 +date: 2024-08-20 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.devdocs.json b/api_docs/kbn_security_plugin_types_public.devdocs.json index 5cf42e58fba57..03955b2029ad2 100644 --- a/api_docs/kbn_security_plugin_types_public.devdocs.json +++ b/api_docs/kbn_security_plugin_types_public.devdocs.json @@ -639,10 +639,6 @@ "plugin": "cloudLinks", "path": "x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/maybe_add_cloud_links.ts" }, - { - "plugin": "observabilityAIAssistantApp", - "path": "x-pack/plugins/observability_solution/observability_ai_assistant_app/public/hooks/use_current_user.ts" - }, { "plugin": "cases", "path": "x-pack/plugins/cases/public/common/lib/kibana/hooks.ts" diff --git a/api_docs/kbn_security_plugin_types_public.mdx b/api_docs/kbn_security_plugin_types_public.mdx index 6afdce0593333..33a50d5c359b1 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-08-19 +date: 2024-08-20 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 d886e282ddeaa..a7c5ea2dd6a58 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-08-19 +date: 2024-08-20 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_distribution_bar.mdx b/api_docs/kbn_security_solution_distribution_bar.mdx index 494ccb107f05e..40292808cb45c 100644 --- a/api_docs/kbn_security_solution_distribution_bar.mdx +++ b/api_docs/kbn_security_solution_distribution_bar.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-security-solution-distribution-bar title: "@kbn/security-solution-distribution-bar" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/security-solution-distribution-bar plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/security-solution-distribution-bar'] --- import kbnSecuritySolutionDistributionBarObj from './kbn_security_solution_distribution_bar.devdocs.json'; diff --git a/api_docs/kbn_security_solution_features.mdx b/api_docs/kbn_security_solution_features.mdx index 8978141fb255d..a9be9bfa70d9a 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-08-19 +date: 2024-08-20 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 c7929a125847c..ccd4bd273dac9 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-08-19 +date: 2024-08-20 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 4c2ea0e0e9e12..0c3a135feb681 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-08-19 +date: 2024-08-20 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 77dae23648e68..6da4161cd3326 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-08-19 +date: 2024-08-20 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 806794164bb0f..deaf916987175 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-08-19 +date: 2024-08-20 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 5e698850ebc6a..0a04bec576508 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-08-19 +date: 2024-08-20 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 46aeeb49502a3..010f4f2c0e963 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-08-19 +date: 2024-08-20 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 36d5bb2c708c0..29323a2d79003 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-08-19 +date: 2024-08-20 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 d396b46f606d9..e795062eb154a 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-08-19 +date: 2024-08-20 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_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index e21c32d9191e1..a78db5fcf45f8 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-08-19 +date: 2024-08-20 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 bdd2ed2347a90..2465bee2cc9e6 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-08-19 +date: 2024-08-20 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 fcdeda11fc053..9b6ff1f37ffca 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-08-19 +date: 2024-08-20 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 66bfe1ee47ef0..b7833def355e9 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-08-19 +date: 2024-08-20 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 f0f30a19e14f3..9ed0dd7af2f89 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-08-19 +date: 2024-08-20 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 ebe75c59ba06d..7a01989df784d 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-08-19 +date: 2024-08-20 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 4605b4ee16d8c..79297d2cb2f53 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-08-19 +date: 2024-08-20 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 b888cf19f0406..43840caeb67e5 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-08-19 +date: 2024-08-20 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 4267b14faa5ba..7e53fbda96f2b 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-08-19 +date: 2024-08-20 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 59574ed8b8430..373d013fbb237 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-08-19 +date: 2024-08-20 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 9b3124f421231..7ca03ec794124 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-08-19 +date: 2024-08-20 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 7b80945209513..592d9ffcbe1f3 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-08-19 +date: 2024-08-20 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 ee5d60fbef30c..899546c9aa7f4 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-08-19 +date: 2024-08-20 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 65cc4f6e3e771..96b5fff63d97f 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_client.mdx b/api_docs/kbn_server_route_repository_client.mdx index 8baee859b1d84..296d4fe0ba3f8 100644 --- a/api_docs/kbn_server_route_repository_client.mdx +++ b/api_docs/kbn_server_route_repository_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-client title: "@kbn/server-route-repository-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-client plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-client'] --- import kbnServerRouteRepositoryClientObj from './kbn_server_route_repository_client.devdocs.json'; diff --git a/api_docs/kbn_server_route_repository_utils.mdx b/api_docs/kbn_server_route_repository_utils.mdx index cabebf1a9261e..431c9c9da92c7 100644 --- a/api_docs/kbn_server_route_repository_utils.mdx +++ b/api_docs/kbn_server_route_repository_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-server-route-repository-utils title: "@kbn/server-route-repository-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/server-route-repository-utils plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository-utils'] --- import kbnServerRouteRepositoryUtilsObj from './kbn_server_route_repository_utils.devdocs.json'; diff --git a/api_docs/kbn_serverless_common_settings.mdx b/api_docs/kbn_serverless_common_settings.mdx index 69e34e05d5146..ea17a26ea8edb 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-08-19 +date: 2024-08-20 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 ae2023e5337f8..75e9cf3d50f74 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-08-19 +date: 2024-08-20 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 d40f3a36a9cad..0d163e7452436 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-08-19 +date: 2024-08-20 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 6ba8efeeb1291..b3013018e77a6 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-08-19 +date: 2024-08-20 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 37c4ef6a273ac..09addc300bcdf 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-08-19 +date: 2024-08-20 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 0ae8562f09257..a755c4b0c432d 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-08-19 +date: 2024-08-20 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 bbb8316e1647b..1f8bd3abbc1f2 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-08-19 +date: 2024-08-20 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 bdfeee7eec1a9..1495e2181a677 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-08-19 +date: 2024-08-20 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 369d4188092d0..0b976f0353adb 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-08-19 +date: 2024-08-20 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 47fa9b630af7c..509d16dacb9b9 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-08-19 +date: 2024-08-20 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 d75724a6bc4ec..d429ec48506c3 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-08-19 +date: 2024-08-20 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 7e567b1d9ae0b..44cdf330b54bc 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-08-19 +date: 2024-08-20 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 49850e7e48ff0..7932572e90f7b 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-08-19 +date: 2024-08-20 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 eaec9b70328b3..7fe2334471dbe 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-08-19 +date: 2024-08-20 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 86aa6310a075a..5825101e9bdc5 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-08-19 +date: 2024-08-20 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 5cd1919a57caf..4a1289646d150 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-08-19 +date: 2024-08-20 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 6690f0a93e779..88b9f8ec0e41f 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-08-19 +date: 2024-08-20 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 87c2d32a28822..9f09e689fd2d9 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-08-19 +date: 2024-08-20 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 abe2774715192..285372b31639b 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-08-19 +date: 2024-08-20 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 94b4f5e2190f7..2cc75898acf9e 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-08-19 +date: 2024-08-20 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 0fdab240548b7..63682b98c7ddd 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-08-19 +date: 2024-08-20 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 2620135e6155a..22f463a61343c 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-08-19 +date: 2024-08-20 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 7ea70eb070f37..8a09edfe82e2f 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-08-19 +date: 2024-08-20 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 29cd68a4646f6..4fbaeb3e886e7 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-08-19 +date: 2024-08-20 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 d2441a5e07264..38dcf4518638c 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-08-19 +date: 2024-08-20 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 1ef74a2d261c6..ee5e8492a248e 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-08-19 +date: 2024-08-20 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 f9c1cfa5fe2c2..7bc1d13051622 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-08-19 +date: 2024-08-20 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 af914343e31eb..2bea7080e9690 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-08-19 +date: 2024-08-20 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 034fbf2304258..9038eced980ab 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-08-19 +date: 2024-08-20 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 77a5231d7cad6..63cd586733907 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-08-19 +date: 2024-08-20 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 7b9304c077213..bd7cefc5aedf1 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-08-19 +date: 2024-08-20 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 94a0383b9c6ed..ac5ca2af23d94 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-08-19 +date: 2024-08-20 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 0d025f345ed12..80a1a768be902 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-08-19 +date: 2024-08-20 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 14ab9ae8f7b6a..a96dc32569507 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-08-19 +date: 2024-08-20 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 5f3c6fbdbef11..5b8da29f802b0 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-08-19 +date: 2024-08-20 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 2f36bebc4aaba..17ff14731733b 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-08-19 +date: 2024-08-20 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 4f8754572100e..ae3c622ac9617 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-08-19 +date: 2024-08-20 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 1434412488d48..b53bb844bb187 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-08-19 +date: 2024-08-20 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 193afd2c78280..ebb7487d41970 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-08-19 +date: 2024-08-20 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 1004644806d9d..aef524a05b45f 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-08-19 +date: 2024-08-20 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 ca1d25356346a..277c022986cc8 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-08-19 +date: 2024-08-20 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 ac065946645ae..de4f1d6cd2c31 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-08-19 +date: 2024-08-20 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 c4e454a958ac1..a59213a150360 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-08-19 +date: 2024-08-20 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 cb78a097e24fe..a6d7f50f9008f 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_tabbed_modal.mdx b/api_docs/kbn_shared_ux_tabbed_modal.mdx index 8200a9f9009aa..cdaf51e87801e 100644 --- a/api_docs/kbn_shared_ux_tabbed_modal.mdx +++ b/api_docs/kbn_shared_ux_tabbed_modal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-tabbed-modal title: "@kbn/shared-ux-tabbed-modal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-tabbed-modal plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-tabbed-modal'] --- import kbnSharedUxTabbedModalObj from './kbn_shared_ux_tabbed_modal.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index 125bc6ce7d183..6289e1430f57e 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-08-19 +date: 2024-08-20 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 985bde8b24ecc..5986ac17109f6 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/slo-schema'] --- import kbnSloSchemaObj from './kbn_slo_schema.devdocs.json'; diff --git a/api_docs/kbn_some_dev_log.mdx b/api_docs/kbn_some_dev_log.mdx index bc84fa8505f31..ab3349c164475 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-08-19 +date: 2024-08-20 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 302170b62dcbc..efb90c73095ed 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-08-19 +date: 2024-08-20 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 fe9be6e163212..5fdef3a7c6a2b 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-08-19 +date: 2024-08-20 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 49e17444da686..04ddbca850c22 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-08-19 +date: 2024-08-20 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 e19d5c29f4850..66cbf60490828 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_synthetics_e2e.mdx b/api_docs/kbn_synthetics_e2e.mdx index 084ce8532617d..94d10cab0f5a0 100644 --- a/api_docs/kbn_synthetics_e2e.mdx +++ b/api_docs/kbn_synthetics_e2e.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-e2e title: "@kbn/synthetics-e2e" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-e2e plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-e2e'] --- import kbnSyntheticsE2eObj from './kbn_synthetics_e2e.devdocs.json'; diff --git a/api_docs/kbn_synthetics_private_location.mdx b/api_docs/kbn_synthetics_private_location.mdx index 8e355549c8a36..9dae1c60f0bea 100644 --- a/api_docs/kbn_synthetics_private_location.mdx +++ b/api_docs/kbn_synthetics_private_location.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-synthetics-private-location title: "@kbn/synthetics-private-location" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/synthetics-private-location plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/synthetics-private-location'] --- import kbnSyntheticsPrivateLocationObj from './kbn_synthetics_private_location.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index 835677329490e..2f6524dc848ca 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-08-19 +date: 2024-08-20 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 3796c431e65f0..eb6f09c333016 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-08-19 +date: 2024-08-20 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 3671873808270..12e51652ada1a 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-08-19 +date: 2024-08-20 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 44e81fd89589d..ea8ed4fa79609 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-08-19 +date: 2024-08-20 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 3247586e88e72..60fa59fb006a5 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-08-19 +date: 2024-08-20 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 12a458d22f8ff..76c4d085fa51a 100644 --- a/api_docs/kbn_text_based_editor.mdx +++ b/api_docs/kbn_text_based_editor.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-text-based-editor title: "@kbn/text-based-editor" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/text-based-editor plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_timerange.mdx b/api_docs/kbn_timerange.mdx index 7140c6f6f92f2..eee22089c10cf 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-08-19 +date: 2024-08-20 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 d4e8e565340ea..a9f4766cddfb7 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-08-19 +date: 2024-08-20 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 4314c6fb3508a..0f803ce6cde92 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/triggers-actions-ui-types'] --- import kbnTriggersActionsUiTypesObj from './kbn_triggers_actions_ui_types.devdocs.json'; diff --git a/api_docs/kbn_try_in_console.mdx b/api_docs/kbn_try_in_console.mdx index a31db583a358c..9b159e95e0017 100644 --- a/api_docs/kbn_try_in_console.mdx +++ b/api_docs/kbn_try_in_console.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-try-in-console title: "@kbn/try-in-console" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/try-in-console plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/try-in-console'] --- import kbnTryInConsoleObj from './kbn_try_in_console.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 467cff0869e58..c73802be4e1ac 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-08-19 +date: 2024-08-20 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 4ac65d8c403ed..ac14ec0758f93 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-08-19 +date: 2024-08-20 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 1af2b8b2115c3..c70e6038c5fda 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-08-19 +date: 2024-08-20 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 be49b4d61a17c..99331bfd990d5 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-shared-deps-src'] --- import kbnUiSharedDepsSrcObj from './kbn_ui_shared_deps_src.devdocs.json'; diff --git a/api_docs/kbn_ui_theme.mdx b/api_docs/kbn_ui_theme.mdx index fe7d5ea84b1ac..f58ed0de945aa 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-08-19 +date: 2024-08-20 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.devdocs.json b/api_docs/kbn_unified_data_table.devdocs.json index 00dea271a943c..dc4eef0d07e7e 100644 --- a/api_docs/kbn_unified_data_table.devdocs.json +++ b/api_docs/kbn_unified_data_table.devdocs.json @@ -508,7 +508,7 @@ "label": "UnifiedDataTable", "description": [], "signature": [ - "({ ariaLabelledBy, columns, columnsMeta, showColumnTokens, configHeaderRowHeight, headerRowHeightState, onUpdateHeaderRowHeight, controlColumnIds, rowAdditionalLeadingControls, dataView, loadingState, onFilter, onResize, onSetColumns, onSort, rows, searchDescription, searchTitle, settings, showTimeCol, showFullScreenButton, sort, useNewFieldsApi, isSortEnabled, isPaginationEnabled, cellActionsTriggerId, className, rowHeightState, onUpdateRowHeight, maxAllowedSampleSize, sampleSizeState, onUpdateSampleSize, isPlainRecord, rowsPerPageState, onUpdateRowsPerPage, onFieldEdited, services, renderCustomGridBody, renderCustomToolbar, externalControlColumns, trailingControlColumns, totalHits, onFetchMoreRecords, renderDocumentView, setExpandedDoc, expandedDoc, configRowHeight, showMultiFields, maxDocFieldsDisplayed, externalAdditionalControls, rowsPerPageOptions, visibleCellActions, externalCustomRenderers, additionalFieldGroups, consumer, componentsTourSteps, gridStyleOverride, rowLineHeightOverride, cellActionsMetadata, customGridColumnsConfiguration, enableComparisonMode, cellContext, renderCellPopover, getRowIndicator, }: ", + "({ ariaLabelledBy, columns, columnsMeta, showColumnTokens, configHeaderRowHeight, headerRowHeightState, onUpdateHeaderRowHeight, controlColumnIds, rowAdditionalLeadingControls, dataView, loadingState, onFilter, onResize, onSetColumns, onSort, rows, searchDescription, searchTitle, settings, showTimeCol, showFullScreenButton, sort, useNewFieldsApi, isSortEnabled, isPaginationEnabled, cellActionsTriggerId, className, rowHeightState, onUpdateRowHeight, maxAllowedSampleSize, sampleSizeState, onUpdateSampleSize, isPlainRecord, rowsPerPageState, onUpdateRowsPerPage, onFieldEdited, services, renderCustomGridBody, renderCustomToolbar, externalControlColumns, trailingControlColumns, totalHits, onFetchMoreRecords, renderDocumentView, setExpandedDoc, expandedDoc, configRowHeight, showMultiFields, maxDocFieldsDisplayed, externalAdditionalControls, rowsPerPageOptions, visibleCellActions, externalCustomRenderers, additionalFieldGroups, consumer, componentsTourSteps, gridStyleOverride, rowLineHeightOverride, cellActionsMetadata, customGridColumnsConfiguration, enableComparisonMode, cellContext, renderCellPopover, getRowIndicator, dataGridDensityState, onUpdateDataGridDensity, }: ", { "pluginId": "@kbn/unified-data-table", "scope": "public", @@ -527,7 +527,7 @@ "id": "def-public.UnifiedDataTable.$1", "type": "Object", "tags": [], - "label": "{\n ariaLabelledBy,\n columns,\n columnsMeta,\n showColumnTokens,\n configHeaderRowHeight,\n headerRowHeightState,\n onUpdateHeaderRowHeight,\n controlColumnIds = CONTROL_COLUMN_IDS_DEFAULT,\n rowAdditionalLeadingControls,\n dataView,\n loadingState,\n onFilter,\n onResize,\n onSetColumns,\n onSort,\n rows,\n searchDescription,\n searchTitle,\n settings,\n showTimeCol,\n showFullScreenButton = true,\n sort,\n useNewFieldsApi,\n isSortEnabled = true,\n isPaginationEnabled = true,\n cellActionsTriggerId,\n className,\n rowHeightState,\n onUpdateRowHeight,\n maxAllowedSampleSize,\n sampleSizeState,\n onUpdateSampleSize,\n isPlainRecord = false,\n rowsPerPageState,\n onUpdateRowsPerPage,\n onFieldEdited,\n services,\n renderCustomGridBody,\n renderCustomToolbar,\n externalControlColumns, // TODO: deprecate in favor of rowAdditionalLeadingControls\n trailingControlColumns, // TODO: deprecate in favor of rowAdditionalLeadingControls\n totalHits,\n onFetchMoreRecords,\n renderDocumentView,\n setExpandedDoc,\n expandedDoc,\n configRowHeight,\n showMultiFields = true,\n maxDocFieldsDisplayed = 50,\n externalAdditionalControls,\n rowsPerPageOptions,\n visibleCellActions,\n externalCustomRenderers,\n additionalFieldGroups,\n consumer = 'discover',\n componentsTourSteps,\n gridStyleOverride,\n rowLineHeightOverride,\n cellActionsMetadata,\n customGridColumnsConfiguration,\n enableComparisonMode,\n cellContext,\n renderCellPopover,\n getRowIndicator,\n}", + "label": "{\n ariaLabelledBy,\n columns,\n columnsMeta,\n showColumnTokens,\n configHeaderRowHeight,\n headerRowHeightState,\n onUpdateHeaderRowHeight,\n controlColumnIds = CONTROL_COLUMN_IDS_DEFAULT,\n rowAdditionalLeadingControls,\n dataView,\n loadingState,\n onFilter,\n onResize,\n onSetColumns,\n onSort,\n rows,\n searchDescription,\n searchTitle,\n settings,\n showTimeCol,\n showFullScreenButton = true,\n sort,\n useNewFieldsApi,\n isSortEnabled = true,\n isPaginationEnabled = true,\n cellActionsTriggerId,\n className,\n rowHeightState,\n onUpdateRowHeight,\n maxAllowedSampleSize,\n sampleSizeState,\n onUpdateSampleSize,\n isPlainRecord = false,\n rowsPerPageState,\n onUpdateRowsPerPage,\n onFieldEdited,\n services,\n renderCustomGridBody,\n renderCustomToolbar,\n externalControlColumns, // TODO: deprecate in favor of rowAdditionalLeadingControls\n trailingControlColumns, // TODO: deprecate in favor of rowAdditionalLeadingControls\n totalHits,\n onFetchMoreRecords,\n renderDocumentView,\n setExpandedDoc,\n expandedDoc,\n configRowHeight,\n showMultiFields = true,\n maxDocFieldsDisplayed = 50,\n externalAdditionalControls,\n rowsPerPageOptions,\n visibleCellActions,\n externalCustomRenderers,\n additionalFieldGroups,\n consumer = 'discover',\n componentsTourSteps,\n gridStyleOverride,\n rowLineHeightOverride,\n cellActionsMetadata,\n customGridColumnsConfiguration,\n enableComparisonMode,\n cellContext,\n renderCellPopover,\n getRowIndicator,\n dataGridDensityState,\n onUpdateDataGridDensity,\n}", "description": [], "signature": [ { @@ -1750,6 +1750,77 @@ ], "returnComment": [] }, + { + "parentPluginId": "@kbn/unified-data-table", + "id": "def-public.UnifiedDataTableProps.dataGridDensityState", + "type": "CompoundType", + "tags": [], + "label": "dataGridDensityState", + "description": [ + "\nDensity from state" + ], + "signature": [ + { + "pluginId": "@kbn/unified-data-table", + "scope": "public", + "docId": "kibKbnUnifiedDataTablePluginApi", + "section": "def-public.DataGridDensity", + "text": "DataGridDensity" + }, + " | undefined" + ], + "path": "packages/kbn-unified-data-table/src/components/data_table.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/unified-data-table", + "id": "def-public.UnifiedDataTableProps.onUpdateDataGridDensity", + "type": "Function", + "tags": [], + "label": "onUpdateDataGridDensity", + "description": [ + "\nCallback when the data grid density configuration is modified" + ], + "signature": [ + "((dataGridDensity: ", + { + "pluginId": "@kbn/unified-data-table", + "scope": "public", + "docId": "kibKbnUnifiedDataTablePluginApi", + "section": "def-public.DataGridDensity", + "text": "DataGridDensity" + }, + ") => void) | undefined" + ], + "path": "packages/kbn-unified-data-table/src/components/data_table.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/unified-data-table", + "id": "def-public.UnifiedDataTableProps.onUpdateDataGridDensity.$1", + "type": "Enum", + "tags": [], + "label": "dataGridDensity", + "description": [], + "signature": [ + { + "pluginId": "@kbn/unified-data-table", + "scope": "public", + "docId": "kibKbnUnifiedDataTablePluginApi", + "section": "def-public.DataGridDensity", + "text": "DataGridDensity" + } + ], + "path": "packages/kbn-unified-data-table/src/components/data_table.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [] + }, { "parentPluginId": "@kbn/unified-data-table", "id": "def-public.UnifiedDataTableProps.isPlainRecord", @@ -2715,6 +2786,18 @@ } ], "enums": [ + { + "parentPluginId": "@kbn/unified-data-table", + "id": "def-public.DataGridDensity", + "type": "Enum", + "tags": [], + "label": "DataGridDensity", + "description": [], + "path": "packages/kbn-unified-data-table/src/constants.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "@kbn/unified-data-table", "id": "def-public.DataLoadingState", @@ -2810,7 +2893,7 @@ "section": "def-public.FieldFormatsStart", "text": "FieldFormatsStart" }, - "; closePopover: () => void; }" + "; closePopover: () => void; isCompressed?: boolean | undefined; }" ], "path": "packages/kbn-unified-data-table/src/types.ts", "deprecated": false, diff --git a/api_docs/kbn_unified_data_table.mdx b/api_docs/kbn_unified_data_table.mdx index d800874c1f634..09313d3eba75d 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-data-table'] --- import kbnUnifiedDataTableObj from './kbn_unified_data_table.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 | |-------------------|-----------|------------------------|-----------------| -| 166 | 0 | 92 | 2 | +| 170 | 0 | 94 | 2 | ## Client diff --git a/api_docs/kbn_unified_doc_viewer.devdocs.json b/api_docs/kbn_unified_doc_viewer.devdocs.json index 62463520b7db6..784e80f8d5615 100644 --- a/api_docs/kbn_unified_doc_viewer.devdocs.json +++ b/api_docs/kbn_unified_doc_viewer.devdocs.json @@ -295,7 +295,7 @@ "label": "FieldName", "description": [], "signature": [ - "({\n fieldName,\n fieldMapping,\n fieldType,\n fieldIconProps,\n scripted = false,\n highlight = '',\n isPinned = false,\n}: Props) => JSX.Element" + "({\n fieldName,\n fieldMapping,\n fieldType,\n fieldIconProps,\n scripted = false,\n highlight = '',\n}: Props) => JSX.Element" ], "path": "packages/kbn-unified-doc-viewer/src/components/field_name/field_name.tsx", "deprecated": false, @@ -306,7 +306,7 @@ "id": "def-common.FieldName.$1", "type": "Object", "tags": [], - "label": "{\n fieldName,\n fieldMapping,\n fieldType,\n fieldIconProps,\n scripted = false,\n highlight = '',\n isPinned = false,\n}", + "label": "{\n fieldName,\n fieldMapping,\n fieldType,\n fieldIconProps,\n scripted = false,\n highlight = '',\n}", "description": [], "signature": [ "Props" diff --git a/api_docs/kbn_unified_doc_viewer.mdx b/api_docs/kbn_unified_doc_viewer.mdx index 704bda247af66..51bd054f0a44a 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-08-19 +date: 2024-08-20 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 c168e2c11c890..dedb334472fd7 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-08-19 +date: 2024-08-20 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 b80c9e6f784a3..7082dbc6f1a27 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-badge'] --- import kbnUnsavedChangesBadgeObj from './kbn_unsaved_changes_badge.devdocs.json'; diff --git a/api_docs/kbn_unsaved_changes_prompt.mdx b/api_docs/kbn_unsaved_changes_prompt.mdx index 1153e8d593ce5..010000c54ce64 100644 --- a/api_docs/kbn_unsaved_changes_prompt.mdx +++ b/api_docs/kbn_unsaved_changes_prompt.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-unsaved-changes-prompt title: "@kbn/unsaved-changes-prompt" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/unsaved-changes-prompt plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unsaved-changes-prompt'] --- import kbnUnsavedChangesPromptObj from './kbn_unsaved_changes_prompt.devdocs.json'; diff --git a/api_docs/kbn_use_tracked_promise.mdx b/api_docs/kbn_use_tracked_promise.mdx index 332d1ddc88341..c2e15bbacd34d 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-08-19 +date: 2024-08-20 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 69ce259bcde63..020e01677c6e1 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-08-19 +date: 2024-08-20 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 60a7bfb9ca06a..1a8581553e911 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-08-19 +date: 2024-08-20 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 713a69f869b51..f0cc103a8d189 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-08-19 +date: 2024-08-20 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 0996f183091a1..4571da77344bb 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/utils'] --- import kbnUtilsObj from './kbn_utils.devdocs.json'; diff --git a/api_docs/kbn_visualization_ui_components.mdx b/api_docs/kbn_visualization_ui_components.mdx index 9f2d45123ad3a..6c3ebc2a7589d 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-08-19 +date: 2024-08-20 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 e83a709ef53b0..29628dfd47471 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-08-19 +date: 2024-08-20 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 14b066ae9b972..ce53b39c19cc5 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-08-19 +date: 2024-08-20 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 920ccb98ac910..1b397e2a2a9dc 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-08-19 +date: 2024-08-20 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.mdx b/api_docs/kbn_zod.mdx index 171fe66648f25..9cd2e3f7b373a 100644 --- a/api_docs/kbn_zod.mdx +++ b/api_docs/kbn_zod.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-zod title: "@kbn/zod" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/zod plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/zod'] --- import kbnZodObj from './kbn_zod.devdocs.json'; diff --git a/api_docs/kbn_zod_helpers.mdx b/api_docs/kbn_zod_helpers.mdx index e5044bb184740..4dbc6aa154d9d 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-08-19 +date: 2024-08-20 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 d2b93410f8404..047afdd9b6e6f 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index 08cda9a278c91..834e06db089ca 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-08-19 +date: 2024-08-20 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 f1ee426805773..65d20c68ad6e1 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-08-19 +date: 2024-08-20 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 203739a3594f4..c60d3218fb77d 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kubernetesSecurity'] --- import kubernetesSecurityObj from './kubernetes_security.devdocs.json'; diff --git a/api_docs/lens.mdx b/api_docs/lens.mdx index 843700d058811..60f505e8dd357 100644 --- a/api_docs/lens.mdx +++ b/api_docs/lens.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lens title: "lens" image: https://source.unsplash.com/400x175/?github description: API docs for the lens plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lens'] --- import lensObj from './lens.devdocs.json'; diff --git a/api_docs/license_api_guard.mdx b/api_docs/license_api_guard.mdx index b89471f1f593e..6be75c30cd939 100644 --- a/api_docs/license_api_guard.mdx +++ b/api_docs/license_api_guard.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseApiGuard title: "licenseApiGuard" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseApiGuard plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseApiGuard'] --- import licenseApiGuardObj from './license_api_guard.devdocs.json'; diff --git a/api_docs/license_management.mdx b/api_docs/license_management.mdx index f302e23c53ec0..b66a091dc9722 100644 --- a/api_docs/license_management.mdx +++ b/api_docs/license_management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licenseManagement title: "licenseManagement" image: https://source.unsplash.com/400x175/?github description: API docs for the licenseManagement plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 98189c1325962..6b3c3bd6dc707 100644 --- a/api_docs/licensing.mdx +++ b/api_docs/licensing.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/licensing title: "licensing" image: https://source.unsplash.com/400x175/?github description: API docs for the licensing plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/links.mdx b/api_docs/links.mdx index c23ac5d9ca92f..3bc07dea28b99 100644 --- a/api_docs/links.mdx +++ b/api_docs/links.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/links title: "links" image: https://source.unsplash.com/400x175/?github description: API docs for the links plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'links'] --- import linksObj from './links.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 75b326064343b..92f4b5e4f9d44 100644 --- a/api_docs/lists.mdx +++ b/api_docs/lists.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/lists title: "lists" image: https://source.unsplash.com/400x175/?github description: API docs for the lists plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/logs_data_access.mdx b/api_docs/logs_data_access.mdx index 4a7a91c687e8f..2f8c8746cb782 100644 --- a/api_docs/logs_data_access.mdx +++ b/api_docs/logs_data_access.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsDataAccess title: "logsDataAccess" image: https://source.unsplash.com/400x175/?github description: API docs for the logsDataAccess plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsDataAccess'] --- import logsDataAccessObj from './logs_data_access.devdocs.json'; diff --git a/api_docs/logs_explorer.mdx b/api_docs/logs_explorer.mdx index 27471219f0b15..e8c7ce8ca45aa 100644 --- a/api_docs/logs_explorer.mdx +++ b/api_docs/logs_explorer.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsExplorer title: "logsExplorer" image: https://source.unsplash.com/400x175/?github description: API docs for the logsExplorer plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsExplorer'] --- import logsExplorerObj from './logs_explorer.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index bebba1b6a1336..f48d5bbd88744 100644 --- a/api_docs/logs_shared.mdx +++ b/api_docs/logs_shared.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/logsShared title: "logsShared" image: https://source.unsplash.com/400x175/?github description: API docs for the logsShared plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'logsShared'] --- import logsSharedObj from './logs_shared.devdocs.json'; diff --git a/api_docs/management.mdx b/api_docs/management.mdx index b226307e27763..c8caa7b368b4d 100644 --- a/api_docs/management.mdx +++ b/api_docs/management.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/management title: "management" image: https://source.unsplash.com/400x175/?github description: API docs for the management plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'management'] --- import managementObj from './management.devdocs.json'; diff --git a/api_docs/maps.mdx b/api_docs/maps.mdx index 1171606667b68..dd81df4f73872 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'maps'] --- import mapsObj from './maps.devdocs.json'; diff --git a/api_docs/maps_ems.mdx b/api_docs/maps_ems.mdx index 82556a22c7683..b02d3e0d78bd5 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/metrics_data_access.devdocs.json b/api_docs/metrics_data_access.devdocs.json index e4bb3a666e6b9..5e4535366a663 100644 --- a/api_docs/metrics_data_access.devdocs.json +++ b/api_docs/metrics_data_access.devdocs.json @@ -550,7 +550,15 @@ "label": "findInventoryModel", "description": [], "signature": [ - "(type: T) => InventoryModels" + "(type: T) => ", + { + "pluginId": "metricsDataAccess", + "scope": "common", + "docId": "kibMetricsDataAccessPluginApi", + "section": "def-common.InventoryModels", + "text": "InventoryModels" + }, + "" ], "path": "x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/index.ts", "deprecated": false, @@ -1452,6 +1460,677 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "metricsDataAccess", + "id": "def-common.InventoryModels", + "type": "Type", + "tags": [], + "label": "InventoryModels", + "description": [], + "signature": [ + "{ readonly host: ", + "InventoryModel", + "<", + "InventoryMetricsWithCharts", + "<{ readonly cpuUsage: ", + "LensBaseLayer", + "; readonly cpuUsageIowait: ", + "LensBaseLayer", + "; readonly cpuUsageIrq: ", + "LensBaseLayer", + "; readonly cpuUsageNice: ", + "LensBaseLayer", + "; readonly cpuUsageSoftirq: ", + "LensBaseLayer", + "; readonly cpuUsageSteal: ", + "LensBaseLayer", + "; readonly cpuUsageUser: ", + "LensBaseLayer", + "; readonly cpuUsageSystem: ", + "LensBaseLayer", + "; readonly diskIORead: ", + "LensBaseLayer", + "; readonly diskIOWrite: ", + "LensBaseLayer", + "; readonly diskReadThroughput: ", + "LensBaseLayer", + "; readonly diskWriteThroughput: ", + "LensBaseLayer", + "; readonly diskSpaceAvailability: ", + "LensBaseLayer", + "; readonly diskSpaceAvailable: ", + "LensBaseLayer", + "; readonly diskUsage: ", + "LensBaseLayer", + "; readonly diskUsageAverage: ", + "LensBaseLayer", + "; readonly hostCount: ", + "LensBaseLayer", + "; readonly logRate: ", + "LensBaseLayer", + "; readonly normalizedLoad1m: ", + "LensBaseLayer", + "; readonly load1m: ", + "LensBaseLayer", + "; readonly load5m: ", + "LensBaseLayer", + "; readonly load15m: ", + "LensBaseLayer", + "; readonly memoryUsage: ", + "LensBaseLayer", + "; readonly memoryFree: ", + "LensBaseLayer", + "; readonly memoryUsed: ", + "LensBaseLayer", + "; readonly memoryFreeExcludingCache: ", + "LensBaseLayer", + "; readonly memoryCache: ", + "LensBaseLayer", + "; readonly rx: ", + "LensBaseLayer", + "; readonly tx: ", + "LensBaseLayer", + "; }, { readonly cpu: { readonly xy: { readonly cpuUsageBreakdown: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly loadBreakdown: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly cpuUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly normalizedLoad1m: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; }; readonly metric: { readonly cpuUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; label?: string | undefined; filter?: string | undefined; format?: \"string\" | \"number\" | \"duration\" | \"percent\" | \"currency\" | \"bytes\" | \"bits\" | undefined; decimals?: number | undefined; normalizeByUnit?: \"m\" | \"d\" | \"h\" | \"s\" | undefined; compactValues?: boolean | undefined; randomSampling?: number | undefined; useGlobalFilter?: boolean | undefined; seriesColor?: string | undefined; value: string; chartType: \"metric\"; querySecondaryMetric?: string | undefined; queryMaxValue?: string | undefined; breakdown?: ", + "LensBreakdownConfig", + " | undefined; trendLine?: boolean | undefined; subtitle?: string | undefined; } & { id: string; }; readonly normalizedLoad1m: { title: string; dataset?: ", + "LensDataset", + " | undefined; label?: string | undefined; filter?: string | undefined; format?: \"string\" | \"number\" | \"duration\" | \"percent\" | \"currency\" | \"bytes\" | \"bits\" | undefined; decimals?: number | undefined; normalizeByUnit?: \"m\" | \"d\" | \"h\" | \"s\" | undefined; compactValues?: boolean | undefined; randomSampling?: number | undefined; useGlobalFilter?: boolean | undefined; seriesColor?: string | undefined; value: string; chartType: \"metric\"; querySecondaryMetric?: string | undefined; queryMaxValue?: string | undefined; breakdown?: ", + "LensBreakdownConfig", + " | undefined; trendLine?: boolean | undefined; subtitle?: string | undefined; } & { id: string; }; }; }; readonly disk: { readonly xy: { readonly diskThroughputReadWrite: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly diskUsageByMountPoint: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly diskIOReadWrite: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly diskSpaceAvailable: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly diskIORead: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly diskIOWrite: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly diskReadThroughput: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly diskWriteThroughput: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; }; readonly metric: { readonly diskUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; label?: string | undefined; filter?: string | undefined; format?: \"string\" | \"number\" | \"duration\" | \"percent\" | \"currency\" | \"bytes\" | \"bits\" | undefined; decimals?: number | undefined; normalizeByUnit?: \"m\" | \"d\" | \"h\" | \"s\" | undefined; compactValues?: boolean | undefined; randomSampling?: number | undefined; useGlobalFilter?: boolean | undefined; seriesColor?: string | undefined; value: string; chartType: \"metric\"; querySecondaryMetric?: string | undefined; queryMaxValue?: string | undefined; breakdown?: ", + "LensBreakdownConfig", + " | undefined; trendLine?: boolean | undefined; subtitle?: string | undefined; } & { id: string; }; }; }; readonly memory: { xy: { memoryUsageBreakdown: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; memoryUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; memoryFree: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; }; metric: { memoryUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; label?: string | undefined; filter?: string | undefined; format?: \"string\" | \"number\" | \"duration\" | \"percent\" | \"currency\" | \"bytes\" | \"bits\" | undefined; decimals?: number | undefined; normalizeByUnit?: \"m\" | \"d\" | \"h\" | \"s\" | undefined; compactValues?: boolean | undefined; randomSampling?: number | undefined; useGlobalFilter?: boolean | undefined; seriesColor?: string | undefined; value: string; chartType: \"metric\"; querySecondaryMetric?: string | undefined; queryMaxValue?: string | undefined; breakdown?: ", + "LensBreakdownConfig", + " | undefined; trendLine?: boolean | undefined; subtitle?: string | undefined; } & { id: string; }; }; }; readonly network: { readonly xy: { readonly rxTx: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly rx: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly tx: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; }; }; readonly logs: { xy: { logRate: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; }; }; readonly kibernetesNode: { readonly xy: { readonly nodeCpuCapacity: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly nodeMemoryCapacity: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly nodeDiskCapacity: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly nodePodCapacity: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; }; }; }>>; readonly pod: ", + "InventoryModel", + "<", + "InventoryMetrics", + ">; readonly container: ", + "InventoryModel", + "<", + "InventoryMetricsWithCharts", + "<{ readonly dockerContainerCpuUsage: ", + "LensBaseLayer", + "; readonly dockerContainerMemoryUsage: ", + "LensBaseLayer", + "; readonly dockerContainerNetworkRx: ", + "LensBaseLayer", + "; readonly dockerContainerNetworkTx: ", + "LensBaseLayer", + "; readonly dockerContainerDiskIORead: ", + "LensBaseLayer", + "; readonly dockerContainerDiskIOWrite: ", + "LensBaseLayer", + "; readonly k8sContainerCpuUsage: ", + "LensBaseLayer", + "; readonly k8sContainerMemoryUsage: ", + "LensBaseLayer", + "; }, { readonly cpu: { readonly xy: { readonly dockerContainerCpuUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; readonly k8sContainerCpuUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; }; readonly metric: { readonly dockerContainerCpuUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; label?: string | undefined; filter?: string | undefined; format?: \"string\" | \"number\" | \"duration\" | \"percent\" | \"currency\" | \"bytes\" | \"bits\" | undefined; decimals?: number | undefined; normalizeByUnit?: \"m\" | \"d\" | \"h\" | \"s\" | undefined; compactValues?: boolean | undefined; randomSampling?: number | undefined; useGlobalFilter?: boolean | undefined; seriesColor?: string | undefined; value: string; chartType: \"metric\"; querySecondaryMetric?: string | undefined; queryMaxValue?: string | undefined; breakdown?: ", + "LensBreakdownConfig", + " | undefined; trendLine?: boolean | undefined; subtitle?: string | undefined; } & { id: string; }; readonly k8sContainerCpuUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; label?: string | undefined; filter?: string | undefined; format?: \"string\" | \"number\" | \"duration\" | \"percent\" | \"currency\" | \"bytes\" | \"bits\" | undefined; decimals?: number | undefined; normalizeByUnit?: \"m\" | \"d\" | \"h\" | \"s\" | undefined; compactValues?: boolean | undefined; randomSampling?: number | undefined; useGlobalFilter?: boolean | undefined; seriesColor?: string | undefined; value: string; chartType: \"metric\"; querySecondaryMetric?: string | undefined; queryMaxValue?: string | undefined; breakdown?: ", + "LensBreakdownConfig", + " | undefined; trendLine?: boolean | undefined; subtitle?: string | undefined; } & { id: string; }; }; }; readonly memory: { xy: { dockerContainerMemoryUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; k8sContainerMemoryUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; }; metric: { dockerContainerMemoryUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; label?: string | undefined; filter?: string | undefined; format?: \"string\" | \"number\" | \"duration\" | \"percent\" | \"currency\" | \"bytes\" | \"bits\" | undefined; decimals?: number | undefined; normalizeByUnit?: \"m\" | \"d\" | \"h\" | \"s\" | undefined; compactValues?: boolean | undefined; randomSampling?: number | undefined; useGlobalFilter?: boolean | undefined; seriesColor?: string | undefined; value: string; chartType: \"metric\"; querySecondaryMetric?: string | undefined; queryMaxValue?: string | undefined; breakdown?: ", + "LensBreakdownConfig", + " | undefined; trendLine?: boolean | undefined; subtitle?: string | undefined; } & { id: string; }; k8sContainerMemoryUsage: { title: string; dataset?: ", + "LensDataset", + " | undefined; label?: string | undefined; filter?: string | undefined; format?: \"string\" | \"number\" | \"duration\" | \"percent\" | \"currency\" | \"bytes\" | \"bits\" | undefined; decimals?: number | undefined; normalizeByUnit?: \"m\" | \"d\" | \"h\" | \"s\" | undefined; compactValues?: boolean | undefined; randomSampling?: number | undefined; useGlobalFilter?: boolean | undefined; seriesColor?: string | undefined; value: string; chartType: \"metric\"; querySecondaryMetric?: string | undefined; queryMaxValue?: string | undefined; breakdown?: ", + "LensBreakdownConfig", + " | undefined; trendLine?: boolean | undefined; subtitle?: string | undefined; } & { id: string; }; }; }; readonly network: { xy: { dockerContainerRxTx: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; }; }; readonly diskIO: { xy: { dockerContainerDiskIOReadWrite: { title: string; dataset?: ", + "LensDataset", + " | undefined; chartType: \"xy\"; layers: ({ dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"series\"; breakdown?: ", + "LensBreakdownConfig", + " | undefined; xAxis: ", + "LensBreakdownConfig", + "; seriesType: \"line\" | \"area\" | \"bar\"; } | { dataset?: ", + "LensDataset", + " | undefined; yAxis: ", + "LensBaseLayer", + "[]; type: \"annotation\"; events: ({ name: string; color?: string | undefined; icon?: string | undefined; datetime: string; } | { name: string; color?: string | undefined; icon?: string | undefined; field: string; filter: string; })[]; } | ", + "LensReferenceLineLayer", + ")[]; legend?: { show?: boolean | undefined; position?: \"right\" | \"top\" | \"bottom\" | \"left\" | undefined; } | undefined; axisTitleVisibility?: { showXAxisTitle?: boolean | undefined; showYAxisTitle?: boolean | undefined; } | undefined; emphasizeFitting?: boolean | undefined; fittingFunction?: \"None\" | \"Average\" | \"Zero\" | \"Nearest\" | \"Linear\" | \"Carry\" | \"Lookahead\" | undefined; yBounds?: ", + "LensYBoundsConfig", + " | undefined; } & { id: string; }; }; }; }>>; readonly awsEC2: ", + "InventoryModel", + "<", + "InventoryMetrics", + ">; readonly awsS3: ", + "InventoryModel", + "<", + "InventoryMetrics", + ">; readonly awsRDS: ", + "InventoryModel", + "<", + "InventoryMetrics", + ">; readonly awsSQS: ", + "InventoryModel", + "<", + "InventoryMetrics", + ">; }[T]" + ], + "path": "x-pack/plugins/observability_solution/metrics_data_access/common/inventory_models/index.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "metricsDataAccess", "id": "def-common.InventoryVisType", diff --git a/api_docs/metrics_data_access.mdx b/api_docs/metrics_data_access.mdx index 627e158e2c66e..03bd20a823d51 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'metricsDataAccess'] --- import metricsDataAccessObj from './metrics_data_access.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 108 | 8 | 108 | 6 | +| 109 | 8 | 109 | 6 | ## Client diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index 2a20ca6776dc5..e6b793f167824 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-08-19 +date: 2024-08-20 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 bf5c68df9c924..162494481cdfb 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-08-19 +date: 2024-08-20 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 befac895f7041..2dd89ae4f2643 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-08-19 +date: 2024-08-20 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 e5690aa3d4810..fe804388bb02d 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-08-19 +date: 2024-08-20 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 aa747f6450997..5e129d75811f3 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-08-19 +date: 2024-08-20 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 ede256e3e6906..330b4a5faaf67 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-08-19 +date: 2024-08-20 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 7a5911051205f..3742de7840c4f 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-08-19 +date: 2024-08-20 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 462dd1ef8b32b..0a86921980d99 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 1e8417aaf2065..a9b78e96ed55d 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; diff --git a/api_docs/observability_a_i_assistant.devdocs.json b/api_docs/observability_a_i_assistant.devdocs.json index 974d7df93c0fe..a1383e4f2ba6f 100644 --- a/api_docs/observability_a_i_assistant.devdocs.json +++ b/api_docs/observability_a_i_assistant.devdocs.json @@ -1231,6 +1231,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.KnowledgeBaseEntry.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"user_instruction\" | \"contextual\" | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "observabilityAIAssistant", "id": "def-public.KnowledgeBaseEntry.public", @@ -1593,7 +1607,7 @@ "text": "Message" }, "[]; persist: boolean; disableFunctions: boolean | { except: string[]; }; signal: AbortSignal; responseLanguage?: string | undefined; instructions?: ", - "UserInstructionOrPlainText", + "AdHocInstruction", "[] | undefined; }) => ", "Observable", "<", @@ -1746,7 +1760,7 @@ "label": "instructions", "description": [], "signature": [ - "UserInstructionOrPlainText", + "AdHocInstruction", "[] | undefined" ], "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/types.ts", @@ -2050,7 +2064,7 @@ "label": "callApi", "description": [], "signature": [ - "(endpoint: TEndpoint, ...args: MaybeOptionalArgs<", + "(endpoint: TEndpoint, ...args: MaybeOptionalArgs<", { "pluginId": "@kbn/server-route-repository-utils", "scope": "common", @@ -2166,6 +2180,46 @@ }, ">; }[]; }; }; }) => Promise; } & ", "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/kb/user_instructions\": { endpoint: \"GET /internal/observability_ai_assistant/kb/user_instructions\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise<{ userInstructions: (", + "Instruction", + " & { public?: boolean | undefined; })[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"PUT /internal/observability_ai_assistant/kb/user_instructions\": { endpoint: \"PUT /internal/observability_ai_assistant/kb/user_instructions\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ id: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; public: ", + "Type", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { id: string; text: ", + "Branded", + "; public: boolean; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", "; \"GET /internal/observability_ai_assistant/kb/entries\": { endpoint: \"GET /internal/observability_ai_assistant/kb/entries\"; params?: ", "TypeC", "<{ query: ", @@ -2232,7 +2286,13 @@ "LiteralC", "<\"high\">]>; is_correction: ", "Type", - "; public: ", + "; type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"contextual\">]>; public: ", "Type", "; labels: ", "RecordC", @@ -2252,7 +2312,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; public: boolean; labels: { [x: string]: string; }; }; }; }) => Promise; } & ", + ">; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; type: \"user_instruction\" | \"contextual\"; public: boolean; labels: { [x: string]: string; }; }; }; }) => Promise; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/functions/recall\": { endpoint: \"POST /internal/observability_ai_assistant/functions/recall\"; params?: ", "TypeC", @@ -2481,22 +2541,22 @@ ">; }>]>; instructions: ", "ArrayC", "<", - "UnionC", - "<[", - "StringC", - ", ", "IntersectionC", "<[", - "TypeC", + "PartialC", "<{ doc_id: ", "StringC", - "; text: ", - "StringC", "; }>, ", - "PartialC", - "<{ system: ", - "BooleanC", - "; }>]>]>>; }>]>; }>, ", + "TypeC", + "<{ text: ", + "StringC", + "; instruction_type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"application_instruction\">]>; }>]>>; }>]>; }>, ", "PartialC", "<{ body: ", "PartialC", @@ -2532,7 +2592,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: (string | ({ doc_id: string; text: string; } & { system?: boolean | undefined; }))[] | undefined; }; } & { body?: { actions?: ({ name: string; description: string; } & { parameters?: any; })[] | undefined; } | undefined; query?: { format?: \"default\" | \"openai\" | undefined; } | undefined; }; }) => Promise<", + "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: ({ doc_id?: string | undefined; } & { text: string; instruction_type: \"user_instruction\" | \"application_instruction\"; })[] | undefined; }; } & { body?: { actions?: ({ name: string; description: string; } & { parameters?: any; })[] | undefined; } | undefined; query?: { format?: \"default\" | \"openai\" | undefined; } | undefined; }; }) => Promise<", "Readable", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -2589,22 +2649,22 @@ ">; }>]>; instructions: ", "ArrayC", "<", - "UnionC", - "<[", - "StringC", - ", ", "IntersectionC", "<[", - "TypeC", + "PartialC", "<{ doc_id: ", "StringC", - "; text: ", - "StringC", "; }>, ", - "PartialC", - "<{ system: ", - "BooleanC", - "; }>]>]>>; }>]>; }>, ", + "TypeC", + "<{ text: ", + "StringC", + "; instruction_type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"application_instruction\">]>; }>]>>; }>]>; }>, ", "TypeC", "<{ body: ", "TypeC", @@ -2626,7 +2686,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: (string | ({ doc_id: string; text: string; } & { system?: boolean | undefined; }))[] | undefined; }; } & { body: { screenContexts: ", + "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: ({ doc_id?: string | undefined; } & { text: string; instruction_type: \"user_instruction\" | \"application_instruction\"; })[] | undefined; }; } & { body: { screenContexts: ", "ObservabilityAIAssistantScreenContextRequest", "[]; }; }; }) => Promise<", "Readable", @@ -2826,6 +2886,46 @@ }, ">; }[]; }; }; }) => Promise; } & ", "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/kb/user_instructions\": { endpoint: \"GET /internal/observability_ai_assistant/kb/user_instructions\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise<{ userInstructions: (", + "Instruction", + " & { public?: boolean | undefined; })[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"PUT /internal/observability_ai_assistant/kb/user_instructions\": { endpoint: \"PUT /internal/observability_ai_assistant/kb/user_instructions\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ id: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; public: ", + "Type", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { id: string; text: ", + "Branded", + "; public: boolean; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", "; \"GET /internal/observability_ai_assistant/kb/entries\": { endpoint: \"GET /internal/observability_ai_assistant/kb/entries\"; params?: ", "TypeC", "<{ query: ", @@ -2892,7 +2992,13 @@ "LiteralC", "<\"high\">]>; is_correction: ", "Type", - "; public: ", + "; type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"contextual\">]>; public: ", "Type", "; labels: ", "RecordC", @@ -2912,7 +3018,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; public: boolean; labels: { [x: string]: string; }; }; }; }) => Promise; } & ", + ">; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; type: \"user_instruction\" | \"contextual\"; public: boolean; labels: { [x: string]: string; }; }; }; }) => Promise; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/functions/recall\": { endpoint: \"POST /internal/observability_ai_assistant/functions/recall\"; params?: ", "TypeC", @@ -3141,22 +3247,22 @@ ">; }>]>; instructions: ", "ArrayC", "<", - "UnionC", - "<[", - "StringC", - ", ", "IntersectionC", "<[", - "TypeC", + "PartialC", "<{ doc_id: ", "StringC", - "; text: ", - "StringC", "; }>, ", - "PartialC", - "<{ system: ", - "BooleanC", - "; }>]>]>>; }>]>; }>, ", + "TypeC", + "<{ text: ", + "StringC", + "; instruction_type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"application_instruction\">]>; }>]>>; }>]>; }>, ", "PartialC", "<{ body: ", "PartialC", @@ -3192,7 +3298,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: (string | ({ doc_id: string; text: string; } & { system?: boolean | undefined; }))[] | undefined; }; } & { body?: { actions?: ({ name: string; description: string; } & { parameters?: any; })[] | undefined; } | undefined; query?: { format?: \"default\" | \"openai\" | undefined; } | undefined; }; }) => Promise<", + "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: ({ doc_id?: string | undefined; } & { text: string; instruction_type: \"user_instruction\" | \"application_instruction\"; })[] | undefined; }; } & { body?: { actions?: ({ name: string; description: string; } & { parameters?: any; })[] | undefined; } | undefined; query?: { format?: \"default\" | \"openai\" | undefined; } | undefined; }; }) => Promise<", "Readable", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -3249,22 +3355,22 @@ ">; }>]>; instructions: ", "ArrayC", "<", - "UnionC", - "<[", - "StringC", - ", ", "IntersectionC", "<[", - "TypeC", + "PartialC", "<{ doc_id: ", "StringC", - "; text: ", - "StringC", "; }>, ", - "PartialC", - "<{ system: ", - "BooleanC", - "; }>]>]>>; }>]>; }>, ", + "TypeC", + "<{ text: ", + "StringC", + "; instruction_type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"application_instruction\">]>; }>]>>; }>]>; }>, ", "TypeC", "<{ body: ", "TypeC", @@ -3286,7 +3392,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: (string | ({ doc_id: string; text: string; } & { system?: boolean | undefined; }))[] | undefined; }; } & { body: { screenContexts: ", + "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: ({ doc_id?: string | undefined; } & { text: string; instruction_type: \"user_instruction\" | \"application_instruction\"; })[] | undefined; }; } & { body: { screenContexts: ", "ObservabilityAIAssistantScreenContextRequest", "[]; }; }; }) => Promise<", "Readable", @@ -3860,6 +3966,18 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.KnowledgeBaseType", + "type": "Enum", + "tags": [], + "label": "KnowledgeBaseType", + "description": [], + "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "observabilityAIAssistant", "id": "def-public.MessageRole", @@ -4101,6 +4219,46 @@ }, ">; }[]; }; }; }) => Promise; } & ", "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/kb/user_instructions\": { endpoint: \"GET /internal/observability_ai_assistant/kb/user_instructions\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise<{ userInstructions: (", + "Instruction", + " & { public?: boolean | undefined; })[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"PUT /internal/observability_ai_assistant/kb/user_instructions\": { endpoint: \"PUT /internal/observability_ai_assistant/kb/user_instructions\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ id: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; public: ", + "Type", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { id: string; text: ", + "Branded", + "; public: boolean; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", "; \"GET /internal/observability_ai_assistant/kb/entries\": { endpoint: \"GET /internal/observability_ai_assistant/kb/entries\"; params?: ", "TypeC", "<{ query: ", @@ -4167,7 +4325,13 @@ "LiteralC", "<\"high\">]>; is_correction: ", "Type", - "; public: ", + "; type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"contextual\">]>; public: ", "Type", "; labels: ", "RecordC", @@ -4187,7 +4351,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; public: boolean; labels: { [x: string]: string; }; }; }; }) => Promise; } & ", + ">; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; type: \"user_instruction\" | \"contextual\"; public: boolean; labels: { [x: string]: string; }; }; }; }) => Promise; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/functions/recall\": { endpoint: \"POST /internal/observability_ai_assistant/functions/recall\"; params?: ", "TypeC", @@ -4416,22 +4580,22 @@ ">; }>]>; instructions: ", "ArrayC", "<", - "UnionC", - "<[", - "StringC", - ", ", "IntersectionC", "<[", - "TypeC", + "PartialC", "<{ doc_id: ", "StringC", - "; text: ", - "StringC", "; }>, ", - "PartialC", - "<{ system: ", - "BooleanC", - "; }>]>]>>; }>]>; }>, ", + "TypeC", + "<{ text: ", + "StringC", + "; instruction_type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"application_instruction\">]>; }>]>>; }>]>; }>, ", "PartialC", "<{ body: ", "PartialC", @@ -4467,7 +4631,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: (string | ({ doc_id: string; text: string; } & { system?: boolean | undefined; }))[] | undefined; }; } & { body?: { actions?: ({ name: string; description: string; } & { parameters?: any; })[] | undefined; } | undefined; query?: { format?: \"default\" | \"openai\" | undefined; } | undefined; }; }) => Promise<", + "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: ({ doc_id?: string | undefined; } & { text: string; instruction_type: \"user_instruction\" | \"application_instruction\"; })[] | undefined; }; } & { body?: { actions?: ({ name: string; description: string; } & { parameters?: any; })[] | undefined; } | undefined; query?: { format?: \"default\" | \"openai\" | undefined; } | undefined; }; }) => Promise<", "Readable", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -4524,22 +4688,22 @@ ">; }>]>; instructions: ", "ArrayC", "<", - "UnionC", - "<[", - "StringC", - ", ", "IntersectionC", "<[", - "TypeC", + "PartialC", "<{ doc_id: ", "StringC", - "; text: ", - "StringC", "; }>, ", - "PartialC", - "<{ system: ", - "BooleanC", - "; }>]>]>>; }>]>; }>, ", + "TypeC", + "<{ text: ", + "StringC", + "; instruction_type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"application_instruction\">]>; }>]>>; }>]>; }>, ", "TypeC", "<{ body: ", "TypeC", @@ -4561,7 +4725,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: (string | ({ doc_id: string; text: string; } & { system?: boolean | undefined; }))[] | undefined; }; } & { body: { screenContexts: ", + "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: ({ doc_id?: string | undefined; } & { text: string; instruction_type: \"user_instruction\" | \"application_instruction\"; })[] | undefined; }; } & { body: { screenContexts: ", "ObservabilityAIAssistantScreenContextRequest", "[]; }; }; }) => Promise<", "Readable", @@ -4999,6 +5163,46 @@ }, ">; }[]; }; }; }) => Promise; } & ", "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/kb/user_instructions\": { endpoint: \"GET /internal/observability_ai_assistant/kb/user_instructions\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise<{ userInstructions: (", + "Instruction", + " & { public?: boolean | undefined; })[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"PUT /internal/observability_ai_assistant/kb/user_instructions\": { endpoint: \"PUT /internal/observability_ai_assistant/kb/user_instructions\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ id: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; public: ", + "Type", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { id: string; text: ", + "Branded", + "; public: boolean; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", "; \"GET /internal/observability_ai_assistant/kb/entries\": { endpoint: \"GET /internal/observability_ai_assistant/kb/entries\"; params?: ", "TypeC", "<{ query: ", @@ -5065,7 +5269,13 @@ "LiteralC", "<\"high\">]>; is_correction: ", "Type", - "; public: ", + "; type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"contextual\">]>; public: ", "Type", "; labels: ", "RecordC", @@ -5085,7 +5295,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; public: boolean; labels: { [x: string]: string; }; }; }; }) => Promise; } & ", + ">; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; type: \"user_instruction\" | \"contextual\"; public: boolean; labels: { [x: string]: string; }; }; }; }) => Promise; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/functions/recall\": { endpoint: \"POST /internal/observability_ai_assistant/functions/recall\"; params?: ", "TypeC", @@ -5314,22 +5524,22 @@ ">; }>]>; instructions: ", "ArrayC", "<", - "UnionC", - "<[", - "StringC", - ", ", "IntersectionC", "<[", - "TypeC", + "PartialC", "<{ doc_id: ", "StringC", - "; text: ", - "StringC", "; }>, ", - "PartialC", - "<{ system: ", - "BooleanC", - "; }>]>]>>; }>]>; }>, ", + "TypeC", + "<{ text: ", + "StringC", + "; instruction_type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"application_instruction\">]>; }>]>>; }>]>; }>, ", "PartialC", "<{ body: ", "PartialC", @@ -5365,7 +5575,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: (string | ({ doc_id: string; text: string; } & { system?: boolean | undefined; }))[] | undefined; }; } & { body?: { actions?: ({ name: string; description: string; } & { parameters?: any; })[] | undefined; } | undefined; query?: { format?: \"default\" | \"openai\" | undefined; } | undefined; }; }) => Promise<", + "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: ({ doc_id?: string | undefined; } & { text: string; instruction_type: \"user_instruction\" | \"application_instruction\"; })[] | undefined; }; } & { body?: { actions?: ({ name: string; description: string; } & { parameters?: any; })[] | undefined; } | undefined; query?: { format?: \"default\" | \"openai\" | undefined; } | undefined; }; }) => Promise<", "Readable", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -5422,22 +5632,22 @@ ">; }>]>; instructions: ", "ArrayC", "<", - "UnionC", - "<[", - "StringC", - ", ", "IntersectionC", "<[", - "TypeC", + "PartialC", "<{ doc_id: ", "StringC", - "; text: ", - "StringC", "; }>, ", - "PartialC", - "<{ system: ", - "BooleanC", - "; }>]>]>>; }>]>; }>, ", + "TypeC", + "<{ text: ", + "StringC", + "; instruction_type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"application_instruction\">]>; }>]>>; }>]>; }>, ", "TypeC", "<{ body: ", "TypeC", @@ -5459,7 +5669,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: (string | ({ doc_id: string; text: string; } & { system?: boolean | undefined; }))[] | undefined; }; } & { body: { screenContexts: ", + "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: ({ doc_id?: string | undefined; } & { text: string; instruction_type: \"user_instruction\" | \"application_instruction\"; })[] | undefined; }; } & { body: { screenContexts: ", "ObservabilityAIAssistantScreenContextRequest", "[]; }; }; }) => Promise<", "Readable", @@ -5582,7 +5792,7 @@ "label": "ObservabilityAIAssistantAPIEndpoint", "description": [], "signature": [ - "\"POST /internal/observability_ai_assistant/chat\" | \"POST /internal/observability_ai_assistant/chat/recall\" | \"POST /internal/observability_ai_assistant/chat/complete\" | \"POST /api/observability_ai_assistant/chat/complete 2023-10-31\" | \"GET /internal/observability_ai_assistant/conversation/{conversationId}\" | \"POST /internal/observability_ai_assistant/conversations\" | \"POST /internal/observability_ai_assistant/conversation\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}/title\" | \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\" | \"GET /internal/observability_ai_assistant/connectors\" | \"GET /internal/observability_ai_assistant/functions\" | \"POST /internal/observability_ai_assistant/functions/recall\" | \"POST /internal/observability_ai_assistant/functions/summarize\" | \"POST /internal/observability_ai_assistant/kb/setup\" | \"GET /internal/observability_ai_assistant/kb/status\" | \"GET /internal/observability_ai_assistant/kb/entries\" | \"POST /internal/observability_ai_assistant/kb/entries/import\" | \"POST /internal/observability_ai_assistant/kb/entries/save\" | \"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\"" + "\"POST /internal/observability_ai_assistant/chat\" | \"POST /internal/observability_ai_assistant/chat/recall\" | \"POST /internal/observability_ai_assistant/chat/complete\" | \"POST /api/observability_ai_assistant/chat/complete 2023-10-31\" | \"GET /internal/observability_ai_assistant/conversation/{conversationId}\" | \"POST /internal/observability_ai_assistant/conversations\" | \"POST /internal/observability_ai_assistant/conversation\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}\" | \"PUT /internal/observability_ai_assistant/conversation/{conversationId}/title\" | \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\" | \"GET /internal/observability_ai_assistant/connectors\" | \"GET /internal/observability_ai_assistant/functions\" | \"POST /internal/observability_ai_assistant/functions/recall\" | \"POST /internal/observability_ai_assistant/functions/summarize\" | \"POST /internal/observability_ai_assistant/kb/setup\" | \"GET /internal/observability_ai_assistant/kb/status\" | \"GET /internal/observability_ai_assistant/kb/entries\" | \"PUT /internal/observability_ai_assistant/kb/user_instructions\" | \"GET /internal/observability_ai_assistant/kb/user_instructions\" | \"POST /internal/observability_ai_assistant/kb/entries/import\" | \"POST /internal/observability_ai_assistant/kb/entries/save\" | \"DELETE /internal/observability_ai_assistant/kb/entries/{entryId}\"" ], "path": "x-pack/plugins/observability_solution/observability_ai_assistant/public/api/index.ts", "deprecated": false, @@ -6449,6 +6659,46 @@ }, ">; }[]; }; }; }) => Promise; } & ", "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/kb/user_instructions\": { endpoint: \"GET /internal/observability_ai_assistant/kb/user_instructions\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise<{ userInstructions: (", + "Instruction", + " & { public?: boolean | undefined; })[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"PUT /internal/observability_ai_assistant/kb/user_instructions\": { endpoint: \"PUT /internal/observability_ai_assistant/kb/user_instructions\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ id: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; public: ", + "Type", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { id: string; text: ", + "Branded", + "; public: boolean; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", "; \"GET /internal/observability_ai_assistant/kb/entries\": { endpoint: \"GET /internal/observability_ai_assistant/kb/entries\"; params?: ", "TypeC", "<{ query: ", @@ -6515,7 +6765,13 @@ "LiteralC", "<\"high\">]>; is_correction: ", "Type", - "; public: ", + "; type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"contextual\">]>; public: ", "Type", "; labels: ", "RecordC", @@ -6535,7 +6791,7 @@ "section": "def-common.NonEmptyStringBrand", "text": "NonEmptyStringBrand" }, - ">; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; public: boolean; labels: { [x: string]: string; }; }; }; }) => Promise; } & ", + ">; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; type: \"user_instruction\" | \"contextual\"; public: boolean; labels: { [x: string]: string; }; }; }; }) => Promise; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/functions/recall\": { endpoint: \"POST /internal/observability_ai_assistant/functions/recall\"; params?: ", "TypeC", @@ -6764,22 +7020,22 @@ ">; }>]>; instructions: ", "ArrayC", "<", - "UnionC", - "<[", - "StringC", - ", ", "IntersectionC", "<[", - "TypeC", + "PartialC", "<{ doc_id: ", "StringC", - "; text: ", - "StringC", "; }>, ", - "PartialC", - "<{ system: ", - "BooleanC", - "; }>]>]>>; }>]>; }>, ", + "TypeC", + "<{ text: ", + "StringC", + "; instruction_type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"application_instruction\">]>; }>]>>; }>]>; }>, ", "PartialC", "<{ body: ", "PartialC", @@ -6815,7 +7071,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: (string | ({ doc_id: string; text: string; } & { system?: boolean | undefined; }))[] | undefined; }; } & { body?: { actions?: ({ name: string; description: string; } & { parameters?: any; })[] | undefined; } | undefined; query?: { format?: \"default\" | \"openai\" | undefined; } | undefined; }; }) => Promise<", + "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: ({ doc_id?: string | undefined; } & { text: string; instruction_type: \"user_instruction\" | \"application_instruction\"; })[] | undefined; }; } & { body?: { actions?: ({ name: string; description: string; } & { parameters?: any; })[] | undefined; } | undefined; query?: { format?: \"default\" | \"openai\" | undefined; } | undefined; }; }) => Promise<", "Readable", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -6872,22 +7128,22 @@ ">; }>]>; instructions: ", "ArrayC", "<", - "UnionC", - "<[", - "StringC", - ", ", "IntersectionC", "<[", - "TypeC", + "PartialC", "<{ doc_id: ", "StringC", - "; text: ", - "StringC", "; }>, ", - "PartialC", - "<{ system: ", - "BooleanC", - "; }>]>]>>; }>]>; }>, ", + "TypeC", + "<{ text: ", + "StringC", + "; instruction_type: ", + "UnionC", + "<[", + "LiteralC", + "<\"user_instruction\">, ", + "LiteralC", + "<\"application_instruction\">]>; }>]>>; }>]>; }>, ", "TypeC", "<{ body: ", "TypeC", @@ -6909,7 +7165,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: (string | ({ doc_id: string; text: string; } & { system?: boolean | undefined; }))[] | undefined; }; } & { body: { screenContexts: ", + "[]; connectorId: string; persist: boolean; } & { conversationId?: string | undefined; title?: string | undefined; responseLanguage?: string | undefined; disableFunctions?: boolean | { except: string[]; } | undefined; instructions?: ({ doc_id?: string | undefined; } & { text: string; instruction_type: \"user_instruction\" | \"application_instruction\"; })[] | undefined; }; } & { body: { screenContexts: ", "ObservabilityAIAssistantScreenContextRequest", "[]; }; }; }) => Promise<", "Readable", @@ -7921,6 +8177,20 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.KnowledgeBaseEntry.type", + "type": "CompoundType", + "tags": [], + "label": "type", + "description": [], + "signature": [ + "\"user_instruction\" | \"contextual\" | undefined" + ], + "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "observabilityAIAssistant", "id": "def-common.KnowledgeBaseEntry.public", @@ -8092,6 +8362,18 @@ "trackAdoption": false, "initialIsOpen": false }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.KnowledgeBaseType", + "type": "Enum", + "tags": [], + "label": "KnowledgeBaseType", + "description": [], + "path": "x-pack/plugins/observability_solution/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, { "parentPluginId": "observabilityAIAssistant", "id": "def-common.MessageRole", diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index 4dcebbc6874ba..5c648e9c7c4c4 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityAIAssistant'] --- import observabilityAIAssistantObj from './observability_a_i_assistant.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 290 | 1 | 288 | 26 | +| 294 | 1 | 292 | 27 | ## Client diff --git a/api_docs/observability_a_i_assistant_app.mdx b/api_docs/observability_a_i_assistant_app.mdx index 772d6316dd3fd..6d78b1f941ab2 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-08-19 +date: 2024-08-20 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 d837e302313c0..fbfa05a05c99b 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-08-19 +date: 2024-08-20 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 2bc363196b8d0..59a8dfbeea006 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-08-19 +date: 2024-08-20 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 9ae95f9d8219b..0851fa7972f5b 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-08-19 +date: 2024-08-20 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 b7ce0524edb82..57a4bf6fb5ad6 100644 --- a/api_docs/observability_shared.devdocs.json +++ b/api_docs/observability_shared.devdocs.json @@ -3869,7 +3869,15 @@ "section": "def-common.AssetDetailsLocatorParams", "text": "AssetDetailsLocatorParams" }, - ") => Promise<{ app: string; path: string; state: ", + " & { state?: ", + { + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.SerializableRecord", + "text": "SerializableRecord" + }, + " | undefined; }) => Promise<{ app: string; path: string; state: ", { "pluginId": "@kbn/utility-types", "scope": "common", @@ -3886,7 +3894,7 @@ { "parentPluginId": "observabilityShared", "id": "def-common.AssetDetailsLocatorDefinition.getLocation.$1", - "type": "Object", + "type": "CompoundType", "tags": [], "label": "params", "description": [], @@ -3897,7 +3905,16 @@ "docId": "kibObservabilitySharedPluginApi", "section": "def-common.AssetDetailsLocatorParams", "text": "AssetDetailsLocatorParams" - } + }, + " & { state?: ", + { + "pluginId": "@kbn/utility-types", + "scope": "common", + "docId": "kibKbnUtilityTypesPluginApi", + "section": "def-common.SerializableRecord", + "text": "SerializableRecord" + }, + " | undefined; }" ], "path": "x-pack/plugins/observability_solution/observability_shared/common/locators/infra/asset_details_locator.ts", "deprecated": false, @@ -4935,27 +4952,6 @@ "deprecated": false, "trackAdoption": false }, - { - "parentPluginId": "observabilityShared", - "id": "def-common.AssetDetailsLocatorParams.state", - "type": "Object", - "tags": [], - "label": "state", - "description": [], - "signature": [ - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.SerializableRecord", - "text": "SerializableRecord" - }, - " | undefined" - ], - "path": "x-pack/plugins/observability_solution/observability_shared/common/locators/infra/asset_details_locator.ts", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "observabilityShared", "id": "def-common.AssetDetailsLocatorParams._a", @@ -4978,7 +4974,7 @@ "label": "assetDetails", "description": [], "signature": [ - "{ tabId?: string | undefined; dashboardId?: string | undefined; dateRange?: { from: string; to: string; } | undefined; } | undefined" + "{ tabId?: string | undefined; name?: string | undefined; dashboardId?: string | undefined; dateRange?: { from: string; to: string; } | undefined; alertMetric?: string | undefined; } | undefined" ], "path": "x-pack/plugins/observability_solution/observability_shared/common/locators/infra/asset_details_locator.ts", "deprecated": false, @@ -5373,7 +5369,7 @@ "label": "sort", "description": [], "signature": [ - "{ by: string; direction: \"desc\" | \"async\"; }" + "{ by: string; direction: \"desc\" | \"async\"; } | undefined" ], "path": "x-pack/plugins/observability_solution/observability_shared/common/locators/infra/inventory_locator.ts", "deprecated": false, @@ -5382,10 +5378,13 @@ { "parentPluginId": "observabilityShared", "id": "def-common.InventoryLocatorParams.timelineOpen", - "type": "boolean", + "type": "CompoundType", "tags": [], "label": "timelineOpen", "description": [], + "signature": [ + "boolean | undefined" + ], "path": "x-pack/plugins/observability_solution/observability_shared/common/locators/infra/inventory_locator.ts", "deprecated": false, "trackAdoption": false @@ -5398,7 +5397,7 @@ "label": "view", "description": [], "signature": [ - "\"map\" | \"table\"" + "\"map\" | \"table\" | undefined" ], "path": "x-pack/plugins/observability_solution/observability_shared/common/locators/infra/inventory_locator.ts", "deprecated": false, diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index c9a73794f4d95..154eb3d06879f 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-08-19 +date: 2024-08-20 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 | |-------------------|-----------|------------------------|-----------------| -| 449 | 1 | 444 | 19 | +| 448 | 1 | 443 | 19 | ## Client diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 890c4ba6ebc30..9d78255c17b67 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-08-19 +date: 2024-08-20 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 689c3292c7834..62a7dbc7428ae 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-08-19 +date: 2024-08-20 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 a5fe0b7cf8131..298c39bc0a4f8 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 52339 | 241 | 39274 | 1922 | +| 52345 | 241 | 39277 | 1922 | ## Plugin Directory @@ -64,7 +64,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@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 | 4 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin introduces the concept of data set quality, where users can easily get an overview on the data sets they have. | 15 | 0 | 15 | 8 | | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 15 | 0 | 9 | 2 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 149 | 0 | 102 | 26 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 150 | 0 | 102 | 26 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 35 | 0 | 33 | 2 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | A stateful layer to register shared features and provide an access point to discover without a direct dependency | 16 | 0 | 15 | 2 | | | [@elastic/security-threat-hunting-explore](https://github.com/orgs/elastic/teams/security-threat-hunting-explore) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | @@ -121,7 +121,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 127 | 2 | 100 | 4 | | | [@elastic/security-scalability](https://github.com/orgs/elastic/teams/security-scalability) | Plugin implementing the Integration Assistant API and UI | 47 | 0 | 40 | 3 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides UI and APIs for the interactive setup mode. | 28 | 0 | 18 | 0 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 111 | 0 | 111 | 5 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 94 | 0 | 94 | 5 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 5 | 0 | 5 | 2 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 6 | 0 | 6 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 153 | 0 | 121 | 3 | @@ -141,7 +141,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 44 | 0 | 44 | 7 | | | [@elastic/kibana-gis](https://github.com/orgs/elastic/teams/kibana-gis) | - | 209 | 0 | 205 | 28 | | | [@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 | 108 | 8 | 108 | 6 | +| | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | Exposes utilities for accessing metrics data | 109 | 8 | 109 | 6 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the machine learning features provided by Elastic. | 154 | 3 | 67 | 102 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 2 | 0 | 2 | 0 | | | [@elastic/stack-monitoring](https://github.com/orgs/elastic/teams/stack-monitoring) | - | 15 | 3 | 13 | 1 | @@ -151,12 +151,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@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) | - | 702 | 2 | 695 | 22 | -| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 290 | 1 | 288 | 26 | +| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 294 | 1 | 292 | 27 | | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 4 | 0 | 4 | 0 | | | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 2 | 0 | 2 | 0 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | This plugin exposes and registers observability log consumption features. | 19 | 0 | 19 | 1 | | | [@elastic/obs-ux-logs-team](https://github.com/orgs/elastic/teams/obs-ux-logs-team) | - | 21 | 0 | 21 | 0 | -| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 449 | 1 | 444 | 19 | +| | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 448 | 1 | 443 | 19 | | | [@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 | @@ -211,7 +211,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Extends UI Actions plugin with more functionality | 212 | 0 | 145 | 11 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains services reliant on the plugin lifecycle for the unified doc viewer component (see @kbn/unified-doc-viewer). | 15 | 0 | 10 | 3 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | The `unifiedHistogram` plugin provides UI components to create a layout including a resizable histogram and a main display. | 71 | 0 | 36 | 6 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 149 | 2 | 112 | 22 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Contains all the key functionality of Kibana's unified search experience.Contains all the key functionality of Kibana's unified search experience. | 149 | 2 | 112 | 21 | | upgradeAssistant | [@elastic/kibana-management](https://github.com/orgs/elastic/teams/kibana-management) | - | 0 | 0 | 0 | 0 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | This plugin visualizes data from Heartbeat, and integrates with other Observability solutions. | 1 | 0 | 1 | 0 | | urlDrilldown | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds drilldown implementations to Kibana | 0 | 0 | 0 | 0 | @@ -248,7 +248,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@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) | - | 217 | 0 | 214 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 33 | 0 | 33 | 0 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 22 | 0 | 5 | 1 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 31 | 0 | 15 | 1 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 299 | 0 | 282 | 8 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 73 | 0 | 73 | 2 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 1 | 0 | 0 | 0 | @@ -504,7 +504,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 1 | 0 | | | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 149 | 1 | 120 | 15 | | | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 66 | 0 | 62 | 0 | -| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 194 | 0 | 183 | 10 | +| | [@elastic/kibana-esql](https://github.com/orgs/elastic/teams/kibana-esql) | - | 195 | 0 | 183 | 10 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 40 | 0 | 40 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 0 | 52 | 1 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 39 | 0 | 14 | 1 | @@ -532,7 +532,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 7 | 1 | 7 | 1 | | | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 9 | 0 | 9 | 0 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 52 | 12 | 43 | 0 | -| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 25 | 0 | 25 | 0 | +| | [@elastic/obs-ux-management-team](https://github.com/orgs/elastic/teams/obs-ux-management-team) | - | 29 | 0 | 29 | 0 | | | [@elastic/obs-knowledge-team](https://github.com/orgs/elastic/teams/obs-knowledge-team) | - | 60 | 0 | 60 | 4 | | | [@elastic/search-kibana](https://github.com/orgs/elastic/teams/search-kibana) | - | 44 | 0 | 44 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 13 | 0 | 13 | 0 | @@ -748,7 +748,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 42 | 0 | 28 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 57 | 0 | 48 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 9 | 0 | 8 | 0 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the unified data table which can be integrated into apps | 166 | 0 | 92 | 2 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the unified data table which can be integrated into apps | 170 | 0 | 94 | 2 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 18 | 0 | 17 | 5 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Contains functionality for the field list and field stats which can be integrated into apps | 314 | 0 | 285 | 8 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 13 | 0 | 9 | 0 | diff --git a/api_docs/presentation_panel.mdx b/api_docs/presentation_panel.mdx index 38b48bfc0e82c..16613ecf83151 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-08-19 +date: 2024-08-20 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 dd1a8158014ca..4ab5501307b0a 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-08-19 +date: 2024-08-20 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 d0b6664134021..a6c674f294695 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-08-19 +date: 2024-08-20 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 dd6be75fe3c4a..97257e2f37759 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-08-19 +date: 2024-08-20 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 2c9f785653c29..2db47e0bbcbaa 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-08-19 +date: 2024-08-20 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 2a8b520824d7f..7c1b0d5cc1c1b 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-08-19 +date: 2024-08-20 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 f43166f217e33..899b9d94bee34 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.devdocs.json b/api_docs/rule_registry.devdocs.json index 02bf20ed95090..29dceb9bcf15d 100644 --- a/api_docs/rule_registry.devdocs.json +++ b/api_docs/rule_registry.devdocs.json @@ -399,7 +399,9 @@ "section": "def-common.RuleTypeParams", "text": "RuleTypeParams" }, - " = never>({ aggs, featureIds, index, query, search_after: searchAfter, size, sort, track_total_hits: trackTotalHits, _source, runtimeMappings, }: { aggs?: object | undefined; featureIds?: string[] | undefined; index?: string | undefined; query?: object | undefined; search_after?: (string | number)[] | undefined; size?: number | undefined; sort?: ", + " = never, TAggregations = Record>({ aggs, featureIds, index, query, search_after: searchAfter, size, sort, track_total_hits: trackTotalHits, _source, runtimeMappings, }: { aggs?: object | undefined; featureIds?: string[] | undefined; index?: string | undefined; query?: object | undefined; search_after?: (string | number)[] | undefined; size?: number | undefined; sort?: ", "SortOptions", "[] | undefined; track_total_hits?: number | boolean | undefined; _source?: false | string[] | undefined; runtimeMappings?: ", "MappingRuntimeFields", @@ -413,9 +415,7 @@ "section": "def-common.MultiField", "text": "MultiField" }, - "[]; }; readonly \"kibana.alert.rule.execution.timestamp\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.severity_improving\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.workflow_assignee_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }>>, Record>>" + "[]; }; readonly \"kibana.alert.rule.execution.timestamp\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.severity_improving\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.workflow_assignee_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }>>, TAggregations>>" ], "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", "deprecated": false, @@ -603,9 +603,9 @@ "section": "def-common.MultiField", "text": "MultiField" }, - "[]; }; readonly \"kibana.alert.rule.execution.timestamp\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.severity_improving\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.workflow_assignee_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }>>, Record>>" + "[]; }; readonly \"kibana.alert.rule.execution.timestamp\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.rule.parameters\": { readonly array: false; readonly type: \"flattened\"; readonly ignore_above: 4096; readonly required: false; }; readonly \"kibana.alert.rule.tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.severity_improving\": { readonly type: \"boolean\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.start\": { readonly type: \"date\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.time_range\": { readonly type: \"date_range\"; readonly format: \"epoch_millis||strict_date_optional_time\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.url\": { readonly type: \"keyword\"; readonly array: false; readonly index: false; readonly required: false; readonly ignore_above: 2048; }; readonly \"kibana.alert.workflow_assignee_ids\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.alert.workflow_status\": { readonly type: \"keyword\"; readonly array: false; readonly required: false; }; readonly \"kibana.alert.workflow_tags\": { readonly type: \"keyword\"; readonly array: true; readonly required: false; }; readonly \"kibana.version\": { readonly type: \"version\"; readonly array: false; readonly required: false; }; }>>, { groupByFields: ", + "AggregationsMultiBucketAggregateBase", + "<{ key: string; }>; }>>" ], "path": "x-pack/plugins/rule_registry/server/alert_data_client/alerts_client.ts", "deprecated": false, diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index a5221c7dbcdf4..1e8b6b8e8311c 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-08-19 +date: 2024-08-20 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 539230426c5f1..b3087b14c155e 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'runtimeFields'] --- import runtimeFieldsObj from './runtime_fields.devdocs.json'; diff --git a/api_docs/saved_objects.mdx b/api_docs/saved_objects.mdx index 5a66c63ccd6eb..f24b5341fca2b 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-08-19 +date: 2024-08-20 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 39e24fe519456..2185c6249cc12 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-08-19 +date: 2024-08-20 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 5e69b818858ba..918a1c655708f 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-08-19 +date: 2024-08-20 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 a0b430e0f8938..0cc550a7fce4f 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-08-19 +date: 2024-08-20 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 ffd77eb8f8d50..c990effce2ed1 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.devdocs.json b/api_docs/saved_search.devdocs.json index 7d4282b2565dd..13e1c29fa1214 100644 --- a/api_docs/saved_search.devdocs.json +++ b/api_docs/saved_search.devdocs.json @@ -730,16 +730,16 @@ "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SerializedSearchSourceFields", - "text": "SerializedSearchSourceFields" + "section": "def-common.ISearchSource", + "text": "ISearchSource" }, " | ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchSource", - "text": "ISearchSource" + "section": "def-common.SerializedSearchSourceFields", + "text": "SerializedSearchSourceFields" }, ", managed: boolean, serialized?: Serialized) => ReturnType" ], @@ -804,16 +804,16 @@ "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.SerializedSearchSourceFields", - "text": "SerializedSearchSourceFields" + "section": "def-common.ISearchSource", + "text": "ISearchSource" }, " | ", { "pluginId": "data", "scope": "common", "docId": "kibDataSearchPluginApi", - "section": "def-common.ISearchSource", - "text": "ISearchSource" + "section": "def-common.SerializedSearchSourceFields", + "text": "SerializedSearchSourceFields" } ], "path": "src/plugins/saved_search/common/saved_searches_utils.ts", diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index 9dfd90903ca81..77a051abd8605 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-08-19 +date: 2024-08-20 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 2787943e797c5..56d6b63c672d1 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-08-19 +date: 2024-08-20 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 fa1b1214666bf..79b3e82beb4d1 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/search_connectors.mdx b/api_docs/search_connectors.mdx index 64a61563c2cb4..989778e9d6578 100644 --- a/api_docs/search_connectors.mdx +++ b/api_docs/search_connectors.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchConnectors title: "searchConnectors" image: https://source.unsplash.com/400x175/?github description: API docs for the searchConnectors plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchConnectors'] --- import searchConnectorsObj from './search_connectors.devdocs.json'; diff --git a/api_docs/search_homepage.mdx b/api_docs/search_homepage.mdx index d903f49feb17e..913d08712f970 100644 --- a/api_docs/search_homepage.mdx +++ b/api_docs/search_homepage.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchHomepage title: "searchHomepage" image: https://source.unsplash.com/400x175/?github description: API docs for the searchHomepage plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchHomepage'] --- import searchHomepageObj from './search_homepage.devdocs.json'; diff --git a/api_docs/search_inference_endpoints.mdx b/api_docs/search_inference_endpoints.mdx index 3a5c5dbaf0008..35e6268ae8a83 100644 --- a/api_docs/search_inference_endpoints.mdx +++ b/api_docs/search_inference_endpoints.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchInferenceEndpoints title: "searchInferenceEndpoints" image: https://source.unsplash.com/400x175/?github description: API docs for the searchInferenceEndpoints plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchInferenceEndpoints'] --- import searchInferenceEndpointsObj from './search_inference_endpoints.devdocs.json'; diff --git a/api_docs/search_notebooks.mdx b/api_docs/search_notebooks.mdx index edea1bc95721a..5c78965444f38 100644 --- a/api_docs/search_notebooks.mdx +++ b/api_docs/search_notebooks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/searchNotebooks title: "searchNotebooks" image: https://source.unsplash.com/400x175/?github description: API docs for the searchNotebooks plugin -date: 2024-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'searchNotebooks'] --- import searchNotebooksObj from './search_notebooks.devdocs.json'; diff --git a/api_docs/search_playground.mdx b/api_docs/search_playground.mdx index 833424d68f560..53ce15187673c 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-08-19 +date: 2024-08-20 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 e74853c23f84b..fc5f64f447837 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index bc3ac8ad16e1a..7c8b8310a3de9 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-08-19 +date: 2024-08-20 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 38bf86d086084..4e7d0f9ceaca7 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-08-19 +date: 2024-08-20 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 7ab3be141885e..fee571e8d20ce 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-08-19 +date: 2024-08-20 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 361f77e6b332f..39f2afadc2064 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-08-19 +date: 2024-08-20 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 2e9eda7eadc59..f49ab5309a115 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-08-19 +date: 2024-08-20 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 2d91d6ae2b70f..420217f0250f5 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-08-19 +date: 2024-08-20 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 9ec4820311d17..ba0edbb3f9c24 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-08-19 +date: 2024-08-20 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 5e5832b23c6f2..dad17c0a174dc 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/slo.mdx b/api_docs/slo.mdx index 67bdbbe120c11..83dee22990895 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-08-19 +date: 2024-08-20 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 736df030cb5d7..0c227c09674a1 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-08-19 +date: 2024-08-20 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 cb5ba10347fb3..43ffc7394553d 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-08-19 +date: 2024-08-20 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 86e1e82395ee5..1afe437060568 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-08-19 +date: 2024-08-20 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 f7ea7b8d5bbec..ed960e347ce78 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-08-19 +date: 2024-08-20 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 e9e2ad02cb3b5..4e2f35bef2a1a 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-08-19 +date: 2024-08-20 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 3774c7e725bd4..35fbe9480ae4e 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-08-19 +date: 2024-08-20 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 7c94ea4d1292f..587fea58576a8 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-08-19 +date: 2024-08-20 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 9d742815444bb..c1251341d5275 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-08-19 +date: 2024-08-20 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 28ac0b547eaac..f9a18e634f808 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index 1d9f5f477f158..5b1e4c01fcfc6 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-08-19 +date: 2024-08-20 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 9358d9be04107..7b57298b9a648 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-08-19 +date: 2024-08-20 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 6d62f7fc42dd6..5a1a2b83bb6cc 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 19afa0938ecc7..fd43b190805c2 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-08-19 +date: 2024-08-20 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 e70201939b8b9..72f1e73ff901b 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-08-19 +date: 2024-08-20 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 a07791afe928b..d7d89d44c4add 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-08-19 +date: 2024-08-20 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 9881932e1f243..ce2642d481831 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-08-19 +date: 2024-08-20 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 4a9e63e1796d5..27ea4fc1d70ec 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.devdocs.json b/api_docs/unified_search.devdocs.json index 0b46582c1421c..fbf5c170e1168 100644 --- a/api_docs/unified_search.devdocs.json +++ b/api_docs/unified_search.devdocs.json @@ -233,7 +233,13 @@ ], "signature": [ "React.ForwardRefExoticComponent<", - "DataViewPickerPropsExtended", + { + "pluginId": "unifiedSearch", + "scope": "public", + "docId": "kibUnifiedSearchPluginApi", + "section": "def-public.DataViewPickerProps", + "text": "DataViewPickerProps" + }, " & ", { "pluginId": "@kbn/shared-ux-utility", diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index ecbe305871ad7..a6734552b2cb7 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_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 | |-------------------|-----------|------------------------|-----------------| -| 149 | 2 | 112 | 22 | +| 149 | 2 | 112 | 21 | ## Client diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index cdb30bc404beb..8b0f27b0da2f7 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.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 | |-------------------|-----------|------------------------|-----------------| -| 149 | 2 | 112 | 22 | +| 149 | 2 | 112 | 21 | ## Client diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index e8b12d7969dfe..a4fbc12c94c8c 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-08-19 +date: 2024-08-20 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 bd521e6456a78..c26d9c8b08827 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-08-19 +date: 2024-08-20 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 620da05582c34..f8d76930f21a3 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-08-19 +date: 2024-08-20 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 cf08ddc015c35..95a200345ac78 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-08-19 +date: 2024-08-20 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 801198908d372..c929de9d013ef 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-08-19 +date: 2024-08-20 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 3da5e58793451..88f0907dcd70e 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-08-19 +date: 2024-08-20 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 da21e1261eb70..3f38cbc240cc4 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-08-19 +date: 2024-08-20 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 96d3ba0c52274..48f87ba9e0c8a 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-08-19 +date: 2024-08-20 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 a4a371ebbd413..7c90da4560c03 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-08-19 +date: 2024-08-20 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 e62f2ffc58376..d3df7baacd02c 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-08-19 +date: 2024-08-20 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 55d0395c0d39f..f2db3cf166cbd 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-08-19 +date: 2024-08-20 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 b0387720d363a..d76fbf3b2712c 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-08-19 +date: 2024-08-20 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 8360b0fe430c1..41e36b5422730 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-08-19 +date: 2024-08-20 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 5cdff7e85393b..b493a26d3d1cf 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visTypeXy'] --- import visTypeXyObj from './vis_type_xy.devdocs.json'; diff --git a/api_docs/visualizations.mdx b/api_docs/visualizations.mdx index 2830a12c4a656..efdad04aff5ff 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-08-19 +date: 2024-08-20 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/docs/CHANGELOG.asciidoc b/docs/CHANGELOG.asciidoc index d58ba5b97832f..fde64e7449fb2 100644 --- a/docs/CHANGELOG.asciidoc +++ b/docs/CHANGELOG.asciidoc @@ -74,9 +74,27 @@ Review important information about the {kib} 8.x releases. [[release-notes-8.15.0]] == {kib} 8.15.0 - For information about the {kib} 8.15.0 release, review the following information. +The 8.15.0 release includes the following known issues. + +[float] +[[known-issues-8.15.0]] +=== Known issues + +[discrete] +[[known-178114]] +.Kibana fails to start when processing YAML configuration keys that contain dotted notation in objects in arrays +[%collapsible] +==== +*Details* + +In 8.15.1, We fixed a bug when processing YAML configuration keys that contain dotted notation in objects in arrays. +This can manifest as a validation error causing Kibana to not start. + +For more information, refer to {kibana-pull}190590[#190590]. +==== + + [float] [[deprecations-8.15.0]] === Deprecations diff --git a/docs/api/role-management/put-bulk.asciidoc b/docs/api/role-management/put-bulk.asciidoc index e41b836e26357..a11de47167e05 100644 --- a/docs/api/role-management/put-bulk.asciidoc +++ b/docs/api/role-management/put-bulk.asciidoc @@ -189,7 +189,7 @@ Grant full access to all features in the Default space for `my_kibana_role_1` an [source,sh] -------------------------------------------------- -$ curl -X PUT api/security/role +$ curl -X POST api/security/roles { "roles": { "my_kibana_role_1": { diff --git a/docs/developer/plugin-list.asciidoc b/docs/developer/plugin-list.asciidoc index e51f77d096adf..49b5755243076 100644 --- a/docs/developer/plugin-list.asciidoc +++ b/docs/developer/plugin-list.asciidoc @@ -571,7 +571,7 @@ security and spaces filtering. |{kib-repo}blob/{branch}/x-pack/plugins/observability_solution/entity_manager/README.md[entityManager] -|This plugin provides access to observed asset data, such as information about hosts, pods, containers, services, and more. +|This plugin provides access to observed entity data, such as information about hosts, pods, containers, services, and more. |{kib-repo}blob/{branch}/x-pack/plugins/event_log/README.md[eventLog] diff --git a/package.json b/package.json index 4b2303136e000..3a0c99e9940be 100644 --- a/package.json +++ b/package.json @@ -1054,7 +1054,7 @@ "deepmerge": "^4.2.2", "del": "^6.1.0", "diff": "^5.1.0", - "elastic-apm-node": "^4.7.2", + "elastic-apm-node": "^4.7.3", "email-addresses": "^5.0.0", "eventsource-parser": "^1.1.1", "execa": "^5.1.1", @@ -1618,7 +1618,7 @@ "apidoc-markdown": "^7.3.2", "argsplit": "^1.0.5", "autoprefixer": "^10.4.7", - "axe-core": "^4.9.0", + "axe-core": "^4.10.0", "babel-jest": "^29.6.1", "babel-loader": "^8.2.5", "babel-plugin-add-module-exports": "^1.0.4", @@ -1658,7 +1658,7 @@ "eslint-config-prettier": "^9.1.0", "eslint-plugin-ban": "^1.6.0", "eslint-plugin-cypress": "^2.15.1", - "eslint-plugin-depend": "^0.9.0", + "eslint-plugin-depend": "^0.10.0", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-formatjs": "^4.12.2", "eslint-plugin-import": "^2.28.0", @@ -1675,6 +1675,7 @@ "exit-hook": "^2.2.0", "expect": "^29.6.1", "expose-loader": "^0.7.5", + "express": "^4.19.2", "faker": "^5.1.0", "fetch-mock": "^7.3.9", "file-loader": "^4.2.0", @@ -1768,6 +1769,8 @@ "superagent": "^9.0.2", "supertest": "^7.0.0", "svgo": "^2.8.0", + "swagger-jsdoc": "^6.2.8", + "swagger-ui-express": "^5.0.1", "table": "^6.8.1", "tape": "^5.0.1", "terser": "^5.31.5", diff --git a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/breadcrumbs.tsx b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/breadcrumbs.tsx index fb1043d239523..ac80702ab99ec 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/breadcrumbs.tsx +++ b/packages/core/chrome/core-chrome-browser-internal/src/project_navigation/breadcrumbs.tsx @@ -144,6 +144,7 @@ function buildRootCrumb({ color="text" iconType="gear" data-test-subj="manageDeploymentBtn" + size="s" > {i18n.translate('core.ui.primaryNav.cloud.breadCrumbDropdown.manageDeploymentLabel', { defaultMessage: 'Manage this deployment', @@ -157,6 +158,7 @@ function buildRootCrumb({ color="text" iconType="spaces" data-test-subj="viewDeploymentsBtn" + size="s" > {cloudLinks.deployments.title} @@ -164,9 +166,9 @@ function buildRootCrumb({ ), popoverProps: { - panelPaddingSize: 'm', + panelPaddingSize: 's', zIndex: 6000, - panelStyle: { width: 260 }, + panelStyle: { maxWidth: 240 }, panelProps: { 'data-test-subj': 'deploymentLinksPanel', }, diff --git a/packages/kbn-alerts-grouping/index.ts b/packages/kbn-alerts-grouping/index.ts index e9e2476dde7a7..f124e57596191 100644 --- a/packages/kbn-alerts-grouping/index.ts +++ b/packages/kbn-alerts-grouping/index.ts @@ -7,5 +7,9 @@ */ export { AlertsGrouping } from './src/components/alerts_grouping'; -export { type AlertsGroupingProps } from './src/types'; +export { + type AlertsGroupingProps, + type BaseAlertsGroupAggregations, + type AlertsGroupAggregationBucket, +} from './src/types'; export { useAlertsGroupingState } from './src/contexts/alerts_grouping_context'; diff --git a/packages/kbn-alerts-grouping/src/components/alerts_grouping.tsx b/packages/kbn-alerts-grouping/src/components/alerts_grouping.tsx index f17d794668371..5db1ef5a5d0ff 100644 --- a/packages/kbn-alerts-grouping/src/components/alerts_grouping.tsx +++ b/packages/kbn-alerts-grouping/src/components/alerts_grouping.tsx @@ -23,7 +23,7 @@ import { i18n } from '@kbn/i18n'; import { useAlertsDataView } from '@kbn/alerts-ui-shared/src/common/hooks/use_alerts_data_view'; import useLocalStorage from 'react-use/lib/useLocalStorage'; import { AlertsGroupingLevel, AlertsGroupingLevelProps } from './alerts_grouping_level'; -import { AlertsGroupingProps } from '../types'; +import type { AlertsGroupingProps, BaseAlertsGroupAggregations } from '../types'; import { AlertsGroupingContextProvider, useAlertsGroupingState, @@ -40,7 +40,10 @@ const NextLevel = ({ parentGroupingFilter, groupingFilters, getLevel, -}: Pick & { +}: Pick< + AlertsGroupingLevelProps, + 'children' | 'parentGroupingFilter' +> & { level: number; selectedGroups: string[]; groupingFilters: Filter[]; @@ -56,7 +59,9 @@ const NextLevel = ({ return children(nextGroupingFilters)!; }; -const AlertsGroupingInternal = (props: AlertsGroupingProps) => { +const AlertsGroupingInternal = ( + props: AlertsGroupingProps +) => { const { groupingId, services, @@ -230,6 +235,8 @@ const AlertsGroupingInternal = (props: AlertsGroupingProps) => { return getLevel(0, selectedGroups[0]); }; +const typedMemo: (c: T) => T = memo; + /** * A coordinator component to show multiple alert tables grouped by one or more fields * @@ -243,7 +250,7 @@ const AlertsGroupingInternal = (props: AlertsGroupingProps) => { * * * return ( - * * featureIds={[...]} * globalQuery={{ query: ..., language: 'kql' }} * globalFilters={...} @@ -274,11 +281,25 @@ const AlertsGroupingInternal = (props: AlertsGroupingProps) => { * * ); * ``` + * + * To define your aggregations result type, extend the `BaseAlertsGroupAggregations` type: + * + * ```ts + * import { BaseAlertsGroupAggregations } from '@kbn/alerts-grouping'; + * + * interface YourAggregationsType extends BaseAlertsGroupAggregations { + * // Your custom aggregations here + * } + * ``` + * + * Check {@link useGetAlertsGroupAggregationsQuery} for more info on alerts aggregations. */ -export const AlertsGrouping = memo((props: AlertsGroupingProps) => { - return ( - - - - ); -}); +export const AlertsGrouping = typedMemo( + (props: AlertsGroupingProps) => { + return ( + + + + ); + } +); diff --git a/packages/kbn-alerts-grouping/src/components/alerts_grouping_level.tsx b/packages/kbn-alerts-grouping/src/components/alerts_grouping_level.tsx index e4511e8dea774..a82818215cbf4 100644 --- a/packages/kbn-alerts-grouping/src/components/alerts_grouping_level.tsx +++ b/packages/kbn-alerts-grouping/src/components/alerts_grouping_level.tsx @@ -18,10 +18,11 @@ import { useGetAlertsGroupAggregationsQuery, UseGetAlertsGroupAggregationsQueryProps, } from '@kbn/alerts-ui-shared'; -import { AlertsGroupingProps } from '../types'; +import { AlertsGroupingProps, BaseAlertsGroupAggregations } from '../types'; -export interface AlertsGroupingLevelProps = {}> - extends AlertsGroupingProps { +export interface AlertsGroupingLevelProps< + T extends BaseAlertsGroupAggregations = BaseAlertsGroupAggregations +> extends AlertsGroupingProps { getGrouping: ( props: Omit, 'groupSelector' | 'pagination'> ) => ReactElement; @@ -40,8 +41,9 @@ const DEFAULT_FILTERS: Filter[] = []; /** * Renders an alerts grouping level */ -export const AlertsGroupingLevel = memo( - = {}>({ +const typedMemo: (c: T) => T = memo; +export const AlertsGroupingLevel = typedMemo( + ({ featureIds, defaultFilters = DEFAULT_FILTERS, from, diff --git a/packages/kbn-alerts-grouping/src/types.ts b/packages/kbn-alerts-grouping/src/types.ts index 8d226bb74e71f..835941e8db95d 100644 --- a/packages/kbn-alerts-grouping/src/types.ts +++ b/packages/kbn-alerts-grouping/src/types.ts @@ -29,7 +29,9 @@ export interface AlertsGroupingState { [groupingId: string]: GroupModel; } -export interface AlertsGroupingProps = {}> { +export interface AlertsGroupingProps< + T extends BaseAlertsGroupAggregations = BaseAlertsGroupAggregations +> { /** * The leaf component that will be rendered in the grouping panels */ @@ -96,3 +98,26 @@ export interface AlertsGroupingProps = {}> { http: HttpSetup; }; } + +export interface AlertsGroupAggregationBucket { + key: string; + doc_count: number; + isNullGroup?: boolean; + unitsCount?: { + value: number; + }; +} + +export interface BaseAlertsGroupAggregations { + groupByFields: { + doc_count_error_upper_bound: number; + sum_other_doc_count: number; + buckets: AlertsGroupAggregationBucket[]; + }; + groupsCount: { + value: number; + }; + unitsCount: { + value: number; + }; +} diff --git a/packages/kbn-alerts-ui-shared/src/common/hooks/use_get_alerts_group_aggregations_query.ts b/packages/kbn-alerts-ui-shared/src/common/hooks/use_get_alerts_group_aggregations_query.ts index eab5b9ac510fa..e9e24b7a20d5e 100644 --- a/packages/kbn-alerts-ui-shared/src/common/hooks/use_get_alerts_group_aggregations_query.ts +++ b/packages/kbn-alerts-ui-shared/src/common/hooks/use_get_alerts_group_aggregations_query.ts @@ -45,6 +45,8 @@ export interface UseGetAlertsGroupAggregationsQueryProps { * * The provided `aggregations` are applied within `groupByFields`. Here the `groupByField` runtime * field can be used to perform grouping-based aggregations. + * `groupByField` buckets computed over a field with a null/absent value are marked with the + * `isNullGroup` flag set to true and their key is set to the `--` string. * * Applies alerting RBAC through featureIds. */ diff --git a/packages/kbn-doc-links/src/get_doc_links.ts b/packages/kbn-doc-links/src/get_doc_links.ts index dec15cf568e98..99c72660f0b27 100644 --- a/packages/kbn-doc-links/src/get_doc_links.ts +++ b/packages/kbn-doc-links/src/get_doc_links.ts @@ -506,6 +506,7 @@ export const getDocLinks = ({ kibanaBranch, buildFlavor }: GetDocLinkOptions): D percolate: `${ELASTICSEARCH_DOCS}query-dsl-percolate-query.html`, queryDsl: `${ELASTICSEARCH_DOCS}query-dsl.html`, queryESQL: `${ELASTICSEARCH_DOCS}esql.html`, + queryESQLExamples: `${ELASTICSEARCH_DOCS}esql-examples.html`, }, search: { sessions: `${KIBANA_DOCS}search-sessions.html`, diff --git a/packages/kbn-doc-links/src/types.ts b/packages/kbn-doc-links/src/types.ts index b92c59a624880..5e1f4abd92906 100644 --- a/packages/kbn-doc-links/src/types.ts +++ b/packages/kbn-doc-links/src/types.ts @@ -377,6 +377,7 @@ export interface DocLinks { readonly percolate: string; readonly queryDsl: string; readonly queryESQL: string; + readonly queryESQLExamples: string; }; readonly date: { readonly dateMath: string; diff --git a/packages/kbn-esql-ast/src/__tests__/ast_parser.columns.test.ts b/packages/kbn-esql-ast/src/__tests__/ast_parser.columns.test.ts new file mode 100644 index 0000000000000..0a6dbe1f772a2 --- /dev/null +++ b/packages/kbn-esql-ast/src/__tests__/ast_parser.columns.test.ts @@ -0,0 +1,92 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { getAstAndSyntaxErrors as parse } from '../ast_parser'; + +describe('Column Identifier Expressions', () => { + it('can parse un-quoted identifiers', () => { + const text = 'ROW a, b.c'; + const { ast } = parse(text); + + expect(ast).toMatchObject([ + { + type: 'command', + args: [ + { + type: 'column', + parts: ['a'], + }, + { + type: 'column', + parts: ['b', 'c'], + }, + ], + }, + ]); + }); + + it('can parse quoted identifiers', () => { + const text = 'ROW `a`, `b`.c, `d`.`👍`.`123``123`'; + const { ast } = parse(text); + + expect(ast).toMatchObject([ + { + type: 'command', + args: [ + { + type: 'column', + parts: ['a'], + }, + { + type: 'column', + parts: ['b', 'c'], + }, + { + type: 'column', + parts: ['d', '👍', '123`123'], + }, + ], + }, + ]); + }); + + it('can mix quoted and un-quoted identifiers', () => { + const text = 'ROW part1.part2.`part``3️⃣`'; + const { ast } = parse(text); + + expect(ast).toMatchObject([ + { + type: 'command', + args: [ + { + type: 'column', + parts: ['part1', 'part2', 'part`3️⃣'], + }, + ], + }, + ]); + }); + + it('in KEEP command', () => { + const text = 'FROM a | KEEP a.b'; + const { ast } = parse(text); + + expect(ast).toMatchObject([ + {}, + { + type: 'command', + args: [ + { + type: 'column', + parts: ['a', 'b'], + }, + ], + }, + ]); + }); +}); diff --git a/packages/kbn-esql-ast/src/__tests__/ast_parser.literal.test.ts b/packages/kbn-esql-ast/src/__tests__/ast_parser.literal.test.ts index 1f941c49f0fbe..cc03bd3db0a9d 100644 --- a/packages/kbn-esql-ast/src/__tests__/ast_parser.literal.test.ts +++ b/packages/kbn-esql-ast/src/__tests__/ast_parser.literal.test.ts @@ -22,4 +22,28 @@ describe('literal expression', () => { value: 1, }); }); + + it('decimals vs integers', () => { + const text = 'ROW a(1.0, 1)'; + const { ast } = parse(text); + + expect(ast[0]).toMatchObject({ + type: 'command', + args: [ + { + type: 'function', + args: [ + { + type: 'literal', + literalType: 'decimal', + }, + { + type: 'literal', + literalType: 'integer', + }, + ], + }, + ], + }); + }); }); diff --git a/packages/kbn-esql-ast/src/__tests__/ast_parser.rename.test.ts b/packages/kbn-esql-ast/src/__tests__/ast_parser.rename.test.ts new file mode 100644 index 0000000000000..0ad62b59b9cb8 --- /dev/null +++ b/packages/kbn-esql-ast/src/__tests__/ast_parser.rename.test.ts @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { getAstAndSyntaxErrors as parse } from '../ast_parser'; + +describe('RENAME', () => { + /** + * Enable this test once RENAME commands are fixed: + * https://github.com/elastic/kibana/discussions/182393#discussioncomment-10313313 + */ + it.skip('example from documentation', () => { + const text = ` +FROM kibana_sample_data_logs +| RENAME total_visits as \`Unique Visits (Total)\`, +`; + const { ast } = parse(text); + + // eslint-disable-next-line no-console + console.log(JSON.stringify(ast, null, 2)); + }); +}); diff --git a/packages/kbn-esql-ast/src/ast/constants.ts b/packages/kbn-esql-ast/src/ast/constants.ts new file mode 100644 index 0000000000000..ee78109f7fc94 --- /dev/null +++ b/packages/kbn-esql-ast/src/ast/constants.ts @@ -0,0 +1,19 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +/** + * The group name of a binary expression. Groups are ordered by precedence. + */ +export enum BinaryExpressionGroup { + unknown = 0, + additive = 10, + multiplicative = 20, + assignment = 30, + comparison = 40, + regex = 50, +} diff --git a/packages/kbn-esql-ast/src/ast/helpers.ts b/packages/kbn-esql-ast/src/ast/helpers.ts new file mode 100644 index 0000000000000..a7961a9ed01b9 --- /dev/null +++ b/packages/kbn-esql-ast/src/ast/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 { ESQLAstNode, ESQLBinaryExpression, ESQLFunction } from '../types'; +import { BinaryExpressionGroup } from './constants'; + +export const isFunctionExpression = (node: unknown): node is ESQLFunction => + !!node && typeof node === 'object' && !Array.isArray(node) && (node as any).type === 'function'; + +/** + * Returns true if the given node is a binary expression, i.e. an operator + * surrounded by two operands: + * + * ``` + * 1 + 1 + * column LIKE "foo" + * foo = "bar" + * ``` + * + * @param node Any ES|QL AST node. + */ +export const isBinaryExpression = (node: unknown): node is ESQLBinaryExpression => + isFunctionExpression(node) && node.subtype === 'binary-expression'; + +/** + * Returns the group of a binary expression: + * + * - `additive`: `+`, `-` + * - `multiplicative`: `*`, `/`, `%` + * - `assignment`: `=` + * - `comparison`: `==`, `=~`, `!=`, `<`, `<=`, `>`, `>=` + * - `regex`: `like`, `not_like`, `rlike`, `not_rlike` + * @param node Any ES|QL AST node. + * @returns Binary expression group or undefined if the node is not a binary expression. + */ +export const binaryExpressionGroup = (node: ESQLAstNode): BinaryExpressionGroup => { + if (isBinaryExpression(node)) { + switch (node.name) { + case '+': + case '-': + return BinaryExpressionGroup.additive; + case '*': + case '/': + case '%': + return BinaryExpressionGroup.multiplicative; + case '=': + return BinaryExpressionGroup.assignment; + case '==': + case '=~': + case '!=': + case '<': + case '<=': + case '>': + case '>=': + return BinaryExpressionGroup.comparison; + case 'like': + case 'not_like': + case 'rlike': + case 'not_rlike': + return BinaryExpressionGroup.regex; + } + } + return BinaryExpressionGroup.unknown; +}; diff --git a/packages/kbn-esql-ast/src/ast_helpers.ts b/packages/kbn-esql-ast/src/ast_helpers.ts index 6ebb3fb9c4490..44f9a2663db17 100644 --- a/packages/kbn-esql-ast/src/ast_helpers.ts +++ b/packages/kbn-esql-ast/src/ast_helpers.ts @@ -11,12 +11,14 @@ */ import { type Token, type ParserRuleContext, type TerminalNode } from 'antlr4'; -import type { - ArithmeticUnaryContext, - DecimalValueContext, - InlineCastContext, - IntegerValueContext, - QualifiedIntegerLiteralContext, +import { + QualifiedNameContext, + type ArithmeticUnaryContext, + type DecimalValueContext, + type InlineCastContext, + type IntegerValueContext, + type QualifiedIntegerLiteralContext, + QualifiedNamePatternContext, } from './antlr/esql_parser'; import { getPosition } from './ast_position_utils'; import { DOUBLE_TICKS_REGEX, SINGLE_BACKTICK, TICKS_REGEX } from './constants'; @@ -39,6 +41,7 @@ import type { FunctionSubtype, ESQLNumericLiteral, } from './types'; +import { parseIdentifier } from './parser/helpers'; export function nonNullable(v: T): v is NonNullable { return v != null; @@ -360,10 +363,13 @@ export function createSource( } export function createColumnStar(ctx: TerminalNode): ESQLColumn { + const text = ctx.getText(); + return { type: 'column', - name: ctx.getText(), - text: ctx.getText(), + name: text, + parts: [text], + text, location: getPosition(ctx.symbol), incomplete: ctx.getText() === '', quoted: false, @@ -371,11 +377,22 @@ export function createColumnStar(ctx: TerminalNode): ESQLColumn { } export function createColumn(ctx: ParserRuleContext): ESQLColumn { + const parts: string[] = []; + if (ctx instanceof QualifiedNamePatternContext) { + parts.push( + ...ctx.identifierPattern_list().map((identifier) => parseIdentifier(identifier.getText())) + ); + } else if (ctx instanceof QualifiedNameContext) { + parts.push(...ctx.identifier_list().map((identifier) => parseIdentifier(identifier.getText()))); + } else { + parts.push(sanitizeIdentifierString(ctx)); + } const text = sanitizeIdentifierString(ctx); const hasQuotes = Boolean(getQuotedText(ctx) || isQuoted(ctx.getText())); return { type: 'column' as const, name: text, + parts, text: ctx.getText(), location: getPosition(ctx.start, ctx.stop), incomplete: Boolean(ctx.exception || text === ''), diff --git a/packages/kbn-esql-ast/src/parser/helpers.ts b/packages/kbn-esql-ast/src/parser/helpers.ts new file mode 100644 index 0000000000000..9aea72a3a2073 --- /dev/null +++ b/packages/kbn-esql-ast/src/parser/helpers.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 const isQuotedIdentifier = (text: string): boolean => { + const firstChar = text[0]; + const lastChar = text[text.length - 1]; + + return firstChar === '`' && lastChar === '`'; +}; + +export const parseIdentifier = (text: string): string => { + const isQuoted = isQuotedIdentifier(text); + + if (!isQuoted) { + return text; + } + + return text.slice(1, -1).replace(/``/g, '`'); +}; + +export const regexUnquotedIdentifierPattern = /^([a-z\*_\@]{1})[a-z0-9_\*]*$/i; + +export const formatIdentifier = (text: string): string => { + if (regexUnquotedIdentifierPattern.test(text)) { + return text; + } + + return `\`${text.replace(/`/g, '``')}\``; +}; + +export const formatIdentifierParts = (parts: string[]): string => + parts.map(formatIdentifier).join('.'); diff --git a/packages/kbn-esql-ast/src/pretty_print/README.md b/packages/kbn-esql-ast/src/pretty_print/README.md new file mode 100644 index 0000000000000..48066697a5a7e --- /dev/null +++ b/packages/kbn-esql-ast/src/pretty_print/README.md @@ -0,0 +1,23 @@ +# Pretty-printing + +*Pretty-printing* is the process of converting an ES|QL AST into a +human-readable string. This is useful for debugging or for displaying +the AST to the user. + +This module provides a number of pretty-printing options. + + +## `BasicPrettyPrinter` + +The `BasicPrettyPrinter` class provides the most basic pretty-printing—it +prints a query to a single line. Or it can print a query with each command on +a separate line, with the ability to customize the indentation before the pipe +character. + +It can also print a single command to a single line; or an expression to a +single line. + +- `BasicPrettyPrinter.print()` — prints query to a single line. +- `BasicPrettyPrinter.multiline()` — prints a query to multiple lines. +- `BasicPrettyPrinter.command()` — prints a command to a single line. +- `BasicPrettyPrinter.expression()` — prints an expression to a single line. diff --git a/packages/kbn-esql-ast/src/pretty_print/__tests__/basic_pretty_printer.test.ts b/packages/kbn-esql-ast/src/pretty_print/__tests__/basic_pretty_printer.test.ts new file mode 100644 index 0000000000000..0afb4e8e42ce4 --- /dev/null +++ b/packages/kbn-esql-ast/src/pretty_print/__tests__/basic_pretty_printer.test.ts @@ -0,0 +1,457 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { getAstAndSyntaxErrors } from '../../ast_parser'; +import { ESQLFunction } from '../../types'; +import { Walker } from '../../walker'; +import { BasicPrettyPrinter, BasicPrettyPrinterMultilineOptions } from '../basic_pretty_printer'; + +const reprint = (src: string) => { + const { ast } = getAstAndSyntaxErrors(src); + const text = BasicPrettyPrinter.print(ast); + + // console.log(JSON.stringify(ast, null, 2)); + + return { text }; +}; + +describe('single line query', () => { + describe('commands', () => { + describe('FROM', () => { + test('FROM command with a single source', () => { + const { text } = reprint('FROM index1'); + + expect(text).toBe('FROM index1'); + }); + + test('FROM command with multiple indices', () => { + const { text } = reprint('from index1, index2, index3'); + + expect(text).toBe('FROM index1, index2, index3'); + }); + + test('FROM command with METADATA', () => { + const { text } = reprint('FROM index1, index2 METADATA field1, field2'); + + expect(text).toBe('FROM index1, index2 METADATA field1, field2'); + }); + }); + + describe('SORT', () => { + test('order expression with no modifier', () => { + const { text } = reprint('FROM a | SORT b'); + + expect(text).toBe('FROM a | SORT b'); + }); + + /** @todo Enable once order expressions are supported. */ + test.skip('order expression with ASC modifier', () => { + const { text } = reprint('FROM a | SORT b ASC'); + + expect(text).toBe('FROM a | SORT b ASC'); + }); + + /** @todo Enable once order expressions are supported. */ + test.skip('order expression with ASC and NULLS FIRST modifier', () => { + const { text } = reprint('FROM a | SORT b ASC NULLS FIRST'); + + expect(text).toBe('FROM a | SORT b ASC NULLS FIRST'); + }); + }); + + describe('EXPLAIN', () => { + /** @todo Enable once query expressions are supported. */ + test.skip('a nested query', () => { + const { text } = reprint('EXPLAIN [ FROM 1 ]'); + + expect(text).toBe('EXPLAIN [ FROM 1 ]'); + }); + }); + + describe('SHOW', () => { + /** @todo Enable once show command args are parsed as columns. */ + test.skip('info page', () => { + const { text } = reprint('SHOW info'); + + expect(text).toBe('SHOW info'); + }); + }); + + describe('META', () => { + /** @todo Enable once show command args are parsed as columns. */ + test.skip('functions page', () => { + const { text } = reprint('META functions'); + + expect(text).toBe('META functions'); + }); + }); + + describe('STATS', () => { + test('with aggregates assignment', () => { + const { text } = reprint('FROM a | STATS var = agg(123, fn(true))'); + + expect(text).toBe('FROM a | STATS var = AGG(123, FN(TRUE))'); + }); + + test('with BY clause', () => { + const { text } = reprint('FROM a | STATS a(1), b(2) by asdf'); + + expect(text).toBe('FROM a | STATS A(1), B(2) BY asdf'); + }); + }); + }); + + describe('expressions', () => { + describe('source expressions', () => { + test('simple source expression', () => { + const { text } = reprint('from source'); + + expect(text).toBe('FROM source'); + }); + + test('sources with dots', () => { + const { text } = reprint('FROM a.b.c'); + + expect(text).toBe('FROM a.b.c'); + }); + + test('sources with slashes', () => { + const { text } = reprint('FROM a/b/c'); + + expect(text).toBe('FROM a/b/c'); + }); + + test('cluster source', () => { + const { text } = reprint('FROM cluster:index'); + + expect(text).toBe('FROM cluster:index'); + }); + + test('quoted source', () => { + const { text } = reprint('FROM "quoted"'); + + expect(text).toBe('FROM quoted'); + }); + + test('triple-quoted source', () => { + const { text } = reprint('FROM """quoted"""'); + + expect(text).toBe('FROM quoted'); + }); + }); + + describe('column expressions', () => { + test('simple columns expressions', () => { + const { text } = reprint('FROM a METADATA column1, _column2'); + + expect(text).toBe('FROM a METADATA column1, _column2'); + }); + + // Un-skip when columns are parsed correctly: https://github.com/elastic/kibana/issues/189913 + test.skip('nested fields', () => { + const { text } = reprint('FROM a | KEEP a.b'); + + expect(text).toBe('FROM a | KEEP a.b'); + }); + + // Un-skip when columns are parsed correctly: https://github.com/elastic/kibana/issues/189913 + test.skip('quoted nested fields', () => { + const { text } = reprint('FROM index | KEEP `a`.`b`, c.`d`'); + + expect(text).toBe('FROM index | KEEP a.b, c.d'); + }); + + // Un-skip when identifier names are escaped correctly. + test.skip('special character in identifier', () => { + const { text } = reprint('FROM a | KEEP `a 👉 b`, a.`✅`'); + + expect(text).toBe('FROM a | KEEP `a 👉 b`, a.`✅`'); + }); + }); + + describe('"function" expressions', () => { + describe('function call expression', () => { + test('no argument function', () => { + const { text } = reprint('ROW fn()'); + + expect(text).toBe('ROW FN()'); + }); + + test('functions with arguments', () => { + const { text } = reprint('ROW gg(1), wp(1, 2, 3)'); + + expect(text).toBe('ROW GG(1), WP(1, 2, 3)'); + }); + + test('functions with star argument', () => { + const { text } = reprint('ROW f(*)'); + + expect(text).toBe('ROW F(*)'); + }); + }); + + describe('unary expression', () => { + test('NOT expression', () => { + const { text } = reprint('ROW NOT a'); + + expect(text).toBe('ROW NOT a'); + }); + }); + + describe('postfix unary expression', () => { + test('IS NOT NULL expression', () => { + const { text } = reprint('ROW a IS NOT NULL'); + + expect(text).toBe('ROW a IS NOT NULL'); + }); + }); + + describe('binary expression expression', () => { + test('arithmetic expression', () => { + const { text } = reprint('ROW 1 + 2'); + + expect(text).toBe('ROW 1 + 2'); + }); + + test('assignment expression', () => { + const { text } = reprint('FROM a | STATS a != 1'); + + expect(text).toBe('FROM a | STATS a != 1'); + }); + + test('regex expression - 1', () => { + const { text } = reprint('FROM a | WHERE a NOT RLIKE "a"'); + + expect(text).toBe('FROM a | WHERE a NOT RLIKE "a"'); + }); + + test('regex expression - 2', () => { + const { text } = reprint('FROM a | WHERE a LIKE "b"'); + + expect(text).toBe('FROM a | WHERE a LIKE "b"'); + }); + }); + }); + + describe('literals expressions', () => { + test('null', () => { + const { text } = reprint('ROW null'); + + expect(text).toBe('ROW NULL'); + }); + + test('boolean', () => { + expect(reprint('ROW true').text).toBe('ROW TRUE'); + expect(reprint('ROW false').text).toBe('ROW FALSE'); + }); + + describe('numeric literal', () => { + test('integer', () => { + const { text } = reprint('ROW 1'); + + expect(text).toBe('ROW 1'); + }); + + test('decimal', () => { + const { text } = reprint('ROW 1.2'); + + expect(text).toBe('ROW 1.2'); + }); + + test('rounded decimal', () => { + const { text } = reprint('ROW 1.0'); + + expect(text).toBe('ROW 1.0'); + }); + + test('string', () => { + const { text } = reprint('ROW "abc"'); + + expect(text).toBe('ROW "abc"'); + }); + + test('string w/ special chars', () => { + const { text } = reprint('ROW "as \\" 👍"'); + + expect(text).toBe('ROW "as \\" 👍"'); + }); + }); + + describe('params', () => { + test('unnamed', () => { + const { text } = reprint('ROW ?'); + + expect(text).toBe('ROW ?'); + }); + + test('named', () => { + const { text } = reprint('ROW ?kappa'); + + expect(text).toBe('ROW ?kappa'); + }); + + test('positional', () => { + const { text } = reprint('ROW ?42'); + + expect(text).toBe('ROW ?42'); + }); + }); + }); + + describe('list literal expressions', () => { + describe('integer list', () => { + test('one element list', () => { + expect(reprint('ROW [1]').text).toBe('ROW [1]'); + }); + + test('multiple elements', () => { + expect(reprint('ROW [1, 2]').text).toBe('ROW [1, 2]'); + expect(reprint('ROW [1, 2, -1]').text).toBe('ROW [1, 2, -1]'); + }); + }); + + describe('boolean list', () => { + test('one element list', () => { + expect(reprint('ROW [true]').text).toBe('ROW [TRUE]'); + }); + + test('multiple elements', () => { + expect(reprint('ROW [TRUE, false]').text).toBe('ROW [TRUE, FALSE]'); + expect(reprint('ROW [false, FALSE, false]').text).toBe('ROW [FALSE, FALSE, FALSE]'); + }); + }); + + describe('string list', () => { + test('one element list', () => { + expect(reprint('ROW ["a"]').text).toBe('ROW ["a"]'); + }); + + test('multiple elements', () => { + expect(reprint('ROW ["a", "b"]').text).toBe('ROW ["a", "b"]'); + expect(reprint('ROW ["foo", "42", "boden"]').text).toBe('ROW ["foo", "42", "boden"]'); + }); + }); + }); + + describe('cast expressions', () => { + test('various', () => { + expect(reprint('ROW a::string').text).toBe('ROW a::string'); + expect(reprint('ROW 123::string').text).toBe('ROW 123::string'); + expect(reprint('ROW "asdf"::number').text).toBe('ROW "asdf"::number'); + }); + + test('wraps into rackets complex cast expressions', () => { + expect(reprint('ROW (1 + 2)::string').text).toBe('ROW (1 + 2)::string'); + }); + + test('does not wrap function call', () => { + expect(reprint('ROW fn()::string').text).toBe('ROW FN()::string'); + }); + }); + + describe('time interval expression', () => { + test('days', () => { + const { text } = reprint('ROW 1 d'); + + expect(text).toBe('ROW 1d'); + }); + + test('years', () => { + const { text } = reprint('ROW 42y'); + + expect(text).toBe('ROW 42y'); + }); + }); + }); +}); + +describe('multiline query', () => { + const multiline = (src: string, opts?: BasicPrettyPrinterMultilineOptions) => { + const { ast } = getAstAndSyntaxErrors(src); + const text = BasicPrettyPrinter.multiline(ast, opts); + + // console.log(JSON.stringify(ast, null, 2)); + + return { text }; + }; + + test('can print the query on multiple lines', () => { + const { text } = multiline('FROM index1 | SORT asdf | WHERE a == 1 | LIMIT 123'); + + expect(text).toBe(`FROM index1 + | SORT asdf + | WHERE a == 1 + | LIMIT 123`); + }); + + test('can customize tabbing before pipe', () => { + const query = 'FROM index1 | SORT asdf | WHERE a == 1 | LIMIT 123'; + const text1 = multiline(query, { pipeTab: '' }).text; + const text2 = multiline(query, { pipeTab: '\t' }).text; + + expect(text1).toBe(`FROM index1 +| SORT asdf +| WHERE a == 1 +| LIMIT 123`); + + expect(text2).toBe(`FROM index1 +\t| SORT asdf +\t| WHERE a == 1 +\t| LIMIT 123`); + }); + + test('large query', () => { + const query = `FROM employees, kibana_sample_data_flights, kibana_sample_data_logs, kibana_sample_data_ecommerce +| EVAL hired = DATE_FORMAT("YYYY-MM-DD", hired, "Europe/Amsterdam") +| STATS avg_salary = AVG(salary) BY hired, languages, department, dream_salary > 100000 +| EVAL avg_salary = ROUND(avg_salary) +| SORT hired, languages +| LIMIT 100`; + const text1 = multiline(query, { pipeTab: '' }).text; + + expect(text1).toBe(query); + }); +}); + +describe('single line command', () => { + test('can print an individual command', () => { + const query = `FROM employees, kibana_sample_data_flights, kibana_sample_data_logs, kibana_sample_data_ecommerce + | EVAL hired = DATE_FORMAT("YYYY-MM-DD", hired, "Europe/Amsterdam") + | STATS avg_salary = AVG(salary) BY hired, languages, department, dream_salary > 100000 + | EVAL avg_salary = ROUND(avg_salary) + | SORT hired, languages + | LIMIT 100`; + const { ast: commands } = getAstAndSyntaxErrors(query); + const line1 = BasicPrettyPrinter.command(commands[0]); + const line2 = BasicPrettyPrinter.command(commands[1]); + const line3 = BasicPrettyPrinter.command(commands[2]); + + expect(line1).toBe( + 'FROM employees, kibana_sample_data_flights, kibana_sample_data_logs, kibana_sample_data_ecommerce' + ); + expect(line2).toBe('EVAL hired = DATE_FORMAT("YYYY-MM-DD", hired, "Europe/Amsterdam")'); + expect(line3).toBe( + 'STATS avg_salary = AVG(salary) BY hired, languages, department, dream_salary > 100000' + ); + }); +}); + +describe('single line expression', () => { + test('can print a single expression', () => { + const query = `FROM a | STATS a != 1, avg(1, 2, 3)`; + const { ast } = getAstAndSyntaxErrors(query); + const comparison = Walker.match(ast, { type: 'function', name: '!=' })! as ESQLFunction; + const func = Walker.match(ast, { type: 'function', name: 'avg' })! as ESQLFunction; + + const text1 = BasicPrettyPrinter.expression(comparison); + const text2 = BasicPrettyPrinter.expression(func); + + expect(text1).toBe('a != 1'); + expect(text2).toBe('AVG(1, 2, 3)'); + }); +}); diff --git a/packages/kbn-esql-ast/src/pretty_print/__tests__/fixtures.ts b/packages/kbn-esql-ast/src/pretty_print/__tests__/fixtures.ts new file mode 100644 index 0000000000000..f50bd546fde6c --- /dev/null +++ b/packages/kbn-esql-ast/src/pretty_print/__tests__/fixtures.ts @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export const query1 = ` +from kibana_sample_data_logs +| EVAL timestamp=DATE_TRUNC(3 hour, @timestamp), status = CASE( to_integer(response.keyword) >= 200 and to_integer(response.keyword) < 400, "HTTP 2xx and 3xx", to_integer(response.keyword) >= 400 and to_integer(response.keyword) < 500, "HTTP 4xx", "HTTP 5xx") +| stats results = count(*) by \`Over time\` = BUCKET(timestamp, 50, ?t_start, ?t_end), status +`; + +export const query2 = ` +from kibana_sample_data_logs +| sort @timestamp +| eval t = now() +| eval key = case(timestamp < t - 1 hour and timestamp > t - 2 hour, "Last hour", "Other") +| stats sum = sum(bytes), count = count_distinct(clientip) by key, extension.keyword +| eval sum_last_hour = case(key == "Last hour", sum), sum_rest = case(key == "Other", sum), count_last_hour = case(key == "Last hour", count), count_rest = case(key == "Other", count) +| stats sum_last_hour = max(sum_last_hour), sum_rest = max(sum_rest), count_last_hour = max(count_last_hour), count_rest = max(count_rest) by key, extension.keyword +| eval total_bytes = to_double(coalesce(sum_last_hour, 0::long) + coalesce(sum_rest, 0::long)) +| eval total_visits = to_double(coalesce(count_last_hour, 0::long) + coalesce(count_rest, 0::long)) +| eval bytes_transform = round(total_bytes / 1000000.0, 1) +| eval bytes_transform_last_hour = round(sum_last_hour / 1000.0, 2) +| keep count_last_hour, total_visits, bytes_transform, bytes_transform_last_hour, extension.keyword +| stats count_last_hour = sum(count_last_hour), total_visits = sum(total_visits), bytes_transform = sum(bytes_transform), bytes_transform_last_hour = sum(bytes_transform_last_hour) by extension.keyword +| rename total_visits as \`Unique Visits (Total)\`, count_last_hour as \`Unique Visits (Last hour)\`, bytes_transform as \`Bytes(Total - MB)\`, bytes_transform_last_hour as \`Bytes(Last hour - KB)\`, extension.keyword as \`Type\` +`; + +export const query3 = ` +from kibana_sample_data_logs +| keep bytes, clientip, url.keyword, response.keyword +| EVAL type = CASE(to_integer(response.keyword) >= 400 and to_integer(response.keyword) < 500, "4xx", to_integer(response.keyword) >= 500, "5xx", "Other") +| stats Visits = count(), Unique = count_distinct(clientip), p95 = percentile(bytes, 95), median = median(bytes) by type, url.keyword +| eval count_4xx = case(type == "4xx", Visits), count_5xx = case(type == "5xx", Visits), count_rest = case(type == "Other", Visits) +| stats count_4xx = sum(count_4xx), count_5xx = sum(count_5xx), count_rest = sum(count_rest), Unique = sum(Unique),\`95th percentile of bytes\` = max(p95), \`Median of bytes\` = max(median) BY url.keyword +| eval count_4xx = COALESCE(count_4xx, 0::LONG), count_5xx = COALESCE(count_5xx, 0::LONG), count_rest = COALESCE(count_rest, 0::LONG) +| eval total_records = TO_DOUBLE(count_4xx + count_5xx + count_rest) +| eval percentage_4xx = count_4xx / total_records, percentage_5xx = count_5xx / total_records +| eval percentage_4xx = round(100 * percentage_4xx, 2) +| eval percentage_5xx = round(100 * percentage_5xx, 2) +| drop count_4xx, count_rest, total_records +| RENAME percentage_4xx as \`HTTP 4xx\`, percentage_5xx as \`HTTP 5xx\` +`; + +export const query4 = ` +from kibana_sample_data_logs, kibana_sample_data_flights, kibana_sample_data_ecommerce, + index1, my-data-2024-*, my-data-2025-01-*, xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx, yyyy-yyyy-yyyy-yyyy-yyyy-yyyy-yyyy-yyyy-yyyy + METADATA _index, _id, _type, _score + +| sort @timestamp +| eval t = now() +| eval key = case(timestamp < t - 1 hour and timestamp > t - 2 hour, "Last hour", "Other") +| stats sum = sum(bytes), count = count_distinct(clientip) by key, extension.keyword +| eval sum_last_hour = case(key == "Last hour", sum), sum_rest = case(key == "Other", sum), count_last_hour = case(key == "Last hour", count), count_rest = case(key == "Other", count) +| stats sum_last_hour = max(sum_last_hour), sum_rest = max(sum_rest), count_last_hour = max(count_last_hour), count_rest = max(count_rest) by key, extension.keyword +| eval total_bytes = to_double(coalesce(sum_last_hour, 0::long) + coalesce(sum_rest, 0::long)) +| eval total_visits = to_double(coalesce(count_last_hour, 0::long) + coalesce(count_rest, 0::long)) +| eval bytes_transform = round(total_bytes / 1000000.0, 1) +| eval bytes_transform_last_hour = round(sum_last_hour / 1000.0, 2) +| keep count_last_hour, total_visits, bytes_transform, bytes_transform_last_hour, extension.keyword +| stats count_last_hour = sum(count_last_hour), total_visits = sum(total_visits), bytes_transform = sum(bytes_transform), bytes_transform_last_hour = sum(bytes_transform_last_hour) by extension.keyword +| rename total_visits as \`Unique Visits (Total)\`, count_last_hour as \`Unique Visits (Last hour)\`, bytes_transform as \`Bytes(Total - MB)\`, bytes_transform_last_hour as \`Bytes(Last hour - KB)\`, extension.keyword as \`Type\` +`; diff --git a/packages/kbn-esql-ast/src/pretty_print/__tests__/wrapping_pretty_printer.test.ts b/packages/kbn-esql-ast/src/pretty_print/__tests__/wrapping_pretty_printer.test.ts new file mode 100644 index 0000000000000..4cbebb5d66b67 --- /dev/null +++ b/packages/kbn-esql-ast/src/pretty_print/__tests__/wrapping_pretty_printer.test.ts @@ -0,0 +1,566 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { getAstAndSyntaxErrors } from '../../ast_parser'; +import { WrappingPrettyPrinter, WrappingPrettyPrinterOptions } from '../wrapping_pretty_printer'; + +const reprint = (src: string, opts?: WrappingPrettyPrinterOptions) => { + const { ast } = getAstAndSyntaxErrors(src); + const text = WrappingPrettyPrinter.print(ast, opts); + + // console.log(JSON.stringify(ast, null, 2)); + + return { text }; +}; + +describe('casing', () => { + test('can chose command name casing', () => { + const query = 'FROM index | WHERE a == 123'; + const text1 = reprint(query, { lowercase: true }).text; + const text2 = reprint(query, { lowercaseCommands: true }).text; + const text3 = reprint(query, { lowercaseCommands: false }).text; + + expect(text1).toBe('from index | where a == 123'); + expect(text2).toBe('from index | where a == 123'); + expect(text3).toBe('FROM index | WHERE a == 123'); + }); + + test('can chose command option name casing', () => { + const text1 = reprint('FROM a METADATA b', { lowercaseOptions: true }).text; + const text2 = reprint('FROM a METADATA b', { lowercaseOptions: false }).text; + + expect(text1).toBe('FROM a metadata b'); + expect(text2).toBe('FROM a METADATA b'); + }); + + test('can chose function name casing', () => { + const query = 'FROM index | STATS FN1(), FN2(), FN3()'; + const text1 = reprint(query, { lowercase: true }).text; + const text2 = reprint(query, { lowercaseFunctions: true }).text; + const text3 = reprint(query, { lowercaseFunctions: false }).text; + + expect(text1).toBe('from index | stats fn1(), fn2(), fn3()'); + expect(text2).toBe('FROM index | STATS fn1(), fn2(), fn3()'); + expect(text3).toBe('FROM index | STATS FN1(), FN2(), FN3()'); + }); + + test('can choose keyword casing', () => { + const query = 'FROM index | RENAME a AS b'; + const text1 = reprint(query, { lowercase: true }).text; + const text2 = reprint(query, { lowercaseKeywords: true }).text; + const text3 = reprint(query, { lowercaseKeywords: false }).text; + + expect(text1).toBe('from index | rename a as b'); + expect(text2).toBe('FROM index | RENAME a as b'); + expect(text3).toBe('FROM index | RENAME a AS b'); + }); + + test('can chose keyword casing (function nodes)', () => { + const query = 'FROM index | WHERE a LIKE "b"'; + const text1 = reprint(query, { lowercase: true }).text; + const text2 = reprint(query, { lowercaseKeywords: true }).text; + const text3 = reprint(query, { lowercaseKeywords: false }).text; + + expect(text1).toBe('from index | where a like "b"'); + expect(text2).toBe('FROM index | WHERE a like "b"'); + expect(text3).toBe('FROM index | WHERE a LIKE "b"'); + }); +}); + +describe('short query', () => { + test('can format a simple query to one line', () => { + const query = 'FROM index | WHERE a == 123'; + const text = reprint(query).text; + + expect(text).toBe('FROM index | WHERE a == 123'); + }); + + test('one line query respects indentation option', () => { + const query = 'FROM index | WHERE a == 123'; + const text = reprint(query, { indent: ' ' }).text; + + expect(text).toBe(' FROM index | WHERE a == 123'); + }); + + test('can force small query onto multiple lines', () => { + const query = 'FROM index | WHERE a == 123'; + const text = reprint(query, { multiline: true }).text; + + expect('\n' + text).toBe(` +FROM index + | WHERE a == 123`); + }); + + test('with initial indentation', () => { + const query = 'FROM index | WHERE a == 123'; + const text = reprint(query, { multiline: true, indent: '>' }).text; + + expect('\n' + text).toBe(` +>FROM index +> | WHERE a == 123`); + }); +}); + +describe('long query', () => { + describe('command arguments', () => { + test('wraps source list', () => { + const query = + 'FROM index, another_index, yet_another_index, on-more-index, last_index, very_last_index, ok_this_is_the_last_index'; + const text = reprint(query, { indent: '- ' }).text; + + expect('\n' + text).toBe(` +- FROM index, another_index, yet_another_index, on-more-index, last_index, +- very_last_index, ok_this_is_the_last_index`); + }); + + test('wraps source list, leaves one item on last line', () => { + const query = + 'FROM index, another_index, yet_another_index, on-more-index, last_index, very_last_index'; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index, another_index, yet_another_index, on-more-index, last_index, + very_last_index`); + }); + + test('for a single very long source, prints a standalone line', () => { + const query = + 'FROM index_another_index_yet_another_index_on-more-index_last_index_very_last_index'; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM + index_another_index_yet_another_index_on-more-index_last_index_very_last_index`); + }); + + test('keeps sources in a list, as long as at least two fit per line', () => { + const query = ` +FROM xxxxxxxxxx, yyyyyyyyyyy, zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz, aaaa, + bbbbbbbbbbbbbbbbbbb, ccccccccccccccccccccccccccc, gggggggggggggggg +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM xxxxxxxxxx, yyyyyyyyyyy, zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz, aaaa, + bbbbbbbbbbbbbbbbbbb, ccccccccccccccccccccccccccc, gggggggggggggggg`); + }); + + test('keeps sources in a list, even if the last item consumes more than a line', () => { + const query = ` +FROM xxxxxxxxxx, yyyyyyyyyyy, zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz, aaaa, + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM xxxxxxxxxx, yyyyyyyyyyy, zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz, aaaa, + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb`); + }); + + test('breaks sources per-line, if list layout results into alone source per line', () => { + const query = ` +FROM xxxxxxxxxx, yyyyyyyyyyy, zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz, + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, // <------------ this one + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, ccccccc, ggggggggg +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM + xxxxxxxxxx, + yyyyyyyyyyy, + zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz, + aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, + bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, + ccccccc, + ggggggggg`); + }); + + test('breaks sources per-line, whe there is one large source', () => { + const query = ` +FROM xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, // <------------ this one + yyyyyyyyyyy, ccccccc, ggggggggg + `; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM + xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, + yyyyyyyyyyy, + ccccccc, + ggggggggg`); + }); + }); + + describe('command option', () => { + test('prints short query on a single line', () => { + const query = 'FROM index METADATA _id'; + const text = reprint(query).text; + + expect(text).toBe(`FROM index METADATA _id`); + }); + + test('breaks METADATA option to new line, when query reaches wrapping threshold', () => { + const query = ` +FROM index1, index2, index2, index3, index4, index5, index6 METADATA _id, _source`; + const text = reprint(query, { pipeTab: ' ' }).text; + + expect('\n' + text).toBe(` +FROM index1, index2, index2, index3, index4, index5, index6 + METADATA _id, _source`); + }); + + test('indents METADATA option differently than the LIMIT pipe', () => { + const query = ` +FROM index1, index2, index2, index3, index4, index5, index6 METADATA _id, _source | LIMIT 10`; + const text = reprint(query, { pipeTab: ' ' }).text; + + expect('\n' + text).toBe(` +FROM index1, index2, index2, index3, index4, index5, index6 + METADATA _id, _source + | LIMIT 10`); + }); + + test('indents METADATA option differently than main FROM arguments', () => { + const query = ` +FROM index1, index2, index2, index3, index4, index5, index6, index7, index8, index9, index10, index11, index12, index13, index14, index15, index16, index17 METADATA _id, _source`; + const text = reprint(query, { pipeTab: ' ' }).text; + + expect('\n' + text).toBe(` +FROM index1, index2, index2, index3, index4, index5, index6, index7, index8, + index9, index10, index11, index12, index13, index14, index15, index16, + index17 + METADATA _id, _source`); + }); + + test('indents METADATA option differently than main FROM arguments when broken per line', () => { + const query = ` +FROM index_index_index_index_index_index_index_index_index_index_index_index_1, index_index_index_index_index_index_index_index_index_index_index_index_2, index_index_index_index_index_index_index_index_index_index_index_index_3 METADATA _id, _source`; + const text = reprint(query, { pipeTab: ' ' }).text; + + expect('\n' + text).toBe(` +FROM + index_index_index_index_index_index_index_index_index_index_index_index_1, + index_index_index_index_index_index_index_index_index_index_index_index_2, + index_index_index_index_index_index_index_index_index_index_index_index_3 + METADATA _id, _source`); + }); + + test('indents METADATA option different than the source list', () => { + const query = + 'FROM index, another_index, another_index, a_very_very_long_index_a_very_very_long_index_a_very_very_long_index, another_index, another_index METADATA _id, _source'; + const text = reprint(query, { indent: '👉 ' }).text; + + expect('\n' + text).toBe(` +👉 FROM +👉 index, +👉 another_index, +👉 another_index, +👉 a_very_very_long_index_a_very_very_long_index_a_very_very_long_index, +👉 another_index, +👉 another_index +👉 METADATA _id, _source`); + }); + + test('can break multiple options', () => { + const query = + 'from a | enrich policy ON match_field_which_is_very_long WITH new_name1 = field1, new_name2 = field2'; + const text = reprint(query, { indent: '👉 ' }).text; + + expect('\n' + text).toBe(` +👉 FROM a +👉 | ENRICH policy +👉 ON match_field_which_is_very_long +👉 WITH new_name1 = field1, new_name2 = field2`); + }); + + test('can break multiple options and wrap option arguments', () => { + const query = + 'from a | enrich policy ON match_field WITH new_name1 = field1, new_name2 = field2, new_name3 = field3, new_name4 = field4, new_name5 = field5, new_name6 = field6, new_name7 = field7, new_name8 = field8, new_name9 = field9, new_name10 = field10'; + const text = reprint(query, { indent: '👉 ' }).text; + + expect('\n' + text).toBe(` +👉 FROM a +👉 | ENRICH policy +👉 ON match_field +👉 WITH new_name1 = field1, new_name2 = field2, new_name3 = field3, +👉 new_name4 = field4, new_name5 = field5, new_name6 = field6, +👉 new_name7 = field7, new_name8 = field8, new_name9 = field9, +👉 new_name10 = field10`); + }); + }); + + describe('function call arguments', () => { + test('renders a one line list, if there is enough space', () => { + const query = ` +FROM index +| STATS avg(height), sum(weight), min(age), max(age), count(*) +| LIMIT 10 +`; + const text = reprint(query, { indent: '- ' }).text; + + expect('\n' + text).toBe(` +- FROM index +- | STATS AVG(height), SUM(weight), MIN(age), MAX(age), COUNT(*) +- | LIMIT 10`); + }); + + test('wraps function list', () => { + const query = ` +FROM index +| STATS avg(height), sum(weight), min(age), max(age), count(*), super_function(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) +| LIMIT 10 +`; + const text = reprint(query, { indent: '- ' }).text; + + expect('\n' + text).toBe(` +- FROM index +- | STATS AVG(height), SUM(weight), MIN(age), MAX(age), COUNT(*), +- SUPER_FUNCTION(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) +- | LIMIT 10`); + }); + + test('wraps function arguments', () => { + const query = ` +FROM index +| STATS avg(height), + super_function(some_column, another_column == "this is string", 1234567890.999991), + sum(weight) +| LIMIT 10 +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index + | STATS + AVG(height), + SUPER_FUNCTION(some_column, another_column == "this is string", + 1234567890.999991), + SUM(weight) + | LIMIT 10`); + }); + + test('break by line function arguments, when wrapping is not enough', () => { + const query = ` +FROM index +| STATS avg(height), + super_function("xxxx-xxxx-xxxxxxxxxxxx-xxxx-xxxxxxxx", "yyyy-yyyy-yyyyyyyyyyyy-yyyy-yyyyyyyyyyyy", "zzzz-zzzz-zzzzzzzzzzzzzzz-zzzz-zzzzzzzzzzzzzz"), + sum(weight) +| LIMIT 10 +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index + | STATS + AVG(height), + SUPER_FUNCTION( + "xxxx-xxxx-xxxxxxxxxxxx-xxxx-xxxxxxxx", + "yyyy-yyyy-yyyyyyyyyyyy-yyyy-yyyyyyyyyyyy", + "zzzz-zzzz-zzzzzzzzzzzzzzz-zzzz-zzzzzzzzzzzzzz"), + SUM(weight) + | LIMIT 10`); + }); + + test('break by line last function arguments, when wrapping is not enough', () => { + const query = ` +FROM index +| STATS avg(height), + super_function("xxxx-xxxx-xxxxxxxxxxxx-xxxx-xxxxxxxx", "yyyy-yyyy-yyyyyyyyyyyy-yyyy-yyyyyyyyyyyy", "zzzz-zzzz-zzzzzzzzzzzzzzz-zzzz-zzzzzzzzzzzzzz"), +| LIMIT 10 +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index + | STATS + AVG(height), + SUPER_FUNCTION( + "xxxx-xxxx-xxxxxxxxxxxx-xxxx-xxxxxxxx", + "yyyy-yyyy-yyyyyyyyyyyy-yyyy-yyyyyyyyyyyy", + "zzzz-zzzz-zzzzzzzzzzzzzzz-zzzz-zzzzzzzzzzzzzz") + | LIMIT 10`); + }); + + test('break by line when wrapping would results in lines with a single item', () => { + const query = ` +FROM index +| STATS avg(height), + super_function("xxxx-xxxx-xxxxxxxxxxxxx-xxxxx-xxxxxxxx", + 1234567890 + 1234567890, + "zzzz-zzzz-zzzzzzzzzzzzzzzzz-zzzz-zzzzzzzzzzzzzz"), +| LIMIT 10 +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index + | STATS + AVG(height), + SUPER_FUNCTION( + "xxxx-xxxx-xxxxxxxxxxxxx-xxxxx-xxxxxxxx", + 1234567890 + 1234567890, + "zzzz-zzzz-zzzzzzzzzzzzzzzzz-zzzz-zzzzzzzzzzzzzz") + | LIMIT 10`); + }); + + test('break by line when wrapping would results in lines with a single item - 2', () => { + const query = ` +FROM index +| STATS avg(height), + super_function(func1(123 + 123123 - 12333.33 / FALSE), func2("abrakadabra what?"), func3(), func4()), +| LIMIT 10 +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index + | STATS + AVG(height), + SUPER_FUNCTION( + FUNC1(123 + 123123 - 12333.33 / FALSE), + FUNC2("abrakadabra what?"), + FUNC3(), + FUNC4()) + | LIMIT 10`); + }); + + test('can vertically flatten adjacent binary expressions of the same precedence', () => { + const query = ` +FROM index +| STATS super_function_name(0.123123123123123 + 888811112.232323123123 + 123123123123.123123123 + 23232323.23232323123 - 123 + 999)), +| LIMIT 10 +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index + | STATS + SUPER_FUNCTION_NAME( + 0.123123123123123 + + 888811112.2323232 + + 123123123123.12312 + + 23232323.232323233 - + 123 + + 999)`); + }); + }); + + describe('binary expressions', () => { + test('can break a standalone binary expression (+) to two lines', () => { + const query = ` +FROM index +| STATS super_function_name("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") +| LIMIT 10 +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index + | STATS + SUPER_FUNCTION_NAME( + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + + "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") + | LIMIT 10`); + }); + + describe('vertical flattening', () => { + test('binary expressions of different precedence are not flattened', () => { + const query = ` +FROM index +| STATS super_function_name(0.123123123123123 + 888811112.232323123123 * 123123123123.123123123 + 23232323.23232323123 - 123 + 999)), +| LIMIT 10 +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index + | STATS + SUPER_FUNCTION_NAME( + 0.123123123123123 + + 888811112.2323232 * 123123123123.12312 + + 23232323.232323233 - + 123 + + 999)`); + }); + + test('binary expressions vertical flattening child function function argument wrapping', () => { + const query = ` +FROM index +| STATS super_function_name(11111111111111.111 + 11111111111111.111 * 11111111111111.111 + another_function_goes_here("this will get wrapped", "at this word", "and one more long string") - 111 + 111)), +| LIMIT 10 +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index + | STATS + SUPER_FUNCTION_NAME( + 11111111111111.111 + + 11111111111111.111 * 11111111111111.111 + + ANOTHER_FUNCTION_GOES_HERE("this will get wrapped", "at this word", + "and one more long string") - + 111 + + 111)`); + }); + + test('two binary expression lists of different precedence group', () => { + const query = ` +FROM index +| STATS super_function_name(11111111111111.111 + 3333333333333.3333 * 3333333333333.3333 * 3333333333333.3333 * 3333333333333.3333 + 11111111111111.111 + 11111111111111.111)), +| LIMIT 10 +`; + const text = reprint(query).text; + + expect('\n' + text).toBe(` +FROM index + | STATS + SUPER_FUNCTION_NAME( + 11111111111111.111 + + 3333333333333.3335 * + 3333333333333.3335 * + 3333333333333.3335 * + 3333333333333.3335 + + 11111111111111.111 + + 11111111111111.111)`); + }); + }); + }); + + describe('inline cast expression', () => { + test('wraps complex expression into brackets where necessary', () => { + const query = ` +ROW (asdf + asdf)::string, 1.2::string, "1234"::integer, (12321342134 + 2341234123432 + 23423423423 + 234234234 + 234234323423 + 3343423424234234)::integer, + function_name(123456789 + 123456789 + 123456789 + 123456789 + 123456789 + 123456789 + 123456789, "bbbbbbbbbbbbbb", "aaaaaaaaaaa")::boolean +`; + const text = reprint(query, { indent: '- ' }).text; + + expect('\n' + text).toBe(` +- ROW +- (asdf + asdf)::string, +- 1.2::string, +- "1234"::integer, +- (12321342134 + +- 2341234123432 + +- 23423423423 + +- 234234234 + +- 234234323423 + +- 3343423424234234)::integer, +- FUNCTION_NAME( +- 123456789 + +- 123456789 + +- 123456789 + +- 123456789 + +- 123456789 + +- 123456789 + +- 123456789, +- "bbbbbbbbbbbbbb", +- "aaaaaaaaaaa")::boolean`); + }); + }); +}); diff --git a/packages/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts b/packages/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts new file mode 100644 index 0000000000000..0aa3ccd608cc6 --- /dev/null +++ b/packages/kbn-esql-ast/src/pretty_print/basic_pretty_printer.ts @@ -0,0 +1,266 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ESQLAstCommand } from '../types'; +import { ESQLAstExpressionNode, ESQLAstQueryNode, Visitor } from '../visitor'; +import { LeafPrinter } from './leaf_printer'; + +/** + * @todo + * + * 1. Add support for binary expression wrapping into brackets, due to operator + * precedence. + */ + +export interface BasicPrettyPrinterOptions { + /** + * Whether to break the query into multiple lines on each pipe. Defaults to + * `false`. + */ + multiline?: boolean; + + /** + * Tabbing string inserted before a pipe, when `multiline` is `true`. Defaults + * to two spaces. + */ + pipeTab?: string; + + /** + * The default lowercase setting to use for all options. Defaults to `false`. + */ + lowercase?: boolean; + + /** + * Whether to lowercase command names. Defaults to `false`. + */ + lowercaseCommands?: boolean; + + /** + * Whether to lowercase command options. Defaults to `false`. + */ + lowercaseOptions?: boolean; + + /** + * Whether to lowercase function names. Defaults to `false`. + */ + lowercaseFunctions?: boolean; + + /** + * Whether to lowercase keywords. Defaults to `false`. + */ + lowercaseKeywords?: boolean; +} + +export type BasicPrettyPrinterMultilineOptions = Omit; + +export class BasicPrettyPrinter { + /** + * @param query ES|QL query AST to print. + * @returns A single-line string representation of the query. + */ + public static readonly print = ( + query: ESQLAstQueryNode, + opts?: BasicPrettyPrinterOptions + ): string => { + const printer = new BasicPrettyPrinter(opts); + return printer.print(query); + }; + + /** + * Print a query with each command on a separate line. It is also possible to + * specify a tabbing option for the pipe character. + * + * @param query ES|QL query AST to print. + * @param opts Options for pretty-printing. + * @returns A multi-line string representation of the query. + */ + public static readonly multiline = ( + query: ESQLAstQueryNode, + opts?: BasicPrettyPrinterMultilineOptions + ): string => { + const printer = new BasicPrettyPrinter({ ...opts, multiline: true }); + return printer.print(query); + }; + + /** + * @param command ES|QL command AST node to print. + * @returns Prints a single-line string representation of the command. + */ + public static readonly command = ( + command: ESQLAstCommand, + opts?: BasicPrettyPrinterOptions + ): string => { + const printer = new BasicPrettyPrinter(opts); + return printer.printCommand(command); + }; + + /** + * @param expression ES|QL expression AST node to print. + * @returns Prints a single-line string representation of the expression. + */ + public static readonly expression = ( + expression: ESQLAstExpressionNode, + opts?: BasicPrettyPrinterOptions + ): string => { + const printer = new BasicPrettyPrinter(opts); + return printer.printExpression(expression); + }; + + protected readonly opts: Required; + + constructor(opts: BasicPrettyPrinterOptions = {}) { + this.opts = { + pipeTab: opts.pipeTab ?? ' ', + multiline: opts.multiline ?? false, + lowercase: opts.lowercase ?? false, + lowercaseCommands: opts.lowercaseCommands ?? opts.lowercase ?? false, + lowercaseOptions: opts.lowercaseOptions ?? opts.lowercase ?? false, + lowercaseFunctions: opts.lowercaseFunctions ?? opts.lowercase ?? false, + lowercaseKeywords: opts.lowercaseKeywords ?? opts.lowercase ?? false, + }; + } + + protected keyword(word: string) { + return this.opts.lowercaseKeywords ?? this.opts.lowercase + ? word.toLowerCase() + : word.toUpperCase(); + } + + protected readonly visitor = new Visitor() + .on('visitExpression', (ctx) => { + return ''; + }) + .on('visitSourceExpression', (ctx) => LeafPrinter.source(ctx.node)) + .on('visitColumnExpression', (ctx) => LeafPrinter.column(ctx.node)) + .on('visitLiteralExpression', (ctx) => LeafPrinter.literal(ctx.node)) + .on('visitTimeIntervalLiteralExpression', (ctx) => LeafPrinter.timeInterval(ctx.node)) + .on('visitInlineCastExpression', (ctx) => { + const value = ctx.value(); + const wrapInBrackets = + value.type !== 'literal' && + value.type !== 'column' && + !(value.type === 'function' && value.subtype === 'variadic-call'); + + let valueFormatted = ctx.visitValue(); + + if (wrapInBrackets) { + valueFormatted = `(${valueFormatted})`; + } + + return `${valueFormatted}::${ctx.node.castType}`; + }) + .on('visitListLiteralExpression', (ctx) => { + let elements = ''; + + for (const arg of ctx.visitElements()) { + elements += (elements ? ', ' : '') + arg; + } + + return `[${elements}]`; + }) + .on('visitFunctionCallExpression', (ctx) => { + const opts = this.opts; + const node = ctx.node; + + let operator = ctx.operator(); + + switch (node.subtype) { + case 'unary-expression': { + operator = this.keyword(operator); + + return `${operator} ${ctx.visitArgument(0, undefined)}`; + } + case 'postfix-unary-expression': { + operator = this.keyword(operator); + + return `${ctx.visitArgument(0)} ${operator}`; + } + case 'binary-expression': { + operator = this.keyword(operator); + + return `${ctx.visitArgument(0)} ${operator} ${ctx.visitArgument(1)}`; + } + default: { + if (opts.lowercaseFunctions) { + operator = operator.toLowerCase(); + } + + let args = ''; + + for (const arg of ctx.visitArguments()) { + args += (args ? ', ' : '') + arg; + } + + return `${operator}(${args})`; + } + } + }) + .on('visitRenameExpression', (ctx) => { + return `${ctx.visitArgument(0)} ${this.keyword('AS')} ${ctx.visitArgument(1)}`; + }) + .on('visitCommandOption', (ctx) => { + const opts = this.opts; + const option = opts.lowercaseOptions ? ctx.node.name : ctx.node.name.toUpperCase(); + + let args = ''; + + for (const arg of ctx.visitArguments()) { + args += (args ? ', ' : '') + arg; + } + + const argsFormatted = args ? ` ${args}` : ''; + const optionFormatted = `${option}${argsFormatted}`; + + return optionFormatted; + }) + .on('visitCommand', (ctx) => { + const opts = this.opts; + const cmd = opts.lowercaseCommands ? ctx.node.name : ctx.node.name.toUpperCase(); + + let args = ''; + let options = ''; + + for (const source of ctx.visitArguments()) { + args += (args ? ', ' : '') + source; + } + + for (const option of ctx.visitOptions()) { + options += (options ? ' ' : '') + option; + } + + const argsFormatted = args ? ` ${args}` : ''; + const optionsFormatted = options ? ` ${options}` : ''; + const cmdFormatted = `${cmd}${argsFormatted}${optionsFormatted}`; + + return cmdFormatted; + }) + .on('visitQuery', (ctx) => { + const opts = this.opts; + const cmdSeparator = opts.multiline ? `\n${opts.pipeTab ?? ' '}| ` : ' | '; + let text = ''; + + for (const cmd of ctx.visitCommands()) { + if (text) text += cmdSeparator; + text += cmd; + } + + return text; + }); + + public print(query: ESQLAstQueryNode) { + return this.visitor.visitQuery(query); + } + + public printCommand(command: ESQLAstCommand) { + return this.visitor.visitCommand(command); + } + + public printExpression(expression: ESQLAstExpressionNode) { + return this.visitor.visitExpression(expression); + } +} diff --git a/packages/kbn-esql-ast/src/pretty_print/leaf_printer.ts b/packages/kbn-esql-ast/src/pretty_print/leaf_printer.ts new file mode 100644 index 0000000000000..b7bd13be8e8b8 --- /dev/null +++ b/packages/kbn-esql-ast/src/pretty_print/leaf_printer.ts @@ -0,0 +1,93 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { ESQLColumn, ESQLLiteral, ESQLSource, ESQLTimeInterval } from '../types'; + +const regexUnquotedIdPattern = /^([a-z\*_\@]{1})[a-z0-9_\*]*$/i; + +/** + * Printer for leaf AST nodes. The printing output of these nodes should + * typically not depend on word wrapping settings, should always return an + * atomic short string. + */ +export const LeafPrinter = { + source: (node: ESQLSource) => node.name, + + /** + * @todo: Add support for: (1) escaped characters, (2) nested fields. + * + * See: https://github.com/elastic/kibana/issues/189913 + */ + column: (node: ESQLColumn) => { + // In the future "column" nodes will have a "parts" field that will be used + // specify the parts of the column name. + const parts: string[] = [node.text]; + + let formatted = ''; + + for (const part of parts) { + if (formatted.length > 0) { + formatted += '.'; + } + if (regexUnquotedIdPattern.test(part)) { + formatted += part; + } else { + // Escape backticks "`" with double backticks "``". + const escaped = part.replace(/`/g, '``'); + formatted += '`' + escaped + '`'; + } + } + + return formatted; + }, + + literal: (node: ESQLLiteral) => { + switch (node.literalType) { + case 'null': { + return 'NULL'; + } + case 'boolean': { + return String(node.value).toUpperCase() === 'TRUE' ? 'TRUE' : 'FALSE'; + } + case 'param': { + switch (node.paramType) { + case 'named': + case 'positional': + return '?' + node.value; + default: + return '?'; + } + } + case 'string': { + return String(node.value); + } + case 'decimal': { + const isRounded = node.value % 1 === 0; + + if (isRounded) { + return String(node.value) + '.0'; + } else { + return String(node.value); + } + } + default: { + return String(node.value); + } + } + }, + + timeInterval: (node: ESQLTimeInterval) => { + const { quantity, unit } = node; + + if (unit.length === 1) { + return `${quantity}${unit}`; + } else { + return `${quantity} ${unit}`; + } + }, +}; diff --git a/packages/kbn-esql-ast/src/pretty_print/pretty_print_one_line.test.ts b/packages/kbn-esql-ast/src/pretty_print/pretty_print_one_line.test.ts deleted file mode 100644 index 2112eeabe483b..0000000000000 --- a/packages/kbn-esql-ast/src/pretty_print/pretty_print_one_line.test.ts +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { getAstAndSyntaxErrors } from '../ast_parser'; -import { prettyPrintOneLine } from './pretty_print_one_line'; - -const reprint = (src: string) => { - const { ast } = getAstAndSyntaxErrors(src); - const text = prettyPrintOneLine(ast); - - // console.log(JSON.stringify(ast, null, 2)); - - return { text }; -}; - -describe('commands', () => { - describe('FROM', () => { - test('FROM command with a single source', () => { - const { text } = reprint('FROM index1'); - - expect(text).toBe('FROM index1'); - }); - - test('FROM command with multiple indices', () => { - const { text } = reprint('from index1, index2, index3'); - - expect(text).toBe('FROM index1, index2, index3'); - }); - - test('FROM command with METADATA', () => { - const { text } = reprint('FROM index1, index2 METADATA field1, field2'); - - expect(text).toBe('FROM index1, index2 METADATA field1, field2'); - }); - }); - - describe('SORT', () => { - test('order expression with no modifier', () => { - const { text } = reprint('FROM a | SORT b'); - - expect(text).toBe('FROM a | SORT b'); - }); - - /** @todo Enable once order expressions are supported. */ - test.skip('order expression with ASC modifier', () => { - const { text } = reprint('FROM a | SORT b ASC'); - - expect(text).toBe('FROM a | SORT b ASC'); - }); - - /** @todo Enable once order expressions are supported. */ - test.skip('order expression with ASC and NULLS FIRST modifier', () => { - const { text } = reprint('FROM a | SORT b ASC NULLS FIRST'); - - expect(text).toBe('FROM a | SORT b ASC NULLS FIRST'); - }); - }); - - describe('EXPLAIN', () => { - /** @todo Enable once query expressions are supported. */ - test.skip('a nested query', () => { - const { text } = reprint('EXPLAIN [ FROM 1 ]'); - - expect(text).toBe('EXPLAIN [ FROM 1 ]'); - }); - }); - - describe('SHOW', () => { - /** @todo Enable once show command args are parsed as columns. */ - test.skip('info page', () => { - const { text } = reprint('SHOW info'); - - expect(text).toBe('SHOW info'); - }); - }); - - describe('META', () => { - /** @todo Enable once show command args are parsed as columns. */ - test.skip('functions page', () => { - const { text } = reprint('META functions'); - - expect(text).toBe('META functions'); - }); - }); - - describe('STATS', () => { - test('with aggregates assignment', () => { - const { text } = reprint('FROM a | STATS var = agg(123, fn(true))'); - - expect(text).toBe('FROM a | STATS var = AGG(123, FN(TRUE))'); - }); - - test('with BY clause', () => { - const { text } = reprint('FROM a | STATS a(1), b(2) by asdf'); - - expect(text).toBe('FROM a | STATS A(1), B(2) BY asdf'); - }); - }); -}); - -describe('expressions', () => { - describe('source expressions', () => { - test('simple source expression', () => { - const { text } = reprint('from source'); - - expect(text).toBe('FROM source'); - }); - - test('sources with dots', () => { - const { text } = reprint('FROM a.b.c'); - - expect(text).toBe('FROM a.b.c'); - }); - - test('sources with slashes', () => { - const { text } = reprint('FROM a/b/c'); - - expect(text).toBe('FROM a/b/c'); - }); - - test('cluster source', () => { - const { text } = reprint('FROM cluster:index'); - - expect(text).toBe('FROM cluster:index'); - }); - - test('quoted source', () => { - const { text } = reprint('FROM "quoted"'); - - expect(text).toBe('FROM quoted'); - }); - - test('triple-quoted source', () => { - const { text } = reprint('FROM """quoted"""'); - - expect(text).toBe('FROM quoted'); - }); - }); - - describe('column expressions', () => { - test('simple columns expressions', () => { - const { text } = reprint('FROM a METADATA column1, _column2'); - - expect(text).toBe('FROM a METADATA column1, _column2'); - }); - - test('nested fields', () => { - const { text } = reprint('FROM a | KEEP a.b'); - - expect(text).toBe('FROM a | KEEP a.b'); - }); - - // Un-skip when "IdentifierPattern" is parsed correctly. - test.skip('quoted nested fields', () => { - const { text } = reprint('FROM index | KEEP `a`.`b`, c.`d`'); - - expect(text).toBe('FROM index | KEEP a.b, c.d'); - }); - - // Un-skip when identifier names are escaped correctly. - test.skip('special character in identifier', () => { - const { text } = reprint('FROM a | KEEP `a 👉 b`, a.`✅`'); - - expect(text).toBe('FROM a | KEEP `a 👉 b`, a.`✅`'); - }); - }); - - describe('"function" expressions', () => { - describe('function call expression', () => { - test('no argument function', () => { - const { text } = reprint('ROW fn()'); - - expect(text).toBe('ROW FN()'); - }); - - test('functions with arguments', () => { - const { text } = reprint('ROW gg(1), wp(1, 2, 3)'); - - expect(text).toBe('ROW GG(1), WP(1, 2, 3)'); - }); - - test('functions with star argument', () => { - const { text } = reprint('ROW f(*)'); - - expect(text).toBe('ROW F(*)'); - }); - }); - - describe('unary expression', () => { - test('NOT expression', () => { - const { text } = reprint('ROW NOT a'); - - expect(text).toBe('ROW NOT a'); - }); - }); - - describe('postfix unary expression', () => { - test('IS NOT NULL expression', () => { - const { text } = reprint('ROW a IS NOT NULL'); - - expect(text).toBe('ROW a IS NOT NULL'); - }); - }); - - describe('binary expression expression', () => { - test('arithmetic expression', () => { - const { text } = reprint('ROW 1 + 2'); - - expect(text).toBe('ROW 1 + 2'); - }); - - test('assignment expression', () => { - const { text } = reprint('FROM a | STATS a != 1'); - - expect(text).toBe('FROM a | STATS a != 1'); - }); - - test('regex expression - 1', () => { - const { text } = reprint('FROM a | WHERE a NOT RLIKE "a"'); - - expect(text).toBe('FROM a | WHERE a NOT RLIKE "a"'); - }); - - test('regex expression - 2', () => { - const { text } = reprint('FROM a | WHERE a LIKE "b"'); - - expect(text).toBe('FROM a | WHERE a LIKE "b"'); - }); - }); - }); - - describe('literals expressions', () => { - describe('numeric literal', () => { - test('null', () => { - const { text } = reprint('ROW null'); - - expect(text).toBe('ROW NULL'); - }); - - test('boolean', () => { - expect(reprint('ROW true').text).toBe('ROW TRUE'); - expect(reprint('ROW false').text).toBe('ROW FALSE'); - }); - - test('integer', () => { - const { text } = reprint('ROW 1'); - - expect(text).toBe('ROW 1'); - }); - - test('decimal', () => { - const { text } = reprint('ROW 1.2'); - - expect(text).toBe('ROW 1.2'); - }); - - test('string', () => { - const { text } = reprint('ROW "abc"'); - - expect(text).toBe('ROW "abc"'); - }); - - test('string w/ special chars', () => { - const { text } = reprint('ROW "as \\" 👍"'); - - expect(text).toBe('ROW "as \\" 👍"'); - }); - - describe('params', () => { - test('unnamed', () => { - const { text } = reprint('ROW ?'); - - expect(text).toBe('ROW ?'); - }); - - test('named', () => { - const { text } = reprint('ROW ?kappa'); - - expect(text).toBe('ROW ?kappa'); - }); - - test('positional', () => { - const { text } = reprint('ROW ?42'); - - expect(text).toBe('ROW ?42'); - }); - }); - }); - }); - - describe('list literal expressions', () => { - describe('integer list', () => { - test('one element list', () => { - expect(reprint('ROW [1]').text).toBe('ROW [1]'); - }); - - test('multiple elements', () => { - expect(reprint('ROW [1, 2]').text).toBe('ROW [1, 2]'); - expect(reprint('ROW [1, 2, -1]').text).toBe('ROW [1, 2, -1]'); - }); - }); - - describe('boolean list', () => { - test('one element list', () => { - expect(reprint('ROW [true]').text).toBe('ROW [TRUE]'); - }); - - test('multiple elements', () => { - expect(reprint('ROW [TRUE, false]').text).toBe('ROW [TRUE, FALSE]'); - expect(reprint('ROW [false, FALSE, false]').text).toBe('ROW [FALSE, FALSE, FALSE]'); - }); - }); - - describe('string list', () => { - test('one element list', () => { - expect(reprint('ROW ["a"]').text).toBe('ROW ["a"]'); - }); - - test('multiple elements', () => { - expect(reprint('ROW ["a", "b"]').text).toBe('ROW ["a", "b"]'); - expect(reprint('ROW ["foo", "42", "boden"]').text).toBe('ROW ["foo", "42", "boden"]'); - }); - }); - }); - - describe('cast expressions', () => { - test('various', () => { - expect(reprint('ROW a::string').text).toBe('ROW a::string'); - expect(reprint('ROW 123::string').text).toBe('ROW 123::string'); - expect(reprint('ROW "asdf"::number').text).toBe('ROW "asdf"::number'); - }); - }); - - describe('time interval expression', () => { - test('days', () => { - const { text } = reprint('ROW 1 d'); - - expect(text).toBe('ROW 1d'); - }); - - test('years', () => { - const { text } = reprint('ROW 42y'); - - expect(text).toBe('ROW 42y'); - }); - }); -}); diff --git a/packages/kbn-esql-ast/src/pretty_print/pretty_print_one_line.ts b/packages/kbn-esql-ast/src/pretty_print/pretty_print_one_line.ts deleted file mode 100644 index 94f4afd1acd11..0000000000000 --- a/packages/kbn-esql-ast/src/pretty_print/pretty_print_one_line.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0 and the Server Side Public License, v 1; you may not use this file except - * in compliance with, at your election, the Elastic License 2.0 or the Server - * Side Public License, v 1. - */ - -import { ESQLAstQueryNode, Visitor } from '../visitor'; - -export const prettyPrintOneLine = (query: ESQLAstQueryNode) => { - const visitor = new Visitor() - .on('visitSourceExpression', (ctx) => { - return ctx.node.name; - }) - .on('visitColumnExpression', (ctx) => { - /** - * @todo: Add support for: (1) escaped characters, (2) nested fields. - */ - return ctx.node.name; - }) - .on('visitFunctionCallExpression', (ctx) => { - const node = ctx.node; - let operator = node.name.toUpperCase(); - - switch (node.subtype) { - case 'unary-expression': { - return `${operator} ${ctx.visitArgument(0)}`; - } - case 'postfix-unary-expression': { - return `${ctx.visitArgument(0)} ${operator}`; - } - case 'binary-expression': { - /** @todo Make `operator` printable. */ - switch (operator) { - case 'NOT_LIKE': { - operator = 'NOT LIKE'; - break; - } - case 'NOT_RLIKE': { - operator = 'NOT RLIKE'; - break; - } - } - return `${ctx.visitArgument(0)} ${operator} ${ctx.visitArgument(1)}`; - } - default: { - let args = ''; - - for (const arg of ctx.visitArguments()) { - args += (args ? ', ' : '') + arg; - } - - return `${operator}(${args})`; - } - } - }) - .on('visitLiteralExpression', (ctx) => { - const node = ctx.node; - - switch (node.literalType) { - case 'null': { - return 'NULL'; - } - case 'boolean': { - return String(node.value).toUpperCase() === 'TRUE' ? 'TRUE' : 'FALSE'; - } - case 'param': { - switch (node.paramType) { - case 'named': - case 'positional': - return '?' + node.value; - default: - return '?'; - } - } - case 'string': { - return node.value; - } - default: { - return String(ctx.node.value); - } - } - }) - .on('visitListLiteralExpression', (ctx) => { - let elements = ''; - - for (const arg of ctx.visitElements()) { - elements += (elements ? ', ' : '') + arg; - } - - return `[${elements}]`; - }) - .on('visitTimeIntervalLiteralExpression', (ctx) => { - /** @todo Rename to `fmt`. */ - return ctx.format(); - }) - .on('visitInlineCastExpression', (ctx) => { - /** @todo Add `.fmt()` helper. */ - return `${ctx.visitValue()}::${ctx.node.castType}`; - }) - .on('visitExpression', (ctx) => { - return ctx.node.text ?? ''; - }) - .on('visitCommandOption', (ctx) => { - const option = ctx.node.name.toUpperCase(); - let args = ''; - - for (const arg of ctx.visitArguments()) { - args += (args ? ', ' : '') + arg; - } - - const argsFormatted = args ? ` ${args}` : ''; - const optionFormatted = `${option}${argsFormatted}`; - - return optionFormatted; - }) - .on('visitCommand', (ctx) => { - const cmd = ctx.node.name.toUpperCase(); - let args = ''; - let options = ''; - - for (const source of ctx.visitArguments()) { - args += (args ? ', ' : '') + source; - } - - for (const option of ctx.visitOptions()) { - options += (options ? ' ' : '') + option; - } - - const argsFormatted = args ? ` ${args}` : ''; - const optionsFormatted = options ? ` ${options}` : ''; - const cmdFormatted = `${cmd}${argsFormatted}${optionsFormatted}`; - - return cmdFormatted; - }) - .on('visitQuery', (ctx) => { - let text = ''; - - for (const cmd of ctx.visitCommands()) { - text += (text ? ' | ' : '') + cmd; - } - - return text; - }); - - return visitor.visitQuery(query); -}; diff --git a/packages/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts b/packages/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts new file mode 100644 index 0000000000000..24381fbcda1a8 --- /dev/null +++ b/packages/kbn-esql-ast/src/pretty_print/wrapping_pretty_printer.ts @@ -0,0 +1,478 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { BinaryExpressionGroup } from '../ast/constants'; +import { binaryExpressionGroup, isBinaryExpression } from '../ast/helpers'; +import { + CommandOptionVisitorContext, + CommandVisitorContext, + ESQLAstQueryNode, + ExpressionVisitorContext, + FunctionCallExpressionVisitorContext, + Visitor, +} from '../visitor'; +import { singleItems } from '../visitor/utils'; +import { BasicPrettyPrinter, BasicPrettyPrinterOptions } from './basic_pretty_printer'; +import { LeafPrinter } from './leaf_printer'; + +/** + * @todo + * + * 1. Implement list literal pretty printing. + */ + +interface Input { + indent: string; + remaining: number; + + /** + * Passed between adjacent binary expressions to flatten them into a single + * vertical list. + * + * For example, a list like this: + * + * ``` + * 1 + 2 + 3 + 4 + * ``` + * + * Is flatted into a single list: + * + * ``` + * 1 + + * 2 + + * 3 + + * 4 + * ``` + */ + flattenBinExpOfType?: BinaryExpressionGroup; +} + +interface Output { + txt: string; + lines?: number; +} + +export interface WrappingPrettyPrinterOptions extends BasicPrettyPrinterOptions { + /** + * Initial indentation string inserted before the whole query. Defaults to an + * empty string. + */ + indent?: string; + + /** + * Tabbing string inserted before new level of nesting. Defaults to two spaces. + */ + tab?: string; + + /** + * Tabbing string inserted before a pipe, when `multiline` is `true`. + */ + pipeTab?: string; + + /** + * Tabbing string inserted before command arguments, when they are broken into + * multiple lines. Defaults to four spaces. + */ + commandTab?: string; + + /** + * Whether to force multiline formatting. Defaults to `false`. If set to + * `false`, it will try to fit the query into a single line. + */ + multiline?: boolean; + + /** + * Expected width of the output. Defaults to 80 characters. Text will be + * wrapped to fit this width. + */ + wrap?: number; +} + +export class WrappingPrettyPrinter { + public static readonly print = ( + query: ESQLAstQueryNode, + opts?: WrappingPrettyPrinterOptions + ): string => { + const printer = new WrappingPrettyPrinter(opts); + return printer.print(query); + }; + + protected readonly opts: Required; + + constructor(opts: WrappingPrettyPrinterOptions = {}) { + this.opts = { + indent: opts.indent ?? '', + tab: opts.tab ?? ' ', + pipeTab: opts.pipeTab ?? ' ', + commandTab: opts.commandTab ?? ' ', + multiline: opts.multiline ?? false, + wrap: opts.wrap ?? 80, + lowercase: opts.lowercase ?? false, + lowercaseCommands: opts.lowercaseCommands ?? opts.lowercase ?? false, + lowercaseOptions: opts.lowercaseOptions ?? opts.lowercase ?? false, + lowercaseFunctions: opts.lowercaseFunctions ?? opts.lowercase ?? false, + lowercaseKeywords: opts.lowercaseKeywords ?? opts.lowercase ?? false, + }; + } + + protected keyword(word: string) { + return this.opts.lowercaseKeywords ?? this.opts.lowercase + ? word.toLowerCase() + : word.toUpperCase(); + } + + private visitBinaryExpression( + ctx: ExpressionVisitorContext, + operator: string, + inp: Input + ): Output { + const node = ctx.node; + const group = binaryExpressionGroup(node); + const [left, right] = ctx.arguments(); + const groupLeft = binaryExpressionGroup(left); + const groupRight = binaryExpressionGroup(right); + const continueVerticalFlattening = group && inp.flattenBinExpOfType === group; + + if (continueVerticalFlattening) { + const parent = ctx.parent?.node; + const isLeftChild = isBinaryExpression(parent) && parent.args[0] === node; + const leftInput: Input = { + indent: inp.indent, + remaining: inp.remaining, + flattenBinExpOfType: group, + }; + const rightInput: Input = { + indent: inp.indent + this.opts.tab, + remaining: inp.remaining - this.opts.tab.length, + flattenBinExpOfType: group, + }; + const leftOut = ctx.visitArgument(0, leftInput); + const rightOut = ctx.visitArgument(1, rightInput); + const rightTab = isLeftChild ? this.opts.tab : ''; + const txt = `${leftOut.txt} ${operator}\n${inp.indent}${rightTab}${rightOut.txt}`; + + return { txt }; + } + + let txt: string = ''; + let leftFormatted = BasicPrettyPrinter.expression(left, this.opts); + let rightFormatted = BasicPrettyPrinter.expression(right, this.opts); + + if (groupLeft && groupLeft < group) { + leftFormatted = `(${leftFormatted})`; + } + + if (groupRight && groupRight < group) { + rightFormatted = `(${rightFormatted})`; + } + + const length = leftFormatted.length + rightFormatted.length + operator.length + 2; + const fitsOnOneLine = length <= inp.remaining; + + if (fitsOnOneLine) { + txt = `${leftFormatted} ${operator} ${rightFormatted}`; + } else { + const flattenVertically = group === groupLeft || group === groupRight; + const flattenBinExpOfType = flattenVertically ? group : undefined; + const leftInput: Input = { + indent: inp.indent, + remaining: inp.remaining, + flattenBinExpOfType, + }; + const rightInput: Input = { + indent: inp.indent + this.opts.tab, + remaining: inp.remaining - this.opts.tab.length, + flattenBinExpOfType, + }; + const leftOut = ctx.visitArgument(0, leftInput); + const rightOut = ctx.visitArgument(1, rightInput); + + txt = `${leftOut.txt} ${operator}\n${inp.indent}${this.opts.tab}${rightOut.txt}`; + } + + return { txt }; + } + + private printArguments( + ctx: CommandVisitorContext | CommandOptionVisitorContext | FunctionCallExpressionVisitorContext, + inp: Input + ) { + let txt = ''; + let lines = 1; + let largestArg = 0; + let argsPerLine = 0; + let minArgsPerLine = 1e6; + let maxArgsPerLine = 0; + let remainingCurrentLine = inp.remaining; + let oneArgumentPerLine = false; + + ARGS: for (const arg of singleItems(ctx.arguments())) { + if (arg.type === 'option') { + continue; + } + + const formattedArg = BasicPrettyPrinter.expression(arg, this.opts); + const formattedArgLength = formattedArg.length; + const needsWrap = remainingCurrentLine < formattedArgLength; + if (formattedArgLength > largestArg) { + largestArg = formattedArgLength; + } + let separator = txt ? ',' : ''; + let fragment = ''; + + if (needsWrap) { + separator += + '\n' + + inp.indent + + this.opts.tab + + (ctx instanceof CommandVisitorContext ? this.opts.commandTab : ''); + fragment = separator + formattedArg; + lines++; + if (argsPerLine > maxArgsPerLine) { + maxArgsPerLine = argsPerLine; + } + if (argsPerLine < minArgsPerLine) { + minArgsPerLine = argsPerLine; + if (minArgsPerLine < 2) { + oneArgumentPerLine = true; + break ARGS; + } + } + remainingCurrentLine = + inp.remaining - formattedArgLength - this.opts.tab.length - this.opts.commandTab.length; + argsPerLine = 1; + } else { + argsPerLine++; + fragment = separator + (separator ? ' ' : '') + formattedArg; + remainingCurrentLine -= fragment.length; + } + txt += fragment; + } + + let indent = inp.indent + this.opts.tab; + + if (ctx instanceof CommandVisitorContext) { + const isFirstCommand = (ctx.parent?.node as ESQLAstQueryNode)?.[0] === ctx.node; + if (!isFirstCommand) { + indent += this.opts.commandTab; + } + } + + if (oneArgumentPerLine) { + lines = 1; + txt = ctx instanceof CommandVisitorContext ? indent : '\n' + indent; + let i = 0; + for (const arg of ctx.visitArguments({ + indent, + remaining: this.opts.wrap - indent.length, + })) { + const isFirstArg = i === 0; + const separator = isFirstArg ? '' : ',\n' + indent; + txt += separator + arg.txt; + lines++; + i++; + } + } + + return { txt, lines, indent, oneArgumentPerLine }; + } + + protected readonly visitor = new Visitor() + .on('visitExpression', (ctx, inp: Input): Output => { + const txt = ctx.node.text ?? ''; + return { txt }; + }) + + .on( + 'visitSourceExpression', + (ctx, inp: Input): Output => ({ txt: LeafPrinter.source(ctx.node) }) + ) + + .on( + 'visitColumnExpression', + (ctx, inp: Input): Output => ({ txt: LeafPrinter.column(ctx.node) }) + ) + + .on( + 'visitLiteralExpression', + (ctx, inp: Input): Output => ({ txt: LeafPrinter.literal(ctx.node) }) + ) + + .on( + 'visitTimeIntervalLiteralExpression', + (ctx, inp: Input): Output => ({ txt: LeafPrinter.timeInterval(ctx.node) }) + ) + + .on('visitInlineCastExpression', (ctx, inp: Input): Output => { + const value = ctx.value(); + const wrapInBrackets = + value.type !== 'literal' && + value.type !== 'column' && + !(value.type === 'function' && value.subtype === 'variadic-call'); + const castType = ctx.node.castType; + + let valueFormatted = ctx.visitValue({ + indent: inp.indent, + remaining: inp.remaining - castType.length - 2, + }).txt; + + if (wrapInBrackets) { + valueFormatted = `(${valueFormatted})`; + } + + const txt = `${valueFormatted}::${ctx.node.castType}`; + + return { txt }; + }) + + .on('visitRenameExpression', (ctx, inp: Input): Output => { + const operator = this.keyword('AS'); + return this.visitBinaryExpression(ctx, operator, inp); + }) + + .on('visitListLiteralExpression', (ctx, inp: Input): Output => { + let elements = ''; + + for (const out of ctx.visitElements()) { + elements += (elements ? ', ' : '') + out.txt; + } + + const txt = `[${elements}]`; + return { txt }; + }) + + .on('visitFunctionCallExpression', (ctx, inp: Input): Output => { + const node = ctx.node; + let operator = ctx.operator(); + let txt: string = ''; + + if (this.opts.lowercaseFunctions ?? this.opts.lowercase) { + operator = operator.toLowerCase(); + } + + switch (node.subtype) { + case 'unary-expression': { + txt = `${operator} ${ctx.visitArgument(0, inp).txt}`; + break; + } + case 'postfix-unary-expression': { + txt = `${ctx.visitArgument(0, inp).txt} ${operator}`; + break; + } + case 'binary-expression': { + return this.visitBinaryExpression(ctx, operator, inp); + } + default: { + const args = this.printArguments(ctx, { + indent: inp.indent, + remaining: inp.remaining - operator.length - 1, + }); + + txt = `${operator}(${args.txt})`; + } + } + + return { txt }; + }) + + .on('visitCommandOption', (ctx, inp: Input): Output => { + const option = this.opts.lowercaseOptions ? ctx.node.name : ctx.node.name.toUpperCase(); + const args = this.printArguments(ctx, { + indent: inp.indent, + remaining: inp.remaining - option.length - 1, + }); + const argsFormatted = args.txt ? ` ${args.txt}` : ''; + const txt = `${option}${argsFormatted}`; + + return { txt, lines: args.lines }; + }) + + .on('visitCommand', (ctx, inp: Input): Output => { + const opts = this.opts; + const cmd = opts.lowercaseCommands ? ctx.node.name : ctx.node.name.toUpperCase(); + const args = this.printArguments(ctx, { + indent: inp.indent, + remaining: inp.remaining - cmd.length - 1, + }); + const optionIndent = args.indent + opts.pipeTab; + const optionsTxt: string[] = []; + + let options = ''; + let optionsLines = 0; + let breakOptions = false; + + for (const out of ctx.visitOptions({ + indent: optionIndent, + remaining: opts.wrap - optionIndent.length, + })) { + optionsLines += out.lines ?? 1; + optionsTxt.push(out.txt); + options += (options ? ' ' : '') + out.txt; + } + + breakOptions = + breakOptions || + args.lines > 1 || + optionsLines > 1 || + options.length > opts.wrap - inp.remaining - cmd.length - 1 - args.txt.length; + + if (breakOptions) { + options = optionsTxt.join('\n' + optionIndent); + } + + const argsWithWhitespace = args.txt + ? `${args.oneArgumentPerLine ? '\n' : ' '}${args.txt}` + : ''; + const optionsWithWhitespace = options + ? `${breakOptions ? '\n' + optionIndent : ' '}${options}` + : ''; + const txt = `${cmd}${argsWithWhitespace}${optionsWithWhitespace}`; + + return { txt, lines: args.lines /* add options lines count */ }; + }) + + .on('visitQuery', (ctx) => { + const opts = this.opts; + const indent = opts.indent ?? ''; + const commandCount = ctx.node.length; + let multiline = opts.multiline ?? commandCount > 3; + + if (!multiline) { + const oneLine = indent + BasicPrettyPrinter.print(ctx.node, opts); + if (oneLine.length <= opts.wrap) { + return oneLine; + } else { + multiline = true; + } + } + + let text = indent; + const cmdSeparator = multiline ? `\n${indent}${opts.pipeTab ?? ' '}| ` : ' | '; + let i = 0; + let prevOut: Output | undefined; + + for (const out of ctx.visitCommands({ indent, remaining: opts.wrap - indent.length })) { + const isSecondCommand = i === 1; + if (isSecondCommand) { + const firstCommandIsMultiline = prevOut?.lines && prevOut.lines > 1; + if (firstCommandIsMultiline) text += '\n' + indent; + } + const isFirstCommand = i === 0; + if (!isFirstCommand) text += cmdSeparator; + text += out.txt; + i++; + prevOut = out; + } + + return text; + }); + + public print(query: ESQLAstQueryNode) { + return this.visitor.visitQuery(query); + } +} diff --git a/packages/kbn-esql-ast/src/types.ts b/packages/kbn-esql-ast/src/types.ts index 12496835ea12b..ae675a375a430 100644 --- a/packages/kbn-esql-ast/src/types.ts +++ b/packages/kbn-esql-ast/src/types.ts @@ -72,6 +72,14 @@ export interface ESQLCommandOption extends ESQLAstBaseItem { args: ESQLAstItem[]; } +/** + * Right now rename expressions ("clauses") are parsed as options in the + * RENAME command. + */ +export interface ESQLAstRenameExpression extends ESQLCommandOption { + name: 'as'; +} + export interface ESQLCommandMode extends ESQLAstBaseItem { type: 'mode'; } @@ -171,6 +179,22 @@ export interface ESQLSource extends ESQLAstBaseItem { export interface ESQLColumn extends ESQLAstBaseItem { type: 'column'; + + /** + * An identifier can be composed of multiple parts, e.g: part1.part2.`part``3️⃣`. + * This property contains the parsed unquoted parts of the identifier. + * For example: `['part1', 'part2', 'part`3️⃣']`. + */ + parts: string[]; + + /** + * @deprecated + * + * An identifier can be composed of multiple parts, e.g: part1.part2.`part3️⃣` + * + * Each part can be quoted or not quoted independently. A single `quoted` + * property is not enough to represent the identifier. Use `parts` instead. + */ quoted: boolean; } diff --git a/packages/kbn-esql-ast/src/visitor/__tests__/scenarios.test.ts b/packages/kbn-esql-ast/src/visitor/__tests__/scenarios.test.ts index ce338e8bd72ba..d0e597ea553de 100644 --- a/packages/kbn-esql-ast/src/visitor/__tests__/scenarios.test.ts +++ b/packages/kbn-esql-ast/src/visitor/__tests__/scenarios.test.ts @@ -65,12 +65,12 @@ test('can remove a specific WHERE command', () => { const print = () => new Visitor() + .on('visitExpression', (ctx) => '') .on('visitColumnExpression', (ctx) => ctx.node.name) .on( 'visitFunctionCallExpression', (ctx) => `${ctx.node.name}(${[...ctx.visitArguments()].join(', ')})` ) - .on('visitExpression', (ctx) => '') .on('visitCommand', (ctx) => { if (ctx.node.name === 'where') { const args = [...ctx.visitArguments()].join(', '); @@ -84,12 +84,12 @@ test('can remove a specific WHERE command', () => { const removeFilter = (field: string) => { query.ast = new Visitor() + .on('visitExpression', (ctx) => ctx.node) .on('visitColumnExpression', (ctx) => (ctx.node.name === field ? null : ctx.node)) .on('visitFunctionCallExpression', (ctx) => { const args = [...ctx.visitArguments()]; return args.some((arg) => arg === null) ? null : ctx.node; }) - .on('visitExpression', (ctx) => ctx.node) .on('visitCommand', (ctx) => { if (ctx.node.name === 'where') { ctx.node.args = [...ctx.visitArguments()].filter(Boolean); @@ -116,6 +116,9 @@ test('can remove a specific WHERE command', () => { export const prettyPrint = (ast: ESQLAstQueryNode) => new Visitor() + .on('visitExpression', (ctx) => { + return ''; + }) .on('visitSourceExpression', (ctx) => { return ctx.node.name; }) @@ -141,9 +144,6 @@ export const prettyPrint = (ast: ESQLAstQueryNode) => .on('visitInlineCastExpression', (ctx) => { return ''; }) - .on('visitExpression', (ctx) => { - return ''; - }) .on('visitCommandOption', (ctx) => { let args = ''; for (const arg of ctx.visitArguments()) { diff --git a/packages/kbn-esql-ast/src/visitor/contexts.ts b/packages/kbn-esql-ast/src/visitor/contexts.ts index a9e690b6067d2..376825f88577f 100644 --- a/packages/kbn-esql-ast/src/visitor/contexts.ts +++ b/packages/kbn-esql-ast/src/visitor/contexts.ts @@ -16,6 +16,7 @@ import type { ESQLAstCommand, ESQLAstItem, ESQLAstNodeWithArgs, + ESQLAstRenameExpression, ESQLColumn, ESQLCommandOption, ESQLDecimalLiteral, @@ -24,6 +25,7 @@ import type { ESQLIntegerLiteral, ESQLList, ESQLLiteral, + ESQLSingleAstItem, ESQLSource, ESQLTimeInterval, } from '../types'; @@ -35,7 +37,9 @@ import type { ExpressionVisitorOutput, UndefinedToVoid, VisitorAstNode, + VisitorInput, VisitorMethods, + VisitorOutput, } from './types'; import { Builder } from '../builder'; @@ -66,8 +70,8 @@ export class VisitorContext< ) {} public *visitArguments( - input: ExpressionVisitorInput - ): Iterable> { + input: VisitorInput + ): Iterable> { this.ctx.assertMethodExists('visitExpression'); const node = this.node; @@ -77,14 +81,33 @@ export class VisitorContext< } for (const arg of singleItems(node.args)) { + if (arg.type === 'option' && arg.name !== 'as') { + continue; + } yield this.visitExpression(arg, input as any); } } + public arguments(): ESQLAstExpressionNode[] { + const node = this.node; + + if (!isNodeWithArgs(node)) { + throw new Error('Node does not have arguments'); + } + + const args: ESQLAstExpressionNode[] = []; + + for (const arg of singleItems(node.args)) { + args.push(arg); + } + + return args; + } + public visitArgument( index: number, - input: ExpressionVisitorInput - ): ExpressionVisitorOutput { + input: VisitorInput + ): VisitorOutput { this.ctx.assertMethodExists('visitExpression'); const node = this.node; @@ -106,8 +129,8 @@ export class VisitorContext< public visitExpression( expressionNode: ESQLAstExpressionNode, - input: ExpressionVisitorInput - ): ExpressionVisitorOutput { + input: VisitorInput + ): VisitorOutput { return this.ctx.visitExpression(this, expressionNode, input); } @@ -154,6 +177,8 @@ export class CommandVisitorContext< continue; } if (arg.type === 'option') { + // We treat "AS" options as rename expressions, not as command options. + if (arg.name === 'as') continue; yield arg; } } @@ -172,7 +197,7 @@ export class CommandVisitorContext< } } - public *arguments(option: '' | string = ''): Iterable { + public *args(option: '' | string = ''): Iterable { option = option.toLowerCase(); if (!option) { @@ -183,6 +208,9 @@ export class CommandVisitorContext< } if (arg.type !== 'option') { yield arg; + } else if (arg.name === 'as') { + // We treat "AS" options as rename expressions, not as command options. + yield arg; } } } @@ -196,20 +224,21 @@ export class CommandVisitorContext< } } - public *visitArguments( - input: ExpressionVisitorInput, + public *visitArgs( + input: + | VisitorInput + | (() => VisitorInput), option: '' | string = '' ): Iterable> { this.ctx.assertMethodExists('visitExpression'); - const node = this.node; - - if (!isNodeWithArgs(node)) { - throw new Error('Node does not have arguments'); - } - - for (const arg of singleItems(this.arguments(option))) { - yield this.visitExpression(arg, input as any); + for (const arg of singleItems(this.args(option))) { + yield this.visitExpression( + arg, + typeof input === 'function' + ? (input as () => VisitorInput)() + : (input as VisitorInput) + ); } } @@ -441,7 +470,25 @@ export class SourceExpressionVisitorContext< export class FunctionCallExpressionVisitorContext< Methods extends VisitorMethods = VisitorMethods, Data extends SharedData = SharedData -> extends VisitorContext {} +> extends VisitorContext { + /** + * @returns Returns a printable uppercase function name or operator. + */ + public operator(): string { + const operator = this.node.name; + + switch (operator) { + case 'note_like': { + return 'NOT LIKE'; + } + case 'not_rlike': { + return 'NOT RLIKE'; + } + } + + return operator.toUpperCase(); + } +} export class LiteralExpressionVisitorContext< Methods extends VisitorMethods = VisitorMethods, @@ -468,23 +515,30 @@ export class ListLiteralExpressionVisitorContext< export class TimeIntervalLiteralExpressionVisitorContext< Methods extends VisitorMethods = VisitorMethods, Data extends SharedData = SharedData -> extends ExpressionVisitorContext { - format(): string { - const node = this.node; - - return `${node.quantity}${node.unit}`; - } -} +> extends ExpressionVisitorContext {} export class InlineCastExpressionVisitorContext< Methods extends VisitorMethods = VisitorMethods, Data extends SharedData = SharedData > extends ExpressionVisitorContext { - public visitValue(input: ExpressionVisitorInput): ExpressionVisitorOutput { + public value(): ESQLSingleAstItem { this.ctx.assertMethodExists('visitExpression'); const value = firstItem([this.node.value])!; - return this.visitExpression(value, input as any); + return value; + } + + public visitValue( + input: VisitorInput + ): VisitorOutput { + this.ctx.assertMethodExists('visitExpression'); + + return this.visitExpression(this.value(), input as any); } } + +export class RenameExpressionVisitorContext< + Methods extends VisitorMethods = VisitorMethods, + Data extends SharedData = SharedData +> extends VisitorContext {} diff --git a/packages/kbn-esql-ast/src/visitor/global_visitor_context.ts b/packages/kbn-esql-ast/src/visitor/global_visitor_context.ts index d05a4ce326eb7..e1ca7f6677d24 100644 --- a/packages/kbn-esql-ast/src/visitor/global_visitor_context.ts +++ b/packages/kbn-esql-ast/src/visitor/global_visitor_context.ts @@ -9,6 +9,7 @@ import * as contexts from './contexts'; import type { ESQLAstCommand, + ESQLAstRenameExpression, ESQLColumn, ESQLFunction, ESQLInlineCast, @@ -398,6 +399,18 @@ export class GlobalVisitorContext< if (!this.methods.visitInlineCastExpression) break; return this.visitInlineCastExpression(parent, expressionNode, input as any); } + case 'option': { + switch (expressionNode.name) { + case 'as': { + if (!this.methods.visitRenameExpression) break; + return this.visitRenameExpression( + parent, + expressionNode as ESQLAstRenameExpression, + input as any + ); + } + } + } } return this.visitExpressionGeneric(parent, expressionNode, input as any); } @@ -464,4 +477,13 @@ export class GlobalVisitorContext< const context = new contexts.InlineCastExpressionVisitorContext(this, node, parent); return this.visitWithSpecificContext('visitInlineCastExpression', context, input); } + + public visitRenameExpression( + parent: contexts.VisitorContext | null, + node: ESQLAstRenameExpression, + input: types.VisitorInput + ): types.VisitorOutput { + const context = new contexts.RenameExpressionVisitorContext(this, node, parent); + return this.visitWithSpecificContext('visitRenameExpression', context, input); + } } diff --git a/packages/kbn-esql-ast/src/visitor/types.ts b/packages/kbn-esql-ast/src/visitor/types.ts index a8ec5e9bd1785..beb0aed3570b2 100644 --- a/packages/kbn-esql-ast/src/visitor/types.ts +++ b/packages/kbn-esql-ast/src/visitor/types.ts @@ -59,7 +59,8 @@ export type ExpressionVisitorInput = AnyToVoid< VisitorInput & VisitorInput & VisitorInput & - VisitorInput + VisitorInput & + VisitorInput >; /** @@ -73,7 +74,8 @@ export type ExpressionVisitorOutput = | VisitorOutput | VisitorOutput | VisitorOutput - | VisitorOutput; + | VisitorOutput + | VisitorOutput; /** * Input that satisfies any command visitor input constraints. @@ -195,6 +197,11 @@ export interface VisitorMethods< any, any >; + visitRenameExpression?: Visitor< + contexts.RenameExpressionVisitorContext, + any, + any + >; } /** @@ -222,22 +229,6 @@ export type AstNodeToVisitorName = Node extends ESQ ? 'visitInlineCastExpression' : never; -/** - * Maps any AST node to the corresponding visitor context. - */ -export type AstNodeToVisitor< - Node extends VisitorAstNode, - Methods extends VisitorMethods = VisitorMethods -> = Methods[AstNodeToVisitorName]; - -/** - * Maps any AST node to its corresponding visitor context. - */ -export type AstNodeToContext< - Node extends VisitorAstNode, - Methods extends VisitorMethods = VisitorMethods -> = Parameters>>[0]; - /** * Asserts that a type is a function. */ diff --git a/packages/kbn-esql-ast/src/visitor/visitor.ts b/packages/kbn-esql-ast/src/visitor/visitor.ts index 3956fe126723e..1a4554f1f2cf4 100644 --- a/packages/kbn-esql-ast/src/visitor/visitor.ts +++ b/packages/kbn-esql-ast/src/visitor/visitor.ts @@ -12,10 +12,12 @@ import { VisitorContext } from './contexts'; import type { AstNodeToVisitorName, EnsureFunction, + ESQLAstExpressionNode, ESQLAstQueryNode, UndefinedToVoid, VisitorMethods, } from './types'; +import { ESQLCommand } from '../types'; export interface VisitorOptions< Methods extends VisitorMethods = VisitorMethods, @@ -86,6 +88,7 @@ export class Visitor< * Traverse the root node of ES|QL query with default context. * * @param node Query node to traverse. + * @param input Input to pass to the first visitor. * @returns The result of the query visitor. */ public visitQuery( @@ -95,4 +98,34 @@ export class Visitor< const queryContext = new QueryVisitorContext(this.ctx, node, null); return this.visit(queryContext, input); } + + /** + * Traverse starting from known command node with default context. + * + * @param node Command node to traverse. + * @param input Input to pass to the first visitor. + * @returns The output of the visitor. + */ + public visitCommand( + node: ESQLCommand, + input: UndefinedToVoid>[1]> + ) { + this.ctx.assertMethodExists('visitCommand'); + return this.ctx.visitCommand(null, node, input); + } + + /** + * Traverse starting from known expression node with default context. + * + * @param node Expression node to traverse. + * @param input Input to pass to the first visitor. + * @returns The output of the visitor. + */ + public visitExpression( + node: ESQLAstExpressionNode, + input: UndefinedToVoid>[1]> + ) { + this.ctx.assertMethodExists('visitExpression'); + return this.ctx.visitExpression(null, node, input); + } } diff --git a/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.test.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.test.ts index bfb8c8e2b16bf..42a6d4c4fd64d 100644 --- a/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.test.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.test.ts @@ -1358,4 +1358,91 @@ describe('autocomplete', () => { ).map((s) => (s.text.toLowerCase().includes('null') ? s : attachTriggerCommand(s))) ); }); + + describe('Replacement ranges are attached when needed', () => { + testSuggestions('FROM a | WHERE doubleField IS NOT N/', [ + { text: 'IS NOT NULL', rangeToReplace: { start: 28, end: 35 } }, + { text: 'IS NULL', rangeToReplace: { start: 35, end: 35 } }, + '!= $0', + '< $0', + '<= $0', + '== $0', + '> $0', + '>= $0', + 'IN $0', + ]); + testSuggestions('FROM a | WHERE doubleField IS N/', [ + { text: 'IS NOT NULL', rangeToReplace: { start: 28, end: 31 } }, + { text: 'IS NULL', rangeToReplace: { start: 28, end: 31 } }, + { text: '!= $0', rangeToReplace: { start: 31, end: 31 } }, + '< $0', + '<= $0', + '== $0', + '> $0', + '>= $0', + 'IN $0', + ]); + testSuggestions('FROM a | EVAL doubleField IS NOT N/', [ + { text: 'IS NOT NULL', rangeToReplace: { start: 27, end: 34 } }, + 'IS NULL', + '% $0', + '* $0', + '+ $0', + '- $0', + '/ $0', + '!= $0', + '< $0', + '<= $0', + '== $0', + '> $0', + '>= $0', + 'IN $0', + ]); + testSuggestions('FROM a | SORT doubleField IS NOT N/', [ + { text: 'IS NOT NULL', rangeToReplace: { start: 27, end: 34 } }, + 'IS NULL', + '% $0', + '* $0', + '+ $0', + '- $0', + '/ $0', + '!= $0', + '< $0', + '<= $0', + '== $0', + '> $0', + '>= $0', + 'IN $0', + ]); + describe('dot-separated field names', () => { + testSuggestions( + 'FROM a | KEEP field.nam/', + [{ text: 'field.name', rangeToReplace: { start: 15, end: 23 } }], + undefined, + [[{ name: 'field.name', type: 'double' }]] + ); + // multi-line + testSuggestions( + 'FROM a\n| KEEP field.nam/', + [{ text: 'field.name', rangeToReplace: { start: 15, end: 23 } }], + undefined, + [[{ name: 'field.name', type: 'double' }]] + ); + // triple separator + testSuggestions( + 'FROM a\n| KEEP field.name.f/', + [{ text: 'field.name.foo', rangeToReplace: { start: 15, end: 26 } }], + undefined, + [[{ name: 'field.name.foo', type: 'double' }]] + ); + // whitespace — we can't support this case yet because + // we are relying on string checking instead of the AST :( + testSuggestions.skip( + 'FROM a | KEEP field . n/', + [{ text: 'field . name', rangeToReplace: { start: 15, end: 23 } }], + undefined, + [[{ name: 'field.name', type: 'double' }]] + ); + }); + }); }); diff --git a/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts index 1ccc6d6e62bf5..650c2326fe007 100644 --- a/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/autocomplete.ts @@ -88,6 +88,7 @@ import { import { ESQLCallbacks } from '../shared/types'; import { getFunctionsToIgnoreForStats, + getOverlapRange, getParamAtPosition, getQueryForFields, getSourcesFromCommands, @@ -656,31 +657,52 @@ async function getExpressionSuggestionsByType( } // Suggest fields or variables if (argDef.type === 'column' || argDef.type === 'any') { - // ... | if ((!nodeArg || isNewExpression) && !endsWithNot) { - suggestions.push( - ...(await getFieldsOrFunctionsSuggestions( - argDef.innerTypes ?? ['any'], - command.name, - option?.name, - getFieldsByType, - { - // TODO instead of relying on canHaveAssignments and other command name checks - // we should have a more generic way to determine if a command can have functions. - // I think it comes down to the definition of 'column' since 'any' should always - // include functions. - functions: canHaveAssignments || command.name === 'sort', - fields: !argDef.constantOnly, - variables: anyVariables, - literals: argDef.constantOnly, - }, - { - ignoreFields: isNewExpression - ? command.args.filter(isColumnItem).map(({ name }) => name) - : [], - } - )) + const fieldSuggestions = await getFieldsOrFunctionsSuggestions( + argDef.innerTypes || ['any'], + command.name, + option?.name, + getFieldsByType, + { + // TODO instead of relying on canHaveAssignments and other command name checks + // we should have a more generic way to determine if a command can have functions. + // I think it comes down to the definition of 'column' since 'any' should always + // include functions. + functions: canHaveAssignments || command.name === 'sort', + fields: !argDef.constantOnly, + variables: anyVariables, + literals: argDef.constantOnly, + }, + { + ignoreFields: isNewExpression + ? command.args.filter(isColumnItem).map(({ name }) => name) + : [], + } ); + + /** + * @TODO — this string manipulation is crude and can't support all cases + * Checking for a partial word and computing the replacement range should + * really be done using the AST node, but we'll have to refactor further upstream + * to make that available. This is a quick fix to support the most common case. + */ + const words = innerText.split(/\s+/); + const lastWord = words[words.length - 1]; + if (lastWord !== '') { + // ... | + suggestions.push( + ...fieldSuggestions.map((suggestion) => ({ + ...suggestion, + rangeToReplace: { + start: innerText.length - lastWord.length + 1, + end: innerText.length, + }, + })) + ); + } else { + // ... | + suggestions.push(...fieldSuggestions); + } } } if (argDef.type === 'function' || argDef.type === 'any') { @@ -784,6 +806,7 @@ async function getExpressionSuggestionsByType( const nodeArgType = extractFinalTypeFromArg(nodeArg, references); suggestions.push( ...(await getBuiltinFunctionNextArgument( + innerText, command, option, argDef, @@ -859,7 +882,7 @@ async function getExpressionSuggestionsByType( // i.e. ... | field >= // i.e. ... | field > 0 // i.e. ... | field + otherN - + // "FROM a | WHERE doubleField IS NOT N" if (nodeArgType) { if (isFunctionItem(nodeArg)) { if (nodeArg.name === 'not') { @@ -879,6 +902,7 @@ async function getExpressionSuggestionsByType( } else { suggestions.push( ...(await getBuiltinFunctionNextArgument( + innerText, command, option, argDef, @@ -988,6 +1012,7 @@ async function getExpressionSuggestionsByType( } async function getBuiltinFunctionNextArgument( + queryText: string, command: ESQLCommand, option: ESQLCommandOption | undefined, argDef: { type: string }, @@ -1072,7 +1097,16 @@ async function getBuiltinFunctionNextArgument( } } } - return suggestions; + return suggestions.map((s) => { + const overlap = getOverlapRange(queryText, s.text); + return { + ...s, + rangeToReplace: { + start: overlap.start, + end: overlap.end, + }, + }; + }); } function pushItUpInTheList(suggestions: SuggestionRawDefinition[], shouldPromote: boolean) { @@ -1636,6 +1670,7 @@ async function getOptionArgsSuggestions( if (isFunctionItem(nodeArg) && !isFunctionArgComplete(nodeArg, references).complete) { suggestions.push( ...(await getBuiltinFunctionNextArgument( + innerText, command, option, { type: argDef?.type || 'any' }, diff --git a/packages/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts index 65f6601c51c13..7d4c8c9cc111e 100644 --- a/packages/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/helper.ts @@ -92,3 +92,42 @@ export function getSupportedTypesForBinaryOperators( .map(({ params }) => params[1].type) : [previousType]; } + +/** + * Checks the suggestion text for overlap with the current query. + * + * This is useful to determine the range of the existing query that should be + * replaced if the suggestion is accepted. + * + * For example + * QUERY: FROM source | WHERE field IS NO + * SUGGESTION: IS NOT NULL + * + * The overlap is "IS NO" and the range to replace is "IS NO" in the query. + * + * @param query + * @param suggestionText + * @returns + */ +export function getOverlapRange( + query: string, + suggestionText: string +): { start: number; end: number } { + let overlapLength = 0; + + // Convert both strings to lowercase for case-insensitive comparison + const lowerQuery = query.toLowerCase(); + const lowerSuggestionText = suggestionText.toLowerCase(); + + for (let i = 0; i <= lowerSuggestionText.length; i++) { + const substr = lowerSuggestionText.substring(0, i); + if (lowerQuery.endsWith(substr)) { + overlapLength = i; + } + } + + return { + start: Math.min(query.length - overlapLength + 1, query.length), + end: query.length, + }; +} diff --git a/packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts b/packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts index f431eb9a27145..e132d5edb6b8f 100644 --- a/packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts +++ b/packages/kbn-esql-validation-autocomplete/src/autocomplete/types.ts @@ -57,6 +57,13 @@ export interface SuggestionRawDefinition { title: string; id: string; }; + /** + * The range that should be replaced when the suggestion is applied + */ + rangeToReplace?: { + start: number; + end: number; + }; } export interface EditorContext { diff --git a/packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts b/packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts index eec90bcd75c6a..a548287683e5c 100644 --- a/packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts +++ b/packages/kbn-esql-validation-autocomplete/src/definitions/functions.ts @@ -3268,16 +3268,6 @@ const mvCountDefinition: FunctionDefinition = { ], returnType: 'integer', }, - { - params: [ - { - name: 'field', - type: 'date_nanos', - optional: false, - }, - ], - returnType: 'integer', - }, { params: [ { @@ -3581,16 +3571,6 @@ const mvFirstDefinition: FunctionDefinition = { ], returnType: 'cartesian_shape', }, - { - params: [ - { - name: 'field', - type: 'date_nanos', - optional: false, - }, - ], - returnType: 'date_nanos', - }, { params: [ { @@ -3748,16 +3728,6 @@ const mvLastDefinition: FunctionDefinition = { ], returnType: 'cartesian_shape', }, - { - params: [ - { - name: 'field', - type: 'date_nanos', - optional: false, - }, - ], - returnType: 'date_nanos', - }, { params: [ { @@ -3895,16 +3865,6 @@ const mvMaxDefinition: FunctionDefinition = { ], returnType: 'boolean', }, - { - params: [ - { - name: 'field', - type: 'date_nanos', - optional: false, - }, - ], - returnType: 'date_nanos', - }, { params: [ { @@ -4085,16 +4045,6 @@ const mvMinDefinition: FunctionDefinition = { ], returnType: 'boolean', }, - { - params: [ - { - name: 'field', - type: 'date_nanos', - optional: false, - }, - ], - returnType: 'date_nanos', - }, { params: [ { 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 index 91a4f120cf2dd..46bdf3c2a13d2 100644 --- 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 @@ -16333,21 +16333,6 @@ "error": [], "warning": [] }, - { - "query": "from a_index | where mv_count(dateNanosField) > 0", - "error": [], - "warning": [] - }, - { - "query": "from a_index | eval var = mv_count(dateNanosField)", - "error": [], - "warning": [] - }, - { - "query": "from a_index | eval mv_count(dateNanosField)", - "error": [], - "warning": [] - }, { "query": "row var = mv_dedupe(true)", "error": [], @@ -17311,16 +17296,6 @@ "error": [], "warning": [] }, - { - "query": "from a_index | eval var = mv_first(dateNanosField)", - "error": [], - "warning": [] - }, - { - "query": "from a_index | eval mv_first(dateNanosField)", - "error": [], - "warning": [] - }, { "query": "row var = mv_last(true)", "error": [], @@ -17810,16 +17785,6 @@ "error": [], "warning": [] }, - { - "query": "from a_index | eval var = mv_last(dateNanosField)", - "error": [], - "warning": [] - }, - { - "query": "from a_index | eval mv_last(dateNanosField)", - "error": [], - "warning": [] - }, { "query": "row var = mv_max(true)", "error": [], @@ -18140,16 +18105,6 @@ "error": [], "warning": [] }, - { - "query": "from a_index | eval var = mv_max(dateNanosField)", - "error": [], - "warning": [] - }, - { - "query": "from a_index | eval mv_max(dateNanosField)", - "error": [], - "warning": [] - }, { "query": "row var = mv_median(5.5)", "error": [], @@ -18620,16 +18575,6 @@ "error": [], "warning": [] }, - { - "query": "from a_index | eval var = mv_min(dateNanosField)", - "error": [], - "warning": [] - }, - { - "query": "from a_index | eval mv_min(dateNanosField)", - "error": [], - "warning": [] - }, { "query": "row var = mv_slice(true, 5, 5)", "error": [], diff --git a/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts b/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts index 15ca9cbfe6fbf..bd1de77be408a 100644 --- a/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts +++ b/packages/kbn-esql-validation-autocomplete/src/validation/validation.test.ts @@ -4473,9 +4473,6 @@ describe('validation logic', () => { testErrorsAndWarnings('row mv_count(to_geopoint("POINT (30 10)"))', []); testErrorsAndWarnings('row var = mv_count(to_geopoint(to_geopoint("POINT (30 10)")))', []); testErrorsAndWarnings('row var = mv_count(to_geoshape(to_geopoint("POINT (30 10)")))', []); - testErrorsAndWarnings('from a_index | where mv_count(dateNanosField) > 0', []); - testErrorsAndWarnings('from a_index | eval var = mv_count(dateNanosField)', []); - testErrorsAndWarnings('from a_index | eval mv_count(dateNanosField)', []); }); describe('mv_dedupe', () => { @@ -4779,8 +4776,6 @@ describe('validation logic', () => { testErrorsAndWarnings('row mv_first(to_geopoint("POINT (30 10)"))', []); testErrorsAndWarnings('row var = mv_first(to_geopoint(to_geopoint("POINT (30 10)")))', []); testErrorsAndWarnings('row var = mv_first(to_geoshape(to_geopoint("POINT (30 10)")))', []); - testErrorsAndWarnings('from a_index | eval var = mv_first(dateNanosField)', []); - testErrorsAndWarnings('from a_index | eval mv_first(dateNanosField)', []); }); describe('mv_last', () => { @@ -4931,8 +4926,6 @@ describe('validation logic', () => { testErrorsAndWarnings('row mv_last(to_geopoint("POINT (30 10)"))', []); testErrorsAndWarnings('row var = mv_last(to_geopoint(to_geopoint("POINT (30 10)")))', []); testErrorsAndWarnings('row var = mv_last(to_geoshape(to_geopoint("POINT (30 10)")))', []); - testErrorsAndWarnings('from a_index | eval var = mv_last(dateNanosField)', []); - testErrorsAndWarnings('from a_index | eval mv_last(dateNanosField)', []); }); describe('mv_max', () => { @@ -5020,8 +5013,6 @@ describe('validation logic', () => { testErrorsAndWarnings('row nullVar = null | eval mv_max(nullVar)', []); testErrorsAndWarnings('from a_index | eval mv_max("2022")', []); testErrorsAndWarnings('from a_index | eval mv_max(concat("20", "22"))', []); - testErrorsAndWarnings('from a_index | eval var = mv_max(dateNanosField)', []); - testErrorsAndWarnings('from a_index | eval mv_max(dateNanosField)', []); }); describe('mv_median', () => { @@ -5159,8 +5150,6 @@ describe('validation logic', () => { testErrorsAndWarnings('row nullVar = null | eval mv_min(nullVar)', []); testErrorsAndWarnings('from a_index | eval mv_min("2022")', []); testErrorsAndWarnings('from a_index | eval mv_min(concat("20", "22"))', []); - testErrorsAndWarnings('from a_index | eval var = mv_min(dateNanosField)', []); - testErrorsAndWarnings('from a_index | eval mv_min(dateNanosField)', []); }); describe('mv_slice', () => { diff --git a/packages/kbn-investigation-shared/index.ts b/packages/kbn-investigation-shared/index.ts index 723a97d762b02..c5f92248adb6b 100644 --- a/packages/kbn-investigation-shared/index.ts +++ b/packages/kbn-investigation-shared/index.ts @@ -13,6 +13,8 @@ export type * from './src/schema/find'; export type * from './src/schema/get'; export type * from './src/schema/get_notes'; export type * from './src/schema/origin'; +export type * from './src/schema/delete_note'; +export type * from './src/schema/investigation_note'; export * from './src/schema/create'; export * from './src/schema/create_notes'; @@ -21,3 +23,5 @@ export * from './src/schema/find'; export * from './src/schema/get'; export * from './src/schema/get_notes'; export * from './src/schema/origin'; +export * from './src/schema/delete_note'; +export * from './src/schema/investigation_note'; diff --git a/packages/kbn-investigation-shared/src/schema/delete_note.ts b/packages/kbn-investigation-shared/src/schema/delete_note.ts new file mode 100644 index 0000000000000..9af910b277756 --- /dev/null +++ b/packages/kbn-investigation-shared/src/schema/delete_note.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import * as t from 'io-ts'; + +const deleteInvestigationNoteParamsSchema = t.type({ + path: t.type({ + id: t.string, + noteId: t.string, + }), +}); + +type DeleteInvestigationNoteParams = t.TypeOf< + typeof deleteInvestigationNoteParamsSchema.props.path +>; // Parsed payload used by the backend + +export { deleteInvestigationNoteParamsSchema }; +export type { DeleteInvestigationNoteParams }; diff --git a/packages/kbn-monaco/src/console/parser.js b/packages/kbn-monaco/src/console/parser.js index e7369444ab85a..881370f5b9fac 100644 --- a/packages/kbn-monaco/src/console/parser.js +++ b/packages/kbn-monaco/src/console/parser.js @@ -37,24 +37,7 @@ export const createParser = () => { requestStartOffset = at - 1; requests.push({ startOffset: requestStartOffset }); }, - addRequestMethod = function(method) { - const lastRequest = getLastRequest(); - lastRequest.method = method; - requests.push(lastRequest); - requestEndOffset = at - 1; - }, - addRequestUrl = function(url) { - const lastRequest = getLastRequest(); - lastRequest.url = url; - requests.push(lastRequest); - requestEndOffset = at - 1; - }, - addRequestData = function(data) { - const lastRequest = getLastRequest(); - const dataArray = lastRequest.data || []; - dataArray.push(data); - lastRequest.data = dataArray; - requests.push(lastRequest); + updateRequestEnd = function () { requestEndOffset = at - 1; }, addRequestEnd = function() { @@ -409,17 +392,17 @@ export const createParser = () => { request = function () { white(); addRequestStart(); - const parsedMethod = method(); - addRequestMethod(parsedMethod); + method(); + updateRequestEnd(); strictWhite(); - const parsedUrl = url(); - addRequestUrl(parsedUrl); + url(); + updateRequestEnd(); strictWhite(); // advance to one new line newLine(); strictWhite(); if (ch == '{') { - const parsedObject = object(); - addRequestData(parsedObject); + object(); + updateRequestEnd(); } // multi doc request strictWhite(); // advance to one new line @@ -427,8 +410,8 @@ export const createParser = () => { strictWhite(); while (ch == '{') { // another object - const parsedObject = object(); - addRequestData(parsedObject); + object(); + updateRequestEnd(); strictWhite(); newLine(); strictWhite(); diff --git a/packages/kbn-monaco/src/console/parser.test.ts b/packages/kbn-monaco/src/console/parser.test.ts index 417fdd12e2c18..1529d907317cf 100644 --- a/packages/kbn-monaco/src/console/parser.test.ts +++ b/packages/kbn-monaco/src/console/parser.test.ts @@ -25,9 +25,7 @@ describe('console parser', () => { const { requests, errors } = parser(input) as ConsoleParserResult; expect(requests.length).toBe(1); expect(errors.length).toBe(0); - const { method, url, startOffset, endOffset } = requests[0]; - expect(method).toBe('GET'); - expect(url).toBe('_search'); + const { startOffset, endOffset } = requests[0]; // the start offset of the request is the beginning of the string expect(startOffset).toBe(0); // the end offset of the request is the end of the string @@ -38,6 +36,10 @@ describe('console parser', () => { const input = 'GET _search\nPOST _test_index'; const { requests } = parser(input) as ConsoleParserResult; expect(requests.length).toBe(2); + expect(requests[0].startOffset).toBe(0); + expect(requests[0].endOffset).toBe(11); + expect(requests[1].startOffset).toBe(12); + expect(requests[1].endOffset).toBe(28); }); it('parses a request with a request body', () => { @@ -45,15 +47,8 @@ describe('console parser', () => { 'GET _search\n' + '{\n' + ' "query": {\n' + ' "match_all": {}\n' + ' }\n' + '}'; const { requests } = parser(input) as ConsoleParserResult; expect(requests.length).toBe(1); - const { method, url, data } = requests[0]; - expect(method).toBe('GET'); - expect(url).toBe('_search'); - expect(data).toEqual([ - { - query: { - match_all: {}, - }, - }, - ]); + const { startOffset, endOffset } = requests[0]; + expect(startOffset).toBe(0); + expect(endOffset).toBe(52); }); }); diff --git a/packages/kbn-monaco/src/console/types.ts b/packages/kbn-monaco/src/console/types.ts index 346bd0e6beeeb..4ad7d28ac778b 100644 --- a/packages/kbn-monaco/src/console/types.ts +++ b/packages/kbn-monaco/src/console/types.ts @@ -14,9 +14,6 @@ export interface ErrorAnnotation { export interface ParsedRequest { startOffset: number; endOffset?: number; - method: string; - url?: string; - data?: Array>; } export interface ConsoleParserResult { errors: ErrorAnnotation[]; diff --git a/packages/kbn-monaco/src/esql/language.ts b/packages/kbn-monaco/src/esql/language.ts index 7c49da41a996e..4c629f6b060bb 100644 --- a/packages/kbn-monaco/src/esql/language.ts +++ b/packages/kbn-monaco/src/esql/language.ts @@ -102,7 +102,8 @@ export const ESQLLang: CustomLangModuleType = { ); const suggestionEntries = await astAdapter.autocomplete(model, position, context); return { - suggestions: wrapAsMonacoSuggestions(suggestionEntries.suggestions), + // @ts-expect-error because of range typing: https://github.com/microsoft/monaco-editor/issues/4638 + suggestions: wrapAsMonacoSuggestions(suggestionEntries), }; }, }; diff --git a/packages/kbn-monaco/src/esql/lib/converters/suggestions.ts b/packages/kbn-monaco/src/esql/lib/converters/suggestions.ts index 0d02a19dda070..d26169d59647b 100644 --- a/packages/kbn-monaco/src/esql/lib/converters/suggestions.ts +++ b/packages/kbn-monaco/src/esql/lib/converters/suggestions.ts @@ -6,29 +6,34 @@ * Side Public License, v 1. */ -import type { SuggestionRawDefinition } from '@kbn/esql-validation-autocomplete'; import { monaco } from '../../../monaco_imports'; -import { MonacoAutocompleteCommandDefinition } from '../types'; +import { + MonacoAutocompleteCommandDefinition, + SuggestionRawDefinitionWithMonacoRange, +} from '../types'; export function wrapAsMonacoSuggestions( - suggestions: SuggestionRawDefinition[] + suggestions: SuggestionRawDefinitionWithMonacoRange[] ): 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, - }) + return suggestions.map( + ({ label, text, asSnippet, kind, detail, documentation, sortText, command, range }) => { + const monacoSuggestion: MonacoAutocompleteCommandDefinition = { + 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, + }; + return monacoSuggestion; + } ); } diff --git a/packages/kbn-monaco/src/esql/lib/esql_ast_provider.ts b/packages/kbn-monaco/src/esql/lib/esql_ast_provider.ts index 8aa2e16979c5b..95f31764d7a78 100644 --- a/packages/kbn-monaco/src/esql/lib/esql_ast_provider.ts +++ b/packages/kbn-monaco/src/esql/lib/esql_ast_provider.ts @@ -16,8 +16,9 @@ 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 { monacoPositionToOffset, offsetRangeToMonacoRange } from './shared/utils'; import { getSignatureHelp } from './signature'; +import { SuggestionRawDefinitionWithMonacoRange } from './types'; export class ESQLAstAdapter { constructor( @@ -66,17 +67,17 @@ export class ESQLAstAdapter { model: monaco.editor.ITextModel, position: monaco.Position, context: monaco.languages.CompletionContext - ) { + ): Promise { const getAstFn = await this.getAstWorker(model); 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, - range: undefined as unknown as monaco.IRange, - })), - }; + const suggestions = await suggest(fullText, offset, context, getAstFn, this.callbacks); + for (const s of suggestions) { + (s as SuggestionRawDefinitionWithMonacoRange).range = s.rangeToReplace + ? offsetRangeToMonacoRange(fullText, s.rangeToReplace) + : undefined; + } + return suggestions; } async codeAction( diff --git a/packages/kbn-monaco/src/esql/lib/shared/utils.ts b/packages/kbn-monaco/src/esql/lib/shared/utils.ts index 9f2d6d4f22545..e09362cb5c83f 100644 --- a/packages/kbn-monaco/src/esql/lib/shared/utils.ts +++ b/packages/kbn-monaco/src/esql/lib/shared/utils.ts @@ -11,11 +11,68 @@ 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 - ); + let offset = 0; + + for (let i = 0; i < position.lineNumber - 1; i++) { + offset += lines[i].length + 1; // +1 for the newline character + } + + offset += position.column - 1; + + return offset; } + +/** + * Given an offset range, returns a monaco IRange object. + * @param expression + * @param range + * @returns + */ +export const offsetRangeToMonacoRange = ( + expression: string, + range: { start: number; end: number } +): { + startColumn: number; + endColumn: number; + startLineNumber: number; + endLineNumber: number; +} => { + let startColumn = 0; + let endColumn = 0; + let currentOffset = 0; + + let startLineNumber = 1; + let endLineNumber = 1; + let currentLine = 1; + + for (let i = 0; i < expression.length; i++) { + if (expression[i] === '\n') { + currentLine++; + currentOffset = i + 1; + } + + if (i === range.start) { + startLineNumber = currentLine; + startColumn = i - currentOffset; + } + + if (i === range.end) { + endLineNumber = currentLine; + endColumn = i - currentOffset; + break; // No need to continue once we find the end position + } + } + + // Handle the case where the end offset is at the end of the string + if (range.end === expression.length) { + endLineNumber = currentLine; + endColumn = expression.length - currentOffset; + } + + return { + startColumn, + endColumn, + startLineNumber, + endLineNumber, + }; +}; diff --git a/packages/kbn-monaco/src/esql/lib/types.ts b/packages/kbn-monaco/src/esql/lib/types.ts index 6bd51a1690067..ebe7459fef983 100644 --- a/packages/kbn-monaco/src/esql/lib/types.ts +++ b/packages/kbn-monaco/src/esql/lib/types.ts @@ -6,6 +6,7 @@ * Side Public License, v 1. */ +import { SuggestionRawDefinition } from '@kbn/esql-validation-autocomplete'; import { monaco } from '../../monaco_imports'; export type MonacoAutocompleteCommandDefinition = Pick< @@ -18,7 +19,13 @@ export type MonacoAutocompleteCommandDefinition = Pick< | 'sortText' | 'insertTextRules' | 'command' - | 'range' ->; +> & { range?: monaco.IRange }; export type MonacoCodeAction = monaco.languages.CodeAction; + +export type SuggestionRawDefinitionWithMonacoRange = Omit< + SuggestionRawDefinition, + 'rangeToReplace' +> & { + range?: monaco.IRange; +}; diff --git a/packages/kbn-unified-data-table/README.md b/packages/kbn-unified-data-table/README.md index 7a2db17781ad1..0049949f74490 100644 --- a/packages/kbn-unified-data-table/README.md +++ b/packages/kbn-unified-data-table/README.md @@ -50,7 +50,8 @@ Props description: | **visibleCellActions** | (optional)number | An optional value for a custom number of the visible cell actions in the table. By default is up to 3. | | **externalCustomRenderers** | (optional)Record React.ReactNode>; | An optional settings for a specified fields rendering like links. Applied only for the listed fields rendering. | | **consumer** | (optional)string | Name of the UnifiedDataTable consumer component or application. | -| **componentsTourSteps** | (optional)Record | Optional key/value pairs to set guided onboarding steps ids for a data table components included to guided tour. | +| **componentsTourSteps** | (optional)Record | Optional key/value pairs to set guided onboarding steps ids for a data table components included to guided tour. |~~~~ +| **onUpdateDataGridDensity** | (optional)(DataGridDensity) => void; | Optional callback when the data grid density configuration is modified. | *Required **services** list: ``` diff --git a/packages/kbn-unified-data-table/index.ts b/packages/kbn-unified-data-table/index.ts index 7dace83c3774e..9c62ef1a28abe 100644 --- a/packages/kbn-unified-data-table/index.ts +++ b/packages/kbn-unified-data-table/index.ts @@ -14,7 +14,7 @@ export { } from './src/components/row_height_settings'; export { getDisplayedColumns } from './src/utils/columns'; export { getTextBasedColumnsMeta } from './src/utils/get_columns_meta'; -export { ROWS_HEIGHT_OPTIONS } from './src/constants'; +export { ROWS_HEIGHT_OPTIONS, DataGridDensity } from './src/constants'; export { JSONCodeEditorCommonMemoized } from './src/components/json_code_editor/json_code_editor_common'; diff --git a/packages/kbn-unified-data-table/src/components/compare_documents/compare_documents.test.tsx b/packages/kbn-unified-data-table/src/components/compare_documents/compare_documents.test.tsx index 63856a2c82ac2..92f072c2da472 100644 --- a/packages/kbn-unified-data-table/src/components/compare_documents/compare_documents.test.tsx +++ b/packages/kbn-unified-data-table/src/components/compare_documents/compare_documents.test.tsx @@ -108,7 +108,7 @@ describe('CompareDocuments', () => { "data-test-subj": "unifiedDataTableCompareDocuments", "gridStyle": Object { "border": "horizontal", - "cellPadding": "l", + "cellPadding": "s", "fontSize": "s", "header": "underline", "rowHover": "highlight", diff --git a/packages/kbn-unified-data-table/src/components/compare_documents/compare_documents.tsx b/packages/kbn-unified-data-table/src/components/compare_documents/compare_documents.tsx index 5679ac0f236b9..e636a88d1f841 100644 --- a/packages/kbn-unified-data-table/src/components/compare_documents/compare_documents.tsx +++ b/packages/kbn-unified-data-table/src/components/compare_documents/compare_documents.tsx @@ -24,7 +24,7 @@ import { AdditionalFieldGroups } from '@kbn/unified-field-list'; import { memoize } from 'lodash'; import React, { useMemo, useState } from 'react'; import useLocalStorage from 'react-use/lib/useLocalStorage'; -import { GRID_STYLE } from '../../constants'; +import { DATA_GRID_STYLE_DEFAULT } from '../../constants'; import { ComparisonControls } from './comparison_controls'; import { renderComparisonToolbar } from './comparison_toolbar'; import { useComparisonCellValue } from './hooks/use_comparison_cell_value'; @@ -55,7 +55,7 @@ export interface CompareDocumentsProps { const COMPARISON_ROW_HEIGHT: EuiDataGridRowHeightsOptions = { defaultHeight: 'auto' }; const COMPARISON_IN_MEMORY: EuiDataGridInMemory = { level: 'sorting' }; -const COMPARISON_GRID_STYLE: EuiDataGridStyle = { ...GRID_STYLE, stripes: undefined }; +const COMPARISON_GRID_STYLE: EuiDataGridStyle = { ...DATA_GRID_STYLE_DEFAULT, stripes: undefined }; const getStorageKey = (consumer: string, key: string) => `${consumer}:dataGridComparison${key}`; diff --git a/packages/kbn-unified-data-table/src/components/data_table.test.tsx b/packages/kbn-unified-data-table/src/components/data_table.test.tsx index f5749eaee4bf0..2538d3df38778 100644 --- a/packages/kbn-unified-data-table/src/components/data_table.test.tsx +++ b/packages/kbn-unified-data-table/src/components/data_table.test.tsx @@ -423,16 +423,18 @@ describe('UnifiedDataTable', () => { "additionalControls": null, "showColumnSelector": false, "showDisplaySelector": Object { - "additionalDisplaySettings": , + "additionalDisplaySettings": + + , "allowDensity": false, "allowResetButton": false, "allowRowHeight": false, @@ -455,15 +457,17 @@ describe('UnifiedDataTable', () => { "additionalControls": null, "showColumnSelector": false, "showDisplaySelector": Object { - "additionalDisplaySettings": , + "additionalDisplaySettings": + + , "allowDensity": false, "allowResetButton": false, "allowRowHeight": false, @@ -741,7 +745,7 @@ describe('UnifiedDataTable', () => { expect(grid.hasClass('euiDataGrid--bordersHorizontal')).toBeTruthy(); expect(grid.hasClass('euiDataGrid--fontSizeSmall')).toBeTruthy(); - expect(grid.hasClass('euiDataGrid--paddingLarge')).toBeTruthy(); + expect(grid.hasClass('euiDataGrid--paddingSmall')).toBeTruthy(); expect(grid.hasClass('euiDataGrid--rowHoverHighlight')).toBeTruthy(); expect(grid.hasClass('euiDataGrid--headerUnderline')).toBeTruthy(); expect(grid.hasClass('euiDataGrid--stripes')).toBeTruthy(); diff --git a/packages/kbn-unified-data-table/src/components/data_table.tsx b/packages/kbn-unified-data-table/src/components/data_table.tsx index 5068115fed76d..778c41c6f5365 100644 --- a/packages/kbn-unified-data-table/src/components/data_table.tsx +++ b/packages/kbn-unified-data-table/src/components/data_table.tsx @@ -26,9 +26,10 @@ import { EuiDataGridInMemory, EuiDataGridControlColumn, EuiDataGridCustomBodyProps, - EuiDataGridToolBarVisibilityDisplaySelectorOptions, EuiDataGridStyle, EuiDataGridProps, + EuiHorizontalRule, + EuiDataGridToolBarVisibilityDisplaySelectorOptions, } from '@elastic/eui'; import type { DataView } from '@kbn/data-views-plugin/public'; import { @@ -45,6 +46,7 @@ import type { ThemeServiceStart } from '@kbn/react-kibana-context-common'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import type { DocViewFilterFn } from '@kbn/unified-doc-viewer/types'; import { AdditionalFieldGroups } from '@kbn/unified-field-list'; +import { DATA_GRID_DENSITY_STYLE_MAP, useDataGridDensity } from '../hooks/use_data_grid_density'; import { UnifiedDataTableSettings, ValueToStringConverter, @@ -70,10 +72,11 @@ import { getSchemaDetectors } from './data_table_schema'; import { DataTableDocumentToolbarBtn } from './data_table_document_selection'; import { useRowHeightsOptions } from '../hooks/use_row_heights_options'; import { + DATA_GRID_STYLE_DEFAULT, DEFAULT_ROWS_PER_PAGE, - GRID_STYLE, ROWS_HEIGHT_OPTIONS, toolbarVisibility as toolbarVisibilityDefaults, + DataGridDensity, } from '../constants'; import { UnifiedDataTableFooter } from './data_table_footer'; import { UnifiedDataTableAdditionalDisplaySettings } from './data_table_additional_display_settings'; @@ -232,6 +235,14 @@ export interface UnifiedDataTableProps { * Update row height state */ onUpdateRowHeight?: (rowHeight: number) => void; + /** + * Density from state + */ + dataGridDensityState?: DataGridDensity; + /** + * Callback when the data grid density configuration is modified + */ + onUpdateDataGridDensity?: (dataGridDensity: DataGridDensity) => void; /** * Is text base lang mode enabled */ @@ -468,6 +479,8 @@ export const UnifiedDataTable = ({ cellContext, renderCellPopover, getRowIndicator, + dataGridDensityState, + onUpdateDataGridDensity, }: UnifiedDataTableProps) => { const { fieldFormats, toastNotifications, dataViewFieldEditor, uiSettings, storage, data } = services; @@ -610,6 +623,23 @@ export const UnifiedDataTable = ({ return getShouldShowFieldHandler(dataViewFields, dataView, showMultiFields); }, [dataView, showMultiFields]); + const { dataGridDensity, onChangeDataGridDensity } = useDataGridDensity({ + storage, + consumer, + dataGridDensityState, + onUpdateDataGridDensity, + }); + + const gridStyle = useMemo( + () => ({ + ...DATA_GRID_STYLE_DEFAULT, + ...DATA_GRID_DENSITY_STYLE_MAP[dataGridDensity], + onChange: onChangeDataGridDensity, + ...gridStyleOverride, + }), + [dataGridDensity, onChangeDataGridDensity, gridStyleOverride] + ); + /** * Cell rendering */ @@ -625,6 +655,7 @@ export const UnifiedDataTable = ({ maxEntries: maxDocFieldsDisplayed, externalCustomRenderers, isPlainRecord, + isCompressed: dataGridDensity === DataGridDensity.COMPACT, }), [ dataView, @@ -635,6 +666,7 @@ export const UnifiedDataTable = ({ fieldFormats, externalCustomRenderers, isPlainRecord, + dataGridDensity, ] ); @@ -950,34 +982,41 @@ export const UnifiedDataTable = ({ [renderCustomToolbar, additionalControls] ); - const showDisplaySelector = useMemo(() => { - const options: EuiDataGridToolBarVisibilityDisplaySelectorOptions = {}; - - if (onUpdateRowHeight) { - options.allowDensity = false; - } - - if (onUpdateRowHeight || onUpdateHeaderRowHeight || onUpdateSampleSize) { - options.allowRowHeight = false; - options.allowResetButton = false; - options.additionalDisplaySettings = ( - - ); + const showDisplaySelector = useMemo((): + | EuiDataGridToolBarVisibilityDisplaySelectorOptions + | undefined => { + if ( + !onUpdateDataGridDensity && + !onUpdateRowHeight && + !onUpdateHeaderRowHeight && + !onUpdateSampleSize + ) { + return; } - return Object.keys(options).length ? options : undefined; + return { + allowDensity: Boolean(onUpdateDataGridDensity), + allowRowHeight: false, + allowResetButton: false, + additionalDisplaySettings: ( + <> + {onUpdateDataGridDensity ? : null} + + + ), + }; }, [ headerRowHeight, headerRowHeightLines, @@ -992,6 +1031,7 @@ export const UnifiedDataTable = ({ rowHeight, rowHeightLines, sampleSizeState, + onUpdateDataGridDensity, ]); const inMemory = useMemo(() => { @@ -1101,6 +1141,8 @@ export const UnifiedDataTable = ({ /> ) : ( diff --git a/packages/kbn-unified-data-table/src/constants.ts b/packages/kbn-unified-data-table/src/constants.ts index c7cf1793039a5..e795b170dbc0b 100644 --- a/packages/kbn-unified-data-table/src/constants.ts +++ b/packages/kbn-unified-data-table/src/constants.ts @@ -5,13 +5,12 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { EuiDataGridStyle } from '@elastic/eui'; +import type { EuiDataGridStyle } from '@elastic/eui'; export const DEFAULT_CONTROL_COLUMN_WIDTH = 24; export const DEFAULT_ROWS_PER_PAGE = 100; export const MAX_LOADED_GRID_ROWS = 10000; - export const ROWS_PER_PAGE_OPTIONS = [10, 25, 50, DEFAULT_ROWS_PER_PAGE, 250, 500]; /** * Row height might be a value from -1 to 20 @@ -29,13 +28,27 @@ export const defaultMonacoEditorWidth = 370; export const defaultTimeColumnWidth = 212; export const kibanaJSON = 'kibana-json'; -export const GRID_STYLE: EuiDataGridStyle = { - border: 'horizontal', +export const DATA_GRID_STYLE_COMPACT: EuiDataGridStyle = { + cellPadding: 's', fontSize: 's', +}; + +export const DATA_GRID_STYLE_NORMAL: EuiDataGridStyle = { + cellPadding: 'm', + fontSize: 'm', +}; + +export const DATA_GRID_STYLE_EXPANDED: EuiDataGridStyle = { cellPadding: 'l', + fontSize: 'l', +}; + +export const DATA_GRID_STYLE_DEFAULT: EuiDataGridStyle = { + ...DATA_GRID_STYLE_COMPACT, + border: 'horizontal', + stripes: true, rowHover: 'highlight', header: 'underline', - stripes: true, }; export const toolbarVisibility = { @@ -44,3 +57,9 @@ export const toolbarVisibility = { allowReorder: true, }, }; + +export enum DataGridDensity { + COMPACT = 'compact', + NORMAL = 'normal', + EXPANDED = 'expanded', +} diff --git a/packages/kbn-unified-data-table/src/hooks/use_data_grid_density.test.tsx b/packages/kbn-unified-data-table/src/hooks/use_data_grid_density.test.tsx new file mode 100644 index 0000000000000..8a6e3c96477ea --- /dev/null +++ b/packages/kbn-unified-data-table/src/hooks/use_data_grid_density.test.tsx @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not 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 { Storage } from '@kbn/kibana-utils-plugin/public'; +import { renderHook } from '@testing-library/react-hooks'; +import { useDataGridDensity } from './use_data_grid_density'; +import { DATA_GRID_STYLE_EXPANDED, DataGridDensity } from '../constants'; + +const localStorageMock = { + get: jest.fn(), + set: jest.fn(), +}; + +describe('useDataGridDensity', () => { + beforeEach(() => { + localStorageMock.get.mockClear(); + localStorageMock.set.mockClear(); + }); + + it('should read from local storage', () => { + localStorageMock.get.mockReturnValue(DataGridDensity.NORMAL); + const { result } = renderHook(() => + useDataGridDensity({ + storage: localStorageMock as unknown as Storage, + consumer: 'discover', + }) + ); + const { + current: { dataGridDensity }, + } = result; + expect(dataGridDensity).toBe(DataGridDensity.NORMAL); + }); + + it('should update local storage when onChangeDataGridDensity is called', () => { + const { result } = renderHook(() => + useDataGridDensity({ + storage: localStorageMock as unknown as Storage, + consumer: 'discover', + }) + ); + const { + current: { onChangeDataGridDensity }, + } = result; + + onChangeDataGridDensity(DATA_GRID_STYLE_EXPANDED); + + expect(localStorageMock.set).toBeCalledWith( + 'discover:dataGridDensity', + DataGridDensity.EXPANDED + ); + }); + + it('should call provided onUpdateDataGridDensity with the updated value', () => { + const onUpdateDataGridDensity = jest.fn(); + const { result } = renderHook(() => + useDataGridDensity({ + storage: localStorageMock as unknown as Storage, + consumer: 'discover', + onUpdateDataGridDensity, + }) + ); + const { + current: { onChangeDataGridDensity }, + } = result; + + onChangeDataGridDensity(DATA_GRID_STYLE_EXPANDED); + + expect(onUpdateDataGridDensity).toBeCalledWith(DataGridDensity.EXPANDED); + }); +}); diff --git a/packages/kbn-unified-data-table/src/hooks/use_data_grid_density.ts b/packages/kbn-unified-data-table/src/hooks/use_data_grid_density.ts new file mode 100644 index 0000000000000..a53f95e23fb85 --- /dev/null +++ b/packages/kbn-unified-data-table/src/hooks/use_data_grid_density.ts @@ -0,0 +1,68 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import type { EuiDataGridStyle } from '@elastic/eui'; +import type { Storage } from '@kbn/kibana-utils-plugin/public'; +import { useCallback, useMemo } from 'react'; +import { + DATA_GRID_STYLE_COMPACT, + DATA_GRID_STYLE_EXPANDED, + DATA_GRID_STYLE_NORMAL, + DataGridDensity, +} from '../constants'; + +export const DATA_GRID_DENSITY_STYLE_MAP = { + [DataGridDensity.COMPACT]: DATA_GRID_STYLE_COMPACT, + [DataGridDensity.NORMAL]: DATA_GRID_STYLE_NORMAL, + [DataGridDensity.EXPANDED]: DATA_GRID_STYLE_EXPANDED, +}; + +interface UseDataGridDensityProps { + storage: Storage; + consumer: string; + dataGridDensityState?: DataGridDensity; + onUpdateDataGridDensity?: (density: DataGridDensity) => void; +} + +export const DATA_GRID_DENSITY_STORAGE_KEY = 'dataGridDensity'; + +export function getDensityFromStyle(style: EuiDataGridStyle) { + return style.cellPadding === DATA_GRID_STYLE_COMPACT.cellPadding && + style.fontSize === DATA_GRID_STYLE_COMPACT.fontSize + ? DataGridDensity.COMPACT + : style.cellPadding === DATA_GRID_STYLE_NORMAL.cellPadding && + style.fontSize === DATA_GRID_STYLE_NORMAL.fontSize + ? DataGridDensity.NORMAL + : DataGridDensity.EXPANDED; +} + +export const useDataGridDensity = ({ + storage, + consumer, + dataGridDensityState, + onUpdateDataGridDensity, +}: UseDataGridDensityProps) => { + const storageKey = `${consumer}:${DATA_GRID_DENSITY_STORAGE_KEY}`; + const dataGridDensity = useMemo(() => { + return dataGridDensityState ?? storage.get(storageKey) ?? DataGridDensity.COMPACT; + }, [dataGridDensityState, storage, storageKey]); + + const onChangeDataGridDensity = useCallback( + (gridStyle: EuiDataGridStyle) => { + const newDensity = getDensityFromStyle(gridStyle); + storage.set(storageKey, newDensity); + onUpdateDataGridDensity?.(newDensity); + }, + [storageKey, storage, onUpdateDataGridDensity] + ); + + return { + dataGridDensity, + onChangeDataGridDensity, + }; +}; diff --git a/packages/kbn-unified-data-table/src/types.ts b/packages/kbn-unified-data-table/src/types.ts index b08818e1a861a..f06c4c4096c0c 100644 --- a/packages/kbn-unified-data-table/src/types.ts +++ b/packages/kbn-unified-data-table/src/types.ts @@ -19,6 +19,8 @@ import type { FieldFormatsStart } from '@kbn/field-formats-plugin/public'; import type { EuiDataGridControlColumn } from '@elastic/eui/src/components/datagrid/data_grid_types'; import type { DatatableColumnMeta } from '@kbn/expressions-plugin/common'; +export type { DataGridDensity } from './constants'; + /** * User configurable state of data grid, persisted in saved search */ @@ -58,6 +60,7 @@ export type DataGridCellValueElementProps = EuiDataGridCellValueElementProps & { dataView: DataView; fieldFormats: FieldFormatsStart; closePopover: () => void; + isCompressed?: boolean; }; export type CustomCellRenderer = Record< diff --git a/packages/kbn-unified-data-table/src/utils/get_render_cell_value.test.tsx b/packages/kbn-unified-data-table/src/utils/get_render_cell_value.test.tsx index 04d160bef5c2e..5d9894e9bcd2c 100644 --- a/packages/kbn-unified-data-table/src/utils/get_render_cell_value.test.tsx +++ b/packages/kbn-unified-data-table/src/utils/get_render_cell_value.test.tsx @@ -224,6 +224,7 @@ describe('Unified data table cell rendering', function () { maxEntries: 100, shouldShowFieldHandler: showFieldHandler, row: rows[0], + isCompressed: true, }); }); @@ -329,6 +330,7 @@ describe('Unified data table cell rendering', function () { shouldShowFieldHandler: showFieldHandler, row: rows[0], isPlainRecord: true, + isCompressed: true, }); }); @@ -367,6 +369,7 @@ describe('Unified data table cell rendering', function () { maxEntries: 100, shouldShowFieldHandler: showFieldHandler, row: rows[0], + isCompressed: true, }); }); @@ -406,6 +409,7 @@ describe('Unified data table cell rendering', function () { maxEntries: 1, shouldShowFieldHandler: showFieldHandler, row: rows[0], + isCompressed: true, }); }); @@ -519,6 +523,7 @@ describe('Unified data table cell rendering', function () { shouldShowFieldHandler: showFieldHandler, useTopLevelObjectColumns: true, row: rows[0], + isCompressed: true, }); }); @@ -559,6 +564,7 @@ describe('Unified data table cell rendering', function () { shouldShowFieldHandler: showFieldHandler, useTopLevelObjectColumns: true, row: rows[0], + isCompressed: true, }); }); diff --git a/packages/kbn-unified-data-table/src/utils/get_render_cell_value.tsx b/packages/kbn-unified-data-table/src/utils/get_render_cell_value.tsx index 6a10b0950946d..1b856d665d301 100644 --- a/packages/kbn-unified-data-table/src/utils/get_render_cell_value.tsx +++ b/packages/kbn-unified-data-table/src/utils/get_render_cell_value.tsx @@ -36,6 +36,7 @@ export const getRenderCellValueFn = ({ maxEntries, externalCustomRenderers, isPlainRecord, + isCompressed = true, }: { dataView: DataView; rows: DataTableRecord[] | undefined; @@ -46,6 +47,7 @@ export const getRenderCellValueFn = ({ maxEntries: number; externalCustomRenderers?: CustomCellRenderer; isPlainRecord?: boolean; + isCompressed?: boolean; }) => { return function UnifiedDataTableRenderCellValue({ rowIndex, @@ -95,6 +97,7 @@ export const getRenderCellValueFn = ({ dataView={dataView} fieldFormats={fieldFormats} closePopover={closePopover} + isCompressed={isCompressed} /> ); @@ -134,6 +137,7 @@ export const getRenderCellValueFn = ({ shouldShowFieldHandler={shouldShowFieldHandler} maxEntries={maxEntries} isPlainRecord={isPlainRecord} + isCompressed={isCompressed} /> ); } diff --git a/packages/kbn-unified-doc-viewer/src/components/field_name/field_name.tsx b/packages/kbn-unified-doc-viewer/src/components/field_name/field_name.tsx index d7f380195947a..4c57fa6cc0dc9 100644 --- a/packages/kbn-unified-doc-viewer/src/components/field_name/field_name.tsx +++ b/packages/kbn-unified-doc-viewer/src/components/field_name/field_name.tsx @@ -8,14 +8,7 @@ import React from 'react'; import './field_name.scss'; -import { - EuiBadge, - EuiFlexGroup, - EuiFlexItem, - EuiToolTip, - EuiHighlight, - EuiIcon, -} from '@elastic/eui'; +import { EuiBadge, EuiFlexGroup, EuiFlexItem, EuiToolTip, EuiHighlight } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; import { FieldIcon, FieldIconProps } from '@kbn/react-field'; @@ -30,7 +23,6 @@ interface Props { fieldIconProps?: Omit; scripted?: boolean; highlight?: string; - isPinned?: boolean; } export function FieldName({ @@ -40,7 +32,6 @@ export function FieldName({ fieldIconProps, scripted = false, highlight = '', - isPinned = false, }: Props) { const typeName = getFieldTypeName(fieldType); const displayName = @@ -63,17 +54,6 @@ export function FieldName({ - {isPinned && ( - - - - )} diff --git a/renovate.json b/renovate.json index 5145552ed6420..0d9b15c7cf067 100644 --- a/renovate.json +++ b/renovate.json @@ -21,9 +21,11 @@ "enabled": false }, { - "matchPackageNames": [ - "docker.elastic.co/wolfi/chainguard-base" - ], + "groupName": "chainguard", + "matchPackageNames": ["docker.elastic.co/wolfi/chainguard-base"], + "reviewers": ["team:kibana-operations"], + "matchBaseBranches": ["main"], + "labels": ["Team:Operations", "release_note:skip"], "enabled": true }, { @@ -468,6 +470,14 @@ "matchBaseBranches": ["main"], "labels": ["release_note:skip", "backport:all-open", "Team:Visualizations"], "enabled": true + }, + { + "groupName": "Serve swagger docs", + "matchDepNames": ["express", "swagger-jsdoc", "swagger-ui-express"], + "reviewers": ["team:obs-entities"], + "matchBaseBranches": ["main"], + "labels": ["release_note:skip", "team:obs-entities"], + "enabled": true } ], "customManagers": [ diff --git a/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts b/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts index d01051ed5fc78..bcc7d33f38c39 100644 --- a/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts +++ b/src/core/server/integration_tests/ci_checks/saved_objects/check_registered_types.test.ts @@ -147,7 +147,7 @@ describe('checking migration metadata changes on all registered SO types', () => "risk-engine-configuration": "aea0c371a462e6d07c3ceb3aff11891b47feb09d", "rules-settings": "892a2918ebaeba809a612b8d97cec0b07c800b5f", "sample-data-telemetry": "37441b12f5b0159c2d6d5138a494c9f440e950b5", - "search": "4579401660a4089d5122b2fc8624825cb97b0480", + "search": "0aa6eefb37edd3145be340a8b67779c2ca578b22", "search-session": "b2fcd840e12a45039ada50b1355faeafa39876d1", "search-telemetry": "b568601618744720b5662946d3103e3fb75fe8ee", "security-rule": "07abb4d7e707d91675ec0495c73816394c7b521f", diff --git a/src/core/server/integration_tests/saved_objects/migrations/group2/multiple_kibana_nodes.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group2/multiple_kibana_nodes.test.ts index c02f9bc47d36e..8d6f83736d010 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group2/multiple_kibana_nodes.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group2/multiple_kibana_nodes.test.ts @@ -182,7 +182,8 @@ describe('migration v2', () => { errors.push(err.message); }) ); - if (i < instances.length - 1) { + if (i < instances.length - 2) { + // We wait between instances, but not after the last one await delay(delayInSec * 1000); } } diff --git a/src/dev/build/tasks/os_packages/docker_generator/run.ts b/src/dev/build/tasks/os_packages/docker_generator/run.ts index 344b8901c77ea..46225c5266048 100644 --- a/src/dev/build/tasks/os_packages/docker_generator/run.ts +++ b/src/dev/build/tasks/os_packages/docker_generator/run.ts @@ -50,7 +50,7 @@ export async function runDockerGenerator( */ if (flags.baseImage === 'wolfi') baseImageName = - 'docker.elastic.co/wolfi/chainguard-base:latest@sha256:dcbcd1932d7180cacc83add309cec026aa75dadc1f2c6a2238db5b41dd100b15'; + 'docker.elastic.co/wolfi/chainguard-base:latest@sha256:c16d3ad6cebf387e8dd2ad769f54320c4819fbbaa21e729fad087c7ae223b4d0'; let imageFlavor = ''; if (flags.baseImage === 'ubi') imageFlavor += `-ubi`; diff --git a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts index 5a7cc19ba9678..4e13583d09aef 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/monaco_editor_actions_provider.ts @@ -11,6 +11,7 @@ import { debounce, range } from 'lodash'; import { ConsoleParsedRequestsProvider, getParsedRequestsProvider, monaco } from '@kbn/monaco'; import { i18n } from '@kbn/i18n'; import { toMountPoint } from '@kbn/react-kibana-mount'; +import { XJson } from '@kbn/es-ui-shared-plugin/public'; import { isQuotaExceededError } from '../../../../services/history'; import { DEFAULT_VARIABLES } from '../../../../../common/constants'; import { getStorage, StorageKeys } from '../../../../services'; @@ -33,13 +34,14 @@ import { replaceRequestVariables, SELECTED_REQUESTS_CLASSNAME, shouldTriggerSuggestions, - stringifyRequest, trackSentRequests, + getRequestFromEditor, } from './utils'; import type { AdjustedParsedRequest } from './types'; import { StorageQuotaError } from '../../../components/storage_quota_error'; import { ContextValue } from '../../../contexts'; +import { containsComments, indentData } from './utils/requests_utils'; const AUTO_INDENTATION_ACTION_LABEL = 'Apply indentations'; const TRIGGER_SUGGESTIONS_ACTION_LABEL = 'Trigger suggestions'; @@ -48,6 +50,7 @@ const DEBOUNCE_HIGHLIGHT_WAIT_MS = 200; const DEBOUNCE_AUTOCOMPLETE_WAIT_MS = 500; const INSPECT_TOKENS_LABEL = 'Inspect tokens'; const INSPECT_TOKENS_HANDLER_ID = 'editor.action.inspectTokens'; +const { collapseLiteralStrings } = XJson; export class MonacoEditorActionsProvider { private parsedRequestsProvider: ConsoleParsedRequestsProvider; @@ -173,12 +176,12 @@ export class MonacoEditorActionsProvider { const selectedRequests: AdjustedParsedRequest[] = []; for (const [index, parsedRequest] of parsedRequests.entries()) { const requestStartLineNumber = getRequestStartLineNumber(parsedRequest, model); - const requestEndLineNumber = getRequestEndLineNumber( + const requestEndLineNumber = getRequestEndLineNumber({ parsedRequest, + nextRequest: parsedRequests.at(index + 1), model, - index, - parsedRequests - ); + startLineNumber, + }); if (requestStartLineNumber > endLineNumber) { // request is past the selection, no need to check further requests break; @@ -198,13 +201,31 @@ export class MonacoEditorActionsProvider { } public async getRequests() { + const model = this.editor.getModel(); + if (!model) { + return []; + } + const parsedRequests = await this.getSelectedParsedRequests(); - const stringifiedRequests = parsedRequests.map((parsedRequest) => - stringifyRequest(parsedRequest) - ); + const stringifiedRequests = parsedRequests.map((parsedRequest) => { + const { startLineNumber, endLineNumber } = parsedRequest; + const requestTextFromEditor = getRequestFromEditor(model, startLineNumber, endLineNumber); + if (requestTextFromEditor && requestTextFromEditor.data.length > 0) { + requestTextFromEditor.data = requestTextFromEditor.data.map((dataString) => { + if (containsComments(dataString)) { + // parse and stringify to remove comments + dataString = indentData(dataString); + } + return collapseLiteralStrings(dataString); + }); + } + return requestTextFromEditor; + }); // get variables values const variables = getStorage().get(StorageKeys.VARIABLES, DEFAULT_VARIABLES); - return stringifiedRequests.map((request) => replaceRequestVariables(request, variables)); + return stringifiedRequests + .filter(Boolean) + .map((request) => replaceRequestVariables(request!, variables)); } public async getCurl(elasticsearchBaseUrl: string): Promise { @@ -388,12 +409,6 @@ export class MonacoEditorActionsProvider { return null; } - // if the current request doesn't have a method, the request is not valid - // and shouldn't have an autocomplete type - if (!currentRequest.method) { - return null; - } - // if not on the 1st line of the request, suggest request body return AutocompleteType.BODY; } diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts index bbfa33d84e70e..5c6a9885c3627 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/autocomplete_utils.ts @@ -58,7 +58,7 @@ export const getDocumentationLinkFromAutocomplete = ( * Helper function that filters out suggestions without a name. */ const filterTermsWithoutName = (terms: ResultTerm[]): ResultTerm[] => - terms.filter((term) => term.name !== undefined); + terms.filter((term) => term.name !== undefined && term.name !== ''); /* * This function returns an array of completion items for the request method diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts index 0f4664be48994..7e1ebbc85a50a 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/constants.ts @@ -40,6 +40,10 @@ export const END_OF_URL_TOKEN = '__url_path_end__'; * In this case autocomplete suggestions should be triggered for an url. */ export const methodWhitespaceRegex = /^\s*(GET|POST|PUT|PATCH|DELETE)\s+$/i; +/* + * This regex matches a string that starts with a method (optional whitespace before the method) + */ +export const startsWithMethodRegex = /^\s*(GET|POST|PUT|PATCH|DELETE)/i; /* * This regex matches a string that has * a method and some parts of an url ending with a slash, a question mark or an equals sign, diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/index.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/index.ts index 0997aa682b630..bc402875633a0 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/index.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/index.ts @@ -18,11 +18,11 @@ export { export { getRequestStartLineNumber, getRequestEndLineNumber, - stringifyRequest, replaceRequestVariables, getCurlRequest, trackSentRequests, getAutoIndentedRequests, + getRequestFromEditor, } from './requests_utils'; export { getDocumentationLinkFromAutocomplete, diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.test.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.test.ts index 8704ae9e94eec..f028bfde48086 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.test.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.test.ts @@ -6,14 +6,16 @@ * Side Public License, v 1. */ +import { monaco, ParsedRequest } from '@kbn/monaco'; +import type { MetricsTracker } from '../../../../../types'; import { getAutoIndentedRequests, getCurlRequest, + getRequestEndLineNumber, replaceRequestVariables, - stringifyRequest, trackSentRequests, + getRequestFromEditor, } from './requests_utils'; -import { MetricsTracker } from '../../../../../types'; describe('requests_utils', () => { const dataObjects = [ @@ -26,35 +28,23 @@ describe('requests_utils', () => { test: 'test', }, ]; - describe('stringifyRequest', () => { - const request = { - startOffset: 0, - endOffset: 11, - method: 'get', - url: '_search some_text', - }; - it('calls the "removeTrailingWhitespaces" on the url', () => { - const stringifiedRequest = stringifyRequest(request); - expect(stringifiedRequest.url).toBe('_search'); - }); - - it('normalizes the method to upper case', () => { - const stringifiedRequest = stringifyRequest(request); - expect(stringifiedRequest.method).toBe('GET'); - }); - it('stringifies the request body', () => { - const result = stringifyRequest({ ...request, data: [dataObjects[0]] }); - expect(result.data.length).toBe(1); - expect(result.data[0]).toBe(JSON.stringify(dataObjects[0], null, 2)); - }); - - it('works for several request bodies', () => { - const result = stringifyRequest({ ...request, data: dataObjects }); - expect(result.data.length).toBe(2); - expect(result.data[0]).toBe(JSON.stringify(dataObjects[0], null, 2)); - expect(result.data[1]).toBe(JSON.stringify(dataObjects[1], null, 2)); - }); - }); + const inlineData = '{"query":"test"}'; + const multiLineData = '{\n "query": "test"\n}'; + const invalidData = '{\n "query":\n {'; + const getMockModel = (content: string[]) => { + return { + getLineContent: (lineNumber: number) => content[lineNumber - 1], + getValueInRange: ({ + startLineNumber, + endLineNumber, + }: { + startLineNumber: number; + endLineNumber: number; + }) => content.slice(startLineNumber - 1, endLineNumber).join('\n'), + getLineMaxColumn: (lineNumber: number) => content[lineNumber - 1].length, + getLineCount: () => content.length, + } as unknown as monaco.editor.ITextModel; + }; describe('replaceRequestVariables', () => { const variables = [ @@ -213,9 +203,6 @@ describe('requests_utils', () => { ]; const TEST_REQUEST_1 = { - method: 'GET', - url: '_search', - data: [{ query: { match_all: {} } }], // Offsets are with respect to the sample editor text startLineNumber: 2, endLineNumber: 7, @@ -224,9 +211,6 @@ describe('requests_utils', () => { }; const TEST_REQUEST_2 = { - method: 'GET', - url: '_all', - data: [], // Offsets are with respect to the sample editor text startLineNumber: 10, endLineNumber: 10, @@ -235,10 +219,6 @@ describe('requests_utils', () => { }; const TEST_REQUEST_3 = { - method: 'POST', - url: '/_bulk', - // Multi-data - data: [{ index: { _index: 'books' } }, { name: '1984' }, { name: 'Atomic habits' }], // Offsets are with respect to the sample editor text startLineNumber: 15, endLineNumber: 23, @@ -247,11 +227,8 @@ describe('requests_utils', () => { }; const TEST_REQUEST_4 = { - method: 'GET', - url: '_search', - data: [{ query: { match_all: {} } }], // Offsets are with respect to the sample editor text - startLineNumber: 24, + startLineNumber: 25, endLineNumber: 30, startOffset: 1, endOffset: 36, @@ -353,17 +330,131 @@ describe('requests_utils', () => { expect(formattedData).toBe(expectedResultLines.join('\n')); }); - it('does not auto-indent a request with comments', () => { - const requestText = sampleEditorTextLines - .slice(TEST_REQUEST_4.startLineNumber - 1, TEST_REQUEST_4.endLineNumber) + it(`auto-indents method line but doesn't auto-indent data with comments`, () => { + const methodLine = sampleEditorTextLines[TEST_REQUEST_4.startLineNumber - 1]; + const dataText = sampleEditorTextLines + .slice(TEST_REQUEST_4.startLineNumber, TEST_REQUEST_4.endLineNumber) .join('\n'); const formattedData = getAutoIndentedRequests( [TEST_REQUEST_4], - requestText, + `${methodLine}\n${dataText}`, sampleEditorTextLines.join('\n') ); - expect(formattedData).toBe(requestText); + expect(formattedData).toBe(`GET _search // test comment\n${dataText}`); + }); + }); + + describe('getRequestEndLineNumber', () => { + const parsedRequest: ParsedRequest = { + startOffset: 1, + }; + it('detects the end of the request when there is a line that starts with a method (next not parsed request)', () => { + /* + * Mocking the model to return these 6 lines of text + * 1. GET /_search + * 2. { + * 3. empty + * 4. empty + * 5. POST _search + * 6. empty + */ + const content = ['GET /_search', '{', '', '', 'POST _search', '']; + const model = { + ...getMockModel(content), + getPositionAt: () => ({ lineNumber: 1 }), + } as unknown as monaco.editor.ITextModel; + + const result = getRequestEndLineNumber({ + parsedRequest, + model, + startLineNumber: 1, + }); + expect(result).toEqual(2); + }); + + it('detects the end of the request when the text ends', () => { + /* + * Mocking the model to return these 4 lines of text + * 1. GET /_search + * 2. { + * 3. { + * 4. empty + */ + const content = ['GET _search', '{', ' {', '']; + const model = { + ...getMockModel(content), + getPositionAt: () => ({ lineNumber: 1 }), + } as unknown as monaco.editor.ITextModel; + + const result = getRequestEndLineNumber({ + parsedRequest, + model, + startLineNumber: 1, + }); + expect(result).toEqual(3); + }); + }); + + describe('getRequestFromEditor', () => { + it('cleans up any text following the url', () => { + const content = ['GET _search // inline comment']; + const model = getMockModel(content); + const request = getRequestFromEditor(model, 1, 1); + expect(request).toEqual({ method: 'GET', url: '_search', data: [] }); + }); + + it(`doesn't incorrectly removes parts of url params that include whitespaces`, () => { + const content = ['GET _search?query="test test"']; + const model = getMockModel(content); + const request = getRequestFromEditor(model, 1, 1); + expect(request).toEqual({ method: 'GET', url: '_search?query="test test"', data: [] }); + }); + + it(`normalizes method to upper case`, () => { + const content = ['get _search']; + const model = getMockModel(content); + const request = getRequestFromEditor(model, 1, 1); + expect(request).toEqual({ method: 'GET', url: '_search', data: [] }); + }); + + it('correctly includes the request body', () => { + const content = ['GET _search', '{', ' "query": {}', '}']; + const model = getMockModel(content); + const request = getRequestFromEditor(model, 1, 4); + expect(request).toEqual({ method: 'GET', url: '_search', data: ['{\n "query": {}\n}'] }); + }); + + it('works for several request bodies', () => { + const content = ['GET _search', '{', ' "query": {}', '}', '{', ' "query": {}', '}']; + const model = getMockModel(content); + const request = getRequestFromEditor(model, 1, 7); + expect(request).toEqual({ + method: 'GET', + url: '_search', + data: ['{\n "query": {}\n}', '{\n "query": {}\n}'], + }); + }); + + it('splits several json objects', () => { + const content = ['GET _search', inlineData, ...multiLineData.split('\n'), inlineData]; + const model = getMockModel(content); + const request = getRequestFromEditor(model, 1, 6); + expect(request).toEqual({ + method: 'GET', + url: '_search', + data: [inlineData, multiLineData, inlineData], + }); + }); + it('works for invalid json objects', () => { + const content = ['GET _search', inlineData, ...invalidData.split('\n')]; + const model = getMockModel(content); + const request = getRequestFromEditor(model, 1, 5); + expect(request).toEqual({ + method: 'GET', + url: '_search', + data: [inlineData, invalidData], + }); }); }); }); diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.ts index 8f791751bba67..b6f5921e920a4 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/requests_utils.ts @@ -7,26 +7,17 @@ */ import { monaco, ParsedRequest } from '@kbn/monaco'; +import { parse } from 'hjson'; import { constructUrl } from '../../../../../lib/es'; -import { MetricsTracker } from '../../../../../types'; +import type { MetricsTracker } from '../../../../../types'; import type { DevToolsVariable } from '../../../../components'; -import type { EditorRequest } from '../types'; -import { urlVariableTemplateRegex, dataVariableTemplateRegex } from './constants'; -import { removeTrailingWhitespaces } from './tokens_utils'; -import { AdjustedParsedRequest } from '../types'; - -/* - * This function stringifies and normalizes the parsed request: - * - the method is converted to upper case - * - any trailing comments are removed from the url - * - the request body is stringified from an object using JSON.stringify - */ -export const stringifyRequest = (parsedRequest: ParsedRequest): EditorRequest => { - const url = parsedRequest.url ? removeTrailingWhitespaces(parsedRequest.url) : ''; - const method = parsedRequest.method?.toUpperCase() ?? ''; - const data = parsedRequest.data?.map((parsedData) => JSON.stringify(parsedData, null, 2)); - return { url, method, data: data ?? [] }; -}; +import type { EditorRequest, AdjustedParsedRequest } from '../types'; +import { + urlVariableTemplateRegex, + dataVariableTemplateRegex, + startsWithMethodRegex, +} from './constants'; +import { parseLine } from './tokens_utils'; /* * This function replaces any variables with its values stored in localStorage. @@ -52,9 +43,13 @@ export const getCurlRequest = ( ): string => { const curlUrl = constructUrl(elasticsearchBaseUrl, url); let curlRequest = `curl -X${method} "${curlUrl}" -H "kbn-xsrf: reporting"`; - if (data.length > 0) { + if (data && data.length) { + const joinedData = data.join('\n'); + curlRequest += ` -H "Content-Type: application/json" -d'\n`; - curlRequest += data.join('\n'); + + // We escape single quoted strings that are wrapped in single quoted strings + curlRequest += joinedData.replace(/'/g, "'\\''"); curlRequest += "'"; } return curlRequest; @@ -88,25 +83,42 @@ export const getRequestStartLineNumber = ( * If there is no end offset (the parser was not able to parse this request completely), * then the last non-empty line is returned or the line before the next request. */ -export const getRequestEndLineNumber = ( - parsedRequest: ParsedRequest, - model: monaco.editor.ITextModel, - index: number, - parsedRequests: ParsedRequest[] -): number => { +export const getRequestEndLineNumber = ({ + parsedRequest, + nextRequest, + model, + startLineNumber, +}: { + parsedRequest: ParsedRequest; + nextRequest?: ParsedRequest; + model: monaco.editor.ITextModel; + startLineNumber: number; +}): number => { let endLineNumber: number; if (parsedRequest.endOffset) { // if the parser set an end offset for this request, then find the line number for it endLineNumber = model.getPositionAt(parsedRequest.endOffset).lineNumber; } else { // if no end offset, try to find the line before the next request starts - const nextRequest = parsedRequests.at(index + 1); if (nextRequest) { const nextRequestStartLine = model.getPositionAt(nextRequest.startOffset).lineNumber; - endLineNumber = nextRequestStartLine - 1; + endLineNumber = + nextRequestStartLine > startLineNumber ? nextRequestStartLine - 1 : startLineNumber; } else { - // if there is no next request, take the last line of the model - endLineNumber = model.getLineCount(); + // if there is no next request, find the end of the text or the line that starts with a method + let nextLineNumber = model.getPositionAt(parsedRequest.startOffset).lineNumber + 1; + let nextLineContent: string; + while (nextLineNumber <= model.getLineCount()) { + nextLineContent = model.getLineContent(nextLineNumber).trim(); + if (nextLineContent.match(startsWithMethodRegex)) { + // found a line that starts with a method, stop iterating + break; + } + nextLineNumber++; + } + // nextLineNumber is now either the line with a method or 1 line after the end of the text + // set the end line for this request to the line before nextLineNumber + endLineNumber = nextLineNumber > startLineNumber ? nextLineNumber - 1 : startLineNumber; } } // if the end line is empty, go up to find the first non-empty line @@ -118,44 +130,6 @@ export const getRequestEndLineNumber = ( return endLineNumber; }; -const isJsonString = (str: string) => { - try { - JSON.parse(str); - } catch (e) { - return false; - } - return true; -}; - -/* - * Internal helpers - */ -const replaceVariables = ( - text: string, - variables: DevToolsVariable[], - isDataVariable: boolean -): string => { - const variableRegex = isDataVariable ? dataVariableTemplateRegex : urlVariableTemplateRegex; - if (variableRegex.test(text)) { - text = text.replaceAll(variableRegex, (match, key) => { - const variable = variables.find(({ name }) => name === key); - const value = variable?.value; - - if (isDataVariable && value) { - // If the variable value is an object, add it as it is. Otherwise, surround it with quotes. - return isJsonString(value) ? value : `"${value}"`; - } - - return value ?? match; - }); - } - return text; -}; - -const containsComments = (text: string) => { - return text.indexOf('//') >= 0 || text.indexOf('/*') >= 0; -}; - /** * This function takes a string containing unformatted Console requests and * returns a text in which the requests are auto-indented. @@ -184,19 +158,19 @@ export const getAutoIndentedRequests = ( ) { // Start of a request const requestLines = allTextLines.slice(request.startLineNumber - 1, request.endLineNumber); - - if (requestLines.some((line) => containsComments(line))) { - // If request has comments, add it as it is - without formatting - // TODO: Format requests with comments - formattedTextLines.push(...requestLines); + const firstLine = cleanUpWhitespaces(requestLines[0]); + formattedTextLines.push(firstLine); + const dataLines = requestLines.slice(1); + if (dataLines.some((line) => containsComments(line))) { + // If data has comments, add it as it is - without formatting + // TODO: Format requests with comments https://github.com/elastic/kibana/issues/182138 + formattedTextLines.push(...dataLines); } else { - // If no comments, add stringified parsed request - const stringifiedRequest = stringifyRequest(request); - const firstLine = stringifiedRequest.method + ' ' + stringifiedRequest.url; - formattedTextLines.push(firstLine); - - if (stringifiedRequest.data && stringifiedRequest.data.length > 0) { - formattedTextLines.push(...stringifiedRequest.data); + // If no comments, indent data + if (requestLines.length > 1) { + const dataString = dataLines.join('\n'); + const dataJsons = splitDataIntoJsonObjects(dataString); + formattedTextLines.push(...dataJsons.map(indentData)); } } @@ -205,10 +179,116 @@ export const getAutoIndentedRequests = ( } else { // Current line is a comment or whitespaces // Trim white spaces and add it to the formatted text - formattedTextLines.push(selectedTextLines[currentLineIndex].trim()); + formattedTextLines.push(cleanUpWhitespaces(selectedTextLines[currentLineIndex])); currentLineIndex++; } } return formattedTextLines.join('\n'); }; + +/* + * This function extracts a normalized method and url from the editor and + * the "raw" text of the request body without any changes to it. The only normalization + * for request body is to split several json objects into an array of strings. + */ +export const getRequestFromEditor = ( + model: monaco.editor.ITextModel, + startLineNumber: number, + endLineNumber: number +): EditorRequest | null => { + const methodUrlLine = model.getLineContent(startLineNumber).trim(); + if (!methodUrlLine) { + return null; + } + const { method, url } = parseLine(methodUrlLine, false); + if (!method || !url) { + return null; + } + const upperCaseMethod = method.toUpperCase(); + + if (endLineNumber <= startLineNumber) { + return { method: upperCaseMethod, url, data: [] }; + } + const dataString = model + .getValueInRange({ + startLineNumber: startLineNumber + 1, + startColumn: 1, + endLineNumber, + endColumn: model.getLineMaxColumn(endLineNumber), + }) + .trim(); + const data = splitDataIntoJsonObjects(dataString); + + return { method: upperCaseMethod, url, data }; +}; + +export const containsComments = (text: string) => { + return text.indexOf('//') >= 0 || text.indexOf('/*') >= 0; +}; + +export const indentData = (dataString: string): string => { + try { + const parsedData = parse(dataString); + + return JSON.stringify(parsedData, null, 2); + } catch (e) { + return dataString; + } +}; + +// ---------------------------------- Internal helpers ---------------------------------- + +const isJsonString = (str: string) => { + try { + JSON.parse(str); + } catch (e) { + return false; + } + return true; +}; + +const replaceVariables = ( + text: string, + variables: DevToolsVariable[], + isDataVariable: boolean +): string => { + const variableRegex = isDataVariable ? dataVariableTemplateRegex : urlVariableTemplateRegex; + if (variableRegex.test(text)) { + text = text.replaceAll(variableRegex, (match, key) => { + const variable = variables.find(({ name }) => name === key); + const value = variable?.value; + + if (isDataVariable && value) { + // If the variable value is an object, add it as it is. Otherwise, surround it with quotes. + return isJsonString(value) ? value : `"${value}"`; + } + + return value ?? match; + }); + } + return text; +}; + +const splitDataIntoJsonObjects = (dataString: string): string[] => { + const jsonSplitRegex = /}\s*{/; + if (dataString.match(jsonSplitRegex)) { + return dataString.split(jsonSplitRegex).map((part, index, parts) => { + let restoredBracketsString = part; + // add an opening bracket to all parts except the 1st + if (index > 0) { + restoredBracketsString = `{${restoredBracketsString}`; + } + // add a closing bracket to all parts except the last + if (index < parts.length - 1) { + restoredBracketsString = `${restoredBracketsString}}`; + } + return restoredBracketsString; + }); + } + return [dataString]; +}; + +const cleanUpWhitespaces = (line: string): string => { + return line.trim().replaceAll(/\s+/g, ' '); +}; diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.test.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.test.ts index 702b9a589e662..4e7a383ceebf3 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.test.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.test.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { parseBody, removeTrailingWhitespaces, parseUrl } from './tokens_utils'; +import { parseBody, removeTrailingWhitespaces, parseUrl, parseLine } from './tokens_utils'; describe('tokens_utils', () => { describe('removeTrailingWhitespaces', () => { @@ -32,6 +32,53 @@ describe('tokens_utils', () => { }); }); + describe('parseLine', () => { + it('works with a comment', () => { + const { method, url } = parseLine('GET _search // a comment'); + expect(method).toBe('GET'); + expect(url).toBe('_search'); + }); + it('works with a url param', () => { + const { method, url, urlPathTokens, urlParamsTokens } = parseLine( + 'GET _search?query="test1 test2 test3" // comment' + ); + expect(method).toBe('GET'); + expect(url).toBe('_search?query="test1 test2 test3"'); + expect(urlPathTokens).toEqual(['_search']); + expect(urlParamsTokens[0]).toEqual(['query', '"test1 test2 test3"']); + }); + it('works with multiple whitespaces', () => { + const { method, url, urlPathTokens, urlParamsTokens } = parseLine( + ' GET _search?query="test1 test2 test3" // comment' + ); + expect(method).toBe('GET'); + expect(url).toBe('_search?query="test1 test2 test3"'); + expect(urlPathTokens).toEqual(['_search']); + expect(urlParamsTokens[0]).toEqual(['query', '"test1 test2 test3"']); + }); + it('normalizes the method to upper case', () => { + const { method, url, urlPathTokens, urlParamsTokens } = parseLine('Get _'); + expect(method).toBe('GET'); + expect(url).toBe('_'); + expect(urlPathTokens).toEqual(['_']); + expect(urlParamsTokens).toEqual([]); + }); + it('correctly parses the line when the url is empty, no whitespace', () => { + const { method, url, urlPathTokens, urlParamsTokens } = parseLine('GET'); + expect(method).toBe('GET'); + expect(url).toBe(''); + expect(urlPathTokens).toEqual([]); + expect(urlParamsTokens).toEqual([]); + }); + it('correctly parses the line when the url is empty, with whitespace', () => { + const { method, url, urlPathTokens, urlParamsTokens } = parseLine('GET '); + expect(method).toBe('GET'); + expect(url).toBe(''); + expect(urlPathTokens).toEqual([]); + expect(urlParamsTokens).toEqual([]); + }); + }); + describe('parseBody', () => { const testCases: Array<{ value: string; tokens: string[] }> = [ { diff --git a/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.ts b/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.ts index 2615bd2c45d74..8e9c723c8f7a2 100644 --- a/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.ts +++ b/src/plugins/console/public/application/containers/editor/monaco/utils/tokens_utils.ts @@ -19,18 +19,25 @@ import { /* * This function parses a line with the method and url. * The url is parsed into path and params, each parsed into tokens. - * Returns method, urlPathTokens and urlParamsTokens which are arrays of strings. + * Returns method, url, urlPathTokens and urlParamsTokens which are arrays of strings. */ -export const parseLine = (line: string): ParsedLineTokens => { - // try to parse into method and url (split on whitespace) - const parts = line.split(whitespacesRegex); +export const parseLine = (line: string, parseUrlIntoTokens: boolean = true): ParsedLineTokens => { + line = line.trim(); + const firstWhitespaceIndex = line.indexOf(' '); + if (firstWhitespaceIndex < 0) { + // there is no url, only method + return { method: line, url: '', urlPathTokens: [], urlParamsTokens: [] }; + } // 1st part is the method - const method = parts[0].toUpperCase(); + const method = line.slice(0, firstWhitespaceIndex).trim().toUpperCase(); // 2nd part is the url - const url = parts[1]; - // try to parse into url path and url params (split on question mark) - const { urlPathTokens, urlParamsTokens } = parseUrl(url); - return { method, urlPathTokens, urlParamsTokens }; + const url = removeTrailingWhitespaces(line.slice(firstWhitespaceIndex).trim()); + if (parseUrlIntoTokens) { + // try to parse into url path and url params (split on question mark) + const { urlPathTokens, urlParamsTokens } = parseUrl(url); + return { method, url, urlPathTokens, urlParamsTokens }; + } + return { method, url, urlPathTokens: [], urlParamsTokens: [] }; }; /* @@ -444,6 +451,7 @@ export const containsUrlParams = (lineContent: string): boolean => { */ interface ParsedLineTokens { method: string; + url: string; urlPathTokens: string[]; urlParamsTokens: string[][]; } diff --git a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx index e1b5636d010b1..ea8b8ead62455 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_documents.tsx @@ -27,6 +27,7 @@ import { type DataTableColumnsMeta, getTextBasedColumnsMeta, getRenderCustomToolbarWithElements, + type DataGridDensity, } from '@kbn/unified-data-table'; import { DOC_HIDE_TIME_COLUMN_SETTING, @@ -110,19 +111,29 @@ function DiscoverDocumentsComponent({ const documents$ = stateContainer.dataState.data$.documents$; const savedSearch = useSavedSearchInitial(); const { dataViews, capabilities, uiSettings, uiActions } = services; - const [query, sort, rowHeight, headerRowHeight, rowsPerPage, grid, columns, sampleSizeState] = - useAppStateSelector((state) => { - return [ - state.query, - state.sort, - state.rowHeight, - state.headerRowHeight, - state.rowsPerPage, - state.grid, - state.columns, - state.sampleSize, - ]; - }); + const [ + query, + sort, + rowHeight, + headerRowHeight, + rowsPerPage, + grid, + columns, + sampleSizeState, + density, + ] = useAppStateSelector((state) => { + return [ + state.query, + state.sort, + state.rowHeight, + state.headerRowHeight, + state.rowsPerPage, + state.grid, + state.columns, + state.sampleSize, + state.density, + ]; + }); const expandedDoc = useInternalStateSelector((state) => state.expandedDoc); const isEsqlMode = useIsEsqlMode(); const useNewFieldsApi = useMemo(() => !uiSettings.get(SEARCH_FIELDS_FROM_SOURCE), [uiSettings]); @@ -219,6 +230,13 @@ function DiscoverDocumentsComponent({ [stateContainer] ); + const onUpdateDensity = useCallback( + (newDensity: DataGridDensity) => { + stateContainer.appState.update({ density: newDensity }); + }, + [stateContainer] + ); + // should be aligned with embeddable `showTimeCol` prop const showTimeCol = useMemo( () => !uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false), @@ -437,6 +455,8 @@ function DiscoverDocumentsComponent({ customGridColumnsConfiguration={customGridColumnsConfiguration} rowAdditionalLeadingControls={rowAdditionalLeadingControls} additionalFieldGroups={additionalFieldGroups} + dataGridDensityState={density} + onUpdateDataGridDensity={onUpdateDensity} /> diff --git a/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx b/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx index 735eae1fa9039..1c2e7f3689929 100644 --- a/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx +++ b/src/plugins/discover/public/application/main/components/layout/discover_main_content.tsx @@ -78,6 +78,17 @@ export const DiscoverMainContent = ({ trackUiMetric(METRIC_TYPE.CLICK, DOCUMENTS_VIEW_CLICK); } } + + return new Promise((resolve, reject) => { + // return a promise to report when the view mode has been updated + stateContainer.appState.subscribe((state) => { + if (state.viewMode === mode) { + resolve(mode); + } else { + reject(mode); + } + }); + }); }, [trackUiMetric, stateContainer] ); diff --git a/src/plugins/discover/public/application/main/components/pattern_analysis/pattern_analysis_tab.tsx b/src/plugins/discover/public/application/main/components/pattern_analysis/pattern_analysis_tab.tsx index db02134e0169f..acb00fd027f57 100644 --- a/src/plugins/discover/public/application/main/components/pattern_analysis/pattern_analysis_tab.tsx +++ b/src/plugins/discover/public/application/main/components/pattern_analysis/pattern_analysis_tab.tsx @@ -7,24 +7,16 @@ */ import React, { memo, type FC } from 'react'; -import { useQuerySubscriber } from '@kbn/unified-field-list/src/hooks/use_query_subscriber'; import { useSavedSearch } from '../../state_management/discover_state_provider'; import { PatternAnalysisTable, type PatternAnalysisTableProps } from './pattern_analysis_table'; -import { useDiscoverServices } from '../../../../hooks/use_discover_services'; export const PatternAnalysisTab: FC> = memo( (props) => { - const services = useDiscoverServices(); - const querySubscriberResult = useQuerySubscriber({ - data: services.data, - }); const savedSearch = useSavedSearch(); return ( { const patternAnalysisComponentProps: LogCategorizationEmbeddableProps = useMemo( () => ({ - input: Object.assign( - {}, - pick(props, ['dataView', 'savedSearch', 'query', 'filters', 'switchToDocumentView']), - { lastReloadRequestTime } - ), + input: Object.assign({}, pick(props, ['dataView', 'savedSearch', 'switchToDocumentView']), { + lastReloadRequestTime, + }), renderViewModeToggle: props.renderViewModeToggle, }), [lastReloadRequestTime, props] diff --git a/src/plugins/discover/public/application/main/components/top_nav/open_alerts_popover.tsx b/src/plugins/discover/public/application/main/components/top_nav/open_alerts_popover.tsx index 097278ac9cd66..7b97db9b63318 100644 --- a/src/plugins/discover/public/application/main/components/top_nav/open_alerts_popover.tsx +++ b/src/plugins/discover/public/application/main/components/top_nav/open_alerts_popover.tsx @@ -183,8 +183,9 @@ export function AlertsPopover({ button={anchorElement} closePopover={onClose} isOpen={!alertFlyoutVisible} + panelPaddingSize="s" > - + ); diff --git a/src/plugins/discover/public/application/main/state_management/discover_app_state_container.ts b/src/plugins/discover/public/application/main/state_management/discover_app_state_container.ts index f364530faba5e..35463c091109d 100644 --- a/src/plugins/discover/public/application/main/state_management/discover_app_state_container.ts +++ b/src/plugins/discover/public/application/main/state_management/discover_app_state_container.ts @@ -26,6 +26,7 @@ import { IKbnUrlStateStorage, ISyncStateRef, syncState } from '@kbn/kibana-utils import { isEqual, omit } from 'lodash'; import { connectToQueryState, syncGlobalQueryStateWithUrl } from '@kbn/data-plugin/public'; import type { DiscoverGridSettings } from '@kbn/saved-search-plugin/common'; +import type { DataGridDensity } from '@kbn/unified-data-table'; import type { DiscoverServices } from '../../../build_services'; import { addLog } from '../../../utils/add_log'; import { cleanupUrlState } from './utils/cleanup_url_state'; @@ -155,6 +156,10 @@ export interface DiscoverAppState { * Breakdown field of chart */ breakdownField?: string; + /** + * Density of table + */ + density?: DataGridDensity; } export interface AppStateUrl extends Omit { diff --git a/src/plugins/discover/public/application/main/state_management/discover_state.test.ts b/src/plugins/discover/public/application/main/state_management/discover_state.test.ts index d9acde1645fcf..cd8e2c47bd02f 100644 --- a/src/plugins/discover/public/application/main/state_management/discover_state.test.ts +++ b/src/plugins/discover/public/application/main/state_management/discover_state.test.ts @@ -456,6 +456,7 @@ describe('Test discover state actions', () => { "columns": Array [ "default_column", ], + "density": undefined, "headerRowHeight": undefined, "hideAggregatedPreview": undefined, "hideChart": undefined, diff --git a/src/plugins/discover/public/application/main/state_management/utils/get_state_defaults.test.ts b/src/plugins/discover/public/application/main/state_management/utils/get_state_defaults.test.ts index 86d9ffe99c244..8e264ea779c33 100644 --- a/src/plugins/discover/public/application/main/state_management/utils/get_state_defaults.test.ts +++ b/src/plugins/discover/public/application/main/state_management/utils/get_state_defaults.test.ts @@ -32,6 +32,7 @@ describe('getStateDefaults', () => { "dataViewId": "index-pattern-with-timefield-id", "type": "dataView", }, + "density": undefined, "filters": undefined, "grid": undefined, "headerRowHeight": undefined, @@ -71,6 +72,7 @@ describe('getStateDefaults', () => { "dataViewId": "the-data-view-id", "type": "dataView", }, + "density": undefined, "filters": undefined, "grid": undefined, "headerRowHeight": undefined, diff --git a/src/plugins/discover/public/application/main/state_management/utils/get_state_defaults.ts b/src/plugins/discover/public/application/main/state_management/utils/get_state_defaults.ts index 7e44adf64dbc1..81ec433da249a 100644 --- a/src/plugins/discover/public/application/main/state_management/utils/get_state_defaults.ts +++ b/src/plugins/discover/public/application/main/state_management/utils/get_state_defaults.ts @@ -81,6 +81,7 @@ export function getStateDefaults({ sampleSize: undefined, grid: undefined, breakdownField: undefined, + density: undefined, }; if (savedSearch.grid) { @@ -113,6 +114,9 @@ export function getStateDefaults({ if (savedSearch.breakdownField) { defaultState.breakdownField = savedSearch.breakdownField; } + if (savedSearch.density) { + defaultState.density = savedSearch.density; + } return defaultState; } diff --git a/src/plugins/discover/public/application/main/state_management/utils/update_saved_search.ts b/src/plugins/discover/public/application/main/state_management/utils/update_saved_search.ts index 6638e511f6b2f..b767cde6c4a92 100644 --- a/src/plugins/discover/public/application/main/state_management/utils/update_saved_search.ts +++ b/src/plugins/discover/public/application/main/state_management/utils/update_saved_search.ts @@ -69,6 +69,7 @@ export function updateSavedSearch({ savedSearch.headerRowHeight = state.headerRowHeight; savedSearch.rowsPerPage = state.rowsPerPage; savedSearch.sampleSize = state.sampleSize; + savedSearch.density = state.density; if (state.viewMode) { savedSearch.viewMode = state.viewMode; diff --git a/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.tsx b/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.tsx index 28eeb9f3661ff..d5c00d812c7ca 100644 --- a/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.tsx +++ b/src/plugins/discover/public/components/view_mode_toggle/view_mode_toggle.tsx @@ -31,7 +31,7 @@ export const DocumentViewModeToggle = ({ isEsqlMode: boolean; prepend?: ReactElement; stateContainer: DiscoverStateContainer; - setDiscoverViewMode: (viewMode: VIEW_MODE) => void; + setDiscoverViewMode: (viewMode: VIEW_MODE) => Promise; patternCount?: number; dataView: DataView; }) => { @@ -86,8 +86,7 @@ export const DocumentViewModeToggle = ({ } }, [showPatternAnalysisTab, viewMode, setDiscoverViewMode]); - const includesNormalTabsStyle = - viewMode === VIEW_MODE.AGGREGATED_LEVEL || viewMode === VIEW_MODE.PATTERN_LEVEL || isLegacy; + const includesNormalTabsStyle = viewMode === VIEW_MODE.AGGREGATED_LEVEL || isLegacy; const containerPadding = includesNormalTabsStyle ? euiTheme.size.s : 0; const containerCss = css` diff --git a/src/plugins/discover/public/embeddable/__mocks__/get_mocked_api.ts b/src/plugins/discover/public/embeddable/__mocks__/get_mocked_api.ts index 0c324930e1f85..ea5ba55d8eccf 100644 --- a/src/plugins/discover/public/embeddable/__mocks__/get_mocked_api.ts +++ b/src/plugins/discover/public/embeddable/__mocks__/get_mocked_api.ts @@ -17,7 +17,7 @@ import { DatatableColumnMeta } from '@kbn/expressions-plugin/common'; import { FetchContext } from '@kbn/presentation-publishing'; import { DiscoverGridSettings, SavedSearch, VIEW_MODE } from '@kbn/saved-search-plugin/common'; import { SearchResponseIncompleteWarning } from '@kbn/search-response-warnings/src/types'; -import { SortOrder } from '@kbn/unified-data-table'; +import type { SortOrder, DataGridDensity } from '@kbn/unified-data-table'; export const getMockedSearchApi = ({ searchSource, @@ -52,6 +52,7 @@ export const getMockedSearchApi = ({ headerRowHeight: new BehaviorSubject(savedSearch.headerRowHeight), rowsPerPage: new BehaviorSubject(savedSearch.rowsPerPage), sampleSize: new BehaviorSubject(savedSearch.sampleSize), + density: new BehaviorSubject(savedSearch.density), grid: new BehaviorSubject(savedSearch.grid), rows: new BehaviorSubject([]), totalHitCount: new BehaviorSubject(0), diff --git a/src/plugins/discover/public/embeddable/components/search_embeddable_grid_component.tsx b/src/plugins/discover/public/embeddable/components/search_embeddable_grid_component.tsx index 55ed59d30f1ae..6f6ce57a78fd0 100644 --- a/src/plugins/discover/public/embeddable/components/search_embeddable_grid_component.tsx +++ b/src/plugins/discover/public/embeddable/components/search_embeddable_grid_component.tsx @@ -22,7 +22,7 @@ import { } from '@kbn/presentation-publishing'; import { SortOrder } from '@kbn/saved-search-plugin/public'; import { SearchResponseIncompleteWarning } from '@kbn/search-response-warnings/src/types'; -import { columnActions, DataLoadingState } from '@kbn/unified-data-table'; +import { columnActions, DataGridDensity, DataLoadingState } from '@kbn/unified-data-table'; import { DocViewFilterFn } from '@kbn/unified-doc-viewer/types'; import { DiscoverDocTableEmbeddable } from '../../components/doc_table/create_doc_table_embeddable'; @@ -137,6 +137,9 @@ export function SearchEmbeddableGridComponent({ onUpdateSampleSize: (newSampleSize: number | undefined) => { stateManager.sampleSize.next(newSampleSize); }, + onUpdateDataGridDensity: (newDensity: DataGridDensity | undefined) => { + stateManager.density.next(newDensity); + }, }), [stateManager, savedSearch.columns] ); @@ -194,6 +197,7 @@ export function SearchEmbeddableGridComponent({ searchTitle={panelTitle || savedSearchTitle} services={discoverServices} showTimeCol={!discoverServices.uiSettings.get(DOC_HIDE_TIME_COLUMN_SETTING, false)} + dataGridDensityState={savedSearch.density} /> ); } diff --git a/src/plugins/discover/public/embeddable/constants.ts b/src/plugins/discover/public/embeddable/constants.ts index 7ada36e3a005d..2574c7abf2a8e 100644 --- a/src/plugins/discover/public/embeddable/constants.ts +++ b/src/plugins/discover/public/embeddable/constants.ts @@ -31,6 +31,7 @@ export const EDITABLE_SAVED_SEARCH_KEYS: Readonly(initialState.rowHeight); const rowsPerPage$ = new BehaviorSubject(initialState.rowsPerPage); const sampleSize$ = new BehaviorSubject(initialState.sampleSize); + const density$ = new BehaviorSubject(initialState.density); const sort$ = new BehaviorSubject(initialState.sort); const savedSearchViewMode$ = new BehaviorSubject(initialState.viewMode); @@ -129,6 +130,7 @@ export const initializeSearchEmbeddableApi = async ( sort: sort$, totalHitCount: totalHitCount$, viewMode: savedSearchViewMode$, + density: density$, }; /** The saved search should be the source of truth for all state */ @@ -197,6 +199,7 @@ export const initializeSearchEmbeddableApi = async ( ], viewMode: [savedSearchViewMode$, (value) => savedSearchViewMode$.next(value)], grid: [grid$, (value) => grid$.next(value)], + density: [density$, (value) => density$.next(value)], }, }; }; diff --git a/src/plugins/discover/public/embeddable/types.ts b/src/plugins/discover/public/embeddable/types.ts index 8ff429e6476f9..70a929d1dee60 100644 --- a/src/plugins/discover/public/embeddable/types.ts +++ b/src/plugins/discover/public/embeddable/types.ts @@ -41,6 +41,7 @@ export type SearchEmbeddableState = Pick< | 'sampleSize' | 'viewMode' | 'grid' + | 'density' > & { rows: DataTableRecord[]; columnsMeta: DataTableColumnsMeta | undefined; diff --git a/src/plugins/saved_search/common/content_management/v1/cm_services.ts b/src/plugins/saved_search/common/content_management/v1/cm_services.ts index ef9d24bb8722d..7a3f8eb6d5e9d 100644 --- a/src/plugins/saved_search/common/content_management/v1/cm_services.ts +++ b/src/plugins/saved_search/common/content_management/v1/cm_services.ts @@ -72,6 +72,13 @@ const savedSearchAttributesSchema = schema.object( max: MAX_SAVED_SEARCH_SAMPLE_SIZE, }) ), + density: schema.maybe( + schema.oneOf([ + schema.literal('compact'), + schema.literal('normal'), + schema.literal('expanded'), + ]) + ), breakdownField: schema.maybe(schema.string()), visContext: schema.maybe( schema.oneOf([ diff --git a/src/plugins/saved_search/common/saved_searches_utils.ts b/src/plugins/saved_search/common/saved_searches_utils.ts index 232d5286ba32a..1151830f0d8ab 100644 --- a/src/plugins/saved_search/common/saved_searches_utils.ts +++ b/src/plugins/saved_search/common/saved_searches_utils.ts @@ -46,5 +46,6 @@ export const fromSavedSearchAttributes = < sampleSize: attributes.sampleSize, breakdownField: attributes.breakdownField, visContext: attributes.visContext, + density: attributes.density, managed, } as ReturnType); diff --git a/src/plugins/saved_search/common/service/get_saved_searches.test.ts b/src/plugins/saved_search/common/service/get_saved_searches.test.ts index 6572d6addbbbb..4f7d288e185d5 100644 --- a/src/plugins/saved_search/common/service/get_saved_searches.test.ts +++ b/src/plugins/saved_search/common/service/get_saved_searches.test.ts @@ -88,6 +88,7 @@ describe('getSavedSearch', () => { "columns": Array [ "_source", ], + "density": undefined, "description": "description", "grid": Object {}, "headerRowHeight": undefined, @@ -197,6 +198,7 @@ describe('getSavedSearch', () => { "columns": Array [ "_source", ], + "density": undefined, "description": "description", "grid": Object {}, "headerRowHeight": undefined, diff --git a/src/plugins/saved_search/common/service/saved_searches_utils.test.ts b/src/plugins/saved_search/common/service/saved_searches_utils.test.ts index ce8c073dd27c9..96845d7fea7fb 100644 --- a/src/plugins/saved_search/common/service/saved_searches_utils.test.ts +++ b/src/plugins/saved_search/common/service/saved_searches_utils.test.ts @@ -47,6 +47,7 @@ describe('saved_searches_utils', () => { "a", "b", ], + "density": undefined, "description": "foo", "grid": Object {}, "headerRowHeight": undefined, @@ -124,6 +125,7 @@ describe('saved_searches_utils', () => { "c", "d", ], + "density": undefined, "description": "description", "grid": Object {}, "headerRowHeight": undefined, diff --git a/src/plugins/saved_search/common/service/saved_searches_utils.ts b/src/plugins/saved_search/common/service/saved_searches_utils.ts index 866b9876d4dd4..24fcda3255a8c 100644 --- a/src/plugins/saved_search/common/service/saved_searches_utils.ts +++ b/src/plugins/saved_search/common/service/saved_searches_utils.ts @@ -52,6 +52,7 @@ export const toSavedSearchAttributes = ( refreshInterval: savedSearch.refreshInterval, rowsPerPage: savedSearch.rowsPerPage, sampleSize: savedSearch.sampleSize, + density: savedSearch.density, breakdownField: savedSearch.breakdownField, visContext: savedSearch.visContext, }); diff --git a/src/plugins/saved_search/common/types.ts b/src/plugins/saved_search/common/types.ts index fe41fd66042fe..4c5bab04705e5 100644 --- a/src/plugins/saved_search/common/types.ts +++ b/src/plugins/saved_search/common/types.ts @@ -15,6 +15,7 @@ import type { import type { SavedObjectReference } from '@kbn/core-saved-objects-server'; import type { SavedObjectsResolveResponse } from '@kbn/core/server'; import type { SerializableRecord } from '@kbn/utility-types'; +import type { DataGridDensity } from '@kbn/unified-data-table'; import { VIEW_MODE } from '.'; export interface DiscoverGridSettings extends SerializableRecord { @@ -64,6 +65,7 @@ export interface SavedSearchAttributes { rowsPerPage?: number; sampleSize?: number; breakdownField?: string; + density?: DataGridDensity; visContext?: VisContextUnmapped; } diff --git a/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts b/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts index a319188a49f63..968c29831e73b 100644 --- a/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts +++ b/src/plugins/saved_search/public/services/saved_searches/to_saved_search.test.ts @@ -52,72 +52,73 @@ describe('toSavedSearch', () => { }; const savedSearch = await byValueToSavedSearch({ attributes }, mockServices); expect(savedSearch).toMatchInlineSnapshot(` - Object { - "breakdownField": undefined, - "columns": Array [ - "message", - "extension", - ], - "description": "", - "grid": Object {}, - "headerRowHeight": undefined, - "hideAggregatedPreview": undefined, - "hideChart": false, - "id": undefined, - "isTextBasedQuery": false, - "managed": false, - "references": Array [ - Object { - "id": "1", - "name": "ref_0", - "type": "index-pattern", - }, - ], - "refreshInterval": undefined, - "rowHeight": undefined, - "rowsPerPage": undefined, - "sampleSize": undefined, - "searchSource": Object { - "create": [MockFunction], - "createChild": [MockFunction], - "createCopy": [MockFunction], - "destroy": [MockFunction], - "fetch": [MockFunction], - "fetch$": [MockFunction], - "getActiveIndexFilter": [MockFunction], - "getField": [MockFunction], - "getFields": [MockFunction], - "getId": [MockFunction], - "getOwnField": [MockFunction], - "getParent": [MockFunction], - "getSearchRequestBody": [MockFunction], - "getSerializedFields": [MockFunction], - "history": Array [], - "loadDataViewFields": [MockFunction], - "onRequestStart": [MockFunction], - "parseActiveIndexPatternFromQueryString": [MockFunction], - "removeField": [MockFunction], - "serialize": [MockFunction], - "setField": [MockFunction], - "setOverwriteDataViewType": [MockFunction], - "setParent": [MockFunction], - "toExpressionAst": [MockFunction], + Object { + "breakdownField": undefined, + "columns": Array [ + "message", + "extension", + ], + "density": undefined, + "description": "", + "grid": Object {}, + "headerRowHeight": undefined, + "hideAggregatedPreview": undefined, + "hideChart": false, + "id": undefined, + "isTextBasedQuery": false, + "managed": false, + "references": Array [ + Object { + "id": "1", + "name": "ref_0", + "type": "index-pattern", }, - "sharingSavedObjectProps": undefined, - "sort": Array [ - Array [ - "@timestamp", - "desc", - ], + ], + "refreshInterval": undefined, + "rowHeight": undefined, + "rowsPerPage": undefined, + "sampleSize": undefined, + "searchSource": Object { + "create": [MockFunction], + "createChild": [MockFunction], + "createCopy": [MockFunction], + "destroy": [MockFunction], + "fetch": [MockFunction], + "fetch$": [MockFunction], + "getActiveIndexFilter": [MockFunction], + "getField": [MockFunction], + "getFields": [MockFunction], + "getId": [MockFunction], + "getOwnField": [MockFunction], + "getParent": [MockFunction], + "getSearchRequestBody": [MockFunction], + "getSerializedFields": [MockFunction], + "history": Array [], + "loadDataViewFields": [MockFunction], + "onRequestStart": [MockFunction], + "parseActiveIndexPatternFromQueryString": [MockFunction], + "removeField": [MockFunction], + "serialize": [MockFunction], + "setField": [MockFunction], + "setOverwriteDataViewType": [MockFunction], + "setParent": [MockFunction], + "toExpressionAst": [MockFunction], + }, + "sharingSavedObjectProps": undefined, + "sort": Array [ + Array [ + "@timestamp", + "desc", ], - "tags": undefined, - "timeRange": undefined, - "timeRestore": undefined, - "title": "saved-search-title", - "usesAdHocDataView": undefined, - "viewMode": undefined, - "visContext": undefined, - } - `); + ], + "tags": undefined, + "timeRange": undefined, + "timeRestore": undefined, + "title": "saved-search-title", + "usesAdHocDataView": undefined, + "viewMode": undefined, + "visContext": undefined, + } + `); }); }); diff --git a/src/plugins/saved_search/server/content_management/saved_search_storage.ts b/src/plugins/saved_search/server/content_management/saved_search_storage.ts index d3ff8633637d2..3982bca7cf932 100644 --- a/src/plugins/saved_search/server/content_management/saved_search_storage.ts +++ b/src/plugins/saved_search/server/content_management/saved_search_storage.ts @@ -45,6 +45,7 @@ export class SavedSearchStorage extends SOContentStorage { 'rowsPerPage', 'breakdownField', 'sampleSize', + 'density', 'visContext', ], logger, diff --git a/src/plugins/saved_search/server/saved_objects/schema.ts b/src/plugins/saved_search/server/saved_objects/schema.ts index 125ddcceb320c..effbc6f7eeb24 100644 --- a/src/plugins/saved_search/server/saved_objects/schema.ts +++ b/src/plugins/saved_search/server/saved_objects/schema.ts @@ -129,3 +129,9 @@ export const SCHEMA_SEARCH_MODEL_VERSION_4 = SCHEMA_SEARCH_MODEL_VERSION_3.exten ]) ), }); + +export const SCHEMA_SEARCH_MODEL_VERSION_5 = SCHEMA_SEARCH_MODEL_VERSION_4.extends({ + density: schema.maybe( + schema.oneOf([schema.literal('compact'), schema.literal('normal'), schema.literal('expanded')]) + ), +}); diff --git a/src/plugins/saved_search/server/saved_objects/search.ts b/src/plugins/saved_search/server/saved_objects/search.ts index 925a4dd66b180..1295b4b378d98 100644 --- a/src/plugins/saved_search/server/saved_objects/search.ts +++ b/src/plugins/saved_search/server/saved_objects/search.ts @@ -16,6 +16,7 @@ import { SCHEMA_SEARCH_MODEL_VERSION_2, SCHEMA_SEARCH_MODEL_VERSION_3, SCHEMA_SEARCH_MODEL_VERSION_4, + SCHEMA_SEARCH_MODEL_VERSION_5, } from './schema'; export function getSavedSearchObjectType( @@ -70,6 +71,13 @@ export function getSavedSearchObjectType( create: SCHEMA_SEARCH_MODEL_VERSION_4, }, }, + 5: { + changes: [], + schemas: { + forwardCompatibility: SCHEMA_SEARCH_MODEL_VERSION_5.extends({}, { unknowns: 'ignore' }), + create: SCHEMA_SEARCH_MODEL_VERSION_5, + }, + }, }, mappings: { dynamic: false, diff --git a/src/plugins/saved_search/tsconfig.json b/src/plugins/saved_search/tsconfig.json index 7100affb2e0c3..f96d7b385aa2c 100644 --- a/src/plugins/saved_search/tsconfig.json +++ b/src/plugins/saved_search/tsconfig.json @@ -28,6 +28,7 @@ "@kbn/utility-types", "@kbn/search-types", "@kbn/discover-utils", + "@kbn/unified-data-table", ], "exclude": ["target/**/*"] } diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/__snapshots__/table_cell_actions.test.tsx.snap b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/__snapshots__/table_cell_actions.test.tsx.snap index bbc8ee91569ad..aecef4797f9bd 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/__snapshots__/table_cell_actions.test.tsx.snap +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/__snapshots__/table_cell_actions.test.tsx.snap @@ -43,95 +43,10 @@ Array [ } } />, - , ] `; -exports[`TableActions getFieldCellActions should render correctly for undefined functions 2`] = ` -Array [ - , -] -`; +exports[`TableActions getFieldCellActions should render correctly for undefined functions 2`] = `Array []`; exports[`TableActions getFieldCellActions should render the panels correctly for defined onFilter function 1`] = ` Array [ @@ -217,47 +132,6 @@ Array [ } } />, - , ] `; diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/get_pin_control.test.tsx b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/get_pin_control.test.tsx new file mode 100644 index 0000000000000..74282a52b86c4 --- /dev/null +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/get_pin_control.test.tsx @@ -0,0 +1,63 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import { DataViewField } from '@kbn/data-views-plugin/common'; +import { TableRow } from './table_cell_actions'; +import { getPinColumnControl } from './get_pin_control'; +import { EuiDataGridCellValueElementProps } from '@elastic/eui/src/components/datagrid/data_grid_types'; + +describe('getPinControl', () => { + const rows: TableRow[] = [ + { + action: { + onFilter: jest.fn(), + flattenedField: 'flattenedField', + onToggleColumn: jest.fn(), + }, + field: { + pinned: true, + onTogglePinned: jest.fn(), + field: 'message', + fieldMapping: new DataViewField({ + type: 'keyword', + name: 'message', + searchable: true, + aggregatable: true, + }), + fieldType: 'keyword', + displayName: 'message', + scripted: false, + }, + value: { + ignored: undefined, + formattedValue: 'test', + }, + }, + ]; + + it('should render correctly', () => { + const control = getPinColumnControl({ rows }); + const Cell = control.rowCellRender as React.FC; + render( + + ); + + screen.getByTestId('unifiedDocViewer_pinControlButton_message').click(); + + expect(rows[0].field.onTogglePinned).toHaveBeenCalledWith('message'); + }); +}); diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/get_pin_control.tsx b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/get_pin_control.tsx new file mode 100644 index 0000000000000..0a2c45611dcdf --- /dev/null +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/get_pin_control.tsx @@ -0,0 +1,86 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not 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 { + EuiButtonIcon, + EuiDataGridControlColumn, + EuiScreenReaderOnly, + EuiToolTip, + useEuiTheme, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { css } from '@emotion/react'; +import type { TableRow } from './table_cell_actions'; + +interface PinControlCellProps { + row: TableRow; +} + +const PinControlCell: React.FC = React.memo(({ row }) => { + const { euiTheme } = useEuiTheme(); + + const fieldName = row.field.field; + const isPinned = row.field.pinned; + const label = isPinned + ? i18n.translate('unifiedDocViewer.docViews.table.unpinFieldLabel', { + defaultMessage: 'Unpin field', + }) + : i18n.translate('unifiedDocViewer.docViews.table.pinFieldLabel', { + defaultMessage: 'Pin field', + }); + + return ( +
+ + { + row.field.onTogglePinned(fieldName); + }} + /> + +
+ ); +}); + +export const getPinColumnControl = ({ rows }: { rows: TableRow[] }): EuiDataGridControlColumn => { + return { + id: 'pin_field', + width: 32, + headerCellRender: () => ( + + + {i18n.translate('unifiedDocViewer.fieldsTable.pinControlColumnHeader', { + defaultMessage: 'Pin field column', + })} + + + ), + rowCellRender: ({ rowIndex }) => { + const row = rows[rowIndex]; + if (!row) { + return null; + } + return ; + }, + }; +}; diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss index 91022cc47faf8..330cf364ae55e 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.scss @@ -80,8 +80,26 @@ background-color: tintOrShade($euiColorLightShade, 50%, 0); } - & .euiDataGridRowCell--firstColumn .euiDataGridRowCell__content { + & [data-gridcell-column-id='name'] .euiDataGridRowCell__content { padding-top: 0; padding-bottom: 0; } + + & [data-gridcell-column-id='pin_field'] .euiDataGridRowCell__content { + padding: $euiSizeXS / 2 0 0 $euiSizeXS; + } + + .kbnDocViewer__fieldsGrid__pinAction { + opacity: 0; + } + + & [data-gridcell-column-id='pin_field']:focus-within { + .kbnDocViewer__fieldsGrid__pinAction { + opacity: 1; + } + } + + .euiDataGridRow:hover .kbnDocViewer__fieldsGrid__pinAction { + opacity: 1; + } } diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.tsx b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.tsx index 64659877910a7..008149966c49d 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.tsx +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table.tsx @@ -53,6 +53,7 @@ import { } from '../doc_viewer_source/get_height'; import { TableFilters, TableFiltersProps, useTableFilters } from './table_filters'; import { TableCell } from './table_cell'; +import { getPinColumnControl } from './get_pin_control'; export type FieldRecord = TableRow; @@ -295,6 +296,10 @@ export const DocViewerTable = ({ const rows = useMemo(() => [...pinnedItems, ...restItems], [pinnedItems, restItems]); + const leadingControlColumns = useMemo(() => { + return [getPinColumnControl({ rows })]; + }, [rows]); + const { curPageIndex, pageSize, totalPages, changePageIndex, changePageSize } = usePager({ initialPageSize: getPageSize(storage), totalItems: rows.length, @@ -492,6 +497,7 @@ export const DocViewerTable = ({ renderCellValue={renderCellValue} renderCellPopover={renderCellPopover} pagination={pagination} + leadingControlColumns={leadingControlColumns} /> diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table_cell.tsx b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table_cell.tsx index 094050f2c3b49..ff1027a848cf5 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table_cell.tsx +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table_cell.tsx @@ -33,7 +33,7 @@ export const TableCell: React.FC = React.memo( const { action: { flattenedField }, - field: { field, fieldMapping, fieldType, scripted, pinned }, + field: { field, fieldMapping, fieldType, scripted }, value: { formattedValue, ignored }, } = row; @@ -49,7 +49,6 @@ export const TableCell: React.FC = React.memo( fieldMapping?.displayName ?? field, searchTerm )} - isPinned={pinned} /> {isDetails && !!fieldMapping ? ( diff --git a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table_cell_actions.tsx b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table_cell_actions.tsx index 7814405e09201..b5e27837f44ef 100644 --- a/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table_cell_actions.tsx +++ b/src/plugins/unified_doc_viewer/public/components/doc_viewer_table/table_cell_actions.tsx @@ -202,38 +202,6 @@ export const FilterExist: React.FC = ({ Component, row }) => ); }; -export const PinToggle: React.FC = ({ Component, row }) => { - if (!row) { - return null; - } - - const { - field: { field, pinned, onTogglePinned }, - } = row; - - // Pinned - const pinnedLabel = pinned - ? i18n.translate('unifiedDocViewer.docViews.table.unpinFieldLabel', { - defaultMessage: 'Unpin field', - }) - : i18n.translate('unifiedDocViewer.docViews.table.pinFieldLabel', { - defaultMessage: 'Pin field', - }); - const pinnedIconType = pinned ? 'pinFilled' : 'pin'; - - return ( - onTogglePinned(field)} - > - {pinnedLabel} - - ); -}; - export const ToggleColumn: React.FC = ({ Component, row }) => { if (!row) { return null; @@ -293,9 +261,6 @@ export function getFieldCellActions({ }, ] : []), - ({ Component, rowIndex }: EuiDataGridColumnCellActionProps) => { - return ; - }, ]; } diff --git a/src/plugins/unified_search/public/dataview_picker/change_dataview.test.tsx b/src/plugins/unified_search/public/dataview_picker/change_dataview.test.tsx index 842d57a1c5a0a..e3e2f30ec5d68 100644 --- a/src/plugins/unified_search/public/dataview_picker/change_dataview.test.tsx +++ b/src/plugins/unified_search/public/dataview_picker/change_dataview.test.tsx @@ -17,7 +17,7 @@ import { indexPatternEditorPluginMock as dataViewEditorPluginMock } from '@kbn/d import { ChangeDataView } from './change_dataview'; import { DataViewSelector } from './data_view_selector'; import { dataViewMock, dataViewMockEsql } from './mocks/dataview'; -import { DataViewPickerPropsExtended } from './data_view_picker'; +import { DataViewPickerProps } from './data_view_picker'; describe('DataView component', () => { const createMockWebStorage = () => ({ @@ -43,7 +43,7 @@ describe('DataView component', () => { }; function wrapDataViewComponentInContext( - testProps: DataViewPickerPropsExtended, + testProps: DataViewPickerProps, storageValue: boolean, uiSettingValue: boolean = false ) { @@ -75,7 +75,7 @@ describe('DataView component', () => { ); } - let props: DataViewPickerPropsExtended; + let props: DataViewPickerProps; beforeEach(() => { props = { currentDataViewId: 'dataview-1', diff --git a/src/plugins/unified_search/public/dataview_picker/change_dataview.tsx b/src/plugins/unified_search/public/dataview_picker/change_dataview.tsx index cc5242d212872..8c54b6be95fd3 100644 --- a/src/plugins/unified_search/public/dataview_picker/change_dataview.tsx +++ b/src/plugins/unified_search/public/dataview_picker/change_dataview.tsx @@ -24,10 +24,9 @@ import { EuiButtonEmpty, } from '@elastic/eui'; import { useKibana } from '@kbn/kibana-react-plugin/public'; -import { getLanguageDisplayName } from '@kbn/es-query'; import type { DataView } from '@kbn/data-views-plugin/public'; import type { IUnifiedSearchPluginServices } from '../types'; -import { type DataViewPickerPropsExtended } from './data_view_picker'; +import { type DataViewPickerProps } from './data_view_picker'; import type { DataViewListItemEnhanced } from './dataview_list'; import adhoc from './assets/adhoc.svg'; import { changeDataViewStyles } from './change_dataview.styles'; @@ -53,18 +52,13 @@ export function ChangeDataView({ onDataViewCreated, trigger, selectableProps, - textBasedLanguage, isDisabled, onEditDataView, onCreateDefaultAdHocDataView, -}: DataViewPickerPropsExtended) { +}: DataViewPickerProps) { const { euiTheme } = useEuiTheme(); const [isPopoverOpen, setPopoverIsOpen] = useState(false); const [dataViewsList, setDataViewsList] = useState([]); - const [triggerLabel, setTriggerLabel] = useState(''); - const [isTextBasedLangSelected, setIsTextBasedLangSelected] = useState( - Boolean(textBasedLanguage) - ); const kibana = useKibana(); const { application, data, dataViews, dataViewEditor } = kibana.services; @@ -91,20 +85,6 @@ export function ChangeDataView({ fetchDataViews(); }, [data, currentDataViewId, adHocDataViews, savedDataViews]); - useEffect(() => { - if (textBasedLanguage) { - setTriggerLabel(getLanguageDisplayName(textBasedLanguage)); - } else { - setTriggerLabel(trigger.label); - } - }, [textBasedLanguage, trigger.label]); - - useEffect(() => { - if (Boolean(textBasedLanguage) !== isTextBasedLangSelected) { - setIsTextBasedLangSelected(Boolean(textBasedLanguage)); - } - }, [isTextBasedLangSelected, textBasedLanguage]); - const isAdHocSelected = useMemo(() => { return adHocDataViews?.some((dataView) => dataView.id === currentDataViewId); }, [adHocDataViews, currentDataViewId]); @@ -121,14 +101,14 @@ export function ChangeDataView({ color={isMissingCurrent ? 'danger' : 'text'} iconSide="right" iconType="arrowDown" - title={triggerLabel} + title={trigger.label} disabled={isDisabled} textProps={{ className: 'eui-textTruncate' }} {...rest} > <> {/* we don't want to display the adHoc icon on text based mode */} - {isAdHocSelected && !isTextBasedLangSelected && ( + {isAdHocSelected && ( )} - {triggerLabel} + {trigger.label} ); @@ -256,45 +236,43 @@ export function ChangeDataView({ return ( - {!isTextBasedLangSelected && ( - <> - - - - {i18n.translate('unifiedSearch.query.queryBar.esqlMenu.switcherLabelTitle', { - defaultMessage: 'Data view', - })} - - setPopoverIsOpen(false)} - panelPaddingSize="none" - initialFocus={`#${searchListInputId}`} - display="block" - buffer={8} - > -
- -
-
-
-
- - )} + <> + + + + {i18n.translate('unifiedSearch.query.queryBar.esqlMenu.switcherLabelTitle', { + defaultMessage: 'Data view', + })} + + setPopoverIsOpen(false)} + panelPaddingSize="none" + initialFocus={`#${searchListInputId}`} + display="block" + buffer={8} + > +
+ +
+
+
+
+
); } diff --git a/src/plugins/unified_search/public/dataview_picker/data_view_picker.tsx b/src/plugins/unified_search/public/dataview_picker/data_view_picker.tsx index ab13f5c1a257b..e79a4e45666a4 100644 --- a/src/plugins/unified_search/public/dataview_picker/data_view_picker.tsx +++ b/src/plugins/unified_search/public/dataview_picker/data_view_picker.tsx @@ -76,13 +76,6 @@ export interface DataViewPickerProps { isDisabled?: boolean; } -export interface DataViewPickerPropsExtended extends DataViewPickerProps { - /** - * Text based language that is currently selected; depends on the query - */ - textBasedLanguage?: string; -} - export const DataViewPicker = ({ isMissingCurrent, currentDataViewId, @@ -95,10 +88,9 @@ export const DataViewPicker = ({ trigger, selectableProps, textBasedLanguages, - textBasedLanguage, onCreateDefaultAdHocDataView, isDisabled, -}: DataViewPickerPropsExtended) => { +}: DataViewPickerProps) => { return ( ); diff --git a/src/plugins/unified_search/public/query_string_input/esql_menu_popover.test.tsx b/src/plugins/unified_search/public/query_string_input/esql_menu_popover.test.tsx new file mode 100644 index 0000000000000..3234e08bddc6e --- /dev/null +++ b/src/plugins/unified_search/public/query_string_input/esql_menu_popover.test.tsx @@ -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 React from 'react'; +import { screen, render } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { KibanaContextProvider } from '@kbn/kibana-react-plugin/public'; +import { coreMock } from '@kbn/core/public/mocks'; +import { ESQLMenuPopover } from './esql_menu_popover'; + +describe('ESQLMenuPopover', () => { + const renderESQLPopover = () => { + const startMock = coreMock.createStart(); + const services = { + docLinks: startMock.docLinks, + }; + return render( + + {' '} + + ); + }; + + it('should render a button', () => { + renderESQLPopover(); + expect(screen.getByTestId('esql-menu-button')).toBeInTheDocument(); + }); + + it('should open a menu when the popover is open', () => { + renderESQLPopover(); + expect(screen.getByTestId('esql-menu-button')).toBeInTheDocument(); + userEvent.click(screen.getByRole('button')); + + expect(screen.getByTestId('esql-examples')).toBeInTheDocument(); + expect(screen.getByTestId('esql-about')).toBeInTheDocument(); + expect(screen.getByTestId('esql-feedback')).toBeInTheDocument(); + }); +}); diff --git a/src/plugins/unified_search/public/query_string_input/esql_menu_popover.tsx b/src/plugins/unified_search/public/query_string_input/esql_menu_popover.tsx new file mode 100644 index 0000000000000..f2c8b5f7798d5 --- /dev/null +++ b/src/plugins/unified_search/public/query_string_input/esql_menu_popover.tsx @@ -0,0 +1,95 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { useMemo, useState } from 'react'; +import { + EuiPopover, + EuiButton, + EuiContextMenuPanel, + type EuiContextMenuPanelProps, + EuiContextMenuItem, + EuiHorizontalRule, +} from '@elastic/eui'; +import { useKibana } from '@kbn/kibana-react-plugin/public'; +import { i18n } from '@kbn/i18n'; +import { FEEDBACK_LINK } from '@kbn/esql-utils'; +import type { IUnifiedSearchPluginServices } from '../types'; + +export const ESQLMenuPopover = () => { + const kibana = useKibana(); + + const { docLinks } = kibana.services; + const [isESQLMenuPopoverOpen, setIsESQLMenuPopoverOpen] = useState(false); + const esqlPanelItems = useMemo(() => { + const panelItems: EuiContextMenuPanelProps['items'] = []; + panelItems.push( + + {i18n.translate('unifiedSearch.query.queryBar.esqlMenu.documentation', { + defaultMessage: 'Documentation', + })} + , + + {i18n.translate('unifiedSearch.query.queryBar.esqlMenu.documentation', { + defaultMessage: 'Example queries', + })} + , + , + + {i18n.translate('unifiedSearch.query.queryBar.esqlMenu.documentation', { + defaultMessage: 'Submit feedback', + })} + + ); + return panelItems; + }, [docLinks.links.query.queryESQL, docLinks.links.query.queryESQLExamples]); + + return ( + setIsESQLMenuPopoverOpen(!isESQLMenuPopoverOpen)} + data-test-subj="esql-menu-button" + size="s" + > + {i18n.translate('unifiedSearch.query.queryBar.esqlMenu.label', { + defaultMessage: 'ES|QL help', + })} + + } + panelProps={{ + ['data-test-subj']: 'esql-menu-popover', + css: { width: 240 }, + }} + isOpen={isESQLMenuPopoverOpen} + closePopover={() => setIsESQLMenuPopoverOpen(false)} + panelPaddingSize="s" + display="block" + > + + + ); +}; diff --git a/src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx b/src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx index 199dad13d4c19..c685af3336551 100644 --- a/src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx +++ b/src/plugins/unified_search/public/query_string_input/query_bar_top_row.tsx @@ -50,6 +50,7 @@ import { NoDataPopover } from './no_data_popover'; import { shallowEqual } from '../utils/shallow_equal'; import { AddFilterPopover } from './add_filter_popover'; import { DataViewPicker, DataViewPickerProps } from '../dataview_picker'; +import { ESQLMenuPopover } from './esql_menu_popover'; import { FilterButtonGroup } from '../filter_bar/filter_button_group/filter_button_group'; import type { @@ -623,22 +624,17 @@ export const QueryBarTopRow = React.memo( } function renderDataViewsPicker() { - if (!props.dataViewPickerComponentProps) return; - let textBasedLanguage; - if (Boolean(isQueryLangSelected)) { - const query = props.query as AggregateQuery; - textBasedLanguage = getAggregateQueryMode(query); + if (props.dataViewPickerComponentProps && !Boolean(isQueryLangSelected)) { + return ( + + + + ); } - return ( - - - - ); } function renderAddButton() { @@ -772,12 +768,12 @@ export const QueryBarTopRow = React.memo( padding: ${isQueryLangSelected && !props.disableExternalPadding ? euiTheme.size.s : 0}; - padding-bottom: 0; `} justifyContent={shouldShowDatePickerAsBadge() ? 'flexStart' : 'flexEnd'} wrap > {props.dataViewPickerOverride || renderDataViewsPicker()} + {Boolean(isQueryLangSelected) && } { + const onChange = jest.fn(); const defaultProps: ColorPickerProps = { name: 'color', value: null, - onChange: jest.fn(), + onChange, disableTrash: true, }; - let component: ReactWrapper; + + const renderColorPicker = (props?: Partial) => + render(); + + afterEach(() => { + jest.clearAllMocks(); + }); it('should render the EuiColorPicker', () => { - component = mount(); - expect(component.find(EuiColorPicker).length).toBe(1); + renderColorPicker(); + expect(screen.getByTestId('tvbColorPicker')).toBeInTheDocument(); }); it('should not render the clear button', () => { - component = mount(); - expect(findTestSubject(component, 'tvbColorPickerClear').length).toBe(0); + renderColorPicker(); + expect(screen.queryByTestId('tvbColorPickerClear')).toBeNull(); }); - it('should render the correct value to the input text if the prop value is hex', () => { - const props = { ...defaultProps, value: '#68BC00' }; - component = mount(); - findTestSubject(component, 'tvbColorPicker').find('button').simulate('click'); - const input = findTestSubject(component, 'euiColorPickerInput_top'); - expect(input.props().value).toBe('#68BC00'); + it('should render incorrect value to the input text but not call onChange prop', () => { + renderColorPicker({ value: '#68BC00' }); + fireEvent.click(screen.getByRole('button')); + fireEvent.change(screen.getAllByTestId('euiColorPickerInput_top')[0], { + target: { value: 'INVALID' }, + }); + expect(onChange).not.toHaveBeenCalled(); + expect(screen.getAllByTestId('euiColorPickerInput_top')[0]).toHaveValue('INVALID'); }); - - it('should render the correct value to the input text if the prop value is rgba', () => { - const props = { ...defaultProps, value: 'rgba(85,66,177,1)' }; - component = mount(); - findTestSubject(component, 'tvbColorPicker').find('button').simulate('click'); - const input = findTestSubject(component, 'euiColorPickerInput_top'); - expect(input.props().value).toBe('85,66,177,1'); + it('should render correct value to the input text and call onChange prop', () => { + renderColorPicker({ value: '#68BC00' }); + fireEvent.click(screen.getByRole('button')); + fireEvent.change(screen.getAllByTestId('euiColorPickerInput_top')[0], { + target: { value: '#FFF' }, + }); + expect(onChange).toHaveBeenCalled(); + expect(screen.getAllByTestId('euiColorPickerInput_top')[0]).toHaveValue('#FFF'); }); it('should render the correct aria label to the color swatch button', () => { - const props = { ...defaultProps, value: 'rgba(85,66,177,0.59)' }; - component = mount(); - const button = findTestSubject(component, 'tvbColorPicker').find('button'); - expect(button.prop('aria-label')).toBe('Color picker (rgba(85,66,177,0.59)), not accessible'); + renderColorPicker({ value: 'rgba(85,66,177,0.59)' }); + expect( + screen.getByLabelText('Color picker (rgba(85,66,177,0.59)), not accessible') + ).toBeInTheDocument(); }); it('should call clear function if the disableTrash prop is false', () => { - const props = { ...defaultProps, disableTrash: false, value: 'rgba(85,66,177,1)' }; - component = mount(); + const { container } = renderColorPicker({ disableTrash: false, value: 'rgba(85,66,177,1)' }); + fireEvent.click(screen.getByTestId('tvbColorPickerClear')); + expect(onChange).toHaveBeenCalled(); + expect(container.querySelector('[data-euiicon-type="cross"]')).toBeInTheDocument(); + }); - findTestSubject(component, 'tvbColorPickerClear').simulate('click'); + it('should render the correct value to the input text if the prop value is hex', () => { + renderColorPicker({ value: '#68BC00' }); + fireEvent.click(screen.getByRole('button')); + expect(screen.getAllByTestId('euiColorPickerInput_top')[0]).toHaveValue('#68BC00'); + }); - expect(component.find(EuiIconTip).length).toBe(1); - expect(defaultProps.onChange).toHaveBeenCalled(); + it('should render the correct value to the input text if the prop value is rgba', () => { + renderColorPicker({ value: 'rgba(85,66,177,1)' }); + fireEvent.click(screen.getByRole('button')); + expect(screen.getAllByTestId('euiColorPickerInput_top')[0]).toHaveValue('85,66,177,1'); }); }); diff --git a/src/plugins/vis_types/timeseries/public/application/components/color_picker.tsx b/src/plugins/vis_types/timeseries/public/application/components/color_picker.tsx index a44134dfa919c..474ce95412797 100644 --- a/src/plugins/vis_types/timeseries/public/application/components/color_picker.tsx +++ b/src/plugins/vis_types/timeseries/public/application/components/color_picker.tsx @@ -41,8 +41,14 @@ export function ColorPicker({ name, value, disableTrash = false, onChange }: Col const { euiTheme } = useEuiTheme(); - const handleColorChange: EuiColorPickerProps['onChange'] = (text: string, { rgba, hex }) => { + const handleColorChange: EuiColorPickerProps['onChange'] = ( + text: string, + { rgba, hex, isValid } + ) => { setColor(text); + if (!isValid) { + return; + } onChange({ [name]: hex ? `rgba(${rgba.join(',')})` : '' }); }; diff --git a/test/functional/apps/console/monaco/_console.ts b/test/functional/apps/console/monaco/_console.ts index 1c6afc39c5046..b48ba75529579 100644 --- a/test/functional/apps/console/monaco/_console.ts +++ b/test/functional/apps/console/monaco/_console.ts @@ -14,7 +14,6 @@ import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const log = getService('log'); - const toasts = getService('toasts'); const browser = getService('browser'); const PageObjects = getPageObjects(['common', 'console', 'header']); const security = getService('security'); @@ -58,12 +57,17 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(initialSize.width).to.be.greaterThan(afterSize.width); }); - it('should not send request with unsupported HTTP verbs', async () => { + it('should return statusCode 400 to unsupported HTTP verbs', async () => { + const expectedResponseContains = '"statusCode": 400'; await PageObjects.console.monaco.clearEditorText(); await PageObjects.console.monaco.enterText('OPTIONS /'); await PageObjects.console.clickPlay(); await retry.try(async () => { - expect(await toasts.getCount()).to.equal(1); + const actualResponse = await PageObjects.console.monaco.getOutputText(); + log.debug(actualResponse); + expect(actualResponse).to.contain(expectedResponseContains); + + expect(await PageObjects.console.hasSuccessBadge()).to.be(false); }); }); diff --git a/test/functional/apps/console/monaco/_context_menu.ts b/test/functional/apps/console/monaco/_context_menu.ts index 0fbcb123937db..1e95e74a851b1 100644 --- a/test/functional/apps/console/monaco/_context_menu.ts +++ b/test/functional/apps/console/monaco/_context_menu.ts @@ -133,15 +133,27 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await browser.switchTab(0); }); - // not implemented yet for monaco https://github.com/elastic/kibana/issues/185891 - it.skip('should toggle auto indent when auto indent button is clicked', async () => { - await PageObjects.console.clearTextArea(); - await PageObjects.console.enterRequest('GET _search\n{"query": {"match_all": {}}}'); + it('should auto indent when auto indent button is clicked', async () => { + await PageObjects.console.monaco.clearEditorText(); + await PageObjects.console.monaco.enterText('GET _search\n{"query": {"match_all": {}}}'); + await PageObjects.console.clickContextMenu(); + await PageObjects.console.clickAutoIndentButton(); + // Retry until the request is auto indented + await retry.try(async () => { + const request = await PageObjects.console.monaco.getEditorText(); + expect(request).to.be.eql('GET _search\n{\n "query": {\n "match_all": {}\n }\n}'); + }); + }); + + // not implemented for monaco yet https://github.com/elastic/kibana/issues/185891 + it.skip('should collapse the request when auto indent button is clicked again', async () => { + await PageObjects.console.monaco.clearEditorText(); + await PageObjects.console.monaco.enterText('GET _search\n{"query": {"match_all": {}}}'); await PageObjects.console.clickContextMenu(); await PageObjects.console.clickAutoIndentButton(); // Retry until the request is auto indented await retry.try(async () => { - const request = await PageObjects.console.getRequest(); + const request = await PageObjects.console.monaco.getEditorText(); expect(request).to.be.eql('GET _search\n{\n "query": {\n "match_all": {}\n }\n}'); }); @@ -150,7 +162,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await PageObjects.console.clickAutoIndentButton(); // Retry until the request is condensed await retry.try(async () => { - const request = await PageObjects.console.getRequest(); + const request = await PageObjects.console.monaco.getEditorText(); expect(request).to.be.eql('GET _search\n{"query":{"match_all":{}}}'); }); }); diff --git a/test/functional/apps/console/monaco/_misc_console_behavior.ts b/test/functional/apps/console/monaco/_misc_console_behavior.ts index f7ad2957c8411..f9b93872740ad 100644 --- a/test/functional/apps/console/monaco/_misc_console_behavior.ts +++ b/test/functional/apps/console/monaco/_misc_console_behavior.ts @@ -147,5 +147,34 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); }); + + describe('invalid requests', () => { + const invalidRequestText = 'GET _search\n{"query": {"match_all": {'; + it(`should not delete any text if indentations applied to an invalid request`, async () => { + await PageObjects.console.monaco.clearEditorText(); + await PageObjects.console.monaco.enterText(invalidRequestText); + await PageObjects.console.monaco.selectCurrentRequest(); + await PageObjects.console.monaco.pressCtrlI(); + // Sleep for a bit and then check that the text has not changed + await PageObjects.common.sleep(1000); + await retry.try(async () => { + const request = await PageObjects.console.monaco.getEditorText(); + expect(request).to.be.eql(invalidRequestText); + }); + }); + + it(`should include an invalid json when sending a request`, async () => { + await PageObjects.console.monaco.clearEditorText(); + await PageObjects.console.monaco.enterText(invalidRequestText); + await PageObjects.console.monaco.selectCurrentRequest(); + await PageObjects.console.monaco.pressCtrlEnter(); + + await retry.try(async () => { + const actualResponse = await PageObjects.console.monaco.getOutputText(); + expect(actualResponse).to.contain('parsing_exception'); + expect(await PageObjects.console.hasSuccessBadge()).to.be(false); + }); + }); + }); }); } diff --git a/test/functional/apps/discover/group2_data_grid3/_data_grid_density.ts b/test/functional/apps/discover/group2_data_grid3/_data_grid_density.ts new file mode 100644 index 0000000000000..45105fe907a0f --- /dev/null +++ b/test/functional/apps/discover/group2_data_grid3/_data_grid_density.ts @@ -0,0 +1,96 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../ftr_provider_context'; + +export default function ({ getService, getPageObjects }: FtrProviderContext) { + const browser = getService('browser'); + const esArchiver = getService('esArchiver'); + const kibanaServer = getService('kibanaServer'); + const dataGrid = getService('dataGrid'); + const testSubjects = getService('testSubjects'); + const PageObjects = getPageObjects(['settings', 'common', 'discover', 'header', 'timePicker']); + const defaultSettings = { defaultIndex: 'logstash-*' }; + const security = getService('security'); + + describe('discover data grid density', function () { + before(async () => { + await security.testUser.setRoles(['kibana_admin', 'test_logstash_reader']); + await browser.setWindowSize(1200, 2000); + await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover'); + }); + + after(async () => { + await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover'); + await kibanaServer.uiSettings.replace({}); + await kibanaServer.savedObjects.cleanStandardList(); + }); + + beforeEach(async function () { + await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings(); + await kibanaServer.uiSettings.update(defaultSettings); + await PageObjects.common.navigateToApp('discover'); + await PageObjects.discover.waitUntilSearchingHasFinished(); + }); + + it('should use the default density', async () => { + await dataGrid.clickGridSettings(); + const selected = await dataGrid.getCurrentDensityValue(); + expect(selected).to.be('Compact'); + }); + + it('should allow to change density', async () => { + await dataGrid.clickGridSettings(); + await dataGrid.changeDensityValue('Normal'); + + // toggle the popover + // Right now changing the density closes the popover (see packages/kbn-unified-data-table/src/components/data_table.tsx:1144) + // When that workaround is removed we will need to uncomment this next line + // await dataGrid.clickGridSettings(); + await dataGrid.clickGridSettings(); + expect(await dataGrid.getCurrentDensityValue()).to.be('Normal'); + }); + + it('should persist the density selection after reloading the page', async () => { + await dataGrid.clickGridSettings(); + await dataGrid.changeDensityValue('Expanded'); + await dataGrid.clickGridSettings(); + expect(await dataGrid.getCurrentDensityValue()).to.be('Expanded'); + + await browser.refresh(); + await PageObjects.discover.waitUntilSearchingHasFinished(); + + await dataGrid.clickGridSettings(); + expect(await dataGrid.getCurrentDensityValue()).to.be('Expanded'); + }); + + it('should save and revert unsaved densities properly', async () => { + // Open saved search + await PageObjects.discover.loadSavedSearch('A Saved Search'); + + // Change density + await dataGrid.clickGridSettings(); + await dataGrid.changeDensityValue('Expanded'); + await PageObjects.discover.saveUnsavedChanges(); + + // Change density + await dataGrid.clickGridSettings(); + await dataGrid.changeDensityValue('Normal'); + await testSubjects.existOrFail('unsavedChangesBadge'); + + // Revert change + await PageObjects.discover.revertUnsavedChanges(); + + // Verify density reset + await dataGrid.clickGridSettings(); + expect(await dataGrid.getCurrentDensityValue()).to.be('Expanded'); + }); + }); +} diff --git a/test/functional/apps/discover/group2_data_grid3/index.ts b/test/functional/apps/discover/group2_data_grid3/index.ts index b7a5e25a491b5..e3e0fd5b9d2be 100644 --- a/test/functional/apps/discover/group2_data_grid3/index.ts +++ b/test/functional/apps/discover/group2_data_grid3/index.ts @@ -25,5 +25,6 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./_data_grid_row_selection')); loadTestFile(require.resolve('./_data_grid_sample_size')); loadTestFile(require.resolve('./_data_grid_pagination')); + loadTestFile(require.resolve('./_data_grid_density')); }); } diff --git a/test/functional/apps/discover/group3/_doc_viewer.ts b/test/functional/apps/discover/group3/_doc_viewer.ts index 66f1f74a4ddbe..0464f2e4f32d5 100644 --- a/test/functional/apps/discover/group3/_doc_viewer.ts +++ b/test/functional/apps/discover/group3/_doc_viewer.ts @@ -24,10 +24,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const retry = getService('retry'); const dataGrid = getService('dataGrid'); const monacoEditor = getService('monacoEditor'); + const browser = getService('browser'); describe('discover doc viewer', function describeIndexTests() { before(async function () { await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional'); + await browser.setWindowSize(1600, 1200); }); beforeEach(async () => { @@ -174,7 +176,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(initialFieldsCount).to.above(numberFieldsCount); const pinnedFieldsCount = 1; - await dataGrid.clickFieldActionInFlyout('agent', 'togglePinFilterButton'); + await dataGrid.togglePinActionInFlyout('agent'); await PageObjects.discover.openFilterByFieldTypeInDocViewer(); expect(await find.allByCssSelector('[data-test-subj*="typeFilter"]')).to.have.length(6); @@ -229,5 +231,43 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); }); }); + + describe('pinning fields', function () { + it('should be able to pin and unpin fields', async function () { + await dataGrid.clickRowToggle(); + await PageObjects.discover.isShowingDocViewer(); + await retry.waitFor('rendered items', async () => { + return (await find.allByCssSelector('.kbnDocViewer__fieldName')).length > 0; + }); + + let fieldNameCells = await find.allByCssSelector('.kbnDocViewer__fieldName'); + let fieldNames = await Promise.all(fieldNameCells.map((cell) => cell.getVisibleText())); + + expect(fieldNames.join(',').startsWith('_id,_ignored,_index,_score,@message')).to.be(true); + expect(await dataGrid.isFieldPinnedInFlyout('agent')).to.be(false); + + await dataGrid.togglePinActionInFlyout('agent'); + + fieldNameCells = await find.allByCssSelector('.kbnDocViewer__fieldName'); + fieldNames = await Promise.all(fieldNameCells.map((cell) => cell.getVisibleText())); + expect(fieldNames.join(',').startsWith('agent,_id,_ignored')).to.be(true); + expect(await dataGrid.isFieldPinnedInFlyout('agent')).to.be(true); + + await dataGrid.togglePinActionInFlyout('@message'); + + fieldNameCells = await find.allByCssSelector('.kbnDocViewer__fieldName'); + fieldNames = await Promise.all(fieldNameCells.map((cell) => cell.getVisibleText())); + expect(fieldNames.join(',').startsWith('@message,agent,_id,_ignored')).to.be(true); + expect(await dataGrid.isFieldPinnedInFlyout('@message')).to.be(true); + + await dataGrid.togglePinActionInFlyout('@message'); + + fieldNameCells = await find.allByCssSelector('.kbnDocViewer__fieldName'); + fieldNames = await Promise.all(fieldNameCells.map((cell) => cell.getVisibleText())); + expect(fieldNames.join(',').startsWith('agent,_id,_ignored')).to.be(true); + expect(await dataGrid.isFieldPinnedInFlyout('agent')).to.be(true); + expect(await dataGrid.isFieldPinnedInFlyout('@message')).to.be(false); + }); + }); }); } diff --git a/test/functional/apps/discover/group5/_url_state.ts b/test/functional/apps/discover/group5/_url_state.ts index 099fbed1589a3..2516f2ed08659 100644 --- a/test/functional/apps/discover/group5/_url_state.ts +++ b/test/functional/apps/discover/group5/_url_state.ts @@ -179,6 +179,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'Sep 22, 2015 @ 20:40:22.952jpg1,576', 'Sep 22, 2015 @ 20:11:39.532png1,708', 'Sep 22, 2015 @ 19:45:13.813php1,406', + 'Sep 22, 2015 @ 19:40:17.903jpg1,557', ]); expect(await PageObjects.discover.getHitCount()).to.be(totalHitsForOneFilter); @@ -204,6 +205,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { 'Sep 22, 2015 @ 18:50:22.335css1,841', 'Sep 22, 2015 @ 18:40:32.329css1,945', 'Sep 22, 2015 @ 18:13:35.361css1,752', + 'Sep 22, 2015 @ 17:22:12.782css1,583', ]; expect(await dataGrid.getRowsText()).to.eql(filteredRows); diff --git a/test/functional/apps/visualize/group5/_tsvb_time_series.ts b/test/functional/apps/visualize/group5/_tsvb_time_series.ts index 55c59e38f359a..5e471b3ebb825 100644 --- a/test/functional/apps/visualize/group5/_tsvb_time_series.ts +++ b/test/functional/apps/visualize/group5/_tsvb_time_series.ts @@ -145,8 +145,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { expect(actualCountMin).to.be('3 hours'); }); - // FLAKY: https://github.com/elastic/kibana/issues/182136 - describe.skip('Dark mode', () => { + describe('Dark mode', () => { before(async () => { await kibanaServer.uiSettings.update({ 'theme:darkMode': true, @@ -156,7 +155,6 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { it(`viz should have light class when background color is white`, async () => { await visualBuilder.clickPanelOptions('timeSeries'); await visualBuilder.setBackgroundColor('#FFFFFF'); - await retry.try(async () => { expect(await visualBuilder.checkTimeSeriesIsLight()).to.be(true); }); diff --git a/test/functional/screenshots/baseline/dashboard_embed_mode_scrolling.png b/test/functional/screenshots/baseline/dashboard_embed_mode_scrolling.png index 94de1a1c3cc4f..2f5e437ade253 100644 Binary files a/test/functional/screenshots/baseline/dashboard_embed_mode_scrolling.png and b/test/functional/screenshots/baseline/dashboard_embed_mode_scrolling.png differ diff --git a/test/functional/services/data_grid.ts b/test/functional/services/data_grid.ts index 70a67d33ffd00..aa79b36260a96 100644 --- a/test/functional/services/data_grid.ts +++ b/test/functional/services/data_grid.ts @@ -512,6 +512,18 @@ export class DataGridService extends FtrService { await option.click(); } + public async getCurrentDensityValue() { + const buttonGroup = await this.testSubjects.find('densityButtonGroup'); + const selectedButton = await buttonGroup.findByCssSelector('[aria-pressed=true]'); + return selectedButton.getVisibleText(); + } + + public async changeDensityValue(newValue: string) { + const buttonGroup = await this.testSubjects.find('densityButtonGroup'); + const option = await buttonGroup.findByCssSelector(`[data-text="${newValue}"]`); + await option.click(); + } + private async findSampleSizeInput() { return await this.find.byCssSelector( 'input[type="number"][data-test-subj="unifiedDataTableSampleSizeInput"]' @@ -567,6 +579,24 @@ export class DataGridService extends FtrService { await this.testSubjects.click(`${actionName}-${fieldName}`); } + public async isFieldPinnedInFlyout(fieldName: string): Promise { + return !( + await this.testSubjects.getAttribute(`unifiedDocViewer_pinControl_${fieldName}`, 'class') + )?.includes('kbnDocViewer__fieldsGrid__pinAction'); + } + + public async togglePinActionInFlyout(fieldName: string): Promise { + await this.testSubjects.moveMouseTo(`unifiedDocViewer_pinControl_${fieldName}`); + const isPinned = await this.isFieldPinnedInFlyout(fieldName); + await this.retry.waitFor('pin action to appear', async () => { + return this.testSubjects.exists(`unifiedDocViewer_pinControlButton_${fieldName}`); + }); + await this.testSubjects.click(`unifiedDocViewer_pinControlButton_${fieldName}`); + await this.retry.waitFor('pin action to toggle', async () => { + return (await this.isFieldPinnedInFlyout(fieldName)) !== isPinned; + }); + } + public async expandFieldNameCellInFlyout(fieldName: string): Promise { const buttonSelector = 'euiDataGridCellExpandButton'; await this.testSubjects.click(`tableDocViewRow-${fieldName}-name`); diff --git a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts index 758c9f5b8e2cc..f1a994a37a24c 100644 --- a/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts +++ b/x-pack/packages/kbn-data-forge/src/data_sources/fake_stack/mongodb/ecs/index.ts @@ -21,7 +21,7 @@ const components = [ { name: `${MONGODB}_${ECS_VERSION}_base`, template: base }, { name: `${MONGODB}_${ECS_VERSION}_log`, template: log }, { name: `${MONGODB}_${ECS_VERSION}_host`, template: host }, - { name: `${MONGODB}_${ECS_VERSION}_host`, template: mongodb }, + { name: `${MONGODB}_${ECS_VERSION}_mongodb`, template: mongodb }, ]; export const indexTemplate: IndexTemplateDef = { diff --git a/x-pack/packages/kbn-entities-schema/oas.yaml b/x-pack/packages/kbn-entities-schema/oas.yaml new file mode 100644 index 0000000000000..35e6eafe6a43a --- /dev/null +++ b/x-pack/packages/kbn-entities-schema/oas.yaml @@ -0,0 +1,567 @@ +openapi: 3.1.0 +info: + title: Elastic Entity Model (EEM) API + version: v1 +components: + schemas: + createEntityDefinitionQuerySchema: + type: object + properties: + installOnly: + type: boolean + default: false + additionalProperties: false + getEntityDefinitionQuerySchema: + type: object + properties: + page: + type: number + perPage: + type: number + additionalProperties: false + resetEntityDefinitionParamsSchema: + type: object + properties: + id: + type: string + required: + - id + additionalProperties: false + deleteEntityDefinitionParamsSchema: + type: object + properties: + id: + type: string + required: + - id + additionalProperties: false + deleteEntityDefinitionQuerySchema: + type: object + properties: + deleteData: + type: boolean + default: false + additionalProperties: false + entityDefinitionSchema: + type: object + properties: + id: + type: string + pattern: ^[\w-]+$ + version: + type: string + name: + type: string + description: + type: string + type: + type: string + filter: + type: string + indexPatterns: + type: array + items: + type: string + identityFields: + type: array + items: + anyOf: + - type: object + properties: + field: + type: string + optional: + type: boolean + required: + - field + - optional + additionalProperties: false + - type: string + displayNameTemplate: + type: string + metadata: + type: array + items: + anyOf: + - type: object + properties: + source: + type: string + destination: + type: string + limit: + type: number + default: 1000 + required: + - source + additionalProperties: false + - type: string + metrics: + type: array + items: + type: object + properties: + name: + type: string + metrics: + type: array + items: + anyOf: + - type: object + properties: + name: + type: string + minLength: 1 + maxLength: 1 + pattern: "[a-zA-Z]" + aggregation: + type: string + enum: + - avg + - max + - min + - sum + - value_count + - cardinality + - last_value + - std_deviation + field: + type: string + filter: + type: string + required: + - name + - aggregation + - field + additionalProperties: false + - type: object + properties: + name: + type: string + minLength: 1 + maxLength: 1 + pattern: "[a-zA-Z]" + aggregation: + type: string + enum: + - doc_count + filter: + type: string + required: + - name + - aggregation + additionalProperties: false + - type: object + properties: + name: + type: string + minLength: 1 + maxLength: 1 + pattern: "[a-zA-Z]" + aggregation: + type: string + enum: + - percentile + field: + type: string + percentile: + type: number + filter: + type: string + required: + - name + - aggregation + - field + - percentile + additionalProperties: false + equation: + type: string + required: + - name + - metrics + - equation + additionalProperties: false + staticFields: + type: object + additionalProperties: + type: string + managed: + type: boolean + default: false + history: + type: object + properties: + timestampField: + type: string + interval: + type: string + pattern: ^\d+[m|d|s|h]$ + settings: + type: object + properties: + syncField: + type: string + syncDelay: + type: string + pattern: ^\d+[m|d|s|h]$ + lookbackPeriod: + type: string + pattern: ^\d+[m|d|s|h]$ + default: 1h + frequency: + type: string + pattern: ^\d+[m|d|s|h]$ + backfillSyncDelay: + type: string + pattern: ^\d+[m|d|s|h]$ + backfillLookbackPeriod: + type: string + pattern: ^\d+[m|d|s|h]$ + backfillFrequency: + type: string + pattern: ^\d+[m|d|s|h]$ + additionalProperties: false + required: + - timestampField + - interval + additionalProperties: false + latest: + type: object + properties: + settings: + type: object + properties: + syncField: + type: string + syncDelay: + type: string + pattern: ^\d+[m|d|s|h]$ + frequency: + type: string + pattern: ^\d+[m|d|s|h]$ + additionalProperties: false + additionalProperties: false + installStatus: + anyOf: + - type: string + enum: + - installing + - type: string + enum: + - upgrading + - type: string + enum: + - installed + - type: string + enum: + - failed + installStartedAt: + type: string + required: + - id + - version + - name + - type + - indexPatterns + - identityFields + - displayNameTemplate + - history + additionalProperties: false + entitySummarySchema: + allOf: + - type: object + properties: + entity: + type: object + properties: + id: + type: string + type: + type: string + identityFields: + type: array + items: + type: string + displayName: + type: string + metrics: + type: object + additionalProperties: + type: number + definitionVersion: + type: string + schemaVersion: + type: string + definitionId: + type: string + lastSeenTimestamp: + type: string + firstSeenTimestamp: + type: string + required: + - id + - type + - identityFields + - displayName + - metrics + - definitionVersion + - schemaVersion + - definitionId + - lastSeenTimestamp + - firstSeenTimestamp + additionalProperties: false + required: + - entity + - anyOf: + - anyOf: + - type: string + - type: number + - type: boolean + - enum: + - "null" + nullable: true + - type: array + items: {} + - type: object + additionalProperties: {} + entityHistorySchema: + allOf: + - type: object + properties: + "@timestamp": + type: string + entity: + type: object + properties: + id: + type: string + type: + type: string + identityFields: + type: array + items: + type: string + displayName: + type: string + metrics: + type: object + additionalProperties: + type: number + definitionVersion: + type: string + schemaVersion: + type: string + definitionId: + type: string + required: + - id + - type + - identityFields + - displayName + - metrics + - definitionVersion + - schemaVersion + - definitionId + additionalProperties: false + required: + - "@timestamp" + - entity + - anyOf: + - anyOf: + - type: string + - type: number + - type: boolean + - enum: + - "null" + nullable: true + - type: array + items: {} + - type: object + additionalProperties: {} +paths: + /internal/entities/managed/enablement: + get: + description: Check if managed (built-in) entity discovery is enabled. Enabled + entity discovery requires a valid api key and the latest version of the + builtin definitions installed and running. + tags: + - management + responses: + "200": + description: OK - Verify result in response body + content: + application/json: + schema: + type: object + properties: + enabled: + type: boolean + example: false + reason: + type: string + example: api_key_not_found + delete: + description: Disable managed (built-in) entity discovery. This stops and deletes + the transforms, ingest pipelines, definitions saved objects, and index + templates for this entity definition, as well as the stored API key for + entity discovery management. + tags: + - management + parameters: + - in: query + name: deleteData + description: If true, delete all entity data in the managed indices + required: false + schema: + type: boolean + default: false + responses: + "200": + description: Built-in entity discovery successfully disabled + content: + application/json: + schema: + type: object + properties: + success: + type: boolean + "403": + description: The current user does not have the required permissions to disable + entity discovery + put: + description: Enable managed (built-in) entity discovery. + tags: + - management + parameters: + - in: query + name: installOnly + description: If true, the definition transforms will not be started + required: false + schema: + type: boolean + default: false + responses: + "200": + description: OK - Verify result in response body + content: + application/json: + schema: + type: object + properties: + success: + type: boolean + example: false + reason: + type: string + example: api_key_service_disabled + message: + type: string + example: API key service is not enabled; try configuring + `xpack.security.authc.api_key.enabled` in your + elasticsearch config + "403": + description: The current user does not have the required permissions to enable + entity discovery + /internal/entities/definition: + post: + description: Install an entity definition. + tags: + - definitions + parameters: + - in: query + name: installOnly + description: If true, the definition transforms will not be started + required: false + schema: + type: boolean + default: false + requestBody: + description: The entity definition to install + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/entityDefinitionSchema" + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: "#/components/schemas/entityDefinitionSchema" + "400": + description: The entity definition cannot be installed; see the error for more + details + "409": + description: An entity definition with this ID already exists + delete: + description: Uninstall an entity definition. This stops and deletes the + transforms, ingest pipelines, definitions saved objects, and index + templates for this entity definition. + tags: + - definitions + parameters: + - in: path + name: id + description: The entity definition ID + schema: + $ref: "#/components/schemas/deleteEntityDefinitionParamsSchema/properties/id" + required: true + - in: query + name: deleteData + description: If true, delete all entity data in the indices associated with this + entity definition + schema: + $ref: "#/components/schemas/deleteEntityDefinitionQuerySchema/properties/delete\ + Data" + responses: + "200": + description: Success + content: + application/json: + schema: + type: object + properties: + acknowledged: + type: boolean + "400": + description: The entity definition cannot be removed; see the error for more + details + "404": + description: Entity definition with given ID not found + get: + description: Get all installed entity definitions. + tags: + - definitions + parameters: + - in: query + name: page + schema: + $ref: "#/components/schemas/getEntityDefinitionQuerySchema/properties/page" + - in: query + name: perPage + schema: + $ref: "#/components/schemas/getEntityDefinitionQuerySchema/properties/perPage" + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + properties: + definitions: + type: array + items: + allOf: + - $ref: "#/components/schemas/entityDefinitionSchema" + - type: object + properties: + state: + type: object + properties: + installed: + type: boolean + running: + type: boolean +tags: [] diff --git a/x-pack/packages/kbn-entities-schema/package.json b/x-pack/packages/kbn-entities-schema/package.json index 0be44d9d75055..bdf1fb6ea7ce5 100644 --- a/x-pack/packages/kbn-entities-schema/package.json +++ b/x-pack/packages/kbn-entities-schema/package.json @@ -2,5 +2,9 @@ "name": "@kbn/entities-schema", "private": true, "version": "1.0.0", - "license": "Elastic License 2.0" -} \ No newline at end of file + "license": "Elastic License 2.0", + "scripts": { + "openapi:generate": "node scripts/generate", + "openapi:serve": "node scripts/serve_oas_ui" + } +} diff --git a/x-pack/packages/kbn-entities-schema/scripts/generate.js b/x-pack/packages/kbn-entities-schema/scripts/generate.js new file mode 100644 index 0000000000000..e3214affce38e --- /dev/null +++ b/x-pack/packages/kbn-entities-schema/scripts/generate.js @@ -0,0 +1,14 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('../../../../src/setup_node_env'); + +const { generateOAS } = require('./generate_oas'); +const { writeFileSync } = require('fs'); + +const spec = generateOAS({ format: '.yaml' }); +writeFileSync('oas.yaml', spec); diff --git a/x-pack/packages/kbn-entities-schema/scripts/generate_oas.js b/x-pack/packages/kbn-entities-schema/scripts/generate_oas.js new file mode 100644 index 0000000000000..d1310535db3a9 --- /dev/null +++ b/x-pack/packages/kbn-entities-schema/scripts/generate_oas.js @@ -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. + */ + +require('../../../../src/setup_node_env'); + +const swaggerJsdoc = require('swagger-jsdoc'); +const { zodToJsonSchema } = require('zod-to-json-schema'); + +const { + createEntityDefinitionQuerySchema, + getEntityDefinitionQuerySchema, + resetEntityDefinitionParamsSchema, + deleteEntityDefinitionParamsSchema, + deleteEntityDefinitionQuerySchema, + entityDefinitionSchema, + entityLatestSchema, + entityHistorySchema, +} = require('..'); + +const schemaOptions = { + target: 'openApi3', + $refStrategy: 'none', +}; + +export const generateOAS = (options) => + swaggerJsdoc({ + definition: { + openapi: '3.1.0', + info: { + title: 'Elastic Entity Model (EEM) API', + version: 'v1', + }, + components: { + schemas: { + createEntityDefinitionQuerySchema: zodToJsonSchema( + createEntityDefinitionQuerySchema, + schemaOptions + ), + getEntityDefinitionQuerySchema: zodToJsonSchema( + getEntityDefinitionQuerySchema, + schemaOptions + ), + resetEntityDefinitionParamsSchema: zodToJsonSchema( + resetEntityDefinitionParamsSchema, + schemaOptions + ), + deleteEntityDefinitionParamsSchema: zodToJsonSchema( + deleteEntityDefinitionParamsSchema, + schemaOptions + ), + deleteEntityDefinitionQuerySchema: zodToJsonSchema( + deleteEntityDefinitionQuerySchema, + schemaOptions + ), + entityDefinitionSchema: zodToJsonSchema(entityDefinitionSchema, schemaOptions), + entitySummarySchema: zodToJsonSchema(entityLatestSchema, schemaOptions), + entityHistorySchema: zodToJsonSchema(entityHistorySchema, schemaOptions), + }, + }, + }, + apis: ['../../plugins/observability_solution/entity_manager/server/routes/**/*.ts'], + ...options, + }); diff --git a/x-pack/packages/kbn-entities-schema/scripts/serve_oas_ui.js b/x-pack/packages/kbn-entities-schema/scripts/serve_oas_ui.js new file mode 100644 index 0000000000000..956163f665bcf --- /dev/null +++ b/x-pack/packages/kbn-entities-schema/scripts/serve_oas_ui.js @@ -0,0 +1,20 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +require('../../../../src/setup_node_env'); + +const { generateOAS } = require('./generate_oas'); +const express = require('express'); +const swaggerUi = require('swagger-ui-express'); + +const app = express(); +app.use('/', swaggerUi.serve, swaggerUi.setup(generateOAS())); + +const port = 3000; +app.listen(port, () => { + console.log(`OpenAPI UI available on http://localhost:${port}`); +}); diff --git a/x-pack/packages/kbn-entities-schema/tsconfig.json b/x-pack/packages/kbn-entities-schema/tsconfig.json index f722f3587e7a2..1480aed5367f4 100644 --- a/x-pack/packages/kbn-entities-schema/tsconfig.json +++ b/x-pack/packages/kbn-entities-schema/tsconfig.json @@ -11,7 +11,8 @@ "**/*.ts" ], "exclude": [ - "target/**/*" + "target/**/*", + "node_modules", ], "kbn_references": [ ] diff --git a/x-pack/packages/ml/aiops_log_pattern_analysis/constants.ts b/x-pack/packages/ml/aiops_log_pattern_analysis/constants.ts new file mode 100644 index 0000000000000..e88944a83b8bb --- /dev/null +++ b/x-pack/packages/ml/aiops_log_pattern_analysis/constants.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const EMBEDDABLE_PATTERN_ANALYSIS_TYPE = 'aiopsPatternAnalysisEmbeddable' as const; + +export const PATTERN_ANALYSIS_DATA_VIEW_REF_NAME = 'aiopsPatternAnalysisEmbeddableDataViewId'; diff --git a/x-pack/packages/ml/aiops_log_pattern_analysis/embeddable.ts b/x-pack/packages/ml/aiops_log_pattern_analysis/embeddable.ts index 57c6b144c15d0..f236c24cfe6a2 100644 --- a/x-pack/packages/ml/aiops_log_pattern_analysis/embeddable.ts +++ b/x-pack/packages/ml/aiops_log_pattern_analysis/embeddable.ts @@ -5,16 +5,13 @@ * 2.0. */ -import type { Query, AggregateQuery, Filter } from '@kbn/es-query'; -import type { SavedSearch } from '@kbn/saved-search-plugin/public'; +import type { SavedSearch, VIEW_MODE } from '@kbn/saved-search-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/public'; -export interface EmbeddablePatternAnalysisInput { +export interface EmbeddablePatternAnalysisInput { dataView: DataView; savedSearch?: SavedSearch | null; - query?: T; - filters?: Filter[]; embeddingOrigin?: string; - switchToDocumentView?: () => void; + switchToDocumentView?: () => Promise; lastReloadRequestTime?: number; } diff --git a/x-pack/packages/ml/aiops_log_pattern_analysis/tsconfig.json b/x-pack/packages/ml/aiops_log_pattern_analysis/tsconfig.json index afc6d3b1e0631..fb51a4d8c1b30 100644 --- a/x-pack/packages/ml/aiops_log_pattern_analysis/tsconfig.json +++ b/x-pack/packages/ml/aiops_log_pattern_analysis/tsconfig.json @@ -20,7 +20,6 @@ "@kbn/config-schema", "@kbn/i18n", "@kbn/ml-runtime-field-utils", - "@kbn/es-query", "@kbn/saved-search-plugin", "@kbn/data-views-plugin", "@kbn/ml-is-populated-object", diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx b/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx index 91e18ea7b4421..2a9591bb415a6 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/category_table/category_table.tsx @@ -6,7 +6,7 @@ */ import type { FC } from 'react'; -import React, { useCallback, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import type { EuiBasicTableColumn, EuiTableSelectionType } from '@elastic/eui'; import { @@ -16,12 +16,12 @@ import { EuiToolTip, EuiIcon, } from '@elastic/eui'; +import type { Action } from '@elastic/eui/src/components/basic_table/action_types'; import { i18n } from '@kbn/i18n'; import type { UseTableState } from '@kbn/ml-in-memory-table'; import { css } from '@emotion/react'; -import { QUERY_MODE } from '@kbn/aiops-log-pattern-analysis/get_category_query'; import type { Category } from '@kbn/aiops-log-pattern-analysis/types'; import { useEuiTheme } from '../../../hooks/use_eui_theme'; @@ -32,34 +32,36 @@ import type { EventRate } from '../use_categorize_request'; import { ExpandedRow } from './expanded_row'; import { FormattedPatternExamples, FormattedTokens } from '../format_category'; -import type { OpenInDiscover } from './use_open_in_discover'; interface Props { categories: Category[]; eventRate: EventRate; - pinnedCategory: Category | null; - setPinnedCategory: (category: Category | null) => void; - highlightedCategory: Category | null; - setHighlightedCategory: (category: Category | null) => void; + mouseOver?: { + pinnedCategory: Category | null; + setPinnedCategory: (category: Category | null) => void; + highlightedCategory: Category | null; + setHighlightedCategory: (category: Category | null) => void; + }; setSelectedCategories: (category: Category[]) => void; - openInDiscover: OpenInDiscover; tableState: UseTableState; + actions: Array>; enableRowActions?: boolean; displayExamples?: boolean; + selectable?: boolean; + onRenderComplete?: () => void; } export const CategoryTable: FC = ({ categories, eventRate, - pinnedCategory, - setPinnedCategory, - highlightedCategory, - setHighlightedCategory, + mouseOver, setSelectedCategories, - openInDiscover, tableState, + actions, enableRowActions = true, displayExamples = true, + selectable = true, + onRenderComplete, }) => { const euiTheme = useEuiTheme(); const primaryBackgroundColor = useEuiBackgroundColor('primary'); @@ -73,8 +75,6 @@ export const CategoryTable: FC = ({ return categories.some((category) => category.sparkline !== undefined); }, [categories]); - const { labels: openInDiscoverLabels, openFunction: openInDiscoverFunction } = openInDiscover; - const toggleDetails = useCallback( (category: Category) => { const itemIdToExpandedRowMapValues = { ...itemIdToExpandedRowMap }; @@ -134,24 +134,7 @@ export const CategoryTable: FC = ({ }), sortable: false, width: '65px', - actions: [ - { - name: openInDiscoverLabels.singleSelect.in, - description: openInDiscoverLabels.singleSelect.in, - icon: 'plusInCircle', - type: 'icon', - 'data-test-subj': 'aiopsLogPatternsActionFilterInButton', - onClick: (category) => openInDiscoverFunction(QUERY_MODE.INCLUDE, category), - }, - { - name: openInDiscoverLabels.singleSelect.out, - description: openInDiscoverLabels.singleSelect.out, - icon: 'minusInCircle', - type: 'icon', - 'data-test-subj': 'aiopsLogPatternsActionFilterOutButton', - onClick: (category) => openInDiscoverFunction(QUERY_MODE.EXCLUDE, category), - }, - ], + actions, }, ] as Array>; @@ -214,23 +197,29 @@ export const CategoryTable: FC = ({ }); } - const selectionValue: EuiTableSelectionType | undefined = { - selectable: () => true, - onSelectionChange: (selectedItems) => setSelectedCategories(selectedItems), - }; + const selectionValue: EuiTableSelectionType | undefined = selectable + ? { + selectable: () => true, + onSelectionChange: (selectedItems) => setSelectedCategories(selectedItems), + } + : undefined; const getRowStyle = (category: Category) => { + if (mouseOver === undefined) { + return {}; + } + if ( - pinnedCategory && - pinnedCategory.key === category.key && - pinnedCategory.key === category.key + mouseOver.pinnedCategory && + mouseOver.pinnedCategory.key === category.key && + mouseOver.pinnedCategory.key === category.key ) { return { backgroundColor: primaryBackgroundColor, }; } - if (highlightedCategory && highlightedCategory.key === category.key) { + if (mouseOver.highlightedCategory && mouseOver.highlightedCategory.key === category.key) { return { backgroundColor: euiTheme.euiColorLightestShade, }; @@ -251,39 +240,66 @@ export const CategoryTable: FC = ({ }, }); + const chartWrapperRef = useRef(null); + + const renderCompleteListener = useCallback( + (event: Event) => { + if (event.target !== chartWrapperRef.current) { + return; + } + if (typeof onRenderComplete === 'function') { + onRenderComplete(); + } + }, + [onRenderComplete] + ); + + useEffect(() => { + if (!chartWrapperRef.current) { + throw new Error('Reference to the chart wrapper is not set'); + } + const chartWrapper = chartWrapperRef.current; + chartWrapper.addEventListener('renderComplete', renderCompleteListener); + return () => { + chartWrapper.removeEventListener('renderComplete', renderCompleteListener); + }; + }, [renderCompleteListener]); + return ( - - compressed - items={categories} - columns={columns} - selection={selectionValue} - itemId="key" - onTableChange={onTableChange} - pagination={pagination} - sorting={sorting} - data-test-subj="aiopsLogPatternsTable" - itemIdToExpandedRowMap={itemIdToExpandedRowMap} - css={tableStyle} - rowProps={(category) => { - return enableRowActions - ? { - onClick: () => { - if (category.key === pinnedCategory?.key) { - setPinnedCategory(null); - } else { - setPinnedCategory(category); - } - }, - onMouseEnter: () => { - setHighlightedCategory(category); - }, - onMouseLeave: () => { - setHighlightedCategory(null); - }, - style: getRowStyle(category), - } - : undefined; - }} - /> +
+ + compressed + items={categories} + columns={columns} + selection={selectionValue} + itemId="key" + onTableChange={onTableChange} + pagination={pagination} + sorting={sorting} + data-test-subj="aiopsLogPatternsTable" + itemIdToExpandedRowMap={itemIdToExpandedRowMap} + css={tableStyle} + rowProps={(category) => { + return mouseOver + ? { + onClick: () => { + if (category.key === mouseOver.pinnedCategory?.key) { + mouseOver.setPinnedCategory(null); + } else { + mouseOver.setPinnedCategory(category); + } + }, + onMouseEnter: () => { + mouseOver.setHighlightedCategory(category); + }, + onMouseLeave: () => { + mouseOver.setHighlightedCategory(null); + }, + style: getRowStyle(category), + } + : undefined; + }} + /> +
); }; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/labels.ts b/x-pack/plugins/aiops/public/components/log_categorization/category_table/labels.ts index 674f7b8da0b60..bc94a5ec6918b 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/category_table/labels.ts +++ b/x-pack/plugins/aiops/public/components/log_categorization/category_table/labels.ts @@ -7,7 +7,7 @@ import { i18n } from '@kbn/i18n'; -export function getLabels(isFlyout: boolean) { +export function getLabels(inDiscover: boolean) { const flyoutFilterIn = (single: boolean) => i18n.translate('xpack.aiops.logCategorization.flyout.filterIn', { defaultMessage: 'Filter for {values, plural, one {pattern} other {patterns}}', @@ -38,25 +38,25 @@ export function getLabels(isFlyout: boolean) { }, }); - return isFlyout + return inDiscover ? { multiSelect: { - in: flyoutFilterIn(false), - out: flyoutFilterOut(false), + in: aiopsFilterIn(false), + out: aiopsFilterOut(false), }, singleSelect: { - in: flyoutFilterIn(true), - out: flyoutFilterOut(true), + in: aiopsFilterIn(true), + out: aiopsFilterOut(true), }, } : { multiSelect: { - in: aiopsFilterIn(false), - out: aiopsFilterOut(false), + in: flyoutFilterIn(false), + out: flyoutFilterOut(false), }, singleSelect: { - in: aiopsFilterIn(true), - out: aiopsFilterOut(true), + in: flyoutFilterIn(true), + out: flyoutFilterOut(true), }, }; } diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/table_header.tsx b/x-pack/plugins/aiops/public/components/log_categorization/category_table/table_header.tsx index d733c050fc3b8..9157b4994adb4 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/category_table/table_header.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/category_table/table_header.tsx @@ -58,7 +58,8 @@ export const OpenInDiscoverButtons: FC<{ openInDiscover: OpenInDiscover; showTex openInDiscover, showText = true, }) => { - const { labels, openFunction } = openInDiscover; + const { getLabels, openFunction } = openInDiscover; + const labels = getLabels(false); return ( @@ -67,7 +68,7 @@ export const OpenInDiscoverButtons: FC<{ openInDiscover: OpenInDiscover; showTex openFunction(QUERY_MODE.INCLUDE)} + onClick={() => openFunction(QUERY_MODE.INCLUDE, true)} iconType="plusInCircle" iconSide="left" > @@ -80,7 +81,7 @@ export const OpenInDiscoverButtons: FC<{ openInDiscover: OpenInDiscover; showTex openFunction(QUERY_MODE.EXCLUDE)} + onClick={() => openFunction(QUERY_MODE.EXCLUDE, true)} iconType="minusInCircle" iconSide="left" > diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_actions.tsx b/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_actions.tsx new file mode 100644 index 0000000000000..cb7567743d9ed --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_actions.tsx @@ -0,0 +1,78 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { useCallback } from 'react'; + +import type { Action } from '@elastic/eui/src/components/basic_table/action_types'; + +import { QUERY_MODE } from '@kbn/aiops-log-pattern-analysis/get_category_query'; +import type { Filter } from '@kbn/es-query'; +import type { Category } from '@kbn/aiops-log-pattern-analysis/types'; +import type { DataViewField } from '@kbn/data-views-plugin/common'; +import type { TimefilterContract } from '@kbn/data-plugin/public'; +import type { CategorizationAdditionalFilter } from '@kbn/aiops-log-pattern-analysis/create_category_request'; +import type { LogCategorizationAppState } from '../../../application/url_state/log_pattern_analysis'; +import type { OpenInDiscover } from './use_open_in_discover'; +import { useOpenInDiscover } from './use_open_in_discover'; + +export interface UseActions { + getActions: (navigateToDiscover: boolean) => Array>; + openInDiscover: OpenInDiscover; +} + +export function useActions( + dataViewId: string, + selectedField: DataViewField | string | undefined, + selectedCategories: Category[], + aiopsListState: LogCategorizationAppState, + timefilter: TimefilterContract, + onAddFilter?: (values: Filter, alias?: string) => void, + additionalFilter?: CategorizationAdditionalFilter, + onClose: () => void = () => {} +): UseActions { + const openInDiscover = useOpenInDiscover( + dataViewId, + selectedField ?? undefined, + selectedCategories, + aiopsListState, + timefilter, + onAddFilter, + additionalFilter + ); + + const { getLabels: getOpenInDiscoverLabels, openFunction: openInDiscoverFunction } = + openInDiscover; + + const getActions = useCallback( + (navigateToDiscover: boolean): Array> => { + const openInDiscoverLabels = getOpenInDiscoverLabels(navigateToDiscover); + return [ + { + name: openInDiscoverLabels.singleSelect.in, + description: openInDiscoverLabels.singleSelect.in, + icon: 'plusInCircle', + type: 'icon', + 'data-test-subj': 'aiopsLogPatternsActionFilterInButton', + onClick: (category) => + openInDiscoverFunction(QUERY_MODE.INCLUDE, navigateToDiscover, category), + }, + { + name: openInDiscoverLabels.singleSelect.out, + description: openInDiscoverLabels.singleSelect.out, + icon: 'minusInCircle', + type: 'icon', + 'data-test-subj': 'aiopsLogPatternsActionFilterOutButton', + onClick: (category) => + openInDiscoverFunction(QUERY_MODE.EXCLUDE, navigateToDiscover, category), + }, + ]; + }, + [getOpenInDiscoverLabels, openInDiscoverFunction] + ); + + return { getActions, openInDiscover }; +} diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_open_in_discover.ts b/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_open_in_discover.ts index 963fd6b3a13e8..6a0908fbde725 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_open_in_discover.ts +++ b/x-pack/plugins/aiops/public/components/log_categorization/category_table/use_open_in_discover.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { useCallback, useMemo } from 'react'; +import { useCallback } from 'react'; import moment from 'moment'; @@ -20,8 +20,8 @@ import type { LogCategorizationAppState } from '../../../application/url_state/l import { getLabels } from './labels'; export interface OpenInDiscover { - openFunction: (mode: QueryMode, category?: Category) => void; - labels: ReturnType; + openFunction: (mode: QueryMode, navigateToDiscover: boolean, category?: Category) => void; + getLabels: (navigateToDiscover: boolean) => ReturnType; count: number; } @@ -31,7 +31,6 @@ export function useOpenInDiscover( selectedCategories: Category[], aiopsListState: LogCategorizationAppState, timefilter: TimefilterContract, - navigateToDiscover?: boolean, onAddFilter?: (values: Filter, alias?: string) => void, additionalFilter?: CategorizationAdditionalFilter, onClose: () => void = () => {} @@ -39,7 +38,7 @@ export function useOpenInDiscover( const { openInDiscoverWithFilter } = useDiscoverLinks(); const openFunction = useCallback( - (mode: QueryMode, category?: Category) => { + (mode: QueryMode, navigateToDiscover: boolean, category?: Category) => { if ( onAddFilter !== undefined && selectedField !== undefined && @@ -80,7 +79,6 @@ export function useOpenInDiscover( [ onAddFilter, selectedField, - navigateToDiscover, additionalFilter, timefilter, openInDiscoverWithFilter, @@ -91,10 +89,5 @@ export function useOpenInDiscover( ] ); - const labels = useMemo(() => { - const isFlyout = onAddFilter !== undefined && onClose !== undefined; - return getLabels(isFlyout && navigateToDiscover === false); - }, [navigateToDiscover, onAddFilter, onClose]); - - return { openFunction, labels, count: selectedCategories.length }; + return { openFunction, getLabels, count: selectedCategories.length }; } diff --git a/x-pack/plugins/aiops/public/components/log_categorization/category_validation_callout.tsx b/x-pack/plugins/aiops/public/components/log_categorization/category_validation_callout.tsx index 966be3b100e74..b201ef982d6a7 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/category_validation_callout.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/category_validation_callout.tsx @@ -29,6 +29,8 @@ export const FieldValidationCallout: FC = ({ validationResults }) => { return ( = ({ {renderViewModeToggle(data?.categories.length)} - <> - - - {selectedCategories.length > 0 ? ( - - - - ) : null} + + {selectedCategories.length > 0 ? ( - + - -
+ ) : null} + + + + +
+
+ loadCategories()} + minimumTimeRangeOption={minimumTimeRangeOption} + setMinimumTimeRangeOption={setMinimumTimeRangeOption} + categoryCount={data?.totalCategories} + /> +
+ {selectedField !== null && earliest !== undefined && latest !== undefined ? (
- loadCategories()} - minimumTimeRangeOption={minimumTimeRangeOption} - setMinimumTimeRangeOption={setMinimumTimeRangeOption} - categoryCount={data?.totalCategories} +
- {selectedField !== null && earliest !== undefined && latest !== undefined ? ( -
- -
- ) : null} -
-
- - + ) : null} +
+
+
diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/embeddable_menu.tsx b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/embeddable_menu.tsx index af40e305f558b..42124e39c07c0 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/embeddable_menu.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/embeddable_menu.tsx @@ -36,9 +36,9 @@ interface Props { reload: () => void; } -const minimumTimeRangeOptions = Object.keys(MINIMUM_TIME_RANGE).map((value) => ({ - inputDisplay: value, - value: value as MinimumTimeRangeOption, +const minimumTimeRangeOptions = Object.entries(MINIMUM_TIME_RANGE).map(([key, { label }]) => ({ + inputDisplay: label, + value: key as MinimumTimeRangeOption, })); export const EmbeddableMenu: FC = ({ @@ -62,7 +62,7 @@ export const EmbeddableMenu: FC = ({ size="s" iconType="controlsHorizontal" onClick={() => togglePopover()} - // @ts-ignore - subdued does work + // @ts-expect-error - subdued does work color="subdued" aria-label={i18n.translate('xpack.aiops.logCategorization.embeddableMenu.aria', { defaultMessage: 'Pattern analysis options', @@ -91,54 +91,11 @@ export const EmbeddableMenu: FC = ({ - - - {i18n.translate( - 'xpack.aiops.logCategorization.embeddableMenu.minimumTimeRangeOptionsRowLabel', - { - defaultMessage: 'Minimum time range', - } - )} - - - - - - - - } - helpText={ - <> - {categoryCount !== undefined && minimumTimeRangeOption !== 'No minimum' ? ( - <> - - - ) : null} - - } - > - - + @@ -147,3 +104,78 @@ export const EmbeddableMenu: FC = ({ ); }; + +interface PatternAnalysisSettingsProps { + minimumTimeRangeOption: MinimumTimeRangeOption; + setMinimumTimeRangeOption: (w: MinimumTimeRangeOption) => void; + categoryCount: number | undefined; + compressed?: boolean; +} + +export const PatternAnalysisSettings: FC = ({ + minimumTimeRangeOption, + setMinimumTimeRangeOption, + categoryCount, + compressed = false, +}) => { + return ( + <> + + + {i18n.translate( + 'xpack.aiops.logCategorization.embeddableMenu.minimumTimeRangeOptionsRowLabel', + { + defaultMessage: 'Minimum time range', + } + )} + + + + + + + + } + helpText={ + <> + {categoryCount !== undefined && minimumTimeRangeOption !== 'No minimum' ? ( + <> + + + ) : null} + + } + > + + + + ); +}; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/field_selector.tsx b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/field_selector.tsx index 1941e2d8148d0..126eb9c53695b 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/field_selector.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/field_selector.tsx @@ -25,17 +25,13 @@ interface Props { fields: DataViewField[]; selectedField: DataViewField | null; setSelectedField: (field: DataViewField) => void; + WarningComponent?: FC; } export const SelectedField: FC = ({ fields, selectedField, setSelectedField }) => { const [showPopover, setShowPopover] = useState(false); const togglePopover = () => setShowPopover(!showPopover); - const fieldOptions = useMemo( - () => fields.map((field) => ({ inputDisplay: field.name, value: field })), - [fields] - ); - const button = ( = ({ fields, selectedField, setSelectedFie button={button} className="unifiedDataTableToolbarControlButton" > - + + + ); +}; + +export const FieldSelector: FC = ({ + fields, + selectedField, + setSelectedField, + WarningComponent, +}) => { + const fieldOptions = useMemo( + () => fields.map((field) => ({ inputDisplay: field.name, value: field })), + [fields] + ); + + const label = i18n.translate( + 'xpack.aiops.logCategorization.embeddableMenu.selectedFieldRowLabel', + { + defaultMessage: 'Selected field', + } + ); + + return ( + <> + {WarningComponent !== undefined ? : null} + + - + ); }; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/index.ts b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/index.ts index 8cc8fcbad313a..cfeafd6bac0ee 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/index.ts +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/index.ts @@ -5,5 +5,5 @@ * 2.0. */ -export { LogCategorizationEmbeddable } from './log_categorization_for_embeddable'; -export { LogCategorizationWrapper } from './log_categorization_wrapper'; +export { LogCategorizationDiscover } from './log_categorization_for_discover'; +export { LogCategorizationDiscoverWrapper } from './log_categorization_for_discover_wrapper'; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/log_categorization_for_discover.tsx b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/log_categorization_for_discover.tsx new file mode 100644 index 0000000000000..27d680fc1769c --- /dev/null +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/log_categorization_for_discover.tsx @@ -0,0 +1,470 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import type { FC } from 'react'; +import React, { useState, useEffect, useCallback, useMemo } from 'react'; + +import { EuiFlexGroup, EuiFlexItem, EuiSpacer, useEuiPaddingSize } from '@elastic/eui'; + +import type { DataViewField } from '@kbn/data-views-plugin/public'; +import { i18n } from '@kbn/i18n'; +import type { Filter } from '@kbn/es-query'; +import { buildEmptyFilter } from '@kbn/es-query'; +import { usePageUrlState } from '@kbn/ml-url-state'; +import type { FieldValidationResults } from '@kbn/ml-category-validator'; + +import type { Category } from '@kbn/aiops-log-pattern-analysis/types'; + +import type { CategorizationAdditionalFilter } from '@kbn/aiops-log-pattern-analysis/create_category_request'; +import { AIOPS_TELEMETRY_ID } from '@kbn/aiops-common/constants'; +import type { EmbeddablePatternAnalysisInput } from '@kbn/aiops-log-pattern-analysis/embeddable'; +import { css } from '@emotion/react'; +import { useTableState } from '@kbn/ml-in-memory-table/hooks/use_table_state'; +import useMountedState from 'react-use/lib/useMountedState'; +import { + type LogCategorizationPageUrlState, + getDefaultLogCategorizationAppState, +} from '../../../application/url_state/log_pattern_analysis'; +import { createMergedEsQuery } from '../../../application/utils/search_utils'; +import { useData } from '../../../hooks/use_data'; +import { useSearch } from '../../../hooks/use_search'; +import { useAiopsAppContext } from '../../../hooks/use_aiops_app_context'; + +import { useCategorizeRequest } from '../use_categorize_request'; +import type { EventRate } from '../use_categorize_request'; +import { CategoryTable } from '../category_table'; +import { InformationText } from '../information_text'; +import { LoadingCategorization } from '../loading_categorization'; +import { useValidateFieldRequest } from '../use_validate_category_field'; +import { FieldValidationCallout } from '../category_validation_callout'; +import { useMinimumTimeRange } from './use_minimum_time_range'; + +import { createAdditionalConfigHash, createDocumentStatsHash, getMessageField } from '../utils'; +import { DiscoverTabs } from './discover_tabs'; +import { useRandomSamplerStorage } from '../sampling_menu'; +import { useActions } from '../category_table/use_actions'; + +export interface LogCategorizationEmbeddableProps { + input: Readonly; + renderViewModeToggle: (patternCount?: number) => React.ReactElement; +} + +const BAR_TARGET = 20; + +export const LogCategorizationDiscover: FC = ({ + input, + renderViewModeToggle, +}) => { + const { + notifications: { toasts }, + data: { + query: { getState, filterManager }, + }, + uiSettings, + embeddingOrigin, + } = useAiopsAppContext(); + const tablePadding = useEuiPaddingSize('xs'); + + const { dataView, savedSearch } = input; + + const { runValidateFieldRequest, cancelRequest: cancelValidationRequest } = + useValidateFieldRequest(); + const { + getMinimumTimeRange, + cancelRequest: cancelWiderTimeRangeRequest, + minimumTimeRangeOption, + setMinimumTimeRangeOption, + } = useMinimumTimeRange(); + const { filters, query } = useMemo(() => getState(), [getState]); + + const isMounted = useMountedState(); + const randomSamplerStorage = useRandomSamplerStorage(); + const { + runCategorizeRequest, + cancelRequest: cancelCategorizationRequest, + randomSampler, + } = useCategorizeRequest(randomSamplerStorage); + const [stateFromUrl] = usePageUrlState( + 'logCategorization', + getDefaultLogCategorizationAppState({ + searchQuery: createMergedEsQuery(query, filters, dataView, uiSettings), + }) + ); + const [selectedCategories, setSelectedCategories] = useState([]); + const [selectedField, setSelectedField] = useState(null); + const [fields, setFields] = useState([]); + const [currentDocumentStatsHash, setCurrentDocumentStatsHash] = useState(null); + const [previousDocumentStatsHash, setPreviousDocumentStatsHash] = useState(0); + const [currentAdditionalConfigsHash, setCurrentAdditionalConfigsHash] = useState( + null + ); + const [previousAdditionalConfigsHash, setPreviousAdditionalConfigsHash] = useState( + null + ); + const [loading, setLoading] = useState(null); + const [eventRate, setEventRate] = useState([]); + const [data, setData] = useState<{ + categories: Category[]; + displayExamples: boolean; + totalCategories: number; + } | null>(null); + const [fieldValidationResult, setFieldValidationResult] = useState( + null + ); + const tableState = useTableState([], 'key'); + + useEffect( + function initFields() { + setCurrentDocumentStatsHash(null); + setSelectedField(null); + setLoading(null); + const { dataViewFields, messageField } = getMessageField(dataView); + setFields(dataViewFields); + setSelectedField(messageField); + }, + [dataView] + ); + + const cancelRequest = useCallback(() => { + cancelWiderTimeRangeRequest(); + cancelValidationRequest(); + cancelCategorizationRequest(); + }, [cancelCategorizationRequest, cancelValidationRequest, cancelWiderTimeRangeRequest]); + + useEffect( + function cancelRequestOnLeave() { + return () => { + cancelRequest(); + }; + }, + [cancelRequest] + ); + + const { searchQuery } = useSearch( + { dataView, savedSearch: savedSearch ?? null }, + stateFromUrl, + true + ); + + const { documentStats, timefilter, earliest, latest, intervalMs, forceRefresh } = useData( + dataView, + 'log_categorization', + searchQuery, + () => {}, + undefined, + undefined, + BAR_TARGET, + false + ); + + const onAddFilter = useCallback( + (values: Filter, alias?: string) => { + const filter = buildEmptyFilter(false, dataView.id); + if (alias) { + filter.meta.alias = alias; + } + filter.query = values.query; + if (typeof input.switchToDocumentView === 'function') { + input.switchToDocumentView().finally(() => { + filterManager.addFilters([filter]); + }); + } + }, + [dataView.id, filterManager, input] + ); + + const { getActions, openInDiscover } = useActions( + dataView.id!, + selectedField ?? undefined, + selectedCategories, + stateFromUrl, + timefilter, + onAddFilter, + undefined + ); + + useEffect( + function createDocumentStatHash() { + if (documentStats.documentCountStats === undefined) { + return; + } + + const hash = createDocumentStatsHash(documentStats); + if (hash !== previousDocumentStatsHash) { + setCurrentDocumentStatsHash(hash); + setData(null); + setFieldValidationResult(null); + } + }, + [documentStats, previousDocumentStatsHash] + ); + + useEffect( + function createAdditionalConfigHash2() { + if (!selectedField?.name) { + return; + } + + const hash = createAdditionalConfigHash([selectedField.name, minimumTimeRangeOption]); + if (hash !== previousAdditionalConfigsHash) { + setCurrentAdditionalConfigsHash(hash); + setData(null); + setFieldValidationResult(null); + } + }, + [minimumTimeRangeOption, previousAdditionalConfigsHash, selectedField] + ); + + const loadCategories = useCallback(async () => { + const { getIndexPattern, timeFieldName: timeField } = dataView; + const index = getIndexPattern(); + + if ( + loading === true || + selectedField === null || + timeField === undefined || + earliest === undefined || + latest === undefined || + minimumTimeRangeOption === undefined || + isMounted() !== true + ) { + return; + } + + cancelRequest(); + + setLoading(true); + setData(null); + setFieldValidationResult(null); + + const additionalFilter: CategorizationAdditionalFilter = { + from: earliest, + to: latest, + }; + + const runtimeMappings = dataView.getRuntimeMappings(); + + try { + const timeRange = await getMinimumTimeRange( + index, + timeField, + additionalFilter, + minimumTimeRangeOption, + searchQuery, + runtimeMappings + ); + + if (isMounted() === false) { + return; + } + + const [validationResult, categorizationResult] = await Promise.all([ + runValidateFieldRequest( + index, + selectedField.name, + timeField, + timeRange, + searchQuery, + runtimeMappings, + { + [AIOPS_TELEMETRY_ID.AIOPS_ANALYSIS_RUN_ORIGIN]: embeddingOrigin, + } + ), + runCategorizeRequest( + index, + selectedField.name, + timeField, + { to: timeRange.to, from: timeRange.from }, + searchQuery, + runtimeMappings, + intervalMs, + timeRange.useSubAgg ? additionalFilter : undefined + ), + ]); + + if (isMounted() === false) { + return; + } + + setFieldValidationResult(validationResult); + const { categories, hasExamples } = categorizationResult; + + if (timeRange.useSubAgg) { + const categoriesInBucket = categorizationResult.categories + .map((category) => ({ + ...category, + count: category.subFieldCount ?? category.subTimeRangeCount!, + examples: category.subFieldExamples!, + sparkline: category.subFieldSparkline, + })) + .filter((category) => category.count > 0) + .sort((a, b) => b.count - a.count); + setData({ + categories: categoriesInBucket, + displayExamples: hasExamples, + totalCategories: categories.length, + }); + } else { + setData({ + categories, + displayExamples: hasExamples, + totalCategories: categories.length, + }); + } + } catch (error) { + if (error.name !== 'AbortError') { + toasts.addError(error, { + title: i18n.translate('xpack.aiops.logCategorization.errorLoadingCategories', { + defaultMessage: 'Error loading categories', + }), + }); + } + } + + if (isMounted() === true) { + setLoading(false); + } + }, [ + dataView, + loading, + selectedField, + earliest, + latest, + minimumTimeRangeOption, + isMounted, + cancelRequest, + getMinimumTimeRange, + searchQuery, + runValidateFieldRequest, + embeddingOrigin, + runCategorizeRequest, + intervalMs, + toasts, + ]); + + useEffect( + function triggerAnalysis() { + const buckets = documentStats.documentCountStats?.buckets; + if (buckets === undefined || currentDocumentStatsHash === null) { + return; + } + + if ( + currentDocumentStatsHash !== previousDocumentStatsHash || + (currentAdditionalConfigsHash !== previousAdditionalConfigsHash && + currentDocumentStatsHash !== null) + ) { + randomSampler.setDocCount(documentStats.totalCount); + setEventRate( + Object.entries(buckets).map(([key, docCount]) => ({ + key: +key, + docCount, + })) + ); + loadCategories(); + setPreviousDocumentStatsHash(currentDocumentStatsHash); + setPreviousAdditionalConfigsHash(currentAdditionalConfigsHash); + } + }, + [ + loadCategories, + randomSampler, + previousDocumentStatsHash, + fieldValidationResult, + currentDocumentStatsHash, + currentAdditionalConfigsHash, + documentStats.documentCountStats?.buckets, + documentStats.totalCount, + previousAdditionalConfigsHash, + ] + ); + + useEffect( + function refreshTriggeredFromButton() { + if (input.lastReloadRequestTime !== undefined) { + setPreviousDocumentStatsHash(0); + setPreviousAdditionalConfigsHash(null); + forceRefresh(); + } + }, + // stop infinite loop from forceRefresh dependency + // eslint-disable-next-line react-hooks/exhaustive-deps + [input.lastReloadRequestTime] + ); + const style = css({ + overflowY: 'auto', + '.kbnDocTableWrapper': { + overflowX: 'hidden', + }, + }); + + const actions = getActions(false); + + return ( + <> + + + + + + + + <> + + {(loading ?? true) === true ? ( + + ) : null} + + {loading === false && + data !== null && + data.categories.length > 0 && + selectedField !== null ? ( + + ) : null} + + + + + + ); +}; + +// eslint-disable-next-line import/no-default-export +export default LogCategorizationDiscover; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/log_categorization_wrapper.tsx b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/log_categorization_for_discover_wrapper.tsx similarity index 91% rename from x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/log_categorization_wrapper.tsx rename to x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/log_categorization_for_discover_wrapper.tsx index 49a8219bc880a..1af4f03a06bb3 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/log_categorization_wrapper.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/log_categorization_for_discover_wrapper.tsx @@ -24,8 +24,8 @@ import { Storage } from '@kbn/kibana-utils-plugin/public'; import { AIOPS_STORAGE_KEYS } from '../../../types/storage'; import type { AiopsAppDependencies } from '../../../hooks/use_aiops_app_context'; import { AiopsAppContext } from '../../../hooks/use_aiops_app_context'; -import type { LogCategorizationEmbeddableProps } from './log_categorization_for_embeddable'; -import { LogCategorizationEmbeddable } from './log_categorization_for_embeddable'; +import type { LogCategorizationEmbeddableProps } from './log_categorization_for_discover'; +import { LogCategorizationDiscover } from './log_categorization_for_discover'; export interface EmbeddableLogCategorizationDeps { theme: ThemeServiceStart; @@ -49,7 +49,7 @@ export interface LogCategorizationEmbeddableWrapperProps { const localStorage = new Storage(window.localStorage); -export const LogCategorizationWrapper: FC = ({ +export const LogCategorizationDiscoverWrapper: FC = ({ deps, props, embeddingOrigin, @@ -71,7 +71,7 @@ export const LogCategorizationWrapper: FC - @@ -84,4 +84,4 @@ export const LogCategorizationWrapper: FC; - renderViewModeToggle: (patternCount?: number) => React.ReactElement; -} +export type LogCategorizationEmbeddableProps = Readonly< + EmbeddablePatternAnalysisInput & PatternAnalysisProps +>; const BAR_TARGET = 20; export const LogCategorizationEmbeddable: FC = ({ - input, - renderViewModeToggle, + dataView, + savedSearch, + fieldName, + minimumTimeRangeOption, + randomSamplerMode, + randomSamplerProbability, + onChange, + onRenderComplete, + timeRange, + lastReloadRequestTime, }) => { const { notifications: { toasts }, data: { - query: { getState, filterManager }, + query: { filterManager }, }, uiSettings, embeddingOrigin, } = useAiopsAppContext(); - const tablePadding = useEuiPaddingSize('xs'); - const { dataView, savedSearch } = input; + const { filters, query } = useFilterQueryUpdates(); const { runValidateFieldRequest, cancelRequest: cancelValidationRequest } = useValidateFieldRequest(); - const { - getMinimumTimeRange, - cancelRequest: cancelWiderTimeRangeRequest, - minimumTimeRangeOption, - setMinimumTimeRangeOption, - } = useMinimumTimeRange(); - const { filters, query } = useMemo(() => getState(), [getState]); + const { getMinimumTimeRange, cancelRequest: cancelWiderTimeRangeRequest } = useMinimumTimeRange(); - const mounted = useRef(false); + const isMounted = useMountedState(); const { runCategorizeRequest, cancelRequest: cancelCategorizationRequest, randomSampler, - } = useCategorizeRequest(); - const [stateFromUrl] = usePageUrlState( - 'logCategorization', - getDefaultLogCategorizationAppState({ - searchQuery: createMergedEsQuery(query, filters, dataView, uiSettings), - }) - ); - const [highlightedCategory, setHighlightedCategory] = useState(null); + } = useCategorizeRequest({ + randomSamplerMode, + setRandomSamplerMode: () => {}, + randomSamplerProbability, + setRandomSamplerProbability: () => {}, + }); + + const appState = getDefaultLogCategorizationAppState({ + searchQuery: createMergedEsQuery(query, filters, dataView, uiSettings), + filters, + }); + const { searchQuery } = useSearch({ dataView, savedSearch: savedSearch ?? null }, appState, true); + const [selectedCategories, setSelectedCategories] = useState([]); - const [selectedField, setSelectedField] = useState(null); - const [fields, setFields] = useState([]); - const [currentDocumentStatsHash, setCurrentDocumentStatsHash] = useState(null); - const [previousDocumentStatsHash, setPreviousDocumentStatsHash] = useState(0); - const [currentAdditionalConfigsHash, setCurrentAdditionalConfigsHash] = useState( - null - ); - const [previousAdditionalConfigsHash, setPreviousAdditionalConfigsHash] = useState( - null - ); + const [loading, setLoading] = useState(null); const [eventRate, setEventRate] = useState([]); - const [pinnedCategory, setPinnedCategory] = useState(null); const [data, setData] = useState<{ categories: Category[]; displayExamples: boolean; @@ -117,12 +107,7 @@ export const LogCategorizationEmbeddable: FC = useEffect( function initFields() { - setCurrentDocumentStatsHash(null); - setSelectedField(null); setLoading(null); - const { dataViewFields, messageField } = getMessageField(dataView); - setFields(dataViewFields); - setSelectedField(messageField); }, [dataView] ); @@ -131,24 +116,27 @@ export const LogCategorizationEmbeddable: FC = cancelWiderTimeRangeRequest(); cancelValidationRequest(); cancelCategorizationRequest(); + setLoading(false); }, [cancelCategorizationRequest, cancelValidationRequest, cancelWiderTimeRangeRequest]); useEffect( function cancelRequestOnLeave() { - mounted.current = true; return () => { - mounted.current = false; cancelRequest(); }; }, - [cancelRequest, mounted] + [cancelRequest] ); - const { searchQuery } = useSearch( - { dataView, savedSearch: savedSearch ?? null }, - stateFromUrl, - true - ); + const timeRangeParsed = useMemo(() => { + if (timeRange) { + const min = datemath.parse(timeRange.from); + const max = datemath.parse(timeRange.to); + if (min && max) { + return { min, max }; + } + } + }, [timeRange]); const { documentStats, timefilter, earliest, latest, intervalMs, forceRefresh } = useData( dataView, @@ -158,81 +146,45 @@ export const LogCategorizationEmbeddable: FC = undefined, undefined, BAR_TARGET, - false + false, + timeRangeParsed ); const onAddFilter = useCallback( (values: Filter, alias?: string) => { - if (input.switchToDocumentView === undefined) { - return; - } - const filter = buildEmptyFilter(false, dataView.id); if (alias) { filter.meta.alias = alias; } filter.query = values.query; - input.switchToDocumentView(); filterManager.addFilters([filter]); }, - [dataView.id, filterManager, input] + [dataView.id, filterManager] ); - const openInDiscover = useOpenInDiscover( + const { getActions } = useActions( dataView.id!, - selectedField ?? undefined, + dataView.fields.find((field) => field.name === fieldName), selectedCategories, - stateFromUrl, + appState, timefilter, - false, onAddFilter, undefined ); - useEffect( - function createDocumentStatHash() { - if (documentStats.documentCountStats === undefined) { - return; - } - - const hash = createDocumentStatsHash(documentStats); - if (hash !== previousDocumentStatsHash) { - setCurrentDocumentStatsHash(hash); - setData(null); - setFieldValidationResult(null); - } - }, - [documentStats, previousDocumentStatsHash] - ); - - useEffect( - function createAdditionalConfigHash2() { - if (!selectedField?.name) { - return; - } - - const hash = createAdditionalConfigHash([selectedField.name, minimumTimeRangeOption]); - if (hash !== previousAdditionalConfigsHash) { - setCurrentAdditionalConfigsHash(hash); - setData(null); - setFieldValidationResult(null); - } - }, - [minimumTimeRangeOption, previousAdditionalConfigsHash, selectedField] - ); - const loadCategories = useCallback(async () => { const { getIndexPattern, timeFieldName: timeField } = dataView; const index = getIndexPattern(); if ( loading === true || - selectedField === null || + fieldName === null || + fieldName === undefined || timeField === undefined || earliest === undefined || latest === undefined || minimumTimeRangeOption === undefined || - mounted.current !== true + isMounted() !== true ) { return; } @@ -250,7 +202,7 @@ export const LogCategorizationEmbeddable: FC = const runtimeMappings = dataView.getRuntimeMappings(); try { - const timeRange = await getMinimumTimeRange( + const minTimeRange = await getMinimumTimeRange( index, timeField, additionalFilter, @@ -259,16 +211,16 @@ export const LogCategorizationEmbeddable: FC = runtimeMappings ); - if (mounted.current !== true) { + if (isMounted() !== true) { return; } const [validationResult, categorizationResult] = await Promise.all([ runValidateFieldRequest( index, - selectedField.name, + fieldName, timeField, - timeRange, + minTimeRange, searchQuery, runtimeMappings, { @@ -277,24 +229,24 @@ export const LogCategorizationEmbeddable: FC = ), runCategorizeRequest( index, - selectedField.name, + fieldName, timeField, - { to: timeRange.to, from: timeRange.from }, + { to: minTimeRange.to, from: minTimeRange.from }, searchQuery, runtimeMappings, intervalMs, - timeRange.useSubAgg ? additionalFilter : undefined + minTimeRange.useSubAgg ? additionalFilter : undefined ), ]); - if (mounted.current !== true) { + if (isMounted() !== true) { return; } setFieldValidationResult(validationResult); const { categories, hasExamples } = categorizationResult; - if (timeRange.useSubAgg) { + if (minTimeRange.useSubAgg) { const categoriesInBucket = categorizationResult.categories .map((category) => ({ ...category, @@ -317,9 +269,7 @@ export const LogCategorizationEmbeddable: FC = }); } } catch (error) { - if (error.name === 'AbortError') { - // ignore error - } else { + if (error.name !== 'AbortError') { toasts.addError(error, { title: i18n.translate('xpack.aiops.logCategorization.errorLoadingCategories', { defaultMessage: 'Error loading categories', @@ -328,144 +278,103 @@ export const LogCategorizationEmbeddable: FC = } } - if (mounted.current === true) { + if (isMounted() === true) { setLoading(false); } }, [ + cancelRequest, dataView, - loading, - selectedField, earliest, + embeddingOrigin, + fieldName, + getMinimumTimeRange, + intervalMs, + isMounted, latest, + loading, minimumTimeRangeOption, - cancelRequest, - getMinimumTimeRange, - searchQuery, - runValidateFieldRequest, - embeddingOrigin, runCategorizeRequest, - intervalMs, + runValidateFieldRequest, + searchQuery, toasts, ]); + useEffect( + function setOnChange() { + if (typeof onChange === 'function') { + onChange(data?.categories ?? []); + } + }, + [data, onChange] + ); + useEffect( function triggerAnalysis() { const buckets = documentStats.documentCountStats?.buckets; - if (buckets === undefined || currentDocumentStatsHash === null) { + if (buckets === undefined) { return; } - if ( - currentDocumentStatsHash !== previousDocumentStatsHash || - (currentAdditionalConfigsHash !== previousAdditionalConfigsHash && - currentDocumentStatsHash !== null) - ) { - randomSampler.setDocCount(documentStats.totalCount); - setEventRate( - Object.entries(buckets).map(([key, docCount]) => ({ - key: +key, - docCount, - })) - ); - loadCategories(); - setPreviousDocumentStatsHash(currentDocumentStatsHash); - setPreviousAdditionalConfigsHash(currentAdditionalConfigsHash); - } + randomSampler.setDocCount(documentStats.totalCount); + setEventRate( + Object.entries(buckets).map(([key, docCount]) => ({ + key: +key, + docCount, + })) + ); + + loadCategories(); }, + // eslint-disable-next-line react-hooks/exhaustive-deps [ - loadCategories, randomSampler, - previousDocumentStatsHash, - fieldValidationResult, - currentDocumentStatsHash, - currentAdditionalConfigsHash, documentStats.documentCountStats?.buckets, documentStats.totalCount, - previousAdditionalConfigsHash, + dataView.name, + fieldName, + minimumTimeRangeOption, + randomSamplerMode, + randomSamplerProbability, ] ); useEffect( function refreshTriggeredFromButton() { - if (input.lastReloadRequestTime !== undefined) { - setPreviousDocumentStatsHash(0); - setPreviousAdditionalConfigsHash(null); + if (lastReloadRequestTime !== undefined) { + cancelRequest(); forceRefresh(); } }, // eslint-disable-next-line react-hooks/exhaustive-deps - [input.lastReloadRequestTime] + [lastReloadRequestTime] ); - const style = css({ - overflowY: 'auto', - '.kbnDocTableWrapper': { - overflowX: 'hidden', - }, - }); + + const actions = [...getActions(false), ...getActions(true)]; return ( <> - + {(loading ?? true) === true ? : null} + + - - - - - - <> - - {(loading ?? true) === true ? ( - - ) : null} - - {loading === false && - data !== null && - data.categories.length > 0 && - selectedField !== null ? ( - - ) : null} - - - - + {loading === false && data !== null && data.categories.length > 0 && fieldName !== null ? ( + + ) : null} ); }; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/minimum_time_range.ts b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/minimum_time_range.ts index 07b5485be7bbd..623f76919063f 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/minimum_time_range.ts +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/minimum_time_range.ts @@ -4,16 +4,50 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { i18n } from '@kbn/i18n'; import type { unitOfTime } from 'moment'; export type MinimumTimeRangeOption = 'No minimum' | '1 week' | '1 month' | '3 months' | '6 months'; -type MinimumTimeRange = Record; +type MinimumTimeRange = Record< + MinimumTimeRangeOption, + { label: string; factor: number; unit: unitOfTime.Base } +>; export const MINIMUM_TIME_RANGE: MinimumTimeRange = { - 'No minimum': { factor: 0, unit: 'w' }, - '1 week': { factor: 1, unit: 'w' }, - '1 month': { factor: 1, unit: 'M' }, - '3 months': { factor: 3, unit: 'M' }, - '6 months': { factor: 6, unit: 'M' }, + 'No minimum': { + label: i18n.translate('xpack.aiops.logCategorization.minimumTimeRange.noMin', { + defaultMessage: 'No minimum', + }), + factor: 0, + unit: 'w', + }, + '1 week': { + label: i18n.translate('xpack.aiops.logCategorization.minimumTimeRange.1week', { + defaultMessage: '1 week', + }), + factor: 1, + unit: 'w', + }, + '1 month': { + label: i18n.translate('xpack.aiops.logCategorization.minimumTimeRange.1month', { + defaultMessage: '1 month', + }), + factor: 1, + unit: 'M', + }, + '3 months': { + label: i18n.translate('xpack.aiops.logCategorization.minimumTimeRange.3months', { + defaultMessage: '3 months', + }), + factor: 3, + unit: 'M', + }, + '6 months': { + label: i18n.translate('xpack.aiops.logCategorization.minimumTimeRange.6months', { + defaultMessage: '6 months', + }), + factor: 6, + unit: 'M', + }, }; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/selected_patterns.tsx b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/selected_patterns.tsx index 44c9014c1aee1..ebbe9ed7fb169 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/selected_patterns.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/selected_patterns.tsx @@ -19,7 +19,8 @@ import { QUERY_MODE } from '@kbn/aiops-log-pattern-analysis/get_category_query'; import type { OpenInDiscover } from '../category_table/use_open_in_discover'; export const SelectedPatterns: FC<{ openInDiscover: OpenInDiscover }> = ({ openInDiscover }) => { - const { labels, openFunction } = openInDiscover; + const { getLabels, openFunction } = openInDiscover; + const labels = getLabels(false); const [showMenu, setShowMenu] = useState(false); const togglePopover = () => setShowMenu(!showMenu); @@ -51,14 +52,14 @@ export const SelectedPatterns: FC<{ openInDiscover: OpenInDiscover }> = ({ openI openFunction(QUERY_MODE.INCLUDE)} + onClick={() => openFunction(QUERY_MODE.INCLUDE, false)} > {labels.multiSelect.in} , openFunction(QUERY_MODE.EXCLUDE)} + onClick={() => openFunction(QUERY_MODE.EXCLUDE, false)} > {labels.multiSelect.out} , diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/use_minimum_time_range.ts b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/use_minimum_time_range.ts index 6d32e0902f1c8..3bb3c0ab1ad5f 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/use_minimum_time_range.ts +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_embeddable/use_minimum_time_range.ts @@ -54,6 +54,11 @@ export function useMinimumTimeRange() { signal: abortController.current.signal, }); + if (resp.end.epoch === null || resp.start.epoch === null) { + // epoch can be null if no data can be found. + return { ...timeRange, useSubAgg: false }; + } + // the index isn't big enough to get a wider time range const indexTimeRangeMs = resp.end.epoch - resp.start.epoch; if (indexTimeRangeMs < minimumTimeRangeMs) { diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx index 99ce9f88c8d2c..ec61dca179da2 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_for_flyout.tsx @@ -46,13 +46,13 @@ import { useCategorizeRequest } from './use_categorize_request'; import type { EventRate } from './use_categorize_request'; import { CategoryTable } from './category_table'; import { InformationText } from './information_text'; -import { SamplingMenu } from './sampling_menu'; +import { SamplingMenu, useRandomSamplerStorage } from './sampling_menu'; import { LoadingCategorization } from './loading_categorization'; import { useValidateFieldRequest } from './use_validate_category_field'; import { FieldValidationCallout } from './category_validation_callout'; import { CreateCategorizationJobButton } from './create_categorization_job'; import { TableHeader } from './category_table/table_header'; -import { useOpenInDiscover } from './category_table/use_open_in_discover'; +import { useActions } from './category_table/use_actions'; enum SELECTED_TAB { BUCKET, @@ -93,23 +93,21 @@ export const LogCategorizationFlyout: FC = ({ const { filters, query } = useMemo(() => getState(), [getState]); const mounted = useRef(false); + const randomSamplerStorage = useRandomSamplerStorage(); const { runCategorizeRequest, cancelRequest: cancelCategorizationRequest, randomSampler, - } = useCategorizeRequest(); + } = useCategorizeRequest(randomSamplerStorage); const [stateFromUrl] = usePageUrlState( 'logCategorization', getDefaultLogCategorizationAppState({ searchQuery: createMergedEsQuery(query, filters, dataView, uiSettings), }) ); - const [highlightedCategory, setHighlightedCategory] = useState(null); const [selectedCategories, setSelectedCategories] = useState([]); - const [selectedSavedSearch /* , setSelectedSavedSearch*/] = useState(savedSearch); const [loading, setLoading] = useState(true); const [eventRate, setEventRate] = useState([]); - const [pinnedCategory, setPinnedCategory] = useState(null); const [data, setData] = useState<{ categories: Category[]; categoriesInBucket: Category[] | null; @@ -139,7 +137,7 @@ export const LogCategorizationFlyout: FC = ({ ); const { searchQueryLanguage, searchString, searchQuery } = useSearch( - { dataView, savedSearch: selectedSavedSearch }, + { dataView, savedSearch }, stateFromUrl, true ); @@ -154,13 +152,12 @@ export const LogCategorizationFlyout: FC = ({ BAR_TARGET ); - const openInDiscover = useOpenInDiscover( + const { getActions, openInDiscover } = useActions( dataView.id!, selectedField, selectedCategories, stateFromUrl, timefilter, - true, undefined, undefined ); @@ -292,6 +289,7 @@ export const LogCategorizationFlyout: FC = ({ randomSampler, ]); + const actions = getActions(true); const infoIconCss = { marginTop: euiTheme.size.m, marginLeft: euiTheme.size.xxs }; return ( @@ -417,15 +415,11 @@ export const LogCategorizationFlyout: FC = ({ : data.categories } eventRate={eventRate} - pinnedCategory={pinnedCategory} - setPinnedCategory={setPinnedCategory} - highlightedCategory={highlightedCategory} - setHighlightedCategory={setHighlightedCategory} enableRowActions={false} displayExamples={data.displayExamples} setSelectedCategories={setSelectedCategories} - openInDiscover={openInDiscover} tableState={tableState} + actions={actions} /> ) : null} diff --git a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx index 5709833d925d9..567201fff0dd2 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_page.tsx @@ -49,12 +49,12 @@ import { useCategorizeRequest } from './use_categorize_request'; import { CategoryTable } from './category_table'; import { DocumentCountChart } from './document_count_chart'; import { InformationText } from './information_text'; -import { SamplingMenu } from './sampling_menu'; +import { SamplingMenu, useRandomSamplerStorage } from './sampling_menu'; import { useValidateFieldRequest } from './use_validate_category_field'; import { FieldValidationCallout } from './category_validation_callout'; import { createDocumentStatsHash } from './utils'; import { TableHeader } from './category_table/table_header'; -import { useOpenInDiscover } from './category_table/use_open_in_discover'; +import { useActions } from './category_table/use_actions'; const BAR_TARGET = 20; const DEFAULT_SELECTED_FIELD = 'message'; @@ -70,11 +70,12 @@ export const LogCategorizationPage: FC = ({ embeddin } = useAiopsAppContext(); const { dataView, savedSearch } = useDataSource(); + const randomSamplerStorage = useRandomSamplerStorage(); const { runCategorizeRequest, cancelRequest: cancelCategorizationRequest, randomSampler, - } = useCategorizeRequest(); + } = useCategorizeRequest(randomSamplerStorage); const { runValidateFieldRequest, cancelRequest: cancelValidationRequest } = useValidateFieldRequest(); const [stateFromUrl, setUrlState] = usePageUrlState( @@ -159,13 +160,12 @@ export const LogCategorizationPage: FC = ({ embeddin BAR_TARGET ); - const openInDiscover = useOpenInDiscover( + const { getActions, openInDiscover } = useActions( dataView.id!, selectedField, selectedCategories, stateFromUrl, timefilter, - true, undefined, undefined ); @@ -336,6 +336,8 @@ export const LogCategorizationPage: FC = ({ embeddin setUrlState({ field }); }; + const actions = getActions(true); + return ( @@ -435,14 +437,16 @@ export const LogCategorizationPage: FC = ({ embeddin ) : null} diff --git a/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/index.ts b/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/index.ts index 9959fd531cb9c..ab0b3f54aa40b 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/index.ts +++ b/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/index.ts @@ -7,3 +7,4 @@ export { SamplingMenu } from './sampling_menu'; export { RandomSampler } from './random_sampler'; +export { useRandomSamplerStorage, type RandomSamplerStorage } from './use_random_sampler_storage'; diff --git a/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/random_sampler.ts b/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/random_sampler.ts index 72ebd2c95b777..48fc5f3b5f28e 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/random_sampler.ts +++ b/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/random_sampler.ts @@ -8,6 +8,7 @@ import { BehaviorSubject } from 'rxjs'; import { createRandomSamplerWrapper } from '@kbn/ml-random-sampler-utils'; import { i18n } from '@kbn/i18n'; +import type { RandomSamplerStorage } from './use_random_sampler_storage'; export const RANDOM_SAMPLER_PROBABILITIES = [ 0.00001, 0.00005, 0.0001, 0.0005, 0.001, 0.005, 0.01, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, @@ -68,12 +69,12 @@ export class RandomSampler { private setRandomSamplerModeInStorage: (mode: RandomSamplerOption) => void; private setRandomSamplerProbabilityInStorage: (prob: RandomSamplerProbability) => void; - constructor( - randomSamplerMode: RandomSamplerOption, - setRandomSamplerMode: (mode: RandomSamplerOption) => void, - randomSamplerProbability: RandomSamplerProbability, - setRandomSamplerProbability: (prob: RandomSamplerProbability) => void - ) { + constructor({ + randomSamplerMode, + randomSamplerProbability, + setRandomSamplerMode, + setRandomSamplerProbability, + }: RandomSamplerStorage) { this.mode$.next(randomSamplerMode); this.setRandomSamplerModeInStorage = setRandomSamplerMode; this.probability$.next(randomSamplerProbability); diff --git a/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/sampling_panel.tsx b/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/sampling_panel.tsx index 1944039a85e7f..3dab7d6d919da 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/sampling_panel.tsx +++ b/x-pack/plugins/aiops/public/components/log_categorization/sampling_menu/sampling_panel.tsx @@ -19,11 +19,19 @@ import { RANDOM_SAMPLER_OPTION, RANDOM_SAMPLER_SELECT_OPTIONS } from './random_s interface Props { randomSampler: RandomSampler; + displayProbability?: boolean; calloutPosition?: 'top' | 'bottom'; + compressed?: boolean; reload: () => void; } -export const SamplingPanel: FC = ({ randomSampler, reload, calloutPosition = 'top' }) => { +export const SamplingPanel: FC = ({ + randomSampler, + reload, + displayProbability = true, + calloutPosition = 'top', + compressed = false, +}) => { const samplingProbability = useObservable( randomSampler.getProbability$(), randomSampler.getProbability() @@ -60,6 +68,7 @@ export const SamplingPanel: FC = ({ randomSampler, reload, calloutPositio ) : null} = ({ randomSampler, reload, calloutPositio } )} helpText={ - randomSamplerPreference === RANDOM_SAMPLER_OPTION.ON_AUTOMATIC ? ( + displayProbability && randomSamplerPreference === RANDOM_SAMPLER_OPTION.ON_AUTOMATIC ? ( ) : null } > ; + +export function useRandomSamplerStorage() { + const [randomSamplerMode, setRandomSamplerMode] = useStorage< + AiOpsKey, + AiOpsStorageMapped + >(AIOPS_RANDOM_SAMPLING_MODE_PREFERENCE, RANDOM_SAMPLER_OPTION.ON_AUTOMATIC); + + const [randomSamplerProbability, setRandomSamplerProbability] = useStorage< + AiOpsKey, + AiOpsStorageMapped + >(AIOPS_RANDOM_SAMPLING_PROBABILITY_PREFERENCE, DEFAULT_PROBABILITY); + + return { + randomSamplerMode, + setRandomSamplerMode, + randomSamplerProbability, + setRandomSamplerProbability, + }; +} diff --git a/x-pack/plugins/aiops/public/components/log_categorization/use_categorize_request.ts b/x-pack/plugins/aiops/public/components/log_categorization/use_categorize_request.ts index 6e21ef246329b..1c792c4f484a6 100644 --- a/x-pack/plugins/aiops/public/components/log_categorization/use_categorize_request.ts +++ b/x-pack/plugins/aiops/public/components/log_categorization/use_categorize_request.ts @@ -10,7 +10,6 @@ import { useRef, useCallback, useMemo } from 'react'; import type { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; import { isRunningResponse } from '@kbn/data-plugin/public'; -import { useStorage } from '@kbn/ml-local-storage'; import { type CategorizationAdditionalFilter, @@ -21,44 +20,22 @@ import type { CatResponse } from '@kbn/aiops-log-pattern-analysis/types'; import type { MappingRuntimeFields } from '@elastic/elasticsearch/lib/api/typesWithBodyKey'; import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; -import { - type AiOpsKey, - type AiOpsStorageMapped, - AIOPS_RANDOM_SAMPLING_MODE_PREFERENCE, - AIOPS_RANDOM_SAMPLING_PROBABILITY_PREFERENCE, -} from '../../types/storage'; +import type { RandomSamplerStorage } from './sampling_menu'; import { RandomSampler } from './sampling_menu'; -import { RANDOM_SAMPLER_OPTION, DEFAULT_PROBABILITY } from './sampling_menu/random_sampler'; export type EventRate = Array<{ key: number; docCount: number; }>; -export function useCategorizeRequest() { - const [randomSamplerMode, setRandomSamplerMode] = useStorage< - AiOpsKey, - AiOpsStorageMapped - >(AIOPS_RANDOM_SAMPLING_MODE_PREFERENCE, RANDOM_SAMPLER_OPTION.ON_AUTOMATIC); - - const [randomSamplerProbability, setRandomSamplerProbability] = useStorage< - AiOpsKey, - AiOpsStorageMapped - >(AIOPS_RANDOM_SAMPLING_PROBABILITY_PREFERENCE, DEFAULT_PROBABILITY); - +export function useCategorizeRequest(randomSamplerStorage: RandomSamplerStorage) { const { data } = useAiopsAppContext(); const abortController = useRef(new AbortController()); const randomSampler = useMemo( - () => - new RandomSampler( - randomSamplerMode, - setRandomSamplerMode, - randomSamplerProbability, - setRandomSamplerProbability - ), + () => new RandomSampler(randomSamplerStorage), // eslint-disable-next-line react-hooks/exhaustive-deps [] ); diff --git a/x-pack/plugins/aiops/public/embeddables/index.ts b/x-pack/plugins/aiops/public/embeddables/index.ts index 2affeffea7799..b7d9ad25951fb 100644 --- a/x-pack/plugins/aiops/public/embeddables/index.ts +++ b/x-pack/plugins/aiops/public/embeddables/index.ts @@ -8,6 +8,7 @@ import type { CoreSetup } from '@kbn/core-lifecycle-browser'; import type { EmbeddableSetup } from '@kbn/embeddable-plugin/public'; import { EMBEDDABLE_CHANGE_POINT_CHART_TYPE } from '@kbn/aiops-change-point-detection/constants'; +import { EMBEDDABLE_PATTERN_ANALYSIS_TYPE } from '@kbn/aiops-log-pattern-analysis/constants'; import type { AiopsPluginStart, AiopsPluginStartDeps } from '../types'; export const registerEmbeddables = ( @@ -18,4 +19,8 @@ export const registerEmbeddables = ( const { getChangePointChartEmbeddableFactory } = await import('./change_point_chart'); return getChangePointChartEmbeddableFactory(core.getStartServices); }); + embeddable.registerReactEmbeddableFactory(EMBEDDABLE_PATTERN_ANALYSIS_TYPE, async () => { + const { getPatternAnalysisEmbeddableFactory } = await import('./pattern_analysis'); + return getPatternAnalysisEmbeddableFactory(core.getStartServices); + }); }; diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/embeddable_pattern_analysis_factory.tsx b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/embeddable_pattern_analysis_factory.tsx new file mode 100644 index 0000000000000..e1af6b45ac3f9 --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/embeddable_pattern_analysis_factory.tsx @@ -0,0 +1,265 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EMBEDDABLE_PATTERN_ANALYSIS_TYPE, + PATTERN_ANALYSIS_DATA_VIEW_REF_NAME, +} from '@kbn/aiops-log-pattern-analysis/constants'; +import type { Reference } from '@kbn/content-management-utils'; +import type { StartServicesAccessor } from '@kbn/core-lifecycle-browser'; +import { type DataPublicPluginStart } from '@kbn/data-plugin/public'; +import type { DataView } from '@kbn/data-views-plugin/common'; +import { DATA_VIEW_SAVED_OBJECT_TYPE } from '@kbn/data-views-plugin/common'; +import type { ReactEmbeddableFactory } from '@kbn/embeddable-plugin/public'; +import { i18n } from '@kbn/i18n'; +import { + apiHasExecutionContext, + fetch$, + initializeTimeRange, + initializeTitles, + useBatchedPublishingSubjects, +} from '@kbn/presentation-publishing'; +import fastIsEqual from 'fast-deep-equal'; +import { cloneDeep } from 'lodash'; +import React, { useMemo } from 'react'; +import useObservable from 'react-use/lib/useObservable'; +import { BehaviorSubject, distinctUntilChanged, map, skipWhile } from 'rxjs'; +import { getPatternAnalysisComponent } from '../../shared_components'; +import type { AiopsPluginStart, AiopsPluginStartDeps } from '../../types'; +import { initializePatternAnalysisControls } from './initialize_pattern_analysis_controls'; +import type { + PatternAnalysisEmbeddableApi, + PatternAnalysisEmbeddableRuntimeState, + PatternAnalysisEmbeddableState, +} from './types'; + +export interface EmbeddablePatternAnalysisStartServices { + data: DataPublicPluginStart; +} + +export type EmbeddablePatternAnalysisType = typeof EMBEDDABLE_PATTERN_ANALYSIS_TYPE; + +export const getDependencies = async ( + getStartServices: StartServicesAccessor +) => { + const [ + { http, uiSettings, notifications, ...startServices }, + { lens, data, usageCollection, fieldFormats }, + ] = await getStartServices(); + + return { + http, + uiSettings, + data, + notifications, + lens, + usageCollection, + fieldFormats, + ...startServices, + }; +}; + +export const getPatternAnalysisEmbeddableFactory = ( + getStartServices: StartServicesAccessor +) => { + const factory: ReactEmbeddableFactory< + PatternAnalysisEmbeddableState, + PatternAnalysisEmbeddableRuntimeState, + PatternAnalysisEmbeddableApi + > = { + type: EMBEDDABLE_PATTERN_ANALYSIS_TYPE, + deserializeState: (state) => { + const serializedState = cloneDeep(state.rawState); + // inject the reference + const dataViewIdRef = state.references?.find( + (ref) => ref.name === PATTERN_ANALYSIS_DATA_VIEW_REF_NAME + ); + // if the serializedState already contains a dataViewId, we don't want to overwrite it. (Unsaved state can cause this) + if (dataViewIdRef && serializedState && !serializedState.dataViewId) { + serializedState.dataViewId = dataViewIdRef?.id; + } + return serializedState; + }, + buildEmbeddable: async (state, buildApi, uuid, parentApi) => { + const [coreStart, pluginStart] = await getStartServices(); + + const { http, uiSettings, notifications, ...startServices } = coreStart; + const { lens, data, usageCollection, fieldFormats } = pluginStart; + + const deps = { + http, + uiSettings, + data, + notifications, + lens, + usageCollection, + fieldFormats, + ...startServices, + }; + + const { + api: timeRangeApi, + comparators: timeRangeComparators, + serialize: serializeTimeRange, + } = initializeTimeRange(state); + + const { titlesApi, titleComparators, serializeTitles } = initializeTitles(state); + + const { + patternAnalysisControlsApi, + serializePatternAnalysisChartState, + patternAnalysisControlsComparators, + } = initializePatternAnalysisControls(state); + + const dataLoading = new BehaviorSubject(true); + const blockingError = new BehaviorSubject(undefined); + + const dataViews$ = new BehaviorSubject([ + await deps.data.dataViews.get( + state.dataViewId ?? (await deps.data.dataViews.getDefaultId()) + ), + ]); + + const api = buildApi( + { + ...timeRangeApi, + ...titlesApi, + ...patternAnalysisControlsApi, + getTypeDisplayName: () => + i18n.translate('xpack.aiops.patternAnalysis.typeDisplayName', { + defaultMessage: 'pattern analysis', + }), + isEditingEnabled: () => true, + onEdit: async () => { + try { + const { resolveEmbeddablePatternAnalysisUserInput } = await import( + './resolve_pattern_analysis_config_input' + ); + + const result = await resolveEmbeddablePatternAnalysisUserInput( + coreStart, + pluginStart, + parentApi, + uuid, + false, + patternAnalysisControlsApi, + undefined, + serializePatternAnalysisChartState() + ); + + patternAnalysisControlsApi.updateUserInput(result); + } catch (e) { + return Promise.reject(); + } + }, + dataLoading, + blockingError, + dataViews: dataViews$, + serializeState: () => { + const dataViewId = patternAnalysisControlsApi.dataViewId.getValue(); + const references: Reference[] = dataViewId + ? [ + { + type: DATA_VIEW_SAVED_OBJECT_TYPE, + name: PATTERN_ANALYSIS_DATA_VIEW_REF_NAME, + id: dataViewId, + }, + ] + : []; + return { + rawState: { + timeRange: undefined, + ...serializeTitles(), + ...serializeTimeRange(), + ...serializePatternAnalysisChartState(), + }, + references, + }; + }, + }, + { + ...timeRangeComparators, + ...titleComparators, + ...patternAnalysisControlsComparators, + } + ); + + const PatternAnalysisComponent = getPatternAnalysisComponent(coreStart, pluginStart); + + const onLoading = (v: boolean) => dataLoading.next(v); + const onRenderComplete = () => dataLoading.next(false); + const onError = (error: Error) => blockingError.next(error); + + return { + api, + Component: () => { + if (!apiHasExecutionContext(parentApi)) { + throw new Error('Parent API does not have execution context'); + } + + const [ + dataViewId, + fieldName, + minimumTimeRangeOption, + randomSamplerMode, + randomSamplerProbability, + ] = useBatchedPublishingSubjects( + api.dataViewId, + api.fieldName, + api.minimumTimeRangeOption, + api.randomSamplerMode, + api.randomSamplerProbability + ); + + const reload$ = useMemo( + () => + fetch$(api).pipe( + skipWhile((fetchContext) => !fetchContext.isReload), + map((fetchContext) => Date.now()) + ), + [] + ); + + const timeRange$ = useMemo( + () => + fetch$(api).pipe( + map((fetchContext) => fetchContext.timeRange), + distinctUntilChanged(fastIsEqual) + ), + [] + ); + + const lastReloadRequestTime = useObservable(reload$, Date.now()); + const timeRange = useObservable(timeRange$, undefined); + + let embeddingOrigin; + if (apiHasExecutionContext(parentApi)) { + embeddingOrigin = parentApi.executionContext.type; + } + + return ( + + ); + }, + }; + }, + }; + + return factory; +}; diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/index.ts b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/index.ts new file mode 100644 index 0000000000000..419fcf091f5fd --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export { getPatternAnalysisEmbeddableFactory } from './embeddable_pattern_analysis_factory'; diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/initialize_pattern_analysis_controls.ts b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/initialize_pattern_analysis_controls.ts new file mode 100644 index 0000000000000..31de22365df7f --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/initialize_pattern_analysis_controls.ts @@ -0,0 +1,66 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { StateComparators } from '@kbn/presentation-publishing'; +import { BehaviorSubject } from 'rxjs'; +import type { PatternAnalysisComponentApi, PatternAnalysisEmbeddableState } from './types'; + +type PatternAnalysisEmbeddableCustomState = Omit< + PatternAnalysisEmbeddableState, + 'timeRange' | 'title' | 'description' | 'hidePanelTitles' +>; + +export const initializePatternAnalysisControls = (rawState: PatternAnalysisEmbeddableState) => { + const dataViewId = new BehaviorSubject(rawState.dataViewId); + const fieldName = new BehaviorSubject(rawState.fieldName); + const minimumTimeRangeOption = new BehaviorSubject(rawState.minimumTimeRangeOption); + const randomSamplerMode = new BehaviorSubject(rawState.randomSamplerMode); + const randomSamplerProbability = new BehaviorSubject(rawState.randomSamplerProbability); + + const updateUserInput = (update: PatternAnalysisEmbeddableCustomState) => { + dataViewId.next(update.dataViewId); + fieldName.next(update.fieldName); + minimumTimeRangeOption.next(update.minimumTimeRangeOption); + randomSamplerMode.next(update.randomSamplerMode); + randomSamplerProbability.next(update.randomSamplerProbability); + }; + + const serializePatternAnalysisChartState = (): PatternAnalysisEmbeddableCustomState => { + return { + dataViewId: dataViewId.getValue(), + fieldName: fieldName.getValue(), + minimumTimeRangeOption: minimumTimeRangeOption.getValue(), + randomSamplerMode: randomSamplerMode.getValue(), + randomSamplerProbability: randomSamplerProbability.getValue(), + }; + }; + + const patternAnalysisControlsComparators: StateComparators = + { + dataViewId: [dataViewId, (arg) => dataViewId.next(arg)], + fieldName: [fieldName, (arg) => fieldName.next(arg)], + minimumTimeRangeOption: [minimumTimeRangeOption, (arg) => minimumTimeRangeOption.next(arg)], + randomSamplerMode: [randomSamplerMode, (arg) => randomSamplerMode.next(arg)], + randomSamplerProbability: [ + randomSamplerProbability, + (arg) => randomSamplerProbability.next(arg), + ], + }; + + return { + patternAnalysisControlsApi: { + dataViewId, + fieldName, + minimumTimeRangeOption, + randomSamplerMode, + randomSamplerProbability, + updateUserInput, + } as unknown as PatternAnalysisComponentApi, + serializePatternAnalysisChartState, + patternAnalysisControlsComparators, + }; +}; diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysis_initializer.tsx b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysis_initializer.tsx new file mode 100644 index 0000000000000..4ed1dadf3dc1e --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysis_initializer.tsx @@ -0,0 +1,420 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiFlyoutHeader, + EuiTitle, + EuiFlyoutBody, + EuiForm, + EuiFormRow, + EuiSpacer, + EuiButton, + EuiButtonEmpty, + EuiFlexGroup, + EuiFlexItem, + EuiFlyoutFooter, + EuiCallOut, +} from '@elastic/eui'; +import { euiThemeVars } from '@kbn/ui-theme'; +import { i18n } from '@kbn/i18n'; +import type { FC } from 'react'; +import React, { useEffect, useMemo, useState, useCallback } from 'react'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { pick } from 'lodash'; +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import useObservable from 'react-use/lib/useObservable'; +import type { DataViewField } from '@kbn/data-views-plugin/public'; +import useMountedState from 'react-use/lib/useMountedState'; +import { useAiopsAppContext } from '../../hooks/use_aiops_app_context'; +import { DataSourceContextProvider } from '../../hooks/use_data_source'; +import type { PatternAnalysisEmbeddableRuntimeState } from './types'; +import { PatternAnalysisSettings } from '../../components/log_categorization/log_categorization_for_embeddable/embeddable_menu'; +import { RandomSampler } from '../../components/log_categorization/sampling_menu'; +import { + DEFAULT_PROBABILITY, + RANDOM_SAMPLER_OPTION, +} from '../../components/log_categorization/sampling_menu/random_sampler'; +import type { MinimumTimeRangeOption } from '../../components/log_categorization/log_categorization_for_embeddable/minimum_time_range'; +import { getMessageField } from '../../components/log_categorization/utils'; +import { FieldSelector } from '../../components/log_categorization/log_categorization_for_embeddable/field_selector'; +import { SamplingPanel } from '../../components/log_categorization/sampling_menu/sampling_panel'; + +export interface PatternAnalysisInitializerProps { + initialInput?: Partial; + onCreate: (props: PatternAnalysisEmbeddableRuntimeState) => void; + onCancel: () => void; + onPreview: (update: PatternAnalysisEmbeddableRuntimeState) => Promise; + isNewPanel: boolean; +} + +export const PatternAnalysisEmbeddableInitializer: FC = ({ + initialInput, + onCreate, + onCancel, + onPreview, + isNewPanel, +}) => { + const { + unifiedSearch: { + ui: { IndexPatternSelect }, + }, + } = useAiopsAppContext(); + + const [formInput, setFormInput] = useState( + pick( + initialInput ?? { + minimumTimeRangeOption: '1 week', + randomSamplerMode: RANDOM_SAMPLER_OPTION.ON_AUTOMATIC, + randomSamplerProbability: DEFAULT_PROBABILITY, + }, + [ + 'dataViewId', + 'fieldName', + 'minimumTimeRangeOption', + 'randomSamplerMode', + 'randomSamplerProbability', + ] + ) as PatternAnalysisEmbeddableRuntimeState + ); + const [isFormValid, setIsFormValid] = useState(true); + + const updatedProps = useMemo(() => { + return { + ...formInput, + title: isPopulatedObject(formInput) + ? i18n.translate('xpack.aiops.embeddablePatternAnalysis.attachmentTitle', { + defaultMessage: 'Pattern analysis: {fieldName}', + values: { + fieldName: formInput.fieldName, + }, + }) + : '', + }; + }, [formInput]); + + useEffect( + function previewChanges() { + if (isFormValid && updatedProps.fieldName !== undefined) { + onPreview(updatedProps); + } + }, + [isFormValid, onPreview, updatedProps] + ); + + const setDataViewId = useCallback( + (dataViewId: string | undefined) => { + setFormInput({ + ...formInput, + dataViewId: dataViewId ?? '', + fieldName: undefined, + }); + setIsFormValid(false); + }, + [formInput] + ); + + return ( + <> + + +

+ {isNewPanel + ? i18n.translate('xpack.aiops.embeddablePatternAnalysis.config.title.new', { + defaultMessage: 'Create pattern analysis', + }) + : i18n.translate('xpack.aiops.embeddablePatternAnalysis.config.title.edit', { + defaultMessage: 'Edit pattern analysis', + })} +

+
+
+ + + + + { + setDataViewId(newId ?? ''); + }} + /> + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export const FormControls: FC<{ + formInput: PatternAnalysisEmbeddableRuntimeState; + onChange: (update: PatternAnalysisEmbeddableRuntimeState) => void; + onValidationChange: (isValid: boolean) => void; +}> = ({ formInput, onChange, onValidationChange }) => { + const dataViewId = formInput.dataViewId; + const { + data: { dataViews }, + } = useAiopsAppContext(); + const [fields, setFields] = useState([]); + const [selectedField, setSelectedField] = useState(null); + const [isDataViewTimeBased, setIsDataViewTimeBased] = useState(true); + + const randomSampler = useMemo(() => { + return new RandomSampler({ + randomSamplerMode: formInput.randomSamplerMode ?? RANDOM_SAMPLER_OPTION.ON_AUTOMATIC, + setRandomSamplerMode: () => {}, + randomSamplerProbability: formInput.randomSamplerProbability ?? DEFAULT_PROBABILITY, + setRandomSamplerProbability: () => {}, + }); + }, [formInput.randomSamplerMode, formInput.randomSamplerProbability]); + const randomSamplerMode = useObservable(randomSampler.getMode$(), randomSampler.getMode()); + const randomSamplerProbability = useObservable( + randomSampler.getProbability$(), + randomSampler.getProbability() + ); + + const isMounted = useMountedState(); + + useEffect( + function initFields() { + if (!dataViewId) { + setFields([]); + setSelectedField(null); + return; + } + + dataViews + .get(dataViewId) + .then((dataView) => { + if (!isMounted()) { + return; + } + const isTimeBased = dataView.isTimeBased(); + setIsDataViewTimeBased(isTimeBased); + if (isTimeBased === false) { + setFields([]); + setSelectedField(null); + return; + } + const { dataViewFields, messageField } = getMessageField(dataView); + setFields(dataViewFields); + const field = dataViewFields.find((f) => f.name === formInput.fieldName); + if (formInput.fieldName === undefined) { + // form input does not contain a field name, select the found message field + setSelectedField(messageField ?? null); + return; + } + // otherwise, select the field from the form input + setSelectedField(field ?? messageField ?? null); + }) + .catch(() => { + setFields([]); + setSelectedField(null); + }); + }, + [dataViewId, dataViews, formInput, isMounted, onChange] + ); + + useEffect( + function validateForm() { + onValidationChange(selectedField !== null && formInput.dataViewId !== undefined); + }, + [selectedField, formInput, onValidationChange] + ); + + useEffect( + function samplerChange() { + onChange({ + ...formInput, + randomSamplerMode, + randomSamplerProbability, + }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [onChange, randomSamplerMode, randomSamplerProbability] + ); + + useEffect( + function samplerChange() { + if (selectedField === null) { + return; + } + + onChange({ + ...formInput, + fieldName: selectedField.name, + }); + }, + // eslint-disable-next-line react-hooks/exhaustive-deps + [onChange, selectedField] + ); + + const setMinimumTimeRangeOption = (option: MinimumTimeRangeOption) => { + onChange({ + ...formInput, + minimumTimeRangeOption: option, + }); + }; + + return ( + <> + + + + + + + + + {}} + calloutPosition="bottom" + displayProbability={false} + compressed={true} + /> + + ); +}; + +const TextFieldWarning = () => { + return ( + <> + +

+ {i18n.translate( + 'xpack.aiops.logCategorization.embeddableMenu.textFieldWarning.title.description', + { + defaultMessage: 'Pattern analysis can only be run on data views with a text field.', + } + )} +

+
+ + + ); +}; + +const TimeFieldWarning = () => { + return ( + <> + +

+ {i18n.translate( + 'xpack.aiops.logCategorization.embeddableMenu.timeFieldWarning.title.description', + { + defaultMessage: 'Pattern analysis can only be run on data views with a time field.', + } + )} +

+
+ + + ); +}; diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysys_component_wrapper.tsx b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysys_component_wrapper.tsx new file mode 100644 index 0000000000000..ebdac78e00c5c --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/pattern_analysys_component_wrapper.tsx @@ -0,0 +1,75 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { FC } from 'react'; +import React from 'react'; +import { useDataSource } from '../../hooks/use_data_source'; +import type { PatternAnalysisProps } from '../../shared_components/pattern_analysis'; +import LogCategorizationEmbeddable from '../../components/log_categorization/log_categorization_for_embeddable/log_categorization_for_embeddable'; + +/** + * Grid component wrapper for embeddable. + * + * @param fieldName + * @param minimumTimeRangeOption + * @param randomSamplerMode + * @param randomSamplerProbability + * @param lastReloadRequestTime + * @param onError + * @param onLoading + * @param onRenderComplete + * @param onChange + * @param emptyState + * @param timeRange + * @constructor + */ +export const PatternAnalysisEmbeddableWrapper: FC = ({ + dataViewId, + fieldName, + minimumTimeRangeOption, + randomSamplerMode, + randomSamplerProbability, + lastReloadRequestTime, + onError, + onLoading, + onRenderComplete, + onChange, + emptyState, + timeRange, +}) => { + const { dataView } = useDataSource(); + + if (dataView.id !== dataViewId) { + return null; + } + + return ( +
+ +
+ ); +}; diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/resolve_pattern_analysis_config_input.tsx b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/resolve_pattern_analysis_config_input.tsx new file mode 100644 index 0000000000000..e1345526bf25d --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/resolve_pattern_analysis_config_input.tsx @@ -0,0 +1,103 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { CoreStart } from '@kbn/core/public'; +import { tracksOverlays } from '@kbn/presentation-containers'; +import { toMountPoint } from '@kbn/react-kibana-mount'; +import React from 'react'; +import type { AiopsAppDependencies } from '../..'; +import { AiopsAppContext } from '../../hooks/use_aiops_app_context'; +import type { AiopsPluginStartDeps } from '../../types'; +import { PatternAnalysisEmbeddableInitializer } from './pattern_analysis_initializer'; +import type { PatternAnalysisComponentApi, PatternAnalysisEmbeddableState } from './types'; + +export async function resolveEmbeddablePatternAnalysisUserInput( + coreStart: CoreStart, + pluginStart: AiopsPluginStartDeps, + parentApi: unknown, + focusedPanelId: string, + isNewPanel: boolean, + patternAnalysisControlsApi: PatternAnalysisComponentApi, + deletePanel?: () => void, + initialState?: PatternAnalysisEmbeddableState +): Promise { + const { overlays } = coreStart; + + const overlayTracker = tracksOverlays(parentApi) ? parentApi : undefined; + + let hasChanged = false; + return new Promise(async (resolve, reject) => { + try { + const cancelChanges = () => { + if (isNewPanel && deletePanel) { + deletePanel(); + } else if (hasChanged && patternAnalysisControlsApi && initialState) { + // Reset to initialState in case user has changed the preview state + patternAnalysisControlsApi.updateUserInput(initialState); + } + + flyoutSession.close(); + overlayTracker?.clearOverlays(); + }; + + const update = async (nextUpdate: PatternAnalysisEmbeddableState) => { + resolve(nextUpdate); + flyoutSession.close(); + overlayTracker?.clearOverlays(); + }; + + const preview = async (nextUpdate: PatternAnalysisEmbeddableState) => { + if (patternAnalysisControlsApi) { + patternAnalysisControlsApi.updateUserInput(nextUpdate); + hasChanged = true; + } + }; + + const flyoutSession = overlays.openFlyout( + toMountPoint( + + + , + coreStart + ), + { + ownFocus: true, + size: 's', + type: 'push', + paddingSize: 'm', + hideCloseButton: true, + 'data-test-subj': 'aiopsPatternAnalysisEmbeddableInitializer', + 'aria-labelledby': 'patternAnalysisConfig', + onClose: () => { + reject(); + flyoutSession.close(); + overlayTracker?.clearOverlays(); + }, + } + ); + + if (tracksOverlays(parentApi)) { + parentApi.openOverlay(flyoutSession, { focusedPanelId }); + } + } catch (error) { + reject(error); + } + }); +} diff --git a/x-pack/plugins/aiops/public/embeddables/pattern_analysis/types.ts b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/types.ts new file mode 100644 index 0000000000000..f78934b9075f1 --- /dev/null +++ b/x-pack/plugins/aiops/public/embeddables/pattern_analysis/types.ts @@ -0,0 +1,62 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DefaultEmbeddableApi } from '@kbn/embeddable-plugin/public'; +import type { + HasEditCapabilities, + PublishesDataViews, + PublishesTimeRange, + PublishingSubject, + SerializedTimeRange, + SerializedTitles, +} from '@kbn/presentation-publishing'; +import type { FC } from 'react'; +import type { MinimumTimeRangeOption } from '../../components/log_categorization/log_categorization_for_embeddable/minimum_time_range'; +import type { + RandomSamplerOption, + RandomSamplerProbability, +} from '../../components/log_categorization/sampling_menu/random_sampler'; + +export type ViewComponent = FC<{ + interval: string; + onRenderComplete?: () => void; +}>; + +export interface PatternAnalysisComponentApi { + dataViewId: PublishingSubject; + fieldName: PublishingSubject; + minimumTimeRangeOption: PublishingSubject< + PatternAnalysisEmbeddableState['minimumTimeRangeOption'] + >; + randomSamplerMode: PublishingSubject; + randomSamplerProbability: PublishingSubject< + PatternAnalysisEmbeddableState['randomSamplerProbability'] + >; + updateUserInput: (update: PatternAnalysisEmbeddableState) => void; +} + +export type PatternAnalysisEmbeddableApi = DefaultEmbeddableApi & + HasEditCapabilities & + PublishesDataViews & + PublishesTimeRange & + PatternAnalysisComponentApi; + +export interface PatternAnalysisEmbeddableState extends SerializedTitles, SerializedTimeRange { + dataViewId: string; + fieldName: string | undefined; + minimumTimeRangeOption: MinimumTimeRangeOption; + randomSamplerMode: RandomSamplerOption; + randomSamplerProbability: RandomSamplerProbability; +} + +export interface PatternAnalysisEmbeddableInitialState + extends SerializedTitles, + SerializedTimeRange { + dataViewId?: string; +} + +export type PatternAnalysisEmbeddableRuntimeState = PatternAnalysisEmbeddableState; diff --git a/x-pack/plugins/aiops/public/plugin.tsx b/x-pack/plugins/aiops/public/plugin.tsx index 7d55c3098cfaf..ceb378b0f29bf 100755 --- a/x-pack/plugins/aiops/public/plugin.tsx +++ b/x-pack/plugins/aiops/public/plugin.tsx @@ -72,7 +72,7 @@ export class AiopsPlugin PatternAnalysisComponent: dynamic( async () => import( - './components/log_categorization/log_categorization_for_embeddable/log_categorization_wrapper' + './components/log_categorization/log_categorization_for_embeddable/log_categorization_for_discover_wrapper' ) ), }; diff --git a/x-pack/plugins/aiops/public/shared_components/index.tsx b/x-pack/plugins/aiops/public/shared_components/index.tsx index 3e19cfda3b844..1c5b85c4b79b6 100644 --- a/x-pack/plugins/aiops/public/shared_components/index.tsx +++ b/x-pack/plugins/aiops/public/shared_components/index.tsx @@ -10,6 +10,7 @@ import { dynamic } from '@kbn/shared-ux-utility'; import type { CoreStart } from '@kbn/core-lifecycle-browser'; import type { AiopsPluginStartDeps } from '../types'; import type { ChangePointDetectionSharedComponent } from './change_point_detection'; +import type { PatternAnalysisSharedComponent } from './pattern_analysis'; const ChangePointDetectionLazy = dynamic(async () => import('./change_point_detection')); @@ -23,3 +24,16 @@ export const getChangePointDetectionComponent = ( }; export type { ChangePointDetectionSharedComponent } from './change_point_detection'; + +const PatternAnalysisLazy = dynamic(async () => import('./pattern_analysis')); + +export const getPatternAnalysisComponent = ( + coreStart: CoreStart, + pluginStart: AiopsPluginStartDeps +): PatternAnalysisSharedComponent => { + return React.memo((props) => { + return ; + }); +}; + +export type { PatternAnalysisSharedComponent } from './pattern_analysis'; diff --git a/x-pack/plugins/aiops/public/shared_components/pattern_analysis.tsx b/x-pack/plugins/aiops/public/shared_components/pattern_analysis.tsx new file mode 100644 index 0000000000000..af474f4f5ef3e --- /dev/null +++ b/x-pack/plugins/aiops/public/shared_components/pattern_analysis.tsx @@ -0,0 +1,172 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { EMBEDDABLE_ORIGIN } from '@kbn/aiops-common/constants'; +import type { Category } from '@kbn/aiops-log-pattern-analysis/types'; +import type { CoreStart } from '@kbn/core-lifecycle-browser'; +import { UI_SETTINGS } from '@kbn/data-service'; +import type { TimeRange } from '@kbn/es-query'; +import { DatePickerContextProvider } from '@kbn/ml-date-picker'; +import { KibanaRenderContextProvider } from '@kbn/react-kibana-context-render'; +import { pick } from 'lodash'; +import React, { useEffect, useMemo, useState, type FC } from 'react'; +import type { Observable } from 'rxjs'; +import { BehaviorSubject, combineLatest, distinctUntilChanged, map } from 'rxjs'; +import type { MinimumTimeRangeOption } from '../components/log_categorization/log_categorization_for_embeddable/minimum_time_range'; +import type { + RandomSamplerOption, + RandomSamplerProbability, +} from '../components/log_categorization/sampling_menu/random_sampler'; +import { PatternAnalysisEmbeddableWrapper } from '../embeddables/pattern_analysis/pattern_analysys_component_wrapper'; +import { AiopsAppContext, type AiopsAppDependencies } from '../hooks/use_aiops_app_context'; +import { DataSourceContextProvider } from '../hooks/use_data_source'; +import { FilterQueryContextProvider } from '../hooks/use_filters_query'; +import { ReloadContextProvider } from '../hooks/use_reload'; +import type { AiopsPluginStartDeps } from '../types'; + +/** + * Only used to initialize internally + */ +export type PatternAnalysisPropsWithDeps = PatternAnalysisProps & { + coreStart: CoreStart; + pluginStart: AiopsPluginStartDeps; +}; + +export type PatternAnalysisSharedComponent = FC; + +export interface PatternAnalysisProps { + dataViewId: string; + timeRange: TimeRange; + fieldName: string | undefined; + minimumTimeRangeOption: MinimumTimeRangeOption; + randomSamplerMode: RandomSamplerOption; + randomSamplerProbability: RandomSamplerProbability; + /** + * Component to render if there are no patterns found + */ + emptyState?: React.ReactElement; + /** + * Outputs the most recent patterns data + */ + onChange?: (patterns: Category[]) => void; + /** + * Last reload request time, can be used for manual reload + */ + lastReloadRequestTime?: number; + /** Origin of the embeddable instance */ + embeddingOrigin?: string; + onLoading: (isLoading: boolean) => void; + onRenderComplete: () => void; + onError: (error: Error) => void; +} + +const PatternAnalysisWrapper: FC = ({ + // Component dependencies + coreStart, + pluginStart, + // Component props + dataViewId, + timeRange, + fieldName, + minimumTimeRangeOption, + randomSamplerMode, + randomSamplerProbability, + onLoading, + onError, + onRenderComplete, + embeddingOrigin, + lastReloadRequestTime, + onChange, +}) => { + const deps = useMemo(() => { + const { http, uiSettings, notifications, ...startServices } = coreStart; + const { lens, data, usageCollection, fieldFormats, charts } = pluginStart; + + return { + http, + uiSettings, + data, + notifications, + lens, + usageCollection, + fieldFormats, + charts, + ...startServices, + }; + }, [coreStart, pluginStart]); + + const datePickerDeps = { + ...pick(deps, ['data', 'http', 'notifications', 'theme', 'uiSettings', 'i18n']), + uiSettingsKeys: UI_SETTINGS, + }; + + const aiopsAppContextValue = useMemo(() => { + return { + embeddingOrigin: embeddingOrigin ?? EMBEDDABLE_ORIGIN, + ...deps, + } as unknown as AiopsAppDependencies; + }, [deps, embeddingOrigin]); + + const [manualReload$] = useState>( + new BehaviorSubject(lastReloadRequestTime ?? Date.now()) + ); + + useEffect( + function updateManualReloadSubject() { + if (!lastReloadRequestTime) return; + manualReload$.next(lastReloadRequestTime); + }, + [lastReloadRequestTime, manualReload$] + ); + + const resultObservable$ = useMemo>(() => { + return combineLatest([manualReload$]).pipe( + map(([manualReload]) => Math.max(manualReload)), + distinctUntilChanged() + ); + }, [manualReload$]); + + // TODO: Remove data-shared-item as part of https://github.com/elastic/kibana/issues/179376> + return ( +
+ + + + + + + + + + + + + +
+ ); +}; + +// eslint-disable-next-line import/no-default-export +export default PatternAnalysisWrapper; diff --git a/x-pack/plugins/aiops/public/types/index.ts b/x-pack/plugins/aiops/public/types/index.ts index 9150c9b983f84..561c91b178eac 100644 --- a/x-pack/plugins/aiops/public/types/index.ts +++ b/x-pack/plugins/aiops/public/types/index.ts @@ -22,7 +22,7 @@ import type { UsageCollectionSetup } from '@kbn/usage-collection-plugin/public'; import type { DataView } from '@kbn/data-views-plugin/public'; import type { ChangePointDetectionSharedComponent } from '../shared_components'; -import type { LogCategorizationEmbeddableWrapperProps } from '../components/log_categorization/log_categorization_for_embeddable/log_categorization_wrapper'; +import type { LogCategorizationEmbeddableWrapperProps } from '../components/log_categorization/log_categorization_for_embeddable/log_categorization_for_discover_wrapper'; export interface AiopsPluginSetupDeps { embeddable: EmbeddableSetup; diff --git a/x-pack/plugins/aiops/public/ui_actions/create_pattern_analysis_action.tsx b/x-pack/plugins/aiops/public/ui_actions/create_pattern_analysis_action.tsx new file mode 100644 index 0000000000000..81127559e4e3d --- /dev/null +++ b/x-pack/plugins/aiops/public/ui_actions/create_pattern_analysis_action.tsx @@ -0,0 +1,97 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { i18n } from '@kbn/i18n'; +import type { PresentationContainer } from '@kbn/presentation-containers'; +import type { EmbeddableApiContext } from '@kbn/presentation-publishing'; +import type { UiActionsActionDefinition } from '@kbn/ui-actions-plugin/public'; +import { IncompatibleActionError } from '@kbn/ui-actions-plugin/public'; +import type { CoreStart } from '@kbn/core-lifecycle-browser'; +import { EMBEDDABLE_PATTERN_ANALYSIS_TYPE } from '@kbn/aiops-log-pattern-analysis/constants'; +import type { AiopsPluginStartDeps } from '../types'; +import type { PatternAnalysisActionContext } from './pattern_analysis_action_context'; +import type { + PatternAnalysisEmbeddableApi, + PatternAnalysisEmbeddableInitialState, +} from '../embeddables/pattern_analysis/types'; + +const parentApiIsCompatible = async ( + parentApi: unknown +): Promise => { + const { apiIsPresentationContainer } = await import('@kbn/presentation-containers'); + // we cannot have an async type check, so return the casted parentApi rather than a boolean + return apiIsPresentationContainer(parentApi) ? (parentApi as PresentationContainer) : undefined; +}; + +export function createAddPatternAnalysisEmbeddableAction( + coreStart: CoreStart, + pluginStart: AiopsPluginStartDeps +): UiActionsActionDefinition { + return { + id: 'create-pattern-analysis-embeddable', + grouping: [ + { + id: 'ml', + getDisplayName: () => + i18n.translate('xpack.aiops.navMenu.mlAppNameText', { + defaultMessage: 'Machine Learning and Analytics', + }), + getIconType: () => 'logPatternAnalysis', + }, + ], + getIconType: () => 'logPatternAnalysis', + getDisplayName: () => + i18n.translate('xpack.aiops.embeddablePatternAnalysisDisplayName', { + defaultMessage: 'Pattern analysis', + }), + async isCompatible(context: EmbeddableApiContext) { + return Boolean(await parentApiIsCompatible(context.embeddable)); + }, + async execute(context) { + const presentationContainerParent = await parentApiIsCompatible(context.embeddable); + if (!presentationContainerParent) throw new IncompatibleActionError(); + + try { + const { resolveEmbeddablePatternAnalysisUserInput } = await import( + '../embeddables/pattern_analysis/resolve_pattern_analysis_config_input' + ); + + const initialState: PatternAnalysisEmbeddableInitialState = { + dataViewId: undefined, + }; + + const embeddable = await presentationContainerParent.addNewPanel< + object, + PatternAnalysisEmbeddableApi + >({ + panelType: EMBEDDABLE_PATTERN_ANALYSIS_TYPE, + initialState, + }); + + if (!embeddable) { + return; + } + + const deletePanel = () => { + presentationContainerParent.removePanel(embeddable.uuid); + }; + + resolveEmbeddablePatternAnalysisUserInput( + coreStart, + pluginStart, + context.embeddable, + embeddable.uuid, + true, + embeddable, + deletePanel + ); + } catch (e) { + return Promise.reject(); + } + }, + }; +} diff --git a/x-pack/plugins/aiops/public/ui_actions/index.ts b/x-pack/plugins/aiops/public/ui_actions/index.ts index c8e4edb58792b..d14856fd28733 100644 --- a/x-pack/plugins/aiops/public/ui_actions/index.ts +++ b/x-pack/plugins/aiops/public/ui_actions/index.ts @@ -17,6 +17,7 @@ import { createAddChangePointChartAction } from './create_change_point_chart'; import { createOpenChangePointInMlAppAction } from './open_change_point_ml'; import type { AiopsPluginStartDeps } from '../types'; import { createCategorizeFieldAction } from '../components/log_categorization'; +import { createAddPatternAnalysisEmbeddableAction } from './create_pattern_analysis_action'; export function registerAiopsUiActions( uiActions: UiActionsSetup, @@ -25,7 +26,9 @@ export function registerAiopsUiActions( ) { const openChangePointInMlAppAction = createOpenChangePointInMlAppAction(coreStart, pluginStart); const addChangePointChartAction = createAddChangePointChartAction(coreStart, pluginStart); + const addPatternAnalysisAction = createAddPatternAnalysisEmbeddableAction(coreStart, pluginStart); + uiActions.addTriggerAction(ADD_PANEL_TRIGGER, addPatternAnalysisAction); uiActions.addTriggerAction(ADD_PANEL_TRIGGER, addChangePointChartAction); uiActions.registerTrigger(categorizeFieldTrigger); diff --git a/x-pack/plugins/aiops/public/ui_actions/pattern_analysis_action_context.ts b/x-pack/plugins/aiops/public/ui_actions/pattern_analysis_action_context.ts new file mode 100644 index 0000000000000..d2ed27ae7dfd2 --- /dev/null +++ b/x-pack/plugins/aiops/public/ui_actions/pattern_analysis_action_context.ts @@ -0,0 +1,24 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { isPopulatedObject } from '@kbn/ml-is-populated-object'; +import { apiIsOfType, type EmbeddableApiContext } from '@kbn/presentation-publishing'; +import { EMBEDDABLE_PATTERN_ANALYSIS_TYPE } from '@kbn/aiops-log-pattern-analysis/constants'; +import type { ChangePointEmbeddableApi } from '../embeddables/change_point_chart/types'; + +export interface PatternAnalysisActionContext extends EmbeddableApiContext { + embeddable: ChangePointEmbeddableApi; +} + +export function isPatternAnalysisEmbeddableContext( + arg: unknown +): arg is PatternAnalysisActionContext { + return ( + isPopulatedObject(arg, ['embeddable']) && + apiIsOfType(arg.embeddable, EMBEDDABLE_PATTERN_ANALYSIS_TYPE) + ); +} diff --git a/x-pack/plugins/aiops/tsconfig.json b/x-pack/plugins/aiops/tsconfig.json index 1c89006ff5eff..1b0e742521ddc 100644 --- a/x-pack/plugins/aiops/tsconfig.json +++ b/x-pack/plugins/aiops/tsconfig.json @@ -78,6 +78,7 @@ "@kbn/usage-collection-plugin", "@kbn/utility-types", "@kbn/observability-ai-assistant-plugin", + "@kbn/ui-theme", "@kbn/apm-utils", ], "exclude": [ diff --git a/x-pack/plugins/alerting/server/mocks.ts b/x-pack/plugins/alerting/server/mocks.ts index 1abd11703dd4f..ac4e2f4c4f8b2 100644 --- a/x-pack/plugins/alerting/server/mocks.ts +++ b/x-pack/plugins/alerting/server/mocks.ts @@ -174,10 +174,10 @@ const createRuleExecutorServicesMock = < shouldWriteAlerts: () => true, shouldStopExecution: () => true, search: createAbortableSearchServiceMock(), - searchSourceClient: searchSourceCommonMock, + getSearchSourceClient: jest.fn().mockResolvedValue(searchSourceCommonMock), ruleMonitoringService: createRuleMonitoringServiceMock(), share: createShareStartMock(), - dataViews: dataViewPluginMocks.createStartContract(), + getDataViews: jest.fn().mockResolvedValue(dataViewPluginMocks.createStartContract()), }; }; export type RuleExecutorServicesMock = ReturnType; diff --git a/x-pack/plugins/alerting/server/task_runner/ad_hoc_task_runner.ts b/x-pack/plugins/alerting/server/task_runner/ad_hoc_task_runner.ts index 61f8f411aef8b..6c6ad31fb6d89 100644 --- a/x-pack/plugins/alerting/server/task_runner/ad_hoc_task_runner.ts +++ b/x-pack/plugins/alerting/server/task_runner/ad_hoc_task_runner.ts @@ -212,7 +212,7 @@ export class AdHocTaskRunner implements CancellableTask { taskInstance: this.taskInstance, }); - const executorServices = await getExecutorServices({ + const executorServices = getExecutorServices({ context: this.context, fakeRequest, abortController: this.searchAbortController, diff --git a/x-pack/plugins/alerting/server/task_runner/get_executor_services.ts b/x-pack/plugins/alerting/server/task_runner/get_executor_services.ts index 543915df0d073..08bf3297fef06 100644 --- a/x-pack/plugins/alerting/server/task_runner/get_executor_services.ts +++ b/x-pack/plugins/alerting/server/task_runner/get_executor_services.ts @@ -40,16 +40,16 @@ interface GetExecutorServicesOpts { } export interface ExecutorServices { - dataViews: DataViewsContract; ruleMonitoringService: PublicRuleMonitoringService; ruleResultService: PublicRuleResultService; savedObjectsClient: SavedObjectsClientContract; uiSettingsClient: IUiSettingsClient; wrappedScopedClusterClient: WrappedScopedClusterClient; - wrappedSearchSourceClient: WrappedSearchSourceClient; + getDataViews: () => Promise; + getWrappedSearchSourceClient: () => Promise; } -export const getExecutorServices = async (opts: GetExecutorServicesOpts) => { +export const getExecutorServices = (opts: GetExecutorServicesOpts) => { const { context, abortController, fakeRequest, logger, ruleData, ruleTaskTimeout } = opts; const wrappedClientOptions = { @@ -66,34 +66,35 @@ export const getExecutorServices = async (opts: GetExecutorServicesOpts) => { scopedClusterClient, }); - const searchSourceClient = await withAlertingSpan('alerting:get-search-source-client', () => - context.data.search.searchSource.asScoped(fakeRequest) - ); - const wrappedSearchSourceClient = wrapSearchSourceClient({ - ...wrappedClientOptions, - searchSourceClient, - }); - const savedObjectsClient = context.savedObjects.getScopedClient(fakeRequest, { includedHiddenTypes: [RULE_SAVED_OBJECT_TYPE, 'action'], }); - const dataViews = await await withAlertingSpan('alerting:get-data-views-factory', () => - context.dataViews.dataViewsServiceFactory( - savedObjectsClient, - scopedClusterClient.asInternalUser - ) - ); - const uiSettingsClient = context.uiSettings.asScopedToClient(savedObjectsClient); return { - dataViews, ruleMonitoringService: opts.ruleMonitoringService.getLastRunMetricsSetters(), ruleResultService: opts.ruleResultService.getLastRunSetters(), savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getDataViews: async () => { + const dataViews = await withAlertingSpan('alerting:get-data-views-factory', () => + context.dataViews.dataViewsServiceFactory( + savedObjectsClient, + scopedClusterClient.asInternalUser + ) + ); + return dataViews; + }, + getWrappedSearchSourceClient: async () => { + const searchSourceClient = await withAlertingSpan('alerting:get-search-source-client', () => + context.data.search.searchSource.asScoped(fakeRequest) + ); + return wrapSearchSourceClient({ + ...wrappedClientOptions, + searchSourceClient, + }); + }, }; }; diff --git a/x-pack/plugins/alerting/server/task_runner/rule_type_runner.test.ts b/x-pack/plugins/alerting/server/task_runner/rule_type_runner.test.ts index 42af7ba476085..e839887a6122c 100644 --- a/x-pack/plugins/alerting/server/task_runner/rule_type_runner.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/rule_type_runner.test.ts @@ -21,7 +21,6 @@ import { dataViewPluginMocks } from '@kbn/data-views-plugin/public/mocks'; import { publicRuleMonitoringServiceMock } from '../monitoring/rule_monitoring_service.mock'; import { publicRuleResultServiceMock } from '../monitoring/rule_result_service.mock'; import { wrappedScopedClusterClientMock } from '../lib/wrap_scoped_cluster_client.mock'; -import { wrappedSearchSourceClientMock } from '../lib/wrap_search_source_client.mock'; import { NormalizedRuleType } from '../rule_type_registry'; import { ConcreteTaskInstance, @@ -41,7 +40,8 @@ const ruleRunMetricsStore = ruleRunMetricsStoreMock.create(); const savedObjectsClient = savedObjectsClientMock.create(); const uiSettingsClient = uiSettingsServiceMock.createClient(); const wrappedScopedClusterClient = wrappedScopedClusterClientMock.create(); -const wrappedSearchSourceClient = wrappedSearchSourceClientMock.create(); +const getDataViews = jest.fn().mockResolvedValue(dataViews); +const getWrappedSearchSourceClient = jest.fn(); const timer = new TaskRunnerTimer({ logger }); const ruleType: jest.Mocked< @@ -172,13 +172,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -192,12 +192,12 @@ describe('RuleTypeRunner', () => { services: { alertFactory: alertsClient.factory(), alertsClient: alertsClient.client(), - dataViews, + getDataViews: expect.any(Function), ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, scopedClusterClient: wrappedScopedClusterClient.client(), - searchSourceClient: wrappedSearchSourceClient.searchSourceClient, + getSearchSourceClient: expect.any(Function), share: {}, shouldStopExecution: expect.any(Function), shouldWriteAlerts: expect.any(Function), @@ -277,13 +277,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -297,12 +297,12 @@ describe('RuleTypeRunner', () => { services: { alertFactory: alertsClient.factory(), alertsClient: alertsClient.client(), - dataViews, + getDataViews: expect.any(Function), ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, scopedClusterClient: wrappedScopedClusterClient.client(), - searchSourceClient: wrappedSearchSourceClient.searchSourceClient, + getSearchSourceClient: expect.any(Function), share: {}, shouldStopExecution: expect.any(Function), shouldWriteAlerts: expect.any(Function), @@ -385,13 +385,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -446,13 +446,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -466,12 +466,12 @@ describe('RuleTypeRunner', () => { services: { alertFactory: alertsClient.factory(), alertsClient: alertsClient.client(), - dataViews, + getDataViews: expect.any(Function), ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, scopedClusterClient: wrappedScopedClusterClient.client(), - searchSourceClient: wrappedSearchSourceClient.searchSourceClient, + getSearchSourceClient: expect.any(Function), share: {}, shouldStopExecution: expect.any(Function), shouldWriteAlerts: expect.any(Function), @@ -545,13 +545,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -565,12 +565,12 @@ describe('RuleTypeRunner', () => { services: { alertFactory: alertsClient.factory(), alertsClient: alertsClient.client(), - dataViews, + getDataViews: expect.any(Function), ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, scopedClusterClient: wrappedScopedClusterClient.client(), - searchSourceClient: wrappedSearchSourceClient.searchSourceClient, + getSearchSourceClient: expect.any(Function), share: {}, shouldStopExecution: expect.any(Function), shouldWriteAlerts: expect.any(Function), @@ -644,13 +644,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -679,13 +679,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -699,12 +699,12 @@ describe('RuleTypeRunner', () => { services: { alertFactory: alertsClient.factory(), alertsClient: alertsClient.client(), - dataViews, + getDataViews: expect.any(Function), ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, scopedClusterClient: wrappedScopedClusterClient.client(), - searchSourceClient: wrappedSearchSourceClient.searchSourceClient, + getSearchSourceClient: expect.any(Function), share: {}, shouldStopExecution: expect.any(Function), shouldWriteAlerts: expect.any(Function), @@ -791,13 +791,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -811,12 +811,12 @@ describe('RuleTypeRunner', () => { services: { alertFactory: alertsClient.factory(), alertsClient: alertsClient.client(), - dataViews, + getDataViews: expect.any(Function), ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, scopedClusterClient: wrappedScopedClusterClient.client(), - searchSourceClient: wrappedSearchSourceClient.searchSourceClient, + getSearchSourceClient: expect.any(Function), share: {}, shouldStopExecution: expect.any(Function), shouldWriteAlerts: expect.any(Function), @@ -903,13 +903,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -924,12 +924,12 @@ describe('RuleTypeRunner', () => { services: { alertFactory: alertsClient.factory(), alertsClient: alertsClient.client(), - dataViews, + getDataViews: expect.any(Function), ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, scopedClusterClient: wrappedScopedClusterClient.client(), - searchSourceClient: wrappedSearchSourceClient.searchSourceClient, + getSearchSourceClient: expect.any(Function), share: {}, shouldStopExecution: expect.any(Function), shouldWriteAlerts: expect.any(Function), @@ -1005,13 +1005,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -1026,12 +1026,12 @@ describe('RuleTypeRunner', () => { services: { alertFactory: alertsClient.factory(), alertsClient: alertsClient.client(), - dataViews, + getDataViews: expect.any(Function), ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, scopedClusterClient: wrappedScopedClusterClient.client(), - searchSourceClient: wrappedSearchSourceClient.searchSourceClient, + getSearchSourceClient: expect.any(Function), share: {}, shouldStopExecution: expect.any(Function), shouldWriteAlerts: expect.any(Function), @@ -1107,13 +1107,13 @@ describe('RuleTypeRunner', () => { alertsClient, executionId: 'abc', executorServices: { - dataViews, + getDataViews, ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, uiSettingsClient, wrappedScopedClusterClient, - wrappedSearchSourceClient, + getWrappedSearchSourceClient, }, rule: mockedRule, ruleType, @@ -1128,12 +1128,12 @@ describe('RuleTypeRunner', () => { services: { alertFactory: alertsClient.factory(), alertsClient: alertsClient.client(), - dataViews, + getDataViews: expect.any(Function), ruleMonitoringService: publicRuleMonitoringService, ruleResultService: publicRuleResultService, savedObjectsClient, scopedClusterClient: wrappedScopedClusterClient.client(), - searchSourceClient: wrappedSearchSourceClient.searchSourceClient, + getSearchSourceClient: expect.any(Function), share: {}, shouldStopExecution: expect.any(Function), shouldWriteAlerts: expect.any(Function), diff --git a/x-pack/plugins/alerting/server/task_runner/rule_type_runner.ts b/x-pack/plugins/alerting/server/task_runner/rule_type_runner.ts index 960771be7af83..301057d405e9a 100644 --- a/x-pack/plugins/alerting/server/task_runner/rule_type_runner.ts +++ b/x-pack/plugins/alerting/server/task_runner/rule_type_runner.ts @@ -31,6 +31,7 @@ import { ExecutorServices } from './get_executor_services'; import { TaskRunnerTimer, TaskRunnerTimerSpan } from './task_runner_timer'; import { RuleRunnerErrorStackTraceLog, RuleTypeRunnerContext, TaskRunnerContext } from './types'; import { withAlertingSpan } from './lib'; +import { WrappedSearchSourceClient } from '../lib/wrap_search_source_client'; interface ConstructorOpts< Params extends RuleTypeParams, @@ -203,6 +204,7 @@ export class RuleTypeRunner< }; let executorResult: { state: RuleState } | undefined; + let wrappedSearchSourceClient: WrappedSearchSourceClient | undefined; try { const ctx = { type: 'alert', @@ -219,17 +221,23 @@ export class RuleTypeRunner< services: { alertFactory: alertsClient.factory(), alertsClient: alertsClient.client(), - dataViews: executorServices.dataViews, ruleMonitoringService: executorServices.ruleMonitoringService, ruleResultService: executorServices.ruleResultService, savedObjectsClient: executorServices.savedObjectsClient, scopedClusterClient: executorServices.wrappedScopedClusterClient.client(), - searchSourceClient: executorServices.wrappedSearchSourceClient.searchSourceClient, share: this.options.context.share, shouldStopExecution: () => this.cancelled, shouldWriteAlerts: () => this.shouldLogAndScheduleActionsForAlerts(ruleType.cancelAlertsOnRuleTimeout), uiSettingsClient: executorServices.uiSettingsClient, + getDataViews: executorServices.getDataViews, + getSearchSourceClient: async () => { + if (!wrappedSearchSourceClient) { + wrappedSearchSourceClient = + await executorServices.getWrappedSearchSourceClient(); + } + return wrappedSearchSourceClient.searchSourceClient; + }, }, params: validatedParams, state: ruleTypeState as RuleState, @@ -306,10 +314,12 @@ export class RuleTypeRunner< context.alertingEventLogger.setExecutionSucceeded( `rule executed: ${context.ruleLogPrefix}` ); - context.ruleRunMetricsStore.setSearchMetrics([ - executorServices.wrappedScopedClusterClient.getMetrics(), - executorServices.wrappedSearchSourceClient.getMetrics(), - ]); + + const metrics = [executorServices.wrappedScopedClusterClient.getMetrics()]; + if (wrappedSearchSourceClient) { + metrics.push(wrappedSearchSourceClient.getMetrics()); + } + context.ruleRunMetricsStore.setSearchMetrics(metrics); return { updatedRuleTypeState: executorResult?.state || undefined, diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts index 0898c29a85a86..d5d071208e398 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.test.ts @@ -1969,9 +1969,9 @@ describe('Task Runner', () => { }); test('should set unexpected errors as framework-error', async () => { - (getExecutorServicesModule.getExecutorServices as jest.Mock).mockRejectedValue( - new Error('test') - ); + (getExecutorServicesModule.getExecutorServices as jest.Mock).mockImplementation(() => { + throw new Error('test'); + }); const taskRunner = new TaskRunner({ ruleType, diff --git a/x-pack/plugins/alerting/server/task_runner/task_runner.ts b/x-pack/plugins/alerting/server/task_runner/task_runner.ts index 5eb15bff0107b..c394d5b16f296 100644 --- a/x-pack/plugins/alerting/server/task_runner/task_runner.ts +++ b/x-pack/plugins/alerting/server/task_runner/task_runner.ts @@ -339,23 +339,21 @@ export class TaskRunner< taskInstance: this.taskInstance, }) ); - const executorServices = await withAlertingSpan('alerting:get-executor-services', () => - getExecutorServices({ - context: this.context, - fakeRequest, - abortController: this.searchAbortController, - logger: this.logger, - ruleMonitoringService: this.ruleMonitoring, - ruleResultService: this.ruleResult, - ruleData: { - name: rule.name, - alertTypeId: rule.alertTypeId, - id: rule.id, - spaceId, - }, - ruleTaskTimeout: this.ruleType.ruleTaskTimeout, - }) - ); + const executorServices = getExecutorServices({ + context: this.context, + fakeRequest, + abortController: this.searchAbortController, + logger: this.logger, + ruleMonitoringService: this.ruleMonitoring, + ruleResultService: this.ruleResult, + ruleData: { + name: rule.name, + alertTypeId: rule.alertTypeId, + id: rule.id, + spaceId, + }, + ruleTaskTimeout: this.ruleType.ruleTaskTimeout, + }); const { state: updatedRuleTypeState, diff --git a/x-pack/plugins/alerting/server/types.ts b/x-pack/plugins/alerting/server/types.ts index 342c3070379c5..95c3a2a03b838 100644 --- a/x-pack/plugins/alerting/server/types.ts +++ b/x-pack/plugins/alerting/server/types.ts @@ -102,7 +102,6 @@ export interface RuleExecutorServices< ActionGroupIds extends string = never, AlertData extends RuleAlertData = RuleAlertData > { - searchSourceClient: ISearchStartSearchSource; savedObjectsClient: SavedObjectsClientContract; uiSettingsClient: IUiSettingsClient; scopedClusterClient: IScopedClusterClient; @@ -121,8 +120,9 @@ export interface RuleExecutorServices< shouldStopExecution: () => boolean; ruleMonitoringService?: PublicRuleMonitoringService; share: SharePluginStart; - dataViews: DataViewsContract; ruleResultService?: PublicRuleResultService; + getDataViews: () => Promise; + getSearchSourceClient: () => Promise; } export interface RuleExecutorOptions< diff --git a/x-pack/plugins/cloud_security_posture/common/types_old.ts b/x-pack/plugins/cloud_security_posture/common/types_old.ts index f77ac4678a526..19e18902b7ea1 100644 --- a/x-pack/plugins/cloud_security_posture/common/types_old.ts +++ b/x-pack/plugins/cloud_security_posture/common/types_old.ts @@ -133,6 +133,7 @@ export interface BaseCspSetupStatus { vuln_mgmt: BaseCspSetupBothPolicy; isPluginInitialized: boolean; installedPackageVersion?: string | undefined; + hasMisconfigurationsFindings?: boolean; } export type CspSetupStatus = BaseCspSetupStatus; diff --git a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_is_subscription_status_valid.ts similarity index 94% rename from x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts rename to x-pack/plugins/cloud_security_posture/public/common/hooks/use_is_subscription_status_valid.ts index f8bda84dbcb65..99ded40b04f63 100644 --- a/x-pack/plugins/cloud_security_posture/public/common/hooks/use_subscription_status.ts +++ b/x-pack/plugins/cloud_security_posture/public/common/hooks/use_is_subscription_status_valid.ts @@ -12,9 +12,10 @@ import { useKibana } from './use_kibana'; const SUBSCRIPTION_QUERY_KEY = 'csp_subscription_query_key'; -export const useSubscriptionStatus = () => { +export const useIsSubscriptionStatusValid = () => { const { licensing } = useKibana().services; const { isCloudEnabled } = useContext(SetupContext); + return useQuery([SUBSCRIPTION_QUERY_KEY], async () => { const license = await licensing.refresh(); return isSubscriptionAllowed(isCloudEnabled, license); diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx index 05fedd4d8adec..22fc6b4ae65f8 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.test.tsx @@ -5,7 +5,6 @@ * 2.0. */ -import { useSubscriptionStatus } from '../common/hooks/use_subscription_status'; import Chance from 'chance'; import { DEFAULT_NO_DATA_TEST_SUBJECT, @@ -13,7 +12,6 @@ import { isCommonError, LOADING_STATE_TEST_SUBJECT, PACKAGE_NOT_INSTALLED_TEST_SUBJECT, - SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT, } from './cloud_posture_page'; import { createReactQueryResponse } from '../test/fixtures/react_query'; import { TestProvider } from '../test/test_provider'; @@ -23,27 +21,17 @@ import React, { ComponentProps } from 'react'; import { UseQueryResult } from '@tanstack/react-query'; import { CloudPosturePage } from './cloud_posture_page'; import { NoDataPage } from '@kbn/kibana-react-plugin/public'; -import { useLicenseManagementLocatorApi } from '../common/api/use_license_management_locator_api'; const chance = new Chance(); jest.mock('../common/api/use_setup_status_api'); jest.mock('../common/api/use_license_management_locator_api'); -jest.mock('../common/hooks/use_subscription_status'); +jest.mock('../common/hooks/use_is_subscription_status_valid'); jest.mock('../common/navigation/use_csp_integration_link'); describe('', () => { beforeEach(() => { jest.resetAllMocks(); - - (useSubscriptionStatus as jest.Mock).mockImplementation(() => - createReactQueryResponse({ - status: 'success', - data: true, - }) - ); - - (useLicenseManagementLocatorApi as jest.Mock).mockImplementation(undefined); }); const renderCloudPosturePage = ( @@ -72,101 +60,16 @@ describe('', () => { ); }; - it('renders with license url locator', () => { - (useSubscriptionStatus as jest.Mock).mockImplementation(() => - createReactQueryResponse({ - status: 'success', - data: false, - }) - ); - - (useLicenseManagementLocatorApi as jest.Mock).mockImplementation(() => 'http://license-url'); - - renderCloudPosturePage(); - - expect(screen.getByTestId('has_locator')).toBeInTheDocument(); - }); - - it('renders no license url locator', () => { - (useSubscriptionStatus as jest.Mock).mockImplementation(() => - createReactQueryResponse({ - status: 'success', - data: false, - }) - ); - - (useLicenseManagementLocatorApi as jest.Mock).mockImplementation(undefined); - - renderCloudPosturePage(); - expect(screen.getByTestId('no_locator')).toBeInTheDocument(); - }); - it('renders children if setup status is indexed', () => { const children = chance.sentence(); renderCloudPosturePage({ children }); expect(screen.getByText(children)).toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); }); - it('renders default loading state when the subscription query is loading', () => { - (useSubscriptionStatus as jest.Mock).mockImplementation( - () => - createReactQueryResponse({ - status: 'loading', - }) as unknown as UseQueryResult - ); - - const children = chance.sentence(); - renderCloudPosturePage({ children }); - - expect(screen.getByTestId(LOADING_STATE_TEST_SUBJECT)).toBeInTheDocument(); - expect(screen.queryByText(children)).not.toBeInTheDocument(); - expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); - }); - - it('renders default error state when the subscription query has an error', () => { - (useSubscriptionStatus as jest.Mock).mockImplementation( - () => - createReactQueryResponse({ - status: 'error', - error: new Error('error'), - }) as unknown as UseQueryResult - ); - - const children = chance.sentence(); - renderCloudPosturePage({ children }); - - expect(screen.getByTestId(ERROR_STATE_TEST_SUBJECT)).toBeInTheDocument(); - expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.queryByText(children)).not.toBeInTheDocument(); - expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); - }); - - it('renders subscription not allowed prompt if subscription is not installed', () => { - (useSubscriptionStatus as jest.Mock).mockImplementation(() => - createReactQueryResponse({ - status: 'success', - data: false, - }) - ); - - const children = chance.sentence(); - renderCloudPosturePage({ children }); - - expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.queryByText(children)).not.toBeInTheDocument(); - expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.getByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).toBeInTheDocument(); - expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); - }); - it('renders default loading text when query isLoading', () => { const query = createReactQueryResponse({ status: 'loading', @@ -176,7 +79,6 @@ describe('', () => { renderCloudPosturePage({ children, query }); expect(screen.getByTestId(LOADING_STATE_TEST_SUBJECT)).toBeInTheDocument(); - expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); @@ -191,7 +93,6 @@ describe('', () => { renderCloudPosturePage({ children, query }); expect(screen.getByTestId(LOADING_STATE_TEST_SUBJECT)).toBeInTheDocument(); - expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); @@ -220,7 +121,6 @@ describe('', () => { expect(screen.getByText(text, { exact: false })).toBeInTheDocument() ); expect(screen.getByTestId(ERROR_STATE_TEST_SUBJECT)).toBeInTheDocument(); - expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); @@ -253,7 +153,6 @@ describe('', () => { [error, statusCode].forEach((text) => expect(screen.queryByText(text)).not.toBeInTheDocument()); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); }); @@ -275,7 +174,6 @@ describe('', () => { expect(screen.getByText(loading)).toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); }); @@ -291,7 +189,6 @@ describe('', () => { expect(screen.getByTestId(DEFAULT_NO_DATA_TEST_SUBJECT)).toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); @@ -320,7 +217,6 @@ describe('', () => { expect(screen.getByText(pageTitle)).toBeInTheDocument(); expect(screen.getAllByText(solution, { exact: false })[0]).toBeInTheDocument(); expect(screen.queryByTestId(LOADING_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); - expect(screen.queryByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByText(children)).not.toBeInTheDocument(); expect(screen.queryByTestId(ERROR_STATE_TEST_SUBJECT)).not.toBeInTheDocument(); expect(screen.queryByTestId(PACKAGE_NOT_INSTALLED_TEST_SUBJECT)).not.toBeInTheDocument(); diff --git a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx index b2f1d892da907..34ea821ed2620 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/cloud_posture_page.tsx @@ -11,8 +11,6 @@ import { EuiEmptyPrompt } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; import { NoDataPage, NoDataPageProps } from '@kbn/kibana-react-plugin/public'; import { css } from '@emotion/react'; -import { SubscriptionNotAllowed } from './subscription_not_allowed'; -import { useSubscriptionStatus } from '../common/hooks/use_subscription_status'; import { FullSizeCenteredPage } from './full_size_centered_page'; import { CspLoadingState } from './csp_loading_state'; @@ -22,7 +20,6 @@ export const PACKAGE_NOT_INSTALLED_TEST_SUBJECT = 'cloud_posture_page_package_no export const CSPM_INTEGRATION_NOT_INSTALLED_TEST_SUBJECT = 'cloud_posture_page_cspm_not_installed'; export const KSPM_INTEGRATION_NOT_INSTALLED_TEST_SUBJECT = 'cloud_posture_page_kspm_not_installed'; export const DEFAULT_NO_DATA_TEST_SUBJECT = 'cloud_posture_page_no_data'; -export const SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT = 'cloud_posture_page_subscription_not_allowed'; interface CommonError { body: { @@ -150,12 +147,6 @@ export const defaultNoDataRenderer = () => ( ); -const subscriptionNotAllowedRenderer = () => ( - - - -); - interface CloudPosturePageProps { children: React.ReactNode; query?: UseQueryResult; @@ -171,21 +162,7 @@ export const CloudPosturePage = ({ errorRender = defaultErrorRenderer, noDataRenderer = defaultNoDataRenderer, }: CloudPosturePageProps) => { - const subscriptionStatus = useSubscriptionStatus(); - const render = () => { - if (subscriptionStatus.isError) { - return defaultErrorRenderer(subscriptionStatus.error); - } - - if (subscriptionStatus.isLoading) { - return defaultLoadingRenderer(); - } - - if (!subscriptionStatus.data) { - return subscriptionNotAllowedRenderer(); - } - if (!query) { return children; } diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx index 116170b2ac29c..76134c4d41df0 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.test.tsx @@ -5,7 +5,7 @@ * 2.0. */ import React from 'react'; -import { render, waitFor, within } from '@testing-library/react'; +import { render, screen, waitFor, within } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { CspPolicyTemplateForm, @@ -53,9 +53,12 @@ import { GCP_CREDENTIALS_TYPE_OPTIONS_TEST_SUBJ, SETUP_TECHNOLOGY_SELECTOR_ACCORDION_TEST_SUBJ, SETUP_TECHNOLOGY_SELECTOR_TEST_SUBJ, + SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT, } from '../test_subjects'; import { ExperimentalFeaturesService } from '@kbn/fleet-plugin/public/services'; import { createFleetTestRendererMock } from '@kbn/fleet-plugin/public/mock'; +import { useIsSubscriptionStatusValid } from '../../common/hooks/use_is_subscription_status_valid'; +import { useLicenseManagementLocatorApi } from '../../common/api/use_license_management_locator_api'; // mock useParams jest.mock('react-router-dom', () => ({ @@ -66,6 +69,8 @@ jest.mock('react-router-dom', () => ({ })); jest.mock('../../common/api/use_setup_status_api'); jest.mock('../../common/api/use_package_policy_list'); +jest.mock('../../common/hooks/use_is_subscription_status_valid'); +jest.mock('../../common/api/use_license_management_locator_api'); jest.mock('@kbn/fleet-plugin/public/services/experimental_features'); const onChange = jest.fn(); @@ -85,9 +90,11 @@ describe('', () => { (useParams as jest.Mock).mockReturnValue({ integration: undefined, }); + mockedExperimentalFeaturesService.get.mockReturnValue({ secretsStorage: true, } as any); + (usePackagePolicyList as jest.Mock).mockImplementation((packageName) => createReactQueryResponseWithRefetch({ status: 'success', @@ -96,13 +103,22 @@ describe('', () => { }, }) ); + onChange.mockClear(); + (useCspSetupStatusApi as jest.Mock).mockImplementation(() => createReactQueryResponseWithRefetch({ status: 'success', data: { status: 'indexed', installedPackageVersion: '1.2.13' }, }) ); + + (useIsSubscriptionStatusValid as jest.Mock).mockImplementation(() => + createReactQueryResponse({ + status: 'success', + data: true, + }) + ); }); const WrappedComponent = ({ @@ -145,6 +161,53 @@ describe('', () => { ); }; + it('shows license block if subscription is not allowed', () => { + (useIsSubscriptionStatusValid as jest.Mock).mockImplementation(() => + createReactQueryResponse({ + status: 'success', + data: false, + }) + ); + + const policy = getMockPolicyK8s(); + const { rerender } = render(); + + rerender(); + expect(screen.getByTestId(SUBSCRIPTION_NOT_ALLOWED_TEST_SUBJECT)).toBeInTheDocument(); + }); + + it('license block renders with license url locator', () => { + (useIsSubscriptionStatusValid as jest.Mock).mockImplementation(() => + createReactQueryResponse({ + status: 'success', + data: false, + }) + ); + (useLicenseManagementLocatorApi as jest.Mock).mockImplementation(() => 'http://license-url'); + + const policy = getMockPolicyK8s(); + const { rerender } = render(); + + rerender(); + expect(screen.getByTestId('has_locator')).toBeInTheDocument(); + }); + + it('license block renders without license url locator', () => { + (useIsSubscriptionStatusValid as jest.Mock).mockImplementation(() => + createReactQueryResponse({ + status: 'success', + data: false, + }) + ); + (useLicenseManagementLocatorApi as jest.Mock).mockImplementation(undefined); + + const policy = getMockPolicyK8s(); + const { rerender } = render(); + + rerender(); + expect(screen.getByTestId('no_locator')).toBeInTheDocument(); + }); + it('updates package policy namespace to default when it changes', () => { const policy = getMockPolicyK8s(); const { rerender } = render(); diff --git a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx index 6a7d73868ced6..f70fb3a18f690 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx +++ b/x-pack/plugins/cloud_security_posture/public/components/fleet_extensions/policy_template_form.tsx @@ -30,6 +30,8 @@ import type { import { PackageInfo, PackagePolicy } from '@kbn/fleet-plugin/common'; import { useParams } from 'react-router-dom'; import { i18n } from '@kbn/i18n'; +import { useIsSubscriptionStatusValid } from '../../common/hooks/use_is_subscription_status_valid'; +import { SubscriptionNotAllowed } from '../subscription_not_allowed'; import { CspRadioGroupProps, RadioGroup } from './csp_boxed_radio_group'; import { assert } from '../../../common/utils/helpers'; import type { CloudSecurityPolicyTemplate, PostureInput } from '../../../common/types_old'; @@ -67,6 +69,7 @@ import { SetupTechnologySelector } from './setup_technology_selector/setup_techn import { useSetupTechnology } from './setup_technology_selector/use_setup_technology'; import { AZURE_CREDENTIALS_TYPE } from './azure_credentials_form/azure_credentials_form'; import { AWS_CREDENTIALS_TYPE } from './aws_credentials_form/aws_credentials_form'; +import { useKibana } from '../../common/hooks/use_kibana'; const DEFAULT_INPUT_TYPE = { kspm: CLOUDBEAT_VANILLA, @@ -537,6 +540,125 @@ const IntegrationSettings = ({ onChange, fields }: IntegrationInfoFieldsProps) = ); +const useEnsureDefaultNamespace = ({ + newPolicy, + input, + updatePolicy, +}: { + newPolicy: NewPackagePolicy; + input: NewPackagePolicyPostureInput; + updatePolicy: (policy: NewPackagePolicy) => void; +}) => { + useEffect(() => { + if (newPolicy.namespace === POSTURE_NAMESPACE) return; + + const policy = { ...getPosturePolicy(newPolicy, input.type), namespace: POSTURE_NAMESPACE }; + updatePolicy(policy); + }, [newPolicy, input, updatePolicy]); +}; + +const usePolicyTemplateInitialName = ({ + isEditPage, + isLoading, + integration, + newPolicy, + packagePolicyList, + updatePolicy, + setCanFetchIntegration, +}: { + isEditPage: boolean; + isLoading: boolean; + integration: CloudSecurityPolicyTemplate | undefined; + newPolicy: NewPackagePolicy; + packagePolicyList: PackagePolicy[] | undefined; + updatePolicy: (policy: NewPackagePolicy) => void; + setCanFetchIntegration: (canFetch: boolean) => void; +}) => { + useEffect(() => { + if (!integration) return; + if (isEditPage) return; + if (isLoading) return; + + const packagePolicyListByIntegration = packagePolicyList?.filter( + (policy) => policy?.vars?.posture?.value === integration + ); + + const currentIntegrationName = getMaxPackageName(integration, packagePolicyListByIntegration); + + if (newPolicy.name === currentIntegrationName) { + return; + } + + updatePolicy({ + ...newPolicy, + name: currentIntegrationName, + }); + setCanFetchIntegration(false); + // since this useEffect should only run on initial mount updatePolicy and newPolicy shouldn't re-trigger it + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [isLoading, integration, isEditPage, packagePolicyList]); +}; + +const getSelectedOption = ( + options: NewPackagePolicyInput[], + policyTemplate: string = CSPM_POLICY_TEMPLATE +) => { + // Looks for the enabled deployment (aka input). By default, all inputs are disabled. + // Initial state when all inputs are disabled is to choose the first available of the relevant policyTemplate + // Default selected policy template is CSPM + const selectedOption = + options.find((i) => i.enabled) || + options.find((i) => i.policy_template === policyTemplate) || + options[0]; + + assert(selectedOption, 'Failed to determine selected option'); // We can't provide a default input without knowing the policy template + assert(isPostureInput(selectedOption), 'Unknown option: ' + selectedOption.type); + + return selectedOption; +}; + +/** + * Update CloudFormation template and stack name in the Agent Policy + * based on the selected policy template + */ +const useCloudFormationTemplate = ({ + packageInfo, + newPolicy, + updatePolicy, +}: { + packageInfo: PackageInfo; + newPolicy: NewPackagePolicy; + updatePolicy: (policy: NewPackagePolicy) => void; +}) => { + useEffect(() => { + const templateUrl = getVulnMgmtCloudFormationDefaultValue(packageInfo); + + // If the template is not available, do not update the policy + if (templateUrl === '') return; + + const checkCurrentTemplate = newPolicy?.inputs?.find( + (i: any) => i.type === CLOUDBEAT_VULN_MGMT_AWS + )?.config?.cloud_formation_template_url?.value; + + // If the template is already set, do not update the policy + if (checkCurrentTemplate === templateUrl) return; + + updatePolicy?.({ + ...newPolicy, + inputs: newPolicy.inputs.map((input) => { + if (input.type === CLOUDBEAT_VULN_MGMT_AWS) { + return { + ...input, + config: { cloud_formation_template_url: { value: templateUrl } }, + }; + } + return input; + }), + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [newPolicy?.vars?.cloud_formation_template_url, newPolicy, packageInfo]); +}; + export const CspPolicyTemplateForm = memo( ({ newPolicy, @@ -553,7 +675,11 @@ export const CspPolicyTemplateForm = memo