diff --git a/.buildkite/disabled_jest_configs.json b/.buildkite/disabled_jest_configs.json index a64c34ae741b4..fe51488c7066f 100644 --- a/.buildkite/disabled_jest_configs.json +++ b/.buildkite/disabled_jest_configs.json @@ -1,3 +1 @@ -[ - "x-pack/plugins/watcher/jest.config.js" -] +[] diff --git a/.buildkite/ftr_configs.yml b/.buildkite/ftr_configs.yml index 2e7f5a815c6ea..e6eb1cec755c8 100644 --- a/.buildkite/ftr_configs.yml +++ b/.buildkite/ftr_configs.yml @@ -34,11 +34,8 @@ disabled: - x-pack/test/osquery_cypress/cli_config.ts - x-pack/test/osquery_cypress/config.ts - x-pack/test/osquery_cypress/visual_config.ts - - x-pack/test/security_solution_cypress/ccs_config.ts - x-pack/test/security_solution_cypress/cli_config.ts - - x-pack/test/security_solution_cypress/config.firefox.ts - x-pack/test/security_solution_cypress/config.ts - - x-pack/test/security_solution_cypress/upgrade_config.ts - x-pack/test/threat_intelligence_cypress/cli_config_parallel.ts - x-pack/test/threat_intelligence_cypress/config.ts - x-pack/test/functional_enterprise_search/visual_config.ts diff --git a/.buildkite/pipelines/pull_request/security_solution.yml b/.buildkite/pipelines/pull_request/security_solution.yml index a30609ac5ca21..9444c821d5db1 100644 --- a/.buildkite/pipelines/pull_request/security_solution.yml +++ b/.buildkite/pipelines/pull_request/security_solution.yml @@ -12,3 +12,14 @@ steps: limit: 1 artifact_paths: - "target/kibana-security-solution/**/*" + + - command: .buildkite/scripts/steps/functional/security_solution_burn.sh + label: 'Security Solution Cypress tests, burning changed specs' + agents: + queue: n2-4-spot + depends_on: build + timeout_in_minutes: 120 + parallelism: 1 + soft_fail: true + artifact_paths: + - "target/kibana-security-solution/**/*" diff --git a/.buildkite/scripts/steps/functional/security_solution_burn.sh b/.buildkite/scripts/steps/functional/security_solution_burn.sh new file mode 100755 index 0000000000000..f8b809dbbdac1 --- /dev/null +++ b/.buildkite/scripts/steps/functional/security_solution_burn.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +set -euo pipefail + +source .buildkite/scripts/steps/functional/common.sh +source .buildkite/scripts/steps/functional/common_cypress.sh + +export JOB=kibana-security-solution-chrome +export KIBANA_INSTALL_DIR=${KIBANA_BUILD_LOCATION} + +buildkite-agent meta-data set "${BUILDKITE_JOB_ID}_is_test_execution_step" 'false' + +echo "--- Security Solution Cypress tests, burning changed specs (Chrome)" + +yarn --cwd x-pack/plugins/security_solution cypress:changed-specs-only diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index dfcda878c2e4e..0ba3f7fdcc32a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1098,6 +1098,7 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib /x-pack/plugins/security_solution/server/lib/timeline @elastic/security-threat-hunting-investigations ## Security Solution sub teams - Threat Hunting Explore +/x-pack/plugins/security_solution/common/api/tags @elastic/security-threat-hunting-explore /x-pack/plugins/security_solution/common/api/risk_score @elastic/security-threat-hunting-explore /x-pack/plugins/security_solution/common/search_strategy/security_solution/hosts @elastic/security-threat-hunting-explore /x-pack/plugins/security_solution/common/search_strategy/security_solution/matrix_histogram @elastic/security-threat-hunting-explore @@ -1145,6 +1146,11 @@ x-pack/plugins/cloud_integrations/cloud_full_story/server/config.ts @elastic/kib /x-pack/plugins/stack_connectors/server/connector_types/gen_ai @elastic/security-threat-hunting-explore /x-pack/plugins/stack_connectors/common/gen_ai @elastic/security-threat-hunting-explore +## Defend Workflows owner connectors +/x-pack/plugins/stack_connectors/public/connector_types/sentinelone @elastic/security-defend-workflows +/x-pack/plugins/stack_connectors/server/connector_types/sentinelone @elastic/security-defend-workflows +/x-pack/plugins/stack_connectors/common/sentinelone @elastic/security-defend-workflows + ## Security Solution sub teams - Detection Rule Management /x-pack/plugins/security_solution/common/api/detection_engine/model/rule_schema @elastic/security-detection-rule-management @elastic/security-detection-engine /x-pack/plugins/security_solution/common/api/detection_engine/fleet_integrations @elastic/security-detection-rule-management diff --git a/api_docs/actions.mdx b/api_docs/actions.mdx index 4830d43d5a5e1..86783d0ca2341 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: 2023-08-08 +date: 2023-08-10 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 cbdf72e9b3f17..3bad125ce9a95 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'advancedSettings'] --- import advancedSettingsObj from './advanced_settings.devdocs.json'; diff --git a/api_docs/aiops.devdocs.json b/api_docs/aiops.devdocs.json index b4ce7cfd2e208..a5d2c0392ddfb 100644 --- a/api_docs/aiops.devdocs.json +++ b/api_docs/aiops.devdocs.json @@ -591,6 +591,69 @@ "path": "x-pack/plugins/aiops/public/hooks/use_aiops_app_context.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "aiops", + "id": "def-public.AiopsAppDependencies.presentationUtil", + "type": "Object", + "tags": [], + "label": "presentationUtil", + "description": [], + "signature": [ + { + "pluginId": "presentationUtil", + "scope": "public", + "docId": "kibPresentationUtilPluginApi", + "section": "def-public.PresentationUtilPluginStart", + "text": "PresentationUtilPluginStart" + }, + " | undefined" + ], + "path": "x-pack/plugins/aiops/public/hooks/use_aiops_app_context.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "aiops", + "id": "def-public.AiopsAppDependencies.embeddable", + "type": "Object", + "tags": [], + "label": "embeddable", + "description": [], + "signature": [ + { + "pluginId": "embeddable", + "scope": "public", + "docId": "kibEmbeddablePluginApi", + "section": "def-public.EmbeddableStart", + "text": "EmbeddableStart" + }, + " | undefined" + ], + "path": "x-pack/plugins/aiops/public/hooks/use_aiops_app_context.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "aiops", + "id": "def-public.AiopsAppDependencies.cases", + "type": "Object", + "tags": [], + "label": "cases", + "description": [], + "signature": [ + { + "pluginId": "cases", + "scope": "public", + "docId": "kibCasesPluginApi", + "section": "def-public.CasesUiStart", + "text": "CasesUiStart" + }, + " | undefined" + ], + "path": "x-pack/plugins/aiops/public/hooks/use_aiops_app_context.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -895,29 +958,6 @@ "deprecated": false, "trackAdoption": false }, - { - "parentPluginId": "aiops", - "id": "def-public.LogRateAnalysisContentWrapperProps.analysisType", - "type": "CompoundType", - "tags": [], - "label": "analysisType", - "description": [ - "The type of analysis, whether it's a spike or dip" - ], - "signature": [ - { - "pluginId": "aiops", - "scope": "common", - "docId": "kibAiopsPluginApi", - "section": "def-common.LogRateAnalysisType", - "text": "LogRateAnalysisType" - }, - " | undefined" - ], - "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "aiops", "id": "def-public.LogRateAnalysisContentWrapperProps.stickyHistogram", @@ -1127,6 +1167,22 @@ "deprecated": false, "trackAdoption": false, "children": [ + { + "parentPluginId": "aiops", + "id": "def-public.LogRateAnalysisResultsData.analysisType", + "type": "CompoundType", + "tags": [], + "label": "analysisType", + "description": [ + "The type of analysis, whether it's a spike or dip" + ], + "signature": [ + "\"spike\" | \"dip\"" + ], + "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_results.tsx", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "aiops", "id": "def-public.LogRateAnalysisResultsData.significantTerms", @@ -1178,44 +1234,8 @@ } ], "enums": [], - "misc": [ - { - "parentPluginId": "aiops", - "id": "def-public.LogRateAnalysisType", - "type": "Type", - "tags": [], - "label": "LogRateAnalysisType", - "description": [ - "\nUnion type of log rate analysis types." - ], - "signature": [ - "\"spike\" | \"dip\"" - ], - "path": "x-pack/plugins/aiops/common/constants.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - } - ], - "objects": [ - { - "parentPluginId": "aiops", - "id": "def-public.LOG_RATE_ANALYSIS_TYPE", - "type": "Object", - "tags": [], - "label": "LOG_RATE_ANALYSIS_TYPE", - "description": [ - "\nThe type of log rate analysis (spike or dip) will affect how parameters are\npassed to the analysis API endpoint." - ], - "signature": [ - "{ readonly SPIKE: \"spike\"; readonly DIP: \"dip\"; }" - ], - "path": "x-pack/plugins/aiops/common/constants.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - } - ] + "misc": [], + "objects": [] }, "server": { "classes": [], @@ -1280,23 +1300,6 @@ "trackAdoption": false, "initialIsOpen": false }, - { - "parentPluginId": "aiops", - "id": "def-common.LogRateAnalysisType", - "type": "Type", - "tags": [], - "label": "LogRateAnalysisType", - "description": [ - "\nUnion type of log rate analysis types." - ], - "signature": [ - "\"spike\" | \"dip\"" - ], - "path": "x-pack/plugins/aiops/common/constants.ts", - "deprecated": false, - "trackAdoption": false, - "initialIsOpen": false - }, { "parentPluginId": "aiops", "id": "def-common.PLUGIN_ID", diff --git a/api_docs/aiops.mdx b/api_docs/aiops.mdx index 370b7d66dafcd..9c5930a694dc4 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'aiops'] --- import aiopsObj from './aiops.devdocs.json'; @@ -21,22 +21,16 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 60 | 1 | 0 | 0 | +| 60 | 1 | 3 | 0 | ## Client -### Objects - - ### Functions ### Interfaces -### Consts, variables and types - - ## Server ### Setup diff --git a/api_docs/alerting.devdocs.json b/api_docs/alerting.devdocs.json index d0680f21fb288..3998967eaef3e 100644 --- a/api_docs/alerting.devdocs.json +++ b/api_docs/alerting.devdocs.json @@ -3303,7 +3303,7 @@ "section": "def-common.FieldSpec", "text": "FieldSpec" }, - "[]>; getFieldsForIndexPattern: (indexPattern: ", + "[]>; getExistingIndices: (indices: string[]) => Promise; getFieldsForIndexPattern: (indexPattern: ", { "pluginId": "dataViews", "scope": "common", diff --git a/api_docs/alerting.mdx b/api_docs/alerting.mdx index b6e940f0c1c8f..a6dba1264568f 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'alerting'] --- import alertingObj from './alerting.devdocs.json'; diff --git a/api_docs/apm.devdocs.json b/api_docs/apm.devdocs.json index f54b33efb04e3..1ec2a49338bdc 100644 --- a/api_docs/apm.devdocs.json +++ b/api_docs/apm.devdocs.json @@ -81,7 +81,7 @@ "label": "featureFlags", "description": [], "signature": [ - "{ agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; fastRefreshAvailable: boolean; }" + "{ agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; }" ], "path": "x-pack/plugins/apm/public/index.ts", "deprecated": false, @@ -265,7 +265,7 @@ "Observable", "; enabled: boolean; autoCreateApmDataView: boolean; serviceMapEnabled: boolean; serviceMapFingerprintBucketSize: number; serviceMapFingerprintGlobalBucketSize: number; serviceMapTraceIdBucketSize: number; serviceMapTraceIdGlobalBucketSize: number; serviceMapMaxTracesPerRequest: number; serviceMapTerminateAfter: number; serviceMapMaxTraces: number; ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", - "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; forceSyntheticSource: boolean; latestAgentVersionsUrl: string; serverlessOnboarding: boolean; serverless: Readonly<{} & { enabled: true; }>; managedServiceUrl: string; featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; fastRefreshAvailable: boolean; }>; }>>; getApmIndices: () => Promise>; createApmEventClient: ({ request, context, debug, }: { debug?: boolean | undefined; request: ", + "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; forceSyntheticSource: boolean; latestAgentVersionsUrl: string; serverlessOnboarding: boolean; serverless: Readonly<{} & { enabled: true; }>; managedServiceUrl: string; featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; }>; }>>; getApmIndices: () => Promise>; createApmEventClient: ({ request, context, debug, }: { debug?: boolean | undefined; request: ", { "pluginId": "@kbn/core-http-server", "scope": "common", @@ -511,7 +511,7 @@ "signature": [ "{ readonly indices: Readonly<{} & { error: string; metric: string; span: string; transaction: string; onboarding: string; }>; readonly enabled: boolean; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly serviceMapTerminateAfter: number; readonly serviceMapMaxTraces: number; readonly ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", - "; readonly telemetryCollectionEnabled: boolean; readonly metricsInterval: number; readonly agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; readonly forceSyntheticSource: boolean; readonly latestAgentVersionsUrl: string; readonly serverlessOnboarding: boolean; readonly serverless: Readonly<{} & { enabled: true; }>; readonly managedServiceUrl: string; readonly featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; fastRefreshAvailable: boolean; }>; }" + "; readonly telemetryCollectionEnabled: boolean; readonly metricsInterval: number; readonly agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; readonly forceSyntheticSource: boolean; readonly latestAgentVersionsUrl: string; readonly serverlessOnboarding: boolean; readonly serverless: Readonly<{} & { enabled: true; }>; readonly managedServiceUrl: string; readonly featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; }>; }" ], "path": "x-pack/plugins/apm/server/routes/typings.ts", "deprecated": false, @@ -525,7 +525,7 @@ "label": "featureFlags", "description": [], "signature": [ - "{ agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; fastRefreshAvailable: boolean; }" + "{ agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; }" ], "path": "x-pack/plugins/apm/server/routes/typings.ts", "deprecated": false, @@ -963,7 +963,7 @@ "signature": [ "{ readonly indices: Readonly<{} & { error: string; metric: string; span: string; transaction: string; onboarding: string; }>; readonly enabled: boolean; readonly autoCreateApmDataView: boolean; readonly serviceMapEnabled: boolean; readonly serviceMapFingerprintBucketSize: number; readonly serviceMapFingerprintGlobalBucketSize: number; readonly serviceMapTraceIdBucketSize: number; readonly serviceMapTraceIdGlobalBucketSize: number; readonly serviceMapMaxTracesPerRequest: number; readonly serviceMapTerminateAfter: number; readonly serviceMapMaxTraces: number; readonly ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; readonly searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", - "; readonly telemetryCollectionEnabled: boolean; readonly metricsInterval: number; readonly agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; readonly forceSyntheticSource: boolean; readonly latestAgentVersionsUrl: string; readonly serverlessOnboarding: boolean; readonly serverless: Readonly<{} & { enabled: true; }>; readonly managedServiceUrl: string; readonly featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; fastRefreshAvailable: boolean; }>; }" + "; readonly telemetryCollectionEnabled: boolean; readonly metricsInterval: number; readonly agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; readonly forceSyntheticSource: boolean; readonly latestAgentVersionsUrl: string; readonly serverlessOnboarding: boolean; readonly serverless: Readonly<{} & { enabled: true; }>; readonly managedServiceUrl: string; readonly featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; }>; }" ], "path": "x-pack/plugins/apm/server/index.ts", "deprecated": false, @@ -1795,11 +1795,11 @@ "TypeC", "<{ useSpanName: ", "Type", - "; enableServiceTransactionMetrics: ", + "; enableServiceTransactionMetrics: ", "Type", - "; enableContinuousRollups: ", + "; enableContinuousRollups: ", "Type", - "; }>, ", + "; }>, ", "TypeC", "<{ kuery: ", "StringC", @@ -3169,7 +3169,7 @@ "StringC", "; searchServiceDestinationMetrics: ", "Type", - "; }>]>; }> | undefined; handler: ({}: ", + "; }>]>; }> | undefined; handler: ({}: ", { "pluginId": "apm", "scope": "server", @@ -3203,7 +3203,7 @@ "StringC", "; searchServiceDestinationMetrics: ", "Type", - "; }>, ", + "; }>, ", "TypeC", "<{ start: ", "Type", @@ -3269,7 +3269,7 @@ "StringC", "; searchServiceDestinationMetrics: ", "Type", - "; }>, ", + "; }>, ", "TypeC", "<{ start: ", "Type", @@ -3337,7 +3337,7 @@ "StringC", "; searchServiceDestinationMetrics: ", "Type", - "; }>, ", + "; }>, ", "TypeC", "<{ start: ", "Type", @@ -4115,7 +4115,7 @@ "PartialC", "<{ overwrite: ", "Type", - "; }>; }>, ", + "; }>; }>, ", "TypeC", "<{ body: ", "IntersectionC", @@ -4903,7 +4903,7 @@ "Type", "; useDurationSummary: ", "Type", - "; }>, ", + "; }>, ", "PartialC", "<{ transactionName: ", "StringC", @@ -5089,7 +5089,7 @@ "Type", "; useDurationSummary: ", "Type", - "; }>]>, ", + "; }>]>, ", "TypeC", "<{ transactionNames: ", "Type", @@ -5181,7 +5181,7 @@ "TypeC", "<{ useDurationSummary: ", "Type", - "; transactionType: ", + "; transactionType: ", "StringC", "; latencyAggregationType: ", "UnionC", @@ -8116,7 +8116,7 @@ "Observable", "; enabled: boolean; autoCreateApmDataView: boolean; serviceMapEnabled: boolean; serviceMapFingerprintBucketSize: number; serviceMapFingerprintGlobalBucketSize: number; serviceMapTraceIdBucketSize: number; serviceMapTraceIdGlobalBucketSize: number; serviceMapMaxTracesPerRequest: number; serviceMapTerminateAfter: number; serviceMapMaxTraces: number; ui: Readonly<{} & { enabled: boolean; maxTraceItems: number; }>; searchAggregatedTransactions: ", "SearchAggregatedTransactionSetting", - "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; forceSyntheticSource: boolean; latestAgentVersionsUrl: string; serverlessOnboarding: boolean; serverless: Readonly<{} & { enabled: true; }>; managedServiceUrl: string; featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; fastRefreshAvailable: boolean; }>; }>>" + "; telemetryCollectionEnabled: boolean; metricsInterval: number; agent: Readonly<{} & { migrations: Readonly<{} & { enabled: boolean; }>; }>; forceSyntheticSource: boolean; latestAgentVersionsUrl: string; serverlessOnboarding: boolean; serverless: Readonly<{} & { enabled: true; }>; managedServiceUrl: string; featureFlags: Readonly<{} & { agentConfigurationAvailable: boolean; configurableIndicesAvailable: boolean; infrastructureTabAvailable: boolean; infraUiAvailable: boolean; migrationToFleetAvailable: boolean; sourcemapApiAvailable: boolean; storageExplorerAvailable: boolean; }>; }>>" ], "path": "x-pack/plugins/apm/server/types.ts", "deprecated": false, diff --git a/api_docs/apm.mdx b/api_docs/apm.mdx index f9d18e273f7c8..4b9ffe1f2e5ac 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'apm'] --- import apmObj from './apm.devdocs.json'; diff --git a/api_docs/asset_manager.mdx b/api_docs/asset_manager.mdx index f4d18f9705670..c8b9efdabad36 100644 --- a/api_docs/asset_manager.mdx +++ b/api_docs/asset_manager.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/assetManager title: "assetManager" image: https://source.unsplash.com/400x175/?github description: API docs for the assetManager plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'assetManager'] --- import assetManagerObj from './asset_manager.devdocs.json'; diff --git a/api_docs/banners.mdx b/api_docs/banners.mdx index 40c84072b6875..17ab8f80be077 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: 2023-08-08 +date: 2023-08-10 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 a09991262233c..e7757cb287952 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: 2023-08-08 +date: 2023-08-10 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 6015bb6745617..b4a40940e23de 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'canvas'] --- import canvasObj from './canvas.devdocs.json'; diff --git a/api_docs/cases.devdocs.json b/api_docs/cases.devdocs.json index c0de3e16ac6a6..b749532e5f360 100644 --- a/api_docs/cases.devdocs.json +++ b/api_docs/cases.devdocs.json @@ -1091,7 +1091,7 @@ "\nReturn the UI capabilities for each type of operation. These strings must match the values defined in the UI\nhere: x-pack/plugins/cases/public/client/helpers/capabilities.ts" ], "signature": [ - "() => { all: readonly [\"create_cases\", \"read_cases\", \"update_cases\", \"push_cases\"]; read: readonly [\"read_cases\"]; delete: readonly [\"delete_cases\"]; }" + "() => { all: readonly [\"create_cases\", \"read_cases\", \"update_cases\", \"push_cases\", \"cases_connectors\"]; read: readonly [\"read_cases\", \"cases_connectors\"]; delete: readonly [\"delete_cases\"]; }" ], "path": "x-pack/plugins/cases/common/utils/capabilities.ts", "deprecated": false, @@ -1108,7 +1108,7 @@ "label": "getApiTags", "description": [], "signature": [ - "(owner: \"cases\" | \"observability\" | \"securitySolution\") => { all: readonly [\"casesSuggestUserProfiles\", \"bulkGetUserProfiles\", string, string]; read: readonly [\"casesSuggestUserProfiles\", \"bulkGetUserProfiles\", string]; delete: readonly [string]; }" + "(owner: \"cases\" | \"observability\" | \"securitySolution\") => { all: readonly [\"casesSuggestUserProfiles\", \"bulkGetUserProfiles\", \"casesGetConnectorsConfigure\", string, string]; read: readonly [\"casesSuggestUserProfiles\", \"bulkGetUserProfiles\", \"casesGetConnectorsConfigure\", string]; delete: readonly [string]; }" ], "path": "x-pack/plugins/cases/common/utils/api_tags.ts", "deprecated": false, @@ -1312,6 +1312,17 @@ "path": "x-pack/plugins/cases/common/ui/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "cases", + "id": "def-common.CasesPermissions.connectors", + "type": "boolean", + "tags": [], + "label": "connectors", + "description": [], + "path": "x-pack/plugins/cases/common/ui/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/cases.mdx b/api_docs/cases.mdx index 5b9296c2f8cac..a40e4198326a2 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cases'] --- import casesObj from './cases.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 | |-------------------|-----------|------------------------|-----------------| -| 93 | 0 | 74 | 27 | +| 94 | 0 | 75 | 27 | ## Client diff --git a/api_docs/charts.devdocs.json b/api_docs/charts.devdocs.json index abf1df8307859..b8c332abcc153 100644 --- a/api_docs/charts.devdocs.json +++ b/api_docs/charts.devdocs.json @@ -1350,7 +1350,15 @@ "section": "def-common.Datatable", "text": "Datatable" }, - ", \"rows\" | \"columns\">; column: number; value: any[]; }; timeFieldName?: string | undefined; negate?: boolean | undefined; }" + ", \"rows\" | \"columns\">; cells: { column: number; row: number; }[]; relation?: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.BooleanRelation", + "text": "BooleanRelation" + }, + " | undefined; }[]; timeFieldName?: string | undefined; negate?: boolean | undefined; }" ], "path": "src/plugins/charts/public/index.ts", "deprecated": false, diff --git a/api_docs/charts.mdx b/api_docs/charts.mdx index 0386ec84baa3e..9ddb4d651b7b3 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: 2023-08-08 +date: 2023-08-10 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 917ce1dd5e70d..257ae7fc83e29 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloud'] --- import cloudObj from './cloud.devdocs.json'; diff --git a/api_docs/cloud_chat.mdx b/api_docs/cloud_chat.mdx index 2439ac29b2acd..2f8dfaa9ba409 100644 --- a/api_docs/cloud_chat.mdx +++ b/api_docs/cloud_chat.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChat title: "cloudChat" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChat plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChat'] --- import cloudChatObj from './cloud_chat.devdocs.json'; diff --git a/api_docs/cloud_chat_provider.mdx b/api_docs/cloud_chat_provider.mdx index 09e274f8d6ac2..bb35de3db20ac 100644 --- a/api_docs/cloud_chat_provider.mdx +++ b/api_docs/cloud_chat_provider.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/cloudChatProvider title: "cloudChatProvider" image: https://source.unsplash.com/400x175/?github description: API docs for the cloudChatProvider plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'cloudChatProvider'] --- import cloudChatProviderObj from './cloud_chat_provider.devdocs.json'; diff --git a/api_docs/cloud_data_migration.mdx b/api_docs/cloud_data_migration.mdx index 904c4a2398b07..d49d837df6d07 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: 2023-08-08 +date: 2023-08-10 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 50651cb15c6eb..1b083e68a4f3d 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: 2023-08-08 +date: 2023-08-10 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 19630e2129c64..948087b9508f8 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: 2023-08-08 +date: 2023-08-10 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 e5d9d6c84093e..5746fc75f656f 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: 2023-08-08 +date: 2023-08-10 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 c26eb4445b0d2..584fc4bafb0c9 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: 2023-08-08 +date: 2023-08-10 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 375156d7a08a5..ad7ba3b1ac02f 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: 2023-08-08 +date: 2023-08-10 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 b86db1ce03475..aaa9ba738aa2d 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: 2023-08-08 +date: 2023-08-10 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 48852fd3e96b2..853c2d8170e26 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: 2023-08-08 +date: 2023-08-10 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 2bb3f88bcfd8e..b68f871091838 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: 2023-08-08 +date: 2023-08-10 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 f5efa0a0d205f..8139bcd458a66 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dashboardEnhanced'] --- import dashboardEnhancedObj from './dashboard_enhanced.devdocs.json'; diff --git a/api_docs/data.devdocs.json b/api_docs/data.devdocs.json index 0ff7fe1f1bdc7..4f47b2094fb4d 100644 --- a/api_docs/data.devdocs.json +++ b/api_docs/data.devdocs.json @@ -12999,7 +12999,7 @@ "section": "def-server.DataPluginStart", "text": "DataPluginStart" }, - ">, { bfetch, expressions, usageCollection, fieldFormats, taskManager, security, }: ", + ">, { bfetch, expressions, usageCollection, fieldFormats, security }: ", "DataPluginSetupDependencies", ") => { search: ", "ISearchSetup", @@ -13056,7 +13056,7 @@ "id": "def-server.DataServerPlugin.setup.$2", "type": "Object", "tags": [], - "label": "{\n bfetch,\n expressions,\n usageCollection,\n fieldFormats,\n taskManager,\n security,\n }", + "label": "{ bfetch, expressions, usageCollection, fieldFormats, security }", "description": [], "signature": [ "DataPluginSetupDependencies" @@ -13085,7 +13085,7 @@ "section": "def-common.CoreStart", "text": "CoreStart" }, - ", { fieldFormats, dataViews, taskManager }: ", + ", { fieldFormats, dataViews }: ", "DataPluginStartDependencies", ") => { datatableUtilities: ", "DatatableUtilitiesService", @@ -13155,7 +13155,7 @@ "id": "def-server.DataServerPlugin.start.$2", "type": "Object", "tags": [], - "label": "{ fieldFormats, dataViews, taskManager }", + "label": "{ fieldFormats, dataViews }", "description": [], "signature": [ "DataPluginStartDependencies" @@ -13568,6 +13568,10 @@ "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/public/update_data_view.ts" }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts" @@ -13604,10 +13608,6 @@ "plugin": "apm", "path": "x-pack/plugins/apm/server/routes/data_view/create_static_data_view.ts" }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts" - }, { "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts" @@ -16322,6 +16322,44 @@ "FieldSpec[]" ] }, + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.getExistingIndices", + "type": "Function", + "tags": [], + "label": "getExistingIndices", + "description": [ + "\nGet existing index pattern list by providing string array index pattern list." + ], + "signature": [ + "(indices: string[]) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-server.DataViewsService.getExistingIndices.$1", + "type": "Array", + "tags": [], + "label": "indices", + "description": [ + "index pattern list" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "index pattern list" + ] + }, { "parentPluginId": "data", "id": "def-server.DataViewsService.getFieldsForIndexPattern", @@ -17299,6 +17337,21 @@ "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "data", + "id": "def-server.IndexPatternsFetcher.Unnamed.$3", + "type": "boolean", + "tags": [], + "label": "rollupsEnabled", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true } ], "returnComment": [] @@ -21247,6 +21300,10 @@ "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/public/update_data_view.ts" }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts" @@ -21283,10 +21340,6 @@ "plugin": "apm", "path": "x-pack/plugins/apm/server/routes/data_view/create_static_data_view.ts" }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts" - }, { "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts" @@ -24872,6 +24925,44 @@ "FieldSpec[]" ] }, + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.getExistingIndices", + "type": "Function", + "tags": [], + "label": "getExistingIndices", + "description": [ + "\nGet existing index pattern list by providing string array index pattern list." + ], + "signature": [ + "(indices: string[]) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "data", + "id": "def-common.DataViewsService.getExistingIndices.$1", + "type": "Array", + "tags": [], + "label": "indices", + "description": [ + "index pattern list" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "index pattern list" + ] + }, { "parentPluginId": "data", "id": "def-common.DataViewsService.getFieldsForIndexPattern", @@ -28292,7 +28383,7 @@ "section": "def-common.FieldSpec", "text": "FieldSpec" }, - "[]>; getFieldsForIndexPattern: (indexPattern: ", + "[]>; getExistingIndices: (indices: string[]) => Promise; getFieldsForIndexPattern: (indexPattern: ", { "pluginId": "dataViews", "scope": "common", diff --git a/api_docs/data.mdx b/api_docs/data.mdx index ed440a37583cb..d48b3a6a3e082 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data'] --- import dataObj from './data.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3295 | 119 | 2573 | 27 | +| 3301 | 119 | 2575 | 27 | ## Client diff --git a/api_docs/data_query.mdx b/api_docs/data_query.mdx index 6f4cdc678a730..d3a2a0dc456e3 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.query'] --- import dataQueryObj from './data_query.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3295 | 119 | 2573 | 27 | +| 3301 | 119 | 2575 | 27 | ## Client diff --git a/api_docs/data_search.devdocs.json b/api_docs/data_search.devdocs.json index b4c44781b50fa..2a246bcc16312 100644 --- a/api_docs/data_search.devdocs.json +++ b/api_docs/data_search.devdocs.json @@ -3889,6 +3889,20 @@ "path": "src/plugins/data/server/search/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "data", + "id": "def-server.SearchStrategyDependencies.rollupsEnabled", + "type": "CompoundType", + "tags": [], + "label": "rollupsEnabled", + "description": [], + "signature": [ + "boolean | undefined" + ], + "path": "src/plugins/data/server/search/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/data_search.mdx b/api_docs/data_search.mdx index 2ba7fae435d5f..a54d159e299bb 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'data.search'] --- import dataSearchObj from './data_search.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 3295 | 119 | 2573 | 27 | +| 3301 | 119 | 2575 | 27 | ## Client diff --git a/api_docs/data_view_editor.mdx b/api_docs/data_view_editor.mdx index 0afb9c6cc38d6..765d65b328eb1 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: 2023-08-08 +date: 2023-08-10 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 88b56f7be7bf5..81f5c42e6652e 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: 2023-08-08 +date: 2023-08-10 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 4a6c796e4e163..6708b3bbd5e58 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: 2023-08-08 +date: 2023-08-10 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 c82f54e715564..cb3003d20cac3 100644 --- a/api_docs/data_views.devdocs.json +++ b/api_docs/data_views.devdocs.json @@ -379,6 +379,10 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx" }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts" @@ -415,10 +419,6 @@ "plugin": "apm", "path": "x-pack/plugins/apm/server/routes/data_view/create_static_data_view.ts" }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts" - }, { "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts" @@ -4410,6 +4410,44 @@ "FieldSpec[]" ] }, + { + "parentPluginId": "dataViews", + "id": "def-public.DataViewsService.getExistingIndices", + "type": "Function", + "tags": [], + "label": "getExistingIndices", + "description": [ + "\nGet existing index pattern list by providing string array index pattern list." + ], + "signature": [ + "(indices: string[]) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-public.DataViewsService.getExistingIndices.$1", + "type": "Array", + "tags": [], + "label": "indices", + "description": [ + "index pattern list" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "index pattern list" + ] + }, { "parentPluginId": "dataViews", "id": "def-public.DataViewsService.getFieldsForIndexPattern", @@ -8229,6 +8267,10 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx" }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts" @@ -8265,10 +8307,6 @@ "plugin": "apm", "path": "x-pack/plugins/apm/server/routes/data_view/create_static_data_view.ts" }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts" - }, { "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts" @@ -10576,7 +10614,7 @@ "section": "def-server.DataViewsServerPluginSetupDependencies", "text": "DataViewsServerPluginSetupDependencies" }, - ") => {}" + ") => { enableRollups: () => boolean; }" ], "path": "src/plugins/data_views/server/plugin.ts", "deprecated": false, @@ -11301,6 +11339,44 @@ "FieldSpec[]" ] }, + { + "parentPluginId": "dataViews", + "id": "def-server.DataViewsService.getExistingIndices", + "type": "Function", + "tags": [], + "label": "getExistingIndices", + "description": [ + "\nGet existing index pattern list by providing string array index pattern list." + ], + "signature": [ + "(indices: string[]) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-server.DataViewsService.getExistingIndices.$1", + "type": "Array", + "tags": [], + "label": "indices", + "description": [ + "index pattern list" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "index pattern list" + ] + }, { "parentPluginId": "dataViews", "id": "def-server.DataViewsService.getFieldsForIndexPattern", @@ -12278,6 +12354,21 @@ "deprecated": false, "trackAdoption": false, "isRequired": true + }, + { + "parentPluginId": "dataViews", + "id": "def-server.IndexPatternsFetcher.Unnamed.$3", + "type": "boolean", + "tags": [], + "label": "rollupsEnabled", + "description": [], + "signature": [ + "boolean" + ], + "path": "src/plugins/data_views/server/fetcher/index_patterns_fetcher.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true } ], "returnComment": [] @@ -13451,6 +13542,39 @@ } ], "objects": [], + "setup": { + "parentPluginId": "dataViews", + "id": "def-server.DataViewsServerPluginSetup", + "type": "Interface", + "tags": [], + "label": "DataViewsServerPluginSetup", + "description": [ + "\nDataViews server plugin setup api" + ], + "path": "src/plugins/data_views/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-server.DataViewsServerPluginSetup.enableRollups", + "type": "Function", + "tags": [], + "label": "enableRollups", + "description": [], + "signature": [ + "() => void" + ], + "path": "src/plugins/data_views/server/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + } + ], + "lifecycle": "setup", + "initialIsOpen": true + }, "start": { "parentPluginId": "dataViews", "id": "def-server.DataViewsServerPluginStart", @@ -14803,22 +14927,6 @@ ], "lifecycle": "start", "initialIsOpen": true - }, - "setup": { - "parentPluginId": "dataViews", - "id": "def-server.DataViewsServerPluginSetup", - "type": "Interface", - "tags": [], - "label": "DataViewsServerPluginSetup", - "description": [ - "\nDataViews server plugin setup api" - ], - "path": "src/plugins/data_views/server/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [], - "lifecycle": "setup", - "initialIsOpen": true } }, "common": { @@ -15200,6 +15308,10 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/app_plugin/lens_top_nav.tsx" }, + { + "plugin": "triggersActionsUi", + "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts" @@ -15236,10 +15348,6 @@ "plugin": "apm", "path": "x-pack/plugins/apm/server/routes/data_view/create_static_data_view.ts" }, - { - "plugin": "triggersActionsUi", - "path": "x-pack/plugins/triggers_actions_ui/public/common/lib/data_apis.ts" - }, { "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/utils/observability_data_views/observability_data_views.ts" @@ -18936,6 +19044,44 @@ "FieldSpec[]" ] }, + { + "parentPluginId": "dataViews", + "id": "def-common.DataViewsService.getExistingIndices", + "type": "Function", + "tags": [], + "label": "getExistingIndices", + "description": [ + "\nGet existing index pattern list by providing string array index pattern list." + ], + "signature": [ + "(indices: string[]) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-common.DataViewsService.getExistingIndices.$1", + "type": "Array", + "tags": [], + "label": "indices", + "description": [ + "index pattern list" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "index pattern list" + ] + }, { "parentPluginId": "dataViews", "id": "def-common.DataViewsService.getFieldsForIndexPattern", @@ -22036,6 +22182,44 @@ ], "returnComment": [] }, + { + "parentPluginId": "dataViews", + "id": "def-common.DataViewsServicePublicMethods.getExistingIndices", + "type": "Function", + "tags": [], + "label": "getExistingIndices", + "description": [ + "\nGet existing index pattern list by providing string array index pattern list." + ], + "signature": [ + "(indices: string[]) => Promise" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "dataViews", + "id": "def-common.DataViewsServicePublicMethods.getExistingIndices.$1", + "type": "Array", + "tags": [], + "label": "indices", + "description": [ + "- index pattern list" + ], + "signature": [ + "string[]" + ], + "path": "src/plugins/data_views/common/data_views/data_views.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "index pattern list of index patterns that match indices" + ] + }, { "parentPluginId": "dataViews", "id": "def-common.DataViewsServicePublicMethods.getIds", @@ -24907,7 +25091,7 @@ "section": "def-common.FieldSpec", "text": "FieldSpec" }, - "[]>; getFieldsForIndexPattern: (indexPattern: ", + "[]>; getExistingIndices: (indices: string[]) => Promise; getFieldsForIndexPattern: (indexPattern: ", { "pluginId": "dataViews", "scope": "common", diff --git a/api_docs/data_views.mdx b/api_docs/data_views.mdx index 939dbf86bcc32..4d03a36b92878 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataViews'] --- import dataViewsObj from './data_views.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/k | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 1012 | 0 | 243 | 2 | +| 1024 | 0 | 246 | 2 | ## Client diff --git a/api_docs/data_visualizer.mdx b/api_docs/data_visualizer.mdx index 121bea50c1589..1336377ffa864 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'dataVisualizer'] --- import dataVisualizerObj from './data_visualizer.devdocs.json'; diff --git a/api_docs/deprecations_by_api.mdx b/api_docs/deprecations_by_api.mdx index acc2067839829..64b0db70a4bdc 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -18,12 +18,12 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | ---------------|-----------|-----------| | | ml, stackAlerts | - | | | ruleRegistry, observability, ml, infra, monitoring, securitySolution, stackAlerts, synthetics, transform, uptime | - | -| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, ml, logsShared, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, fleet, dataVisualizer, stackAlerts, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | -| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, ml, logsShared, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, fleet, dataVisualizer, stackAlerts, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | -| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, data, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, ml, logsShared, visTypeTimeseries, apm, triggersActionsUi, exploratoryView, fleet, dataVisualizer, stackAlerts, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega | - | -| | inspector, data, advancedSettings, savedObjects, embeddable, dataViewEditor, unifiedSearch, visualizations, controls, dashboard, licensing, savedObjectsTagging, eventAnnotation, dataViewFieldEditor, lens, @kbn/ml-date-picker, aiops, security, triggersActionsUi, cases, observabilityShared, discover, exploratoryView, fleet, maps, telemetry, dataVisualizer, ml, observability, banners, reporting, timelines, runtimeFields, indexManagement, dashboardEnhanced, imageEmbeddable, graph, monitoring, securitySolution, synthetics, transform, uptime, console, dataViewManagement, filesManagement, uiActions, visTypeVislib | - | +| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, triggersActionsUi, ml, logsShared, visTypeTimeseries, apm, exploratoryView, fleet, dataVisualizer, stackAlerts, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | +| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, dataViews, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, triggersActionsUi, ml, logsShared, visTypeTimeseries, apm, exploratoryView, fleet, dataVisualizer, stackAlerts, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega, data | - | +| | @kbn/es-query, @kbn/visualization-ui-components, observability, securitySolution, timelines, lists, threatIntelligence, savedSearch, data, savedObjectsManagement, unifiedSearch, controls, @kbn/unified-field-list, @kbn/event-annotation-components, lens, triggersActionsUi, ml, logsShared, visTypeTimeseries, apm, exploratoryView, fleet, dataVisualizer, stackAlerts, infra, canvas, enterpriseSearch, graph, transform, upgradeAssistant, uptime, ux, maps, dataViewManagement, inputControlVis, visDefaultEditor, presentationUtil, visTypeTimelion, visTypeVega | - | +| | inspector, data, advancedSettings, savedObjects, embeddable, dataViewEditor, unifiedSearch, visualizations, controls, dashboard, licensing, savedObjectsTagging, eventAnnotation, dataViewFieldEditor, lens, security, triggersActionsUi, cases, @kbn/ml-date-picker, aiops, observabilityShared, discover, exploratoryView, fleet, maps, telemetry, dataVisualizer, ml, observability, banners, reporting, timelines, cloudSecurityPosture, runtimeFields, indexManagement, dashboardEnhanced, imageEmbeddable, graph, monitoring, securitySolution, synthetics, transform, uptime, cloudLinks, console, dataViewManagement, filesManagement, uiActions, visTypeVislib | - | | | home, data, esUiShared, savedObjectsManagement, exploratoryView, fleet, ml, observability, apm, indexLifecycleManagement, observabilityOnboarding, synthetics, upgradeAssistant, uptime, ux, kibanaOverview | - | -| | share, uiActions, guidedOnboarding, home, management, data, advancedSettings, spaces, savedObjects, visualizations, controls, dashboard, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, alerting, security, triggersActionsUi, serverless, cases, discover, exploratoryView, fleet, maps, licenseManagement, dataVisualizer, ml, observability, infra, profiling, apm, canvas, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, indexManagement, crossClusterReplication, enterpriseSearch, globalSearchBar, graph, grokdebugger, indexLifecycleManagement, ingestPipelines, logstash, monitoring, observabilityOnboarding, osquery, devTools, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, serverlessSearch, snapshotRestore, synthetics, transform, upgradeAssistant, uptime, ux, watcher, cloudDataMigration, console, dataViewManagement, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - | +| | share, uiActions, guidedOnboarding, home, management, data, advancedSettings, spaces, savedObjects, visualizations, serverless, controls, dashboard, savedObjectsTagging, expressionXY, lens, expressionMetricVis, expressionGauge, security, alerting, triggersActionsUi, cases, aiops, discover, exploratoryView, observabilityAIAssistant, fleet, maps, licenseManagement, dataVisualizer, ml, observability, infra, profiling, apm, canvas, expressionImage, expressionMetric, expressionError, expressionRevealImage, expressionRepeatImage, expressionShape, indexManagement, crossClusterReplication, enterpriseSearch, globalSearchBar, graph, grokdebugger, indexLifecycleManagement, ingestPipelines, logstash, monitoring, observabilityOnboarding, osquery, devTools, painlessLab, remoteClusters, rollup, searchprofiler, newsfeed, securitySolution, serverlessSearch, snapshotRestore, synthetics, transform, upgradeAssistant, uptime, ux, watcher, cloudDataMigration, console, dataViewManagement, filesManagement, kibanaOverview, visDefaultEditor, expressionHeatmap, expressionLegacyMetricVis, expressionPartitionVis, expressionTagcloud, visTypeTable, visTypeTimelion, visTypeTimeseries, visTypeVega, visTypeVislib | - | | | encryptedSavedObjects, actions, data, ml, logstash, securitySolution, cloudChat | - | | | actions, ml, savedObjectsTagging, enterpriseSearch | - | | | @kbn/core-saved-objects-browser-internal, @kbn/core, savedObjects, presentationUtil, visualizations, aiops, ml, dataVisualizer, dashboardEnhanced, graph, lens, securitySolution, eventAnnotation, @kbn/core-saved-objects-browser-mocks | - | @@ -102,6 +102,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | visTypeTimeseries, graph, dataViewManagement, dataViews | - | | | visTypeTimeseries, graph, dataViewManagement, dataViews | - | | | visTypeTimeseries, graph, dataViewManagement | - | +| | visualizations, graph | - | | | @kbn/core, lens, savedObjects | - | | | dataViews, maps | - | | | dataViewManagement, dataViews | - | @@ -140,7 +141,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | @kbn/core-lifecycle-browser-mocks, @kbn/core, @kbn/core-plugins-browser-internal | - | | | @kbn/core | - | | | @kbn/core-plugins-server-internal | - | -| | security, licenseManagement, ml, profiling, apm, crossClusterReplication, logstash, painlessLab, searchprofiler, watcher | 8.8.0 | +| | security, aiops, licenseManagement, ml, profiling, apm, crossClusterReplication, logstash, painlessLab, searchprofiler, watcher | 8.8.0 | | | spaces, security, actions, alerting, ml, remoteClusters, graph, indexLifecycleManagement, mapsEms, osquery, painlessLab, rollup, searchprofiler, securitySolution, snapshotRestore, transform, upgradeAssistant | 8.8.0 | | | apm, fleet, security, securitySolution | 8.8.0 | | | apm, fleet, security, securitySolution | 8.8.0 | diff --git a/api_docs/deprecations_by_plugin.mdx b/api_docs/deprecations_by_plugin.mdx index cdf90dc6b2602..a061b8f8d595c 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -399,7 +399,9 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| -| | [log_categorization_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx#:~:text=toMountPoint), [log_categorization_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx#:~:text=toMountPoint), [show_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx#:~:text=toMountPoint), [show_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx#:~:text=toMountPoint), [show_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx#:~:text=toMountPoint), [log_rate_analysis_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx#:~:text=toMountPoint), [log_rate_analysis_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx#:~:text=toMountPoint), [log_rate_analysis_content_wrapper.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx#:~:text=toMountPoint), [log_rate_analysis_content_wrapper.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx#:~:text=toMountPoint), [change_point_detection_root.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/change_point_detection/change_point_detection_root.tsx#:~:text=toMountPoint)+ 1 more | - | +| | [embeddable_change_point_chart.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx#:~:text=toMountPoint), [embeddable_change_point_chart.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx#:~:text=toMountPoint), [handle_explicit_input.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/embeddable/handle_explicit_input.tsx#:~:text=toMountPoint), [handle_explicit_input.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/embeddable/handle_explicit_input.tsx#:~:text=toMountPoint), [log_categorization_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx#:~:text=toMountPoint), [log_categorization_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx#:~:text=toMountPoint), [show_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx#:~:text=toMountPoint), [show_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx#:~:text=toMountPoint), [show_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx#:~:text=toMountPoint), [log_rate_analysis_app_state.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx#:~:text=toMountPoint)+ 5 more | - | +| | [embeddable_change_point_chart.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx#:~:text=KibanaThemeProvider), [embeddable_change_point_chart.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx#:~:text=KibanaThemeProvider), [embeddable_change_point_chart.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx#:~:text=KibanaThemeProvider) | - | +| | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/plugin.tsx#:~:text=license%24) | 8.8.0 | | | [search_utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/application/utils/search_utils.ts#:~:text=SimpleSavedObject), [search_utils.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/application/utils/search_utils.ts#:~:text=SimpleSavedObject) | - | @@ -502,11 +504,20 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## cloudLinks + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [theme_darkmode_toggle.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.tsx#:~:text=toMountPoint), [theme_darkmode_toggle.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.tsx#:~:text=toMountPoint) | - | + + + ## cloudSecurityPosture | Deprecated API | Reference location(s) | Remove By | | ---------------|-----------|-----------| | | [overview_tab.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/overview_tab.tsx#:~:text=indexPatternId) | - | +| | [take_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx#:~:text=toMountPoint), [take_action.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx#:~:text=toMountPoint) | - | @@ -946,6 +957,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [workspace_top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx#:~:text=toMountPoint), [workspace_top_nav_menu.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/workspace_layout/workspace_top_nav_menu.tsx#:~:text=toMountPoint), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=toMountPoint), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=toMountPoint) | - | | | [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/application.tsx#:~:text=KibanaThemeProvider) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/server/plugin.ts#:~:text=license%24) | 8.8.0 | +| | [source_picker.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/source_picker.tsx#:~:text=includeFields) | - | | | [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal), [save_modal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/components/save_modal.tsx#:~:text=SavedObjectSaveModal) | 8.8.0 | | | [app_state.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/types/app_state.ts#:~:text=SimpleSavedObject), [app_state.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/types/app_state.ts#:~:text=SimpleSavedObject), [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/find_object_by_title.test.ts#:~:text=SimpleSavedObject), [find_object_by_title.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/find_object_by_title.test.ts#:~:text=SimpleSavedObject) | - | | | [save_with_confirmation.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/save_with_confirmation.ts#:~:text=SavedObjectsCreateOptions), [save_with_confirmation.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/graph/public/helpers/saved_objects_utils/save_with_confirmation.ts#:~:text=SavedObjectsCreateOptions) | - | @@ -1203,7 +1215,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts#:~:text=title), [rollup.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/job_service/new_job_caps/rollup.ts#:~:text=title), [alerting_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts#:~:text=title), [data_recognizer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts#:~:text=title), [configuration_step_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx#:~:text=title), [data_loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/datavisualizer/index_based/data_loader/data_loader.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title)+ 40 more | - | | | [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts#:~:text=title), [rollup.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/job_service/new_job_caps/rollup.ts#:~:text=title), [alerting_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts#:~:text=title), [data_recognizer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts#:~:text=title), [configuration_step_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx#:~:text=title), [data_loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/datavisualizer/index_based/data_loader/data_loader.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title)+ 40 more | - | | | [index_patterns.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_frame_analytics/index_patterns.ts#:~:text=title), [rollup.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/job_service/new_job_caps/rollup.ts#:~:text=title), [alerting_service.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/lib/alerts/alerting_service.ts#:~:text=title), [data_recognizer.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/models/data_recognizer/data_recognizer.ts#:~:text=title), [configuration_step_details.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/components/configuration_step/configuration_step_details.tsx#:~:text=title), [data_loader.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/datavisualizer/index_based/data_loader/data_loader.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title), [use_index_data.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_creation/hooks/use_index_data.ts#:~:text=title)+ 15 more | - | -| | [clone_action_name.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx#:~:text=toMountPoint), [clone_action_name.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx#:~:text=toMountPoint), [force_stop_dialog.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/force_stop_dialog.tsx#:~:text=toMountPoint), [force_stop_dialog.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/force_stop_dialog.tsx#:~:text=toMountPoint), [deployment_setup.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/deployment_setup.tsx#:~:text=toMountPoint), [deployment_setup.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/deployment_setup.tsx#:~:text=toMountPoint), [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/components/header_menu_portal/header_menu_portal.tsx#:~:text=toMountPoint), [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/components/header_menu_portal/header_menu_portal.tsx#:~:text=toMountPoint), [create_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/job_creation/common/create_flyout.tsx#:~:text=toMountPoint), [create_flyout.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/job_creation/common/create_flyout.tsx#:~:text=toMountPoint)+ 10 more | - | +| | [clone_action_name.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx#:~:text=toMountPoint), [clone_action_name.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/data_frame_analytics/pages/analytics_management/components/action_clone/clone_action_name.tsx#:~:text=toMountPoint), [force_stop_dialog.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/force_stop_dialog.tsx#:~:text=toMountPoint), [force_stop_dialog.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/force_stop_dialog.tsx#:~:text=toMountPoint), [deployment_setup.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/deployment_setup.tsx#:~:text=toMountPoint), [deployment_setup.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/model_management/deployment_setup.tsx#:~:text=toMountPoint), [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/components/header_menu_portal/header_menu_portal.tsx#:~:text=toMountPoint), [header_menu_portal.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/components/header_menu_portal/header_menu_portal.tsx#:~:text=toMountPoint), [resolve_job_selection.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx#:~:text=toMountPoint), [resolve_job_selection.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx#:~:text=toMountPoint)+ 10 more | - | | | [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=RedirectAppLinks) | - | | | [anomaly_charts_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_charts_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_charts_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_swimlane_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_swimlane_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx#:~:text=KibanaThemeProvider), [anomaly_swimlane_embeddable.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_embeddable.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/app.tsx#:~:text=KibanaThemeProvider), [app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/app.tsx#:~:text=KibanaThemeProvider), [jobs_list_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx#:~:text=KibanaThemeProvider)+ 2 more | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/plugin.ts#:~:text=license%24) | 8.8.0 | @@ -1257,6 +1269,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] +## observabilityAIAssistant + +| Deprecated API | Reference location(s) | Remove By | +| ---------------|-----------|-----------| +| | [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_ai_assistant/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_ai_assistant/public/application.tsx#:~:text=KibanaThemeProvider), [application.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/observability_ai_assistant/public/application.tsx#:~:text=KibanaThemeProvider) | - | + + + ## observabilityOnboarding | Deprecated API | Reference location(s) | Remove By | @@ -1462,7 +1482,7 @@ This is relied on by the reporting feature, and should be removed once reporting migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/issues/19914 | | | [app_authorization.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/app_authorization.ts#:~:text=getKibanaFeatures), [privileges.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.ts#:~:text=getKibanaFeatures), [authorization_service.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/authorization_service.tsx#:~:text=getKibanaFeatures), [app_authorization.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/app_authorization.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures), [privileges.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/privileges/privileges.test.ts#:~:text=getKibanaFeatures)+ 15 more | 8.8.0 | | | [authorization_service.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/server/authorization/authorization_service.tsx#:~:text=getElasticsearchFeatures) | 8.8.0 | -| | [use_update_user_profile.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx#:~:text=toMountPoint), [use_update_user_profile.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx#:~:text=toMountPoint), [session_expiration_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/session/session_expiration_toast.tsx#:~:text=toMountPoint), [session_expiration_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/session/session_expiration_toast.tsx#:~:text=toMountPoint) | - | +| | [account_management_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/account_management/account_management_app.tsx#:~:text=toMountPoint), [account_management_app.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/account_management/account_management_app.tsx#:~:text=toMountPoint), [session_expiration_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/session/session_expiration_toast.tsx#:~:text=toMountPoint), [session_expiration_toast.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/session/session_expiration_toast.tsx#:~:text=toMountPoint) | - | | | [access_agreement_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/access_agreement/access_agreement_page.tsx#:~:text=KibanaThemeProvider), [access_agreement_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/access_agreement/access_agreement_page.tsx#:~:text=KibanaThemeProvider), [access_agreement_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/access_agreement/access_agreement_page.tsx#:~:text=KibanaThemeProvider), [logged_out_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logged_out/logged_out_page.tsx#:~:text=KibanaThemeProvider), [logged_out_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logged_out/logged_out_page.tsx#:~:text=KibanaThemeProvider), [logged_out_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/logged_out/logged_out_page.tsx#:~:text=KibanaThemeProvider), [login_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/login/login_page.tsx#:~:text=KibanaThemeProvider), [login_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/login/login_page.tsx#:~:text=KibanaThemeProvider), [login_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/login/login_page.tsx#:~:text=KibanaThemeProvider), [overwritten_session_page.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/authentication/overwritten_session/overwritten_session_page.tsx#:~:text=KibanaThemeProvider)+ 20 more | - | | | [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode), [license_service.test.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/common/licensing/license_service.test.ts#:~:text=mode) | 8.8.0 | | | [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/security/public/plugin.tsx#:~:text=license%24) | 8.8.0 | @@ -1818,6 +1838,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | ---------------|-----------|-----------| | | [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [confirm_modal_promise.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/utils/saved_objects_utils/confirm_modal_promise.tsx#:~:text=toMountPoint), [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx#:~:text=toMountPoint), [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx#:~:text=toMountPoint), [visualize_no_match.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx#:~:text=toMountPoint), [visualize_no_match.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx#:~:text=toMountPoint), [index.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/index.tsx#:~:text=toMountPoint), [index.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/index.tsx#:~:text=toMountPoint) | - | | | [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx#:~:text=KibanaThemeProvider), [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx#:~:text=KibanaThemeProvider), [use_visualize_app_state.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/utils/use/use_visualize_app_state.tsx#:~:text=KibanaThemeProvider), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=KibanaThemeProvider), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=KibanaThemeProvider), [visualize_embeddable.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsx#:~:text=KibanaThemeProvider), [show_new_vis.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/show_new_vis.tsx#:~:text=KibanaThemeProvider), [show_new_vis.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/show_new_vis.tsx#:~:text=KibanaThemeProvider), [show_new_vis.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/show_new_vis.tsx#:~:text=KibanaThemeProvider), [visualize_no_match.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_no_match.tsx#:~:text=KibanaThemeProvider)+ 5 more | - | +| | [search_selection.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/wizard/search_selection/search_selection.tsx#:~:text=includeFields), [visualize_embeddable_factory.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/embeddable/visualize_embeddable_factory.tsx#:~:text=includeFields) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=savedObjects), [visualize_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=savedObjects) | - | | | [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=SavedObjectsClientContract), [plugin.ts](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/plugin.ts#:~:text=SavedObjectsClientContract) | - | | | [visualize_listing.tsx](https://github.com/elastic/kibana/tree/main/src/plugins/visualizations/public/visualize_app/components/visualize_listing.tsx#:~:text=delete) | - | diff --git a/api_docs/deprecations_by_team.mdx b/api_docs/deprecations_by_team.mdx index 585d6b75de9aa..dd54d80679b38 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -120,7 +120,7 @@ migrates to using the Kibana Privilege model: https://github.com/elastic/kibana/ | Plugin | Deprecated API | Reference location(s) | Remove By | | --------|-------|-----------|-----------| -| ml | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/plugin.ts#:~:text=license%24) | 8.8.0 | +| ml | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/public/plugin.ts#:~:text=license%24), [plugin.tsx](https://github.com/elastic/kibana/tree/main/x-pack/plugins/aiops/public/plugin.tsx#:~:text=license%24) | 8.8.0 | | ml | | [plugin.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/ml/server/plugin.ts#:~:text=license%24), [license.ts](https://github.com/elastic/kibana/tree/main/x-pack/plugins/transform/server/services/license.ts#:~:text=license%24) | 8.8.0 | diff --git a/api_docs/dev_tools.mdx b/api_docs/dev_tools.mdx index 8a8540fc1360f..59884cb7a6a03 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'devTools'] --- import devToolsObj from './dev_tools.devdocs.json'; diff --git a/api_docs/discover.mdx b/api_docs/discover.mdx index 2bd1d80e8a7b2..9a15eabe616c8 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discover'] --- import discoverObj from './discover.devdocs.json'; diff --git a/api_docs/discover_enhanced.mdx b/api_docs/discover_enhanced.mdx index bd072de583e44..2830cab0b59d7 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'discoverEnhanced'] --- import discoverEnhancedObj from './discover_enhanced.devdocs.json'; diff --git a/api_docs/ecs_data_quality_dashboard.mdx b/api_docs/ecs_data_quality_dashboard.mdx index 7cf7dd6fd5681..7fd44fac756db 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ecsDataQualityDashboard'] --- import ecsDataQualityDashboardObj from './ecs_data_quality_dashboard.devdocs.json'; diff --git a/api_docs/embeddable.devdocs.json b/api_docs/embeddable.devdocs.json index cbb78b0f3defe..be7678ec89f33 100644 --- a/api_docs/embeddable.devdocs.json +++ b/api_docs/embeddable.devdocs.json @@ -7589,6 +7589,26 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "embeddable", + "id": "def-public.EmbeddableStartDependencies.contentManagement", + "type": "Object", + "tags": [], + "label": "contentManagement", + "description": [], + "signature": [ + { + "pluginId": "contentManagement", + "scope": "public", + "docId": "kibContentManagementPluginApi", + "section": "def-public.ContentManagementPublicStart", + "text": "ContentManagementPublicStart" + } + ], + "path": "src/plugins/embeddable/public/plugin.tsx", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "embeddable", "id": "def-public.EmbeddableStartDependencies.savedObjectsManagement", @@ -9155,7 +9175,15 @@ "section": "def-common.Datatable", "text": "Datatable" }, - ", \"rows\" | \"columns\">; column: number; value: any[]; }; timeFieldName?: string | undefined; negate?: boolean | undefined; }" + ", \"rows\" | \"columns\">; cells: { column: number; row: number; }[]; relation?: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.BooleanRelation", + "text": "BooleanRelation" + }, + " | undefined; }[]; timeFieldName?: string | undefined; negate?: boolean | undefined; }" ], "path": "src/plugins/embeddable/public/lib/triggers/triggers.ts", "deprecated": false, diff --git a/api_docs/embeddable.mdx b/api_docs/embeddable.mdx index 5ca2ab1573fa9..59a2a6facb00c 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'embeddable'] --- import embeddableObj from './embeddable.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kib | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 535 | 11 | 437 | 7 | +| 536 | 11 | 438 | 7 | ## Client diff --git a/api_docs/embeddable_enhanced.mdx b/api_docs/embeddable_enhanced.mdx index 9ec369a20e907..62400f8bfb19e 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: 2023-08-08 +date: 2023-08-10 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 fd78a0506ea65..5c703ad47f6a6 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: 2023-08-08 +date: 2023-08-10 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 142741b6ca029..b5b66595a7733 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'enterpriseSearch'] --- import enterpriseSearchObj from './enterprise_search.devdocs.json'; diff --git a/api_docs/es_ui_shared.mdx b/api_docs/es_ui_shared.mdx index f72c796652692..2b22c7c3fdbc9 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'esUiShared'] --- import esUiSharedObj from './es_ui_shared.devdocs.json'; diff --git a/api_docs/event_annotation.devdocs.json b/api_docs/event_annotation.devdocs.json index e61c8b977dd39..c6ce5b7227966 100644 --- a/api_docs/event_annotation.devdocs.json +++ b/api_docs/event_annotation.devdocs.json @@ -461,7 +461,15 @@ "section": "def-common.SavedObjectCommon", "text": "SavedObjectCommon" }, - "; }) => void; onCreateNew: () => void; }) => JSX.Element" + "<", + { + "pluginId": "savedObjectsFinder", + "scope": "common", + "docId": "kibSavedObjectsFinderPluginApi", + "section": "def-common.FinderAttributes", + "text": "FinderAttributes" + }, + ">; }) => void; onCreateNew: () => void; }) => JSX.Element" ], "path": "packages/kbn-event-annotation-components/types.ts", "deprecated": false, @@ -508,7 +516,15 @@ "section": "def-common.SavedObjectCommon", "text": "SavedObjectCommon" }, - "; }) => void" + "<", + { + "pluginId": "savedObjectsFinder", + "scope": "common", + "docId": "kibSavedObjectsFinderPluginApi", + "section": "def-common.FinderAttributes", + "text": "FinderAttributes" + }, + ">; }) => void" ], "path": "packages/kbn-event-annotation-components/types.ts", "deprecated": false, @@ -567,13 +583,21 @@ "description": [], "signature": [ { - "pluginId": "@kbn/core-saved-objects-common", + "pluginId": "@kbn/content-management-utils", "scope": "common", - "docId": "kibKbnCoreSavedObjectsCommonPluginApi", - "section": "def-common.SavedObject", - "text": "SavedObject" + "docId": "kibKbnContentManagementUtilsPluginApi", + "section": "def-common.SOWithMetadata", + "text": "SOWithMetadata" }, - "" + "<", + { + "pluginId": "savedObjectsFinder", + "scope": "common", + "docId": "kibSavedObjectsFinderPluginApi", + "section": "def-common.FinderAttributes", + "text": "FinderAttributes" + }, + ">" ], "path": "packages/kbn-event-annotation-components/types.ts", "deprecated": false, @@ -694,27 +718,6 @@ "deprecated": false, "trackAdoption": false, "isRequired": true - }, - { - "parentPluginId": "eventAnnotation", - "id": "def-public.EventAnnotationService.Unnamed.$3", - "type": "Object", - "tags": [], - "label": "savedObjectsManagement", - "description": [], - "signature": [ - { - "pluginId": "savedObjectsManagement", - "scope": "public", - "docId": "kibSavedObjectsManagementPluginApi", - "section": "def-public.SavedObjectsManagementPluginStart", - "text": "SavedObjectsManagementPluginStart" - } - ], - "path": "src/plugins/event_annotation/public/event_annotation_service/index.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true } ], "returnComment": [] diff --git a/api_docs/event_annotation.mdx b/api_docs/event_annotation.mdx index f50f62c4a8927..f65e74fe1426a 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventAnnotation'] --- import eventAnnotationObj from './event_annotation.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 | |-------------------|-----------|------------------------|-----------------| -| 192 | 30 | 192 | 2 | +| 191 | 30 | 191 | 2 | ## Client diff --git a/api_docs/event_log.devdocs.json b/api_docs/event_log.devdocs.json index 6c4dd5d9e564e..c656ca3ece0e6 100644 --- a/api_docs/event_log.devdocs.json +++ b/api_docs/event_log.devdocs.json @@ -143,85 +143,6 @@ ], "returnComment": [] }, - { - "parentPluginId": "eventLog", - "id": "def-server.ClusterClientAdapter.doesIlmPolicyExist", - "type": "Function", - "tags": [], - "label": "doesIlmPolicyExist", - "description": [], - "signature": [ - "(policyName: string) => Promise" - ], - "path": "x-pack/plugins/event_log/server/es/cluster_client_adapter.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "eventLog", - "id": "def-server.ClusterClientAdapter.doesIlmPolicyExist.$1", - "type": "string", - "tags": [], - "label": "policyName", - "description": [], - "signature": [ - "string" - ], - "path": "x-pack/plugins/event_log/server/es/cluster_client_adapter.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, - { - "parentPluginId": "eventLog", - "id": "def-server.ClusterClientAdapter.createIlmPolicy", - "type": "Function", - "tags": [], - "label": "createIlmPolicy", - "description": [], - "signature": [ - "(policyName: string, policy: Record) => Promise" - ], - "path": "x-pack/plugins/event_log/server/es/cluster_client_adapter.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "eventLog", - "id": "def-server.ClusterClientAdapter.createIlmPolicy.$1", - "type": "string", - "tags": [], - "label": "policyName", - "description": [], - "signature": [ - "string" - ], - "path": "x-pack/plugins/event_log/server/es/cluster_client_adapter.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "eventLog", - "id": "def-server.ClusterClientAdapter.createIlmPolicy.$2", - "type": "Object", - "tags": [], - "label": "policy", - "description": [], - "signature": [ - "Record" - ], - "path": "x-pack/plugins/event_log/server/es/cluster_client_adapter.ts", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] - }, { "parentPluginId": "eventLog", "id": "def-server.ClusterClientAdapter.doesIndexTemplateExist", diff --git a/api_docs/event_log.mdx b/api_docs/event_log.mdx index e89fac58a2876..e1da7f64405f8 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'eventLog'] --- import eventLogObj from './event_log.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 | |-------------------|-----------|------------------------|-----------------| -| 116 | 0 | 116 | 11 | +| 111 | 0 | 111 | 11 | ## Server diff --git a/api_docs/exploratory_view.mdx b/api_docs/exploratory_view.mdx index 935ec02b807e9..42857923c0755 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: 2023-08-08 +date: 2023-08-10 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 e2041edf19373..fdc2f7061181e 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: 2023-08-08 +date: 2023-08-10 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 7939c2f3076e7..c8c6008a375a5 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'expressionGauge'] --- import expressionGaugeObj from './expression_gauge.devdocs.json'; diff --git a/api_docs/expression_heatmap.devdocs.json b/api_docs/expression_heatmap.devdocs.json index 91fc345d8f6c3..e9ebf4fcbc4fe 100644 --- a/api_docs/expression_heatmap.devdocs.json +++ b/api_docs/expression_heatmap.devdocs.json @@ -897,7 +897,23 @@ "section": "def-common.Datatable", "text": "Datatable" }, - "; column: number; range: number[]; timeFieldName?: string | undefined; }) => void; paletteService: ", + "; column: number; range: number[]; timeFieldName?: string | undefined; }) => void; onClickMultiValue: (data: { data: { table: Pick<", + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.Datatable", + "text": "Datatable" + }, + ", \"rows\" | \"columns\">; cells: { column: number; row: number; }[]; relation?: ", + { + "pluginId": "@kbn/es-query", + "scope": "common", + "docId": "kibKbnEsQueryPluginApi", + "section": "def-common.BooleanRelation", + "text": "BooleanRelation" + }, + " | undefined; }[]; timeFieldName?: string | undefined; negate?: boolean | undefined; }) => void; paletteService: ", { "pluginId": "@kbn/coloring", "scope": "common", diff --git a/api_docs/expression_heatmap.mdx b/api_docs/expression_heatmap.mdx index c6cf3ed57d316..a16712c92ffe7 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: 2023-08-08 +date: 2023-08-10 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 cd90df87cb30a..c99cc4f7ffa55 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: 2023-08-08 +date: 2023-08-10 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 40193204df51f..b83b37db8b594 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: 2023-08-08 +date: 2023-08-10 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 8456e45c43aa7..ef651f20382d1 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: 2023-08-08 +date: 2023-08-10 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 6e1c7fff5b9cb..3ce0102964ccd 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: 2023-08-08 +date: 2023-08-10 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 40c1ec352d684..391ae05dfda30 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: 2023-08-08 +date: 2023-08-10 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 fdfc5024941dc..d7c9f4b7c3d4d 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: 2023-08-08 +date: 2023-08-10 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 f12b98a3ef638..ad4e5aae94dfd 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: 2023-08-08 +date: 2023-08-10 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 0b38793ebf1d1..4e6acabab2e13 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: 2023-08-08 +date: 2023-08-10 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 fdd5a6e7434a1..954f34351c103 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: 2023-08-08 +date: 2023-08-10 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 13291fe251db6..3d3a703604593 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: 2023-08-08 +date: 2023-08-10 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 46144bdd70a71..2cfb8da03bab3 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: 2023-08-08 +date: 2023-08-10 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 c84e5990a374f..87032206bd767 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: 2023-08-08 +date: 2023-08-10 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 d0a6e1861cdcb..eb519823e0afd 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fieldFormats'] --- import fieldFormatsObj from './field_formats.devdocs.json'; diff --git a/api_docs/file_upload.mdx b/api_docs/file_upload.mdx index 4ad74f547420c..2f98ac1236833 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'fileUpload'] --- import fileUploadObj from './file_upload.devdocs.json'; diff --git a/api_docs/files.devdocs.json b/api_docs/files.devdocs.json index c6085d88884ac..e361a3c2a6336 100644 --- a/api_docs/files.devdocs.json +++ b/api_docs/files.devdocs.json @@ -577,6 +577,14 @@ "plugin": "cases", "path": "x-pack/plugins/cases/public/plugin.ts" }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/plugin.test.ts" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/public/plugin.test.ts" + }, { "plugin": "imageEmbeddable", "path": "src/plugins/image_embeddable/public/plugin.ts" @@ -5458,6 +5466,10 @@ { "plugin": "cases", "path": "x-pack/plugins/cases/server/client/factory.ts" + }, + { + "plugin": "cases", + "path": "x-pack/plugins/cases/server/plugin.test.ts" } ] } diff --git a/api_docs/files.mdx b/api_docs/files.mdx index 459bc877566b3..fc314b289752a 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: 2023-08-08 +date: 2023-08-10 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 d7b28cd1617f8..6aa91c16d3b1e 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: 2023-08-08 +date: 2023-08-10 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 a5600ae945a8e..10d05a3e19944 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: 2023-08-08 +date: 2023-08-10 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 1bb35a9da4b34..3ecfb4969ccc2 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: 2023-08-08 +date: 2023-08-10 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 649eab3e58dab..7a5a09f7ae7f4 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: 2023-08-08 +date: 2023-08-10 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 37986e0e5531e..f354f40dab1a1 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: 2023-08-08 +date: 2023-08-10 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 84f6acf3fc8e9..33c414a76476c 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: 2023-08-08 +date: 2023-08-10 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 bbac09985808e..30d558400d2a5 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: 2023-08-08 +date: 2023-08-10 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 39520e4f5fd12..6f1bd38953fe1 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'indexManagement'] --- import indexManagementObj from './index_management.devdocs.json'; diff --git a/api_docs/infra.mdx b/api_docs/infra.mdx index 43b6b1f6d5fec..55b6de533eb18 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'infra'] --- import infraObj from './infra.devdocs.json'; diff --git a/api_docs/inspector.mdx b/api_docs/inspector.mdx index f8fb7c62396c0..d48e479972b6c 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'inspector'] --- import inspectorObj from './inspector.devdocs.json'; diff --git a/api_docs/interactive_setup.mdx b/api_docs/interactive_setup.mdx index f24b897b682f1..7efd702cfa51e 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'interactiveSetup'] --- import interactiveSetupObj from './interactive_setup.devdocs.json'; diff --git a/api_docs/kbn_ace.mdx b/api_docs/kbn_ace.mdx index 66b909ccff85d..e941d12298554 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ace'] --- import kbnAceObj from './kbn_ace.devdocs.json'; diff --git a/api_docs/kbn_aiops_components.devdocs.json b/api_docs/kbn_aiops_components.devdocs.json index 1b99ef4188fb6..702a63d266bef 100644 --- a/api_docs/kbn_aiops_components.devdocs.json +++ b/api_docs/kbn_aiops_components.devdocs.json @@ -23,15 +23,13 @@ "parentPluginId": "@kbn/aiops-components", "id": "def-common.DocumentCountChart", "type": "Function", - "tags": [ - "constructor" - ], + "tags": [], "label": "DocumentCountChart", "description": [ - "\nDocument count chart with draggable brushes to select time ranges\nby default use `Baseline` and `Deviation` for the badge names" + "\nDocument count chart with draggable brushes to select time ranges\nby default use `Baseline` and `Deviation` for the badge names\n" ], "signature": [ - "({ dependencies, brushSelectionUpdateHandler, width, chartPoints, chartPointsSplit, timeRangeEarliest, timeRangeLatest, interval, chartPointsSplitLabel, isBrushCleared, autoAnalysisStart, barColorOverride, barStyleAccessor, barHighlightColorOverride, deviationBrush, baselineBrush, }: React.PropsWithChildren<", + "(props: React.PropsWithChildren<", { "pluginId": "@kbn/aiops-components", "scope": "common", @@ -50,8 +48,10 @@ "id": "def-common.DocumentCountChart.$1", "type": "CompoundType", "tags": [], - "label": "{\n dependencies,\n brushSelectionUpdateHandler,\n width,\n chartPoints,\n chartPointsSplit,\n timeRangeEarliest,\n timeRangeLatest,\n interval,\n chartPointsSplitLabel,\n isBrushCleared,\n autoAnalysisStart,\n barColorOverride,\n barStyleAccessor,\n barHighlightColorOverride,\n deviationBrush = {},\n baselineBrush = {},\n}", - "description": [], + "label": "props", + "description": [ + "DocumentCountChart component props" + ], "signature": [ "React.PropsWithChildren<", { @@ -69,22 +69,22 @@ "isRequired": true } ], - "returnComment": [], + "returnComment": [ + "The DocumentCountChart component." + ], "initialIsOpen": false }, { "parentPluginId": "@kbn/aiops-components", "id": "def-common.DualBrush", "type": "Function", - "tags": [ - "type" - ], + "tags": [], "label": "DualBrush", "description": [ - "\nDualBrush React Component\nDual brush component that overlays the document count chart" + "\nDualBrush React Component\nDual brush component that overlays the document count chart\n" ], "signature": [ - "({\n /**\n * Min and max numeric timestamps for the two brushes\n */\n windowParameters,\n /**\n * Min timestamp for x domain\n */\n min,\n /**\n * Max timestamp for x domain\n */\n max,\n /**\n * Callback function whenever the brush changes\n */\n onChange,\n /**\n * Margin left\n */\n marginLeft,\n /**\n * Nearest timestamps to snap to the brushes to\n */\n snapTimestamps,\n /**\n * Width\n */\n width,\n}: DualBrushProps) => JSX.Element" + "(props: React.PropsWithChildren) => JSX.Element" ], "path": "x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx", "deprecated": false, @@ -93,12 +93,14 @@ { "parentPluginId": "@kbn/aiops-components", "id": "def-common.DualBrush.$1", - "type": "Object", + "type": "CompoundType", "tags": [], - "label": "{\n /**\n * Min and max numeric timestamps for the two brushes\n */\n windowParameters,\n /**\n * Min timestamp for x domain\n */\n min,\n /**\n * Max timestamp for x domain\n */\n max,\n /**\n * Callback function whenever the brush changes\n */\n onChange,\n /**\n * Margin left\n */\n marginLeft,\n /**\n * Nearest timestamps to snap to the brushes to\n */\n snapTimestamps,\n /**\n * Width\n */\n width,\n}", - "description": [], + "label": "props", + "description": [ + "DualBrushProps component props" + ], "signature": [ - "DualBrushProps" + "React.PropsWithChildren" ], "path": "x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush.tsx", "deprecated": false, @@ -115,15 +117,13 @@ "parentPluginId": "@kbn/aiops-components", "id": "def-common.DualBrushAnnotation", "type": "Function", - "tags": [ - "type" - ], + "tags": [], "label": "DualBrushAnnotation", "description": [ - "\nDualBrushAnnotation React Component\nDual brush annotation component that overlays the document count chart" + "\nDualBrushAnnotation React Component\nDual brush annotation component that overlays the document count chart\n" ], "signature": [ - "({ id, min, max, style }: React.PropsWithChildren) => JSX.Element" + "(props: React.PropsWithChildren) => JSX.Element" ], "path": "x-pack/packages/ml/aiops_components/src/dual_brush/dual_brush_annotation.tsx", "deprecated": false, @@ -134,8 +134,10 @@ "id": "def-common.DualBrushAnnotation.$1", "type": "CompoundType", "tags": [], - "label": "{ id, min, max, style }", - "description": [], + "label": "props", + "description": [ + "BrushAnnotationProps component props" + ], "signature": [ "React.PropsWithChildren" ], @@ -154,15 +156,13 @@ "parentPluginId": "@kbn/aiops-components", "id": "def-common.ProgressControls", "type": "Function", - "tags": [ - "type" - ], + "tags": [], "label": "ProgressControls", "description": [ - "\nProgressControls React Component\nComponent with ability to Run & cancel analysis\nby default use `Baseline` and `Deviation` for the badge name" + "\nProgressControls React Component\nComponent with ability to Run & cancel analysis\nby default uses `Baseline` and `Deviation` for the badge name\n" ], "signature": [ - "({ children, isBrushCleared, progress, progressMessage, onRefresh, onCancel, onReset, isRunning, shouldRerunAnalysis, runAnalysisDisabled, }: React.PropsWithChildren) => JSX.Element" + "(props: React.PropsWithChildren) => JSX.Element" ], "path": "x-pack/packages/ml/aiops_components/src/progress_controls/progress_controls.tsx", "deprecated": false, @@ -173,8 +173,10 @@ "id": "def-common.ProgressControls.$1", "type": "CompoundType", "tags": [], - "label": "{\n children,\n isBrushCleared,\n progress,\n progressMessage,\n onRefresh,\n onCancel,\n onReset,\n isRunning,\n shouldRerunAnalysis,\n runAnalysisDisabled = false,\n}", - "description": [], + "label": "props", + "description": [ + "ProgressControls component props" + ], "signature": [ "React.PropsWithChildren" ], @@ -193,12 +195,12 @@ "interfaces": [ { "parentPluginId": "@kbn/aiops-components", - "id": "def-common.DocumentCountChartPoint", + "id": "def-common.BrushSettings", "type": "Interface", "tags": [], - "label": "DocumentCountChartPoint", + "label": "BrushSettings", "description": [ - "\nDatum for the bar chart" + "\nBrush settings" ], "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", "deprecated": false, @@ -206,15 +208,34 @@ "children": [ { "parentPluginId": "@kbn/aiops-components", - "id": "def-common.DocumentCountChartPoint.time", - "type": "CompoundType", + "id": "def-common.BrushSettings.label", + "type": "string", + "tags": [], + "label": "label", + "description": [ + "\nOptional label name for brush" + ], + "signature": [ + "string | undefined" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.BrushSettings.annotationStyle", + "type": "Object", "tags": [], - "label": "time", + "label": "annotationStyle", "description": [ - "\nTime of bucket" + "\nOptional style for brush" ], "signature": [ - "string | number" + "RecursivePartial", + "<", + "RectAnnotationStyle", + "> | undefined" ], "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", "deprecated": false, @@ -222,12 +243,15 @@ }, { "parentPluginId": "@kbn/aiops-components", - "id": "def-common.DocumentCountChartPoint.value", + "id": "def-common.BrushSettings.badgeWidth", "type": "number", "tags": [], - "label": "value", + "label": "badgeWidth", "description": [ - "\nNumber of doc count for that time bucket" + "\nOptional width for brush" + ], + "signature": [ + "number | undefined" ], "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", "deprecated": false, @@ -304,61 +328,21 @@ "tags": [], "label": "brushSelectionUpdateHandler", "description": [ - "Optional callback function which gets called the brush selection has changed" + "Optional callback for handling brush selection updates" ], "signature": [ - "((windowParameters: ", { - "pluginId": "@kbn/aiops-utils", + "pluginId": "@kbn/aiops-components", "scope": "common", - "docId": "kibKbnAiopsUtilsPluginApi", - "section": "def-common.WindowParameters", - "text": "WindowParameters" + "docId": "kibKbnAiopsComponentsPluginApi", + "section": "def-common.BrushSelectionUpdateHandler", + "text": "BrushSelectionUpdateHandler" }, - ", force: boolean) => void) | undefined" + " | undefined" ], "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "@kbn/aiops-components", - "id": "def-common.DocumentCountChartProps.brushSelectionUpdateHandler.$1", - "type": "Object", - "tags": [], - "label": "windowParameters", - "description": [], - "signature": [ - { - "pluginId": "@kbn/aiops-utils", - "scope": "common", - "docId": "kibKbnAiopsUtilsPluginApi", - "section": "def-common.WindowParameters", - "text": "WindowParameters" - } - ], - "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "@kbn/aiops-components", - "id": "def-common.DocumentCountChartProps.brushSelectionUpdateHandler.$2", - "type": "boolean", - "tags": [], - "label": "force", - "description": [], - "signature": [ - "boolean" - ], - "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - } - ], - "returnComment": [] + "trackAdoption": false }, { "parentPluginId": "@kbn/aiops-components", @@ -387,11 +371,11 @@ ], "signature": [ { - "pluginId": "@kbn/aiops-components", + "pluginId": "@kbn/aiops-utils", "scope": "common", - "docId": "kibKbnAiopsComponentsPluginApi", - "section": "def-common.DocumentCountChartPoint", - "text": "DocumentCountChartPoint" + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.LogRateHistogramItem", + "text": "LogRateHistogramItem" }, "[]" ], @@ -410,11 +394,11 @@ ], "signature": [ { - "pluginId": "@kbn/aiops-components", + "pluginId": "@kbn/aiops-utils", "scope": "common", - "docId": "kibKbnAiopsComponentsPluginApi", - "section": "def-common.DocumentCountChartPoint", - "text": "DocumentCountChartPoint" + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.LogRateHistogramItem", + "text": "LogRateHistogramItem" }, "[] | undefined" ], @@ -570,7 +554,13 @@ "Optional settings override for the 'deviation' brush" ], "signature": [ - "BrushSettings", + { + "pluginId": "@kbn/aiops-components", + "scope": "common", + "docId": "kibKbnAiopsComponentsPluginApi", + "section": "def-common.BrushSettings", + "text": "BrushSettings" + }, " | undefined" ], "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", @@ -587,7 +577,13 @@ "Optional settings override for the 'baseline' brush" ], "signature": [ - "BrushSettings", + { + "pluginId": "@kbn/aiops-components", + "scope": "common", + "docId": "kibKbnAiopsComponentsPluginApi", + "section": "def-common.BrushSettings", + "text": "BrushSettings" + }, " | undefined" ], "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", @@ -599,7 +595,95 @@ } ], "enums": [], - "misc": [], + "misc": [ + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.BrushSelectionUpdateHandler", + "type": "Type", + "tags": [], + "label": "BrushSelectionUpdateHandler", + "description": [ + "\nCallback function which gets called when the brush selection has changed\n" + ], + "signature": [ + "(windowParameters: ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.WindowParameters", + "text": "WindowParameters" + }, + ", force: boolean, logRateAnalysisType: ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.LogRateAnalysisType", + "text": "LogRateAnalysisType" + }, + ") => void" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.BrushSelectionUpdateHandler.$1", + "type": "Object", + "tags": [], + "label": "windowParameters", + "description": [ + "Baseline and deviation time ranges." + ], + "signature": [ + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.WindowParameters", + "text": "WindowParameters" + } + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.BrushSelectionUpdateHandler.$2", + "type": "boolean", + "tags": [], + "label": "force", + "description": [ + "Force update" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-components", + "id": "def-common.BrushSelectionUpdateHandler.$3", + "type": "CompoundType", + "tags": [], + "label": "logRateAnalysisType", + "description": [ + "`spike` or `dip` based on median log rate bucket size" + ], + "signature": [ + "\"spike\" | \"dip\"" + ], + "path": "x-pack/packages/ml/aiops_components/src/document_count_chart/document_count_chart.tsx", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + } + ], "objects": [] } } \ No newline at end of file diff --git a/api_docs/kbn_aiops_components.mdx b/api_docs/kbn_aiops_components.mdx index e4e3eed672b02..77111d5895f85 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-components'] --- import kbnAiopsComponentsObj from './kbn_aiops_components.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 30 | 0 | 6 | 1 | +| 33 | 0 | 0 | 0 | ## Common @@ -31,3 +31,6 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi ### Interfaces +### Consts, variables and types + + diff --git a/api_docs/kbn_aiops_utils.devdocs.json b/api_docs/kbn_aiops_utils.devdocs.json index c84540e90ecf6..4ab34fcaf1db4 100644 --- a/api_docs/kbn_aiops_utils.devdocs.json +++ b/api_docs/kbn_aiops_utils.devdocs.json @@ -19,6 +19,98 @@ "common": { "classes": [], "functions": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getLogRateAnalysisType", + "type": "Function", + "tags": [], + "label": "getLogRateAnalysisType", + "description": [ + "\nIdentify the log rate analysis type based on the baseline/deviation\ntime ranges on a given log rate histogram.\n" + ], + "signature": [ + "(logRateHistogram: ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.LogRateHistogramItem", + "text": "LogRateHistogramItem" + }, + "[], windowParameters: ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.WindowParameters", + "text": "WindowParameters" + }, + ") => ", + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.LogRateAnalysisType", + "text": "LogRateAnalysisType" + } + ], + "path": "x-pack/packages/ml/aiops_utils/get_log_rate_analysis_type.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getLogRateAnalysisType.$1", + "type": "Array", + "tags": [], + "label": "logRateHistogram", + "description": [ + "The log rate histogram." + ], + "signature": [ + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.LogRateHistogramItem", + "text": "LogRateHistogramItem" + }, + "[]" + ], + "path": "x-pack/packages/ml/aiops_utils/get_log_rate_analysis_type.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.getLogRateAnalysisType.$2", + "type": "Object", + "tags": [], + "label": "windowParameters", + "description": [ + "The window parameters with baseline and deviation time range." + ], + "signature": [ + { + "pluginId": "@kbn/aiops-utils", + "scope": "common", + "docId": "kibKbnAiopsUtilsPluginApi", + "section": "def-common.WindowParameters", + "text": "WindowParameters" + } + ], + "path": "x-pack/packages/ml/aiops_utils/get_log_rate_analysis_type.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [ + "The log rate analysis type." + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/aiops-utils", "id": "def-common.getSnappedWindowParameters", @@ -46,7 +138,7 @@ "text": "WindowParameters" } ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -68,7 +160,7 @@ "text": "WindowParameters" } ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -85,7 +177,7 @@ "signature": [ "number[]" ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -115,7 +207,7 @@ "text": "WindowParameters" } ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -131,7 +223,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -148,7 +240,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -165,7 +257,7 @@ "signature": [ "number" ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false, "isRequired": true @@ -178,6 +270,51 @@ } ], "interfaces": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.LogRateHistogramItem", + "type": "Interface", + "tags": [], + "label": "LogRateHistogramItem", + "description": [ + "\nLog rate histogram item" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_histogram_item.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.LogRateHistogramItem.time", + "type": "CompoundType", + "tags": [], + "label": "time", + "description": [ + "\nTime of bucket" + ], + "signature": [ + "string | number" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_histogram_item.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.LogRateHistogramItem.value", + "type": "number", + "tags": [], + "label": "value", + "description": [ + "\nNumber of doc count for that time bucket" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_histogram_item.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/aiops-utils", "id": "def-common.WindowParameters", @@ -191,7 +328,7 @@ "description": [ "\nTime range definition for baseline and deviation to be used by log rate analysis.\n" ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -206,7 +343,7 @@ "description": [ "\nBaseline minimum value" ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false }, @@ -221,7 +358,7 @@ "description": [ "\nBaseline maximum value" ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false }, @@ -236,7 +373,7 @@ "description": [ "\nDeviation minimum value" ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false }, @@ -251,7 +388,7 @@ "description": [ "\nDeviation maximum value" ], - "path": "x-pack/packages/ml/aiops_utils/src/get_window_parameters.ts", + "path": "x-pack/packages/ml/aiops_utils/window_parameters.ts", "deprecated": false, "trackAdoption": false } @@ -260,7 +397,43 @@ } ], "enums": [], - "misc": [], - "objects": [] + "misc": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.LogRateAnalysisType", + "type": "Type", + "tags": [], + "label": "LogRateAnalysisType", + "description": [ + "\nUnion type of log rate analysis types." + ], + "signature": [ + "\"spike\" | \"dip\"" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis_type.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ], + "objects": [ + { + "parentPluginId": "@kbn/aiops-utils", + "id": "def-common.LOG_RATE_ANALYSIS_TYPE", + "type": "Object", + "tags": [], + "label": "LOG_RATE_ANALYSIS_TYPE", + "description": [ + "\nThe type of log rate analysis (spike or dip) will affect how parameters are\npassed to the analysis API endpoint." + ], + "signature": [ + "{ readonly SPIKE: \"spike\"; readonly DIP: \"dip\"; }" + ], + "path": "x-pack/packages/ml/aiops_utils/log_rate_analysis_type.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + } + ] } } \ No newline at end of file diff --git a/api_docs/kbn_aiops_utils.mdx b/api_docs/kbn_aiops_utils.mdx index 8ab1310b76c47..5abc5d88e118c 100644 --- a/api_docs/kbn_aiops_utils.mdx +++ b/api_docs/kbn_aiops_utils.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-aiops-utils title: "@kbn/aiops-utils" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/aiops-utils plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/aiops-utils'] --- import kbnAiopsUtilsObj from './kbn_aiops_utils.devdocs.json'; @@ -21,13 +21,19 @@ Contact [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) for questi | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 12 | 0 | 0 | 0 | +| 20 | 0 | 0 | 0 | ## Common +### Objects + + ### Functions ### Interfaces +### Consts, variables and types + + diff --git a/api_docs/kbn_alerting_state_types.mdx b/api_docs/kbn_alerting_state_types.mdx index 748be1e48ebf4..418e8b1ba5cbf 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerting-state-types'] --- import kbnAlertingStateTypesObj from './kbn_alerting_state_types.devdocs.json'; diff --git a/api_docs/kbn_alerts_as_data_utils.mdx b/api_docs/kbn_alerts_as_data_utils.mdx index c7101ea8fa22b..1a2bfdb84ca88 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/alerts-as-data-utils'] --- import kbnAlertsAsDataUtilsObj from './kbn_alerts_as_data_utils.devdocs.json'; diff --git a/api_docs/kbn_alerts_ui_shared.mdx b/api_docs/kbn_alerts_ui_shared.mdx index d3929a4dea717..6d7a5d4431245 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: 2023-08-08 +date: 2023-08-10 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 f3bf145144bb5..0696cb1f1333a 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics'] --- import kbnAnalyticsObj from './kbn_analytics.devdocs.json'; diff --git a/api_docs/kbn_analytics_client.devdocs.json b/api_docs/kbn_analytics_client.devdocs.json index 88e2702e0c82f..1af5ff6be1368 100644 --- a/api_docs/kbn_analytics_client.devdocs.json +++ b/api_docs/kbn_analytics_client.devdocs.json @@ -1316,14 +1316,14 @@ "plugin": "cloud", "path": "x-pack/plugins/cloud/common/register_cloud_deployment_id_analytics_context.ts" }, - { - "plugin": "telemetry", - "path": "src/plugins/telemetry/server/plugin.ts" - }, { "plugin": "security", "path": "x-pack/plugins/security/public/analytics/register_user_context.ts" }, + { + "plugin": "telemetry", + "path": "src/plugins/telemetry/server/plugin.ts" + }, { "plugin": "telemetry", "path": "src/plugins/telemetry/public/plugin.ts" diff --git a/api_docs/kbn_analytics_client.mdx b/api_docs/kbn_analytics_client.mdx index 0dec0bae902c6..32f4324c0b45f 100644 --- a/api_docs/kbn_analytics_client.mdx +++ b/api_docs/kbn_analytics_client.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-client title: "@kbn/analytics-client" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-client plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-client'] --- import kbnAnalyticsClientObj from './kbn_analytics_client.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx index ad3639f903acd..a338b46b94f30 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_browser.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-browser title: "@kbn/analytics-shippers-elastic-v3-browser" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-browser plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-browser'] --- import kbnAnalyticsShippersElasticV3BrowserObj from './kbn_analytics_shippers_elastic_v3_browser.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx index 579d8f9c06d06..1421c801f0f97 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_common.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-common title: "@kbn/analytics-shippers-elastic-v3-common" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-common plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-common'] --- import kbnAnalyticsShippersElasticV3CommonObj from './kbn_analytics_shippers_elastic_v3_common.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx index ea346f0f543ae..ad83c7e663383 100644 --- a/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx +++ b/api_docs/kbn_analytics_shippers_elastic_v3_server.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-elastic-v3-server title: "@kbn/analytics-shippers-elastic-v3-server" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-elastic-v3-server plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-elastic-v3-server'] --- import kbnAnalyticsShippersElasticV3ServerObj from './kbn_analytics_shippers_elastic_v3_server.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_fullstory.mdx b/api_docs/kbn_analytics_shippers_fullstory.mdx index 32ea46da84ad8..1d88dbb364a46 100644 --- a/api_docs/kbn_analytics_shippers_fullstory.mdx +++ b/api_docs/kbn_analytics_shippers_fullstory.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-fullstory title: "@kbn/analytics-shippers-fullstory" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-fullstory plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-fullstory'] --- import kbnAnalyticsShippersFullstoryObj from './kbn_analytics_shippers_fullstory.devdocs.json'; diff --git a/api_docs/kbn_analytics_shippers_gainsight.mdx b/api_docs/kbn_analytics_shippers_gainsight.mdx index 534625a620b5a..5f1c1de0ad4cc 100644 --- a/api_docs/kbn_analytics_shippers_gainsight.mdx +++ b/api_docs/kbn_analytics_shippers_gainsight.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-analytics-shippers-gainsight title: "@kbn/analytics-shippers-gainsight" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/analytics-shippers-gainsight plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/analytics-shippers-gainsight'] --- import kbnAnalyticsShippersGainsightObj from './kbn_analytics_shippers_gainsight.devdocs.json'; diff --git a/api_docs/kbn_apm_config_loader.mdx b/api_docs/kbn_apm_config_loader.mdx index 19b3c53dc1fa6..12df92a5bdf59 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-config-loader'] --- import kbnApmConfigLoaderObj from './kbn_apm_config_loader.devdocs.json'; diff --git a/api_docs/kbn_apm_synthtrace.mdx b/api_docs/kbn_apm_synthtrace.mdx index 9082cac1d53cf..38658ba9378bf 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: 2023-08-08 +date: 2023-08-10 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 0793199486530..e2a9b389ca3cd 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-synthtrace-client'] --- import kbnApmSynthtraceClientObj from './kbn_apm_synthtrace_client.devdocs.json'; diff --git a/api_docs/kbn_apm_utils.mdx b/api_docs/kbn_apm_utils.mdx index 35fd8b188e4bb..c91252fd33610 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/apm-utils'] --- import kbnApmUtilsObj from './kbn_apm_utils.devdocs.json'; diff --git a/api_docs/kbn_axe_config.mdx b/api_docs/kbn_axe_config.mdx index 8796a2577f2e8..a022b36191609 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/axe-config'] --- import kbnAxeConfigObj from './kbn_axe_config.devdocs.json'; diff --git a/api_docs/kbn_cases_components.mdx b/api_docs/kbn_cases_components.mdx index 60115e5095ec3..5c3a636ae44af 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: 2023-08-08 +date: 2023-08-10 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 f1ea4d738f4e6..3766d6c35e77e 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: 2023-08-08 +date: 2023-08-10 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 965afdd0dd7b4..c5ea02975d07e 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: 2023-08-08 +date: 2023-08-10 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 e23a54e6cfde5..dd478068217b3 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: 2023-08-08 +date: 2023-08-10 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 bcdaad75b0888..88633fead7a31 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: 2023-08-08 +date: 2023-08-10 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 c9afcf2d42fe4..da44070bf0374 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: 2023-08-08 +date: 2023-08-10 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 3db876a7ee320..ba30db316a708 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: 2023-08-08 +date: 2023-08-10 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 f05ae46a3609a..0db9769db14d3 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: 2023-08-08 +date: 2023-08-10 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 8bf30ebb4b9d0..65373570a0e98 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor'] --- import kbnCodeEditorObj from './kbn_code_editor.devdocs.json'; diff --git a/api_docs/kbn_code_editor_mocks.mdx b/api_docs/kbn_code_editor_mocks.mdx index b8bf6bc9537dd..db828f46c981b 100644 --- a/api_docs/kbn_code_editor_mocks.mdx +++ b/api_docs/kbn_code_editor_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-code-editor-mocks title: "@kbn/code-editor-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/code-editor-mocks plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/code-editor-mocks'] --- import kbnCodeEditorMocksObj from './kbn_code_editor_mocks.devdocs.json'; diff --git a/api_docs/kbn_coloring.mdx b/api_docs/kbn_coloring.mdx index 33fd7a4d6418b..fb50d2bb20a3f 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: 2023-08-08 +date: 2023-08-10 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 b74fada882cdd..5c12a2fc8086f 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: 2023-08-08 +date: 2023-08-10 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 3524e6e8d82aa..df5e89ed1a7ce 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: 2023-08-08 +date: 2023-08-10 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 71e8e4fea5a34..33ec97ec50893 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: 2023-08-08 +date: 2023-08-10 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 3db5874410372..44f11f4a4dda3 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-content-editor'] --- import kbnContentManagementContentEditorObj from './kbn_content_management_content_editor.devdocs.json'; diff --git a/api_docs/kbn_content_management_tabbed_table_list_view.mdx b/api_docs/kbn_content_management_tabbed_table_list_view.mdx index 74fe7e277a2ec..e68db52cba0d5 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: 2023-08-08 +date: 2023-08-10 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 0a393870c35cf..cd03b964fe93e 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: 2023-08-08 +date: 2023-08-10 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_table.mdx b/api_docs/kbn_content_management_table_list_view_table.mdx index 2560ce1238725..08e9fe08765a3 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-table-list-view-table'] --- import kbnContentManagementTableListViewTableObj from './kbn_content_management_table_list_view_table.devdocs.json'; diff --git a/api_docs/kbn_content_management_utils.devdocs.json b/api_docs/kbn_content_management_utils.devdocs.json index e58246c889b47..871287406cc8f 100644 --- a/api_docs/kbn_content_management_utils.devdocs.json +++ b/api_docs/kbn_content_management_utils.devdocs.json @@ -74,7 +74,7 @@ "id": "def-common.SOContentStorage.Unnamed.$1", "type": "Object", "tags": [], - "label": "{\n savedObjectType,\n cmServicesDefinition,\n createArgsToSoCreateOptions,\n updateArgsToSoUpdateOptions,\n searchArgsToSOFindOptions,\n enableMSearch,\n allowedSavedObjectAttributes,\n }", + "label": "{\n savedObjectType,\n cmServicesDefinition,\n createArgsToSoCreateOptions,\n updateArgsToSoUpdateOptions,\n searchArgsToSOFindOptions,\n enableMSearch,\n allowedSavedObjectAttributes,\n mSearchAdditionalSearchFields,\n }", "description": [], "signature": [ { @@ -118,7 +118,7 @@ "section": "def-common.SavedObjectsFindResult", "text": "SavedObjectsFindResult" }, - ") => Types[\"Item\"]; } | undefined" + ") => Types[\"Item\"]; additionalSearchFields?: string[] | undefined; } | undefined" ], "path": "packages/kbn-content-management-utils/src/saved_object_content_storage.ts", "deprecated": false, @@ -2865,6 +2865,20 @@ "path": "packages/kbn-content-management-utils/src/saved_object_content_storage.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "@kbn/content-management-utils", + "id": "def-common.SOContentStorageConstrutorParams.mSearchAdditionalSearchFields", + "type": "Array", + "tags": [], + "label": "mSearchAdditionalSearchFields", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "packages/kbn-content-management-utils/src/saved_object_content_storage.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false diff --git a/api_docs/kbn_content_management_utils.mdx b/api_docs/kbn_content_management_utils.mdx index 4b8b9829a1a50..55af16f30d880 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/content-management-utils'] --- import kbnContentManagementUtilsObj from './kbn_content_management_utils.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 | |-------------------|-----------|------------------------|-----------------| -| 187 | 1 | 122 | 0 | +| 188 | 1 | 123 | 0 | ## Common diff --git a/api_docs/kbn_core_analytics_browser.mdx b/api_docs/kbn_core_analytics_browser.mdx index 54b1c35b9669f..a3d2aa0c4415e 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: 2023-08-08 +date: 2023-08-10 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 56dacaceda3e6..7e25cbeda0a88 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: 2023-08-08 +date: 2023-08-10 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 f0bbbf320541d..7caeee42494af 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: 2023-08-08 +date: 2023-08-10 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 cb51ca86bda86..9fc02fe58fa4f 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: 2023-08-08 +date: 2023-08-10 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 03048cb389098..ca9f1516bec86 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: 2023-08-08 +date: 2023-08-10 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 8d63466db6756..bc0795bf6158f 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: 2023-08-08 +date: 2023-08-10 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 90fab26c3bf54..2c0d6086d55a3 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: 2023-08-08 +date: 2023-08-10 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 e5c429b13bc13..d0a5218b0ceae 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: 2023-08-08 +date: 2023-08-10 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 025d1bd9e42cb..a9b59dae2cdc3 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: 2023-08-08 +date: 2023-08-10 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 253dcb5d92671..dbd536efd4af8 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: 2023-08-08 +date: 2023-08-10 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 b305c86fe1c93..28432533e8282 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: 2023-08-08 +date: 2023-08-10 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 7c776934de2fc..8bc2bb6c0354d 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: 2023-08-08 +date: 2023-08-10 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 284e58f106333..c3cdc773148c1 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: 2023-08-08 +date: 2023-08-10 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 c017c2b09c5fc..3c4070c221909 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: 2023-08-08 +date: 2023-08-10 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 730462673de14..ff57bebc5c3a5 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: 2023-08-08 +date: 2023-08-10 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 cf5ab5cb40877..981ca2d333281 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: 2023-08-08 +date: 2023-08-10 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 07cbfbfb0af7e..b417fb5efe040 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: 2023-08-08 +date: 2023-08-10 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 98eedb888c16a..8d9dd57cfc8bc 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: 2023-08-08 +date: 2023-08-10 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 8effd8f79e6e2..cb5c8d84690da 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: 2023-08-08 +date: 2023-08-10 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 133401c40993b..37895f8d77f79 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: 2023-08-08 +date: 2023-08-10 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 7b1538003a8be..49fed84525600 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: 2023-08-08 +date: 2023-08-10 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 7128a9710b907..2ead6c497949c 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: 2023-08-08 +date: 2023-08-10 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 228624d0ecaf2..437ee4fdd75fc 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: 2023-08-08 +date: 2023-08-10 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 4251ce1a56b61..ead55725566be 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: 2023-08-08 +date: 2023-08-10 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 670995a4a05c8..e84f5576a9ec7 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: 2023-08-08 +date: 2023-08-10 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 35e42e0ea93dc..b37f87902aff2 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: 2023-08-08 +date: 2023-08-10 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 88779b741c0f6..1cff1fd02a433 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: 2023-08-08 +date: 2023-08-10 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 11415cb9894d6..53e46ff803c2b 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: 2023-08-08 +date: 2023-08-10 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 c6cef5d82d103..d94fb747f4731 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: 2023-08-08 +date: 2023-08-10 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 d021591eff678..ee237e02ad449 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: 2023-08-08 +date: 2023-08-10 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 68c2414844881..0ff4dc99b1ca1 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: 2023-08-08 +date: 2023-08-10 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 947af0a1b0da4..a2f9efd771efe 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: 2023-08-08 +date: 2023-08-10 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 f94179345c264..b178fb5e76a4e 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: 2023-08-08 +date: 2023-08-10 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 1d15fcc40b881..4b2a04a993b7d 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: 2023-08-08 +date: 2023-08-10 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 582190d70f7b8..fca4609153d74 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: 2023-08-08 +date: 2023-08-10 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 5be7399218312..646787175c940 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: 2023-08-08 +date: 2023-08-10 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 89421e8bdb148..f2c041d63f34b 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: 2023-08-08 +date: 2023-08-10 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 f25e1c8a0ee66..61ffa6dd89dc4 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: 2023-08-08 +date: 2023-08-10 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 b81abcc8258de..783da1f326902 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: 2023-08-08 +date: 2023-08-10 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 735b84c1b0079..9ca5d0b80a63b 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: 2023-08-08 +date: 2023-08-10 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 67eedbc41794e..4f9fa2f6d4e2b 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: 2023-08-08 +date: 2023-08-10 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 b839841f35de9..7df248651d145 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: 2023-08-08 +date: 2023-08-10 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 686e5e9661d4c..34d5df5e1d5ca 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: 2023-08-08 +date: 2023-08-10 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 24e3759ce4b8a..8a374a174da77 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: 2023-08-08 +date: 2023-08-10 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 dadbf28ea6332..48bc60defbb9d 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: 2023-08-08 +date: 2023-08-10 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 e903616263fb4..d872809f9fbcd 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: 2023-08-08 +date: 2023-08-10 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 8fe13951442ca..769af6390cbb8 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: 2023-08-08 +date: 2023-08-10 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 1256a5eb245e7..78956563fd545 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: 2023-08-08 +date: 2023-08-10 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 04ea7169eb666..ec60e78f18e7c 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: 2023-08-08 +date: 2023-08-10 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 90009c29c89cc..ea02ea43a5abd 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: 2023-08-08 +date: 2023-08-10 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 7716f62714f6b..62a7277f4da84 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: 2023-08-08 +date: 2023-08-10 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 f4c2a8115015b..6a38822734be7 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: 2023-08-08 +date: 2023-08-10 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 cb08d0340717d..be9d12fb509e6 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: 2023-08-08 +date: 2023-08-10 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 321b72ad4e2f5..9cf6a0c2945aa 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: 2023-08-08 +date: 2023-08-10 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 78bcb9afedc40..6b9c1e9531847 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: 2023-08-08 +date: 2023-08-10 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 d6aa6ab279e28..c51c1c80290ff 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: 2023-08-08 +date: 2023-08-10 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 19aa36087e3fd..16641ee0f9618 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: 2023-08-08 +date: 2023-08-10 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 1d63ca16b335c..7203a607e4f16 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: 2023-08-08 +date: 2023-08-10 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 787454514e00e..9837e89fcd2bb 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: 2023-08-08 +date: 2023-08-10 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 87e0876cc677d..a5b7c23ba23f6 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: 2023-08-08 +date: 2023-08-10 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 57abe05b1e9a3..9ca62691cf917 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: 2023-08-08 +date: 2023-08-10 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 6d0f2c07a925c..81fc4f5ea6bf9 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: 2023-08-08 +date: 2023-08-10 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 8ee889cbcf8ad..05a1daf171451 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: 2023-08-08 +date: 2023-08-10 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 3d3161cb7cbb3..faaac088132f2 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: 2023-08-08 +date: 2023-08-10 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 fa1fa17e20bb6..b7a801fa451e8 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: 2023-08-08 +date: 2023-08-10 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 636c73bcfe78f..6a55ec423723a 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: 2023-08-08 +date: 2023-08-10 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 c63fcf2523f89..6b1d80bbaa14b 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: 2023-08-08 +date: 2023-08-10 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 45554c9823289..1e222721df01d 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: 2023-08-08 +date: 2023-08-10 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 a9c57abc605a1..0aa09c0f91cdf 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-http-router-server-mocks'] --- import kbnCoreHttpRouterServerMocksObj from './kbn_core_http_router_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_http_server.devdocs.json b/api_docs/kbn_core_http_server.devdocs.json index 45aa782bcbd31..82728a75430e6 100644 --- a/api_docs/kbn_core_http_server.devdocs.json +++ b/api_docs/kbn_core_http_server.devdocs.json @@ -3599,18 +3599,6 @@ "plugin": "alerting", "path": "x-pack/plugins/alerting/server/routes/maintenance_window/active_maintenance_windows.ts" }, - { - "plugin": "guidedOnboarding", - "path": "src/plugins/guided_onboarding/server/routes/guide_state_routes.ts" - }, - { - "plugin": "guidedOnboarding", - "path": "src/plugins/guided_onboarding/server/routes/plugin_state_routes.ts" - }, - { - "plugin": "guidedOnboarding", - "path": "src/plugins/guided_onboarding/server/routes/config_routes.ts" - }, { "plugin": "ruleRegistry", "path": "x-pack/plugins/rule_registry/server/routes/get_alert_by_id.ts" @@ -3631,6 +3619,18 @@ "plugin": "ruleRegistry", "path": "x-pack/plugins/rule_registry/server/routes/get_aad_fields_by_rule_type.ts" }, + { + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/server/routes/guide_state_routes.ts" + }, + { + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/server/routes/plugin_state_routes.ts" + }, + { + "plugin": "guidedOnboarding", + "path": "src/plugins/guided_onboarding/server/routes/config_routes.ts" + }, { "plugin": "observability", "path": "x-pack/plugins/observability/server/lib/annotations/register_annotation_apis.ts" @@ -4687,10 +4687,6 @@ "plugin": "interactiveSetup", "path": "src/plugins/interactive_setup/server/routes/status.ts" }, - { - "plugin": "savedObjectsFinder", - "path": "src/plugins/saved_objects_finder/server/routes/find.ts" - }, { "plugin": "savedObjectsManagement", "path": "src/plugins/saved_objects_management/server/routes/find.ts" @@ -13778,10 +13774,6 @@ "plugin": "@kbn/core-http-router-server-mocks", "path": "packages/core/http/core-http-router-server-mocks/src/versioned_router.mock.ts" }, - { - "plugin": "bfetch", - "path": "src/plugins/bfetch/server/plugin.ts" - }, { "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/public/runtime_fields/get_runtime_field.ts" @@ -13814,6 +13806,10 @@ "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/internal/has_data_views.ts" }, + { + "plugin": "bfetch", + "path": "src/plugins/bfetch/server/plugin.ts" + }, { "plugin": "data", "path": "src/plugins/data/server/search/routes/session.ts" @@ -14042,6 +14038,10 @@ "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/trained_models.ts" }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/server/routes/trained_models.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/management.ts" @@ -14510,10 +14510,6 @@ "plugin": "@kbn/core-http-router-server-mocks", "path": "packages/core/http/core-http-router-server-mocks/src/versioned_router.mock.ts" }, - { - "plugin": "bfetch", - "path": "src/plugins/bfetch/server/plugin.ts" - }, { "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/public/runtime_fields/put_runtime_field.ts" @@ -14526,6 +14522,10 @@ "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/internal/fields_for.ts" }, + { + "plugin": "bfetch", + "path": "src/plugins/bfetch/server/plugin.ts" + }, { "plugin": "data", "path": "src/plugins/data/server/search/routes/session.ts" @@ -14698,10 +14698,6 @@ "plugin": "@kbn/core-http-router-server-mocks", "path": "packages/core/http/core-http-router-server-mocks/src/versioned_router.mock.ts" }, - { - "plugin": "bfetch", - "path": "src/plugins/bfetch/server/plugin.ts" - }, { "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/public/fields/update_fields.ts" @@ -14742,6 +14738,10 @@ "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/internal/fields_for.ts" }, + { + "plugin": "bfetch", + "path": "src/plugins/bfetch/server/plugin.ts" + }, { "plugin": "data", "path": "src/plugins/data/server/search/routes/session.ts" @@ -14778,6 +14778,10 @@ "plugin": "data", "path": "src/plugins/data/server/kql_telemetry/route.ts" }, + { + "plugin": "unifiedSearch", + "path": "src/plugins/unified_search/server/autocomplete/value_suggestions_route.ts" + }, { "plugin": "aiops", "path": "x-pack/plugins/aiops/server/routes/log_rate_analysis.ts" @@ -14786,10 +14790,6 @@ "plugin": "aiops", "path": "x-pack/plugins/aiops/server/routes/log_categorization.ts" }, - { - "plugin": "unifiedSearch", - "path": "src/plugins/unified_search/server/autocomplete/value_suggestions_route.ts" - }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/annotations.ts" @@ -15074,6 +15074,10 @@ "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/trained_models.ts" }, + { + "plugin": "ml", + "path": "x-pack/plugins/ml/server/routes/trained_models.ts" + }, { "plugin": "ml", "path": "x-pack/plugins/ml/server/routes/alerting.ts" @@ -15418,10 +15422,6 @@ "plugin": "@kbn/core-http-router-server-mocks", "path": "packages/core/http/core-http-router-server-mocks/src/versioned_router.mock.ts" }, - { - "plugin": "bfetch", - "path": "src/plugins/bfetch/server/plugin.ts" - }, { "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/public/runtime_fields/delete_runtime_field.ts" @@ -15434,6 +15434,10 @@ "plugin": "dataViews", "path": "src/plugins/data_views/server/rest_api_routes/public/delete_data_view.ts" }, + { + "plugin": "bfetch", + "path": "src/plugins/bfetch/server/plugin.ts" + }, { "plugin": "data", "path": "src/plugins/data/server/search/routes/session.ts" diff --git a/api_docs/kbn_core_http_server.mdx b/api_docs/kbn_core_http_server.mdx index 04b45513b45c5..99d0bfed889dd 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: 2023-08-08 +date: 2023-08-10 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 df28c49f0862d..8cb45c96afba6 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: 2023-08-08 +date: 2023-08-10 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 71fd4602c628d..fae37a80af603 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: 2023-08-08 +date: 2023-08-10 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 dedebc31e31fd..4d5eb5471bd82 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: 2023-08-08 +date: 2023-08-10 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 d196e9513ab6c..0253dae1815ba 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: 2023-08-08 +date: 2023-08-10 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 a4f118dfa303d..222e7c93daf9e 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: 2023-08-08 +date: 2023-08-10 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 1c1d80320475a..1c5e29a1b819b 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: 2023-08-08 +date: 2023-08-10 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 5f6215c2b0e27..22aebb96c496a 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: 2023-08-08 +date: 2023-08-10 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 5391d2f281be5..037cc811c3a54 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: 2023-08-08 +date: 2023-08-10 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 df5e3bb4349d7..c29d40f5f7313 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: 2023-08-08 +date: 2023-08-10 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 56086553b00dc..e6ba4de3c1fb1 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: 2023-08-08 +date: 2023-08-10 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 99531b81e8574..aa5e529950a8a 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: 2023-08-08 +date: 2023-08-10 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 2a0f438edb26b..5587dcb2c4b83 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: 2023-08-08 +date: 2023-08-10 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 a02bdb3c0101e..954d92db64bf5 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: 2023-08-08 +date: 2023-08-10 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 7d2581f42e4f6..d9dfcd3237c55 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: 2023-08-08 +date: 2023-08-10 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 ba13559eba6bf..908787f976911 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: 2023-08-08 +date: 2023-08-10 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 29169fb4371cd..bbadb69f2a581 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: 2023-08-08 +date: 2023-08-10 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 123e3aa3e7619..703169e0049ca 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: 2023-08-08 +date: 2023-08-10 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 4fb6a77b9b04d..575f90597d2d3 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: 2023-08-08 +date: 2023-08-10 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 3d86ef8947788..94453374d508a 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: 2023-08-08 +date: 2023-08-10 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 dc7e196ccdf06..1203a3ea18a91 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: 2023-08-08 +date: 2023-08-10 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 317ba2ee9e774..964eada8d67a9 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: 2023-08-08 +date: 2023-08-10 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 ace69d608a26d..65b165872eab4 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: 2023-08-08 +date: 2023-08-10 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 751b14ef4a567..6b5f2599ab21e 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: 2023-08-08 +date: 2023-08-10 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 b8bc5cfc50f5b..b8075163f5f03 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: 2023-08-08 +date: 2023-08-10 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 f558d06a364d1..4a47840063206 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: 2023-08-08 +date: 2023-08-10 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 010eab5713a79..4fee677a2e341 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: 2023-08-08 +date: 2023-08-10 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 b142c9f37285f..a0c126ef3ff94 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: 2023-08-08 +date: 2023-08-10 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 6c94ef3afbb40..ed03155a5ed93 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: 2023-08-08 +date: 2023-08-10 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 c2638a4737c23..326dc303a3b1c 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: 2023-08-08 +date: 2023-08-10 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 0e95009b0cb85..58a476462aba0 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: 2023-08-08 +date: 2023-08-10 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 a25e35d4e19ba..b09dceee0054e 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: 2023-08-08 +date: 2023-08-10 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 69b5674fe89ab..791e5bb452ac0 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: 2023-08-08 +date: 2023-08-10 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 079aed26d91d7..536239c5f598a 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: 2023-08-08 +date: 2023-08-10 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 b39ee812ab659..a0fd9d020d751 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: 2023-08-08 +date: 2023-08-10 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 916c6fafc8bd0..4ecac68faabf8 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: 2023-08-08 +date: 2023-08-10 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 a6f60b7e0e965..212070fdb5bca 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: 2023-08-08 +date: 2023-08-10 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_server.mdx b/api_docs/kbn_core_plugins_server.mdx index c2a5349922e0d..e6594e6507489 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: 2023-08-08 +date: 2023-08-10 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 18f595bde6978..6b3fc9263cdbf 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: 2023-08-08 +date: 2023-08-10 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 78e0717918e17..3234e959b51c7 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: 2023-08-08 +date: 2023-08-10 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 86670bcafb4ae..5b503dd6ca04f 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: 2023-08-08 +date: 2023-08-10 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 6aec9dfd84597..8c0c299eb62d8 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: 2023-08-08 +date: 2023-08-10 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 abb1fb3e8afe6..67ade810a2659 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: 2023-08-08 +date: 2023-08-10 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 ff0bc3ad493e7..e658945d42019 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: 2023-08-08 +date: 2023-08-10 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 b38e9d98875bb..7b2c53aaa9659 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: 2023-08-08 +date: 2023-08-10 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 a62569321db1f..43e10686ceb1a 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: 2023-08-08 +date: 2023-08-10 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 b4501b269354e..b23c95b79201f 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: 2023-08-08 +date: 2023-08-10 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 95fa85cab16b5..a7a431da29a06 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: 2023-08-08 +date: 2023-08-10 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 d1e46f4c1ee5e..630637ff9c9c1 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: 2023-08-08 +date: 2023-08-10 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 a987dc60dc8d8..03eda68dd88f5 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: 2023-08-08 +date: 2023-08-10 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 c493c59bc1b4a..73189853b8392 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: 2023-08-08 +date: 2023-08-10 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 d6b01343a214b..ad0b541c70c20 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: 2023-08-08 +date: 2023-08-10 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 99a7f0976ded9..e8a44056f0121 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: 2023-08-08 +date: 2023-08-10 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 7d5ba1632a8d4..94bb7cb8e1b23 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: 2023-08-08 +date: 2023-08-10 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 758ebdab3d222..2df414cb3785c 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: 2023-08-08 +date: 2023-08-10 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 99235c2ce242a..2b80851350953 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: 2023-08-08 +date: 2023-08-10 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 845cab1c1d84b..f67a0413da870 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: 2023-08-08 +date: 2023-08-10 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 d8ae52e1c5cd1..46ff072146b36 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: 2023-08-08 +date: 2023-08-10 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 d54b0c18fa7f9..f9fdbea16f255 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: 2023-08-08 +date: 2023-08-10 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 48c029ae6a3fa..2eff7e0f56a05 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: 2023-08-08 +date: 2023-08-10 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 7b0108f47de19..c4449475b455a 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: 2023-08-08 +date: 2023-08-10 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 4cd54142fc9d2..d6644b87e6e2c 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-saved-objects-utils-server'] --- import kbnCoreSavedObjectsUtilsServerObj from './kbn_core_saved_objects_utils_server.devdocs.json'; diff --git a/api_docs/kbn_core_status_common.mdx b/api_docs/kbn_core_status_common.mdx index f1c9d87eab6cf..c0517668bd3e6 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: 2023-08-08 +date: 2023-08-10 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 1d759a21ce701..f1cbd7a5d8f57 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: 2023-08-08 +date: 2023-08-10 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 e654990475f5d..8a5f1c295ab8b 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: 2023-08-08 +date: 2023-08-10 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 117678763edcb..20f2eed5b139b 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: 2023-08-08 +date: 2023-08-10 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 6695ef9c86476..43033b1972ce6 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: 2023-08-08 +date: 2023-08-10 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 271a06dbd26e7..a4dcb69ed3fcb 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: 2023-08-08 +date: 2023-08-10 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 1bf1a38c714f5..0517bdd2d1419 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: 2023-08-08 +date: 2023-08-10 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 56b267ba84572..62dd992d0d761 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: 2023-08-08 +date: 2023-08-10 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_so_type_serializer.mdx b/api_docs/kbn_core_test_helpers_so_type_serializer.mdx index bc776395968b5..7194e3044a2a7 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: 2023-08-08 +date: 2023-08-10 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 c6feaf4650780..c152eb2c4ed2d 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: 2023-08-08 +date: 2023-08-10 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 cdbe74136748f..4c82c21c3a216 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: 2023-08-08 +date: 2023-08-10 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 9ddf2c57ce822..a5c94c3afbba7 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: 2023-08-08 +date: 2023-08-10 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 7abf2e74bf987..d394eec62e530 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: 2023-08-08 +date: 2023-08-10 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 1931ac3b26fff..8206d774761f4 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: 2023-08-08 +date: 2023-08-10 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 532c7adad3e1c..c70b178a72abc 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: 2023-08-08 +date: 2023-08-10 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 0ab8e28aa0df9..e509dac371cfa 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: 2023-08-08 +date: 2023-08-10 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 7a75e89ea4150..1efa419d1f86f 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: 2023-08-08 +date: 2023-08-10 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 c67e252addd2f..5d9a8b6c67582 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: 2023-08-08 +date: 2023-08-10 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 4e6b67b9852b3..36f34c6b24b90 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: 2023-08-08 +date: 2023-08-10 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 d4cbd84c11c56..c5f0b02883e09 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: 2023-08-08 +date: 2023-08-10 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 79c868879899d..41b6f57546a9b 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: 2023-08-08 +date: 2023-08-10 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 25757579a4fbd..3421fa3113701 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-usage-data-server-mocks'] --- import kbnCoreUsageDataServerMocksObj from './kbn_core_usage_data_server_mocks.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server.mdx b/api_docs/kbn_core_user_settings_server.mdx index 935179f08e439..88521aaf6d709 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server'] --- import kbnCoreUserSettingsServerObj from './kbn_core_user_settings_server.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_internal.mdx b/api_docs/kbn_core_user_settings_server_internal.mdx index dddf1ef343884..3a11aeb9c3c0c 100644 --- a/api_docs/kbn_core_user_settings_server_internal.mdx +++ b/api_docs/kbn_core_user_settings_server_internal.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-core-user-settings-server-internal title: "@kbn/core-user-settings-server-internal" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/core-user-settings-server-internal plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/core-user-settings-server-internal'] --- import kbnCoreUserSettingsServerInternalObj from './kbn_core_user_settings_server_internal.devdocs.json'; diff --git a/api_docs/kbn_core_user_settings_server_mocks.mdx b/api_docs/kbn_core_user_settings_server_mocks.mdx index 45056ff08f1af..287c621493ea6 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: 2023-08-08 +date: 2023-08-10 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 cc016eec8bfc8..72ddc4913f2ac 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: 2023-08-08 +date: 2023-08-10 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 56ce772d5b1d1..78daead4149fe 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/crypto-browser'] --- import kbnCryptoBrowserObj from './kbn_crypto_browser.devdocs.json'; diff --git a/api_docs/kbn_cypress_config.mdx b/api_docs/kbn_cypress_config.mdx index 4c969ab0e95fa..d06760255e077 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/cypress-config'] --- import kbnCypressConfigObj from './kbn_cypress_config.devdocs.json'; diff --git a/api_docs/kbn_data_service.mdx b/api_docs/kbn_data_service.mdx index b53458717153d..97f28f5ce3d72 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/data-service'] --- import kbnDataServiceObj from './kbn_data_service.devdocs.json'; diff --git a/api_docs/kbn_datemath.mdx b/api_docs/kbn_datemath.mdx index 4a9f76a2bf852..196e1c6c87297 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: 2023-08-08 +date: 2023-08-10 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 395daccf034c6..0495d60d6de22 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: 2023-08-08 +date: 2023-08-10 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 4f65a2c1d09d1..67a71ba210d32 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-devtools'] --- import kbnDeeplinksDevtoolsObj from './kbn_deeplinks_devtools.devdocs.json'; diff --git a/api_docs/kbn_deeplinks_management.mdx b/api_docs/kbn_deeplinks_management.mdx index 1517e4387cf9b..2de85cf9a9346 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: 2023-08-08 +date: 2023-08-10 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 3d1bc0ada81d1..9663d229135ae 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: 2023-08-08 +date: 2023-08-10 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 1ff762c760aa7..9e3b1781e5d4b 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: 2023-08-08 +date: 2023-08-10 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 e3d1e559f3f0d..d8666f439297d 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/deeplinks-search'] --- import kbnDeeplinksSearchObj from './kbn_deeplinks_search.devdocs.json'; diff --git a/api_docs/kbn_default_nav_analytics.mdx b/api_docs/kbn_default_nav_analytics.mdx index 544a84a94c069..0f019717f1a3e 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: 2023-08-08 +date: 2023-08-10 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 20667b6757a8d..4166cd3a51e6a 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: 2023-08-08 +date: 2023-08-10 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 7c20d850bdd3d..f5b98d82c200b 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: 2023-08-08 +date: 2023-08-10 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 332dab42ea5ec..7e7c53bfb029a 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: 2023-08-08 +date: 2023-08-10 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 08a9a3fb7df56..b859b6745a213 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: 2023-08-08 +date: 2023-08-10 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 337ba8695482a..c5f9514bc0c65 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: 2023-08-08 +date: 2023-08-10 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 7558dc4339d3f..853a7dd951ca2 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: 2023-08-08 +date: 2023-08-10 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 89db217814781..3d176057d5edd 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: 2023-08-08 +date: 2023-08-10 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 b4fad8a137581..e336c9f6f8a6a 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: 2023-08-08 +date: 2023-08-10 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 3e8d6352e66f7..e21a5090c6edb 100644 --- a/api_docs/kbn_doc_links.devdocs.json +++ b/api_docs/kbn_doc_links.devdocs.json @@ -493,7 +493,7 @@ "label": "upgradeAssistant", "description": [], "signature": [ - "{ readonly overview: string; readonly batchReindex: string; readonly remoteReindex: string; }" + "{ readonly overview: string; readonly batchReindex: string; readonly remoteReindex: string; readonly reindexWithPipeline: 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 5939e5a135fa4..d9075a7e7934a 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: 2023-08-08 +date: 2023-08-10 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 06fbb1b04042e..c90eb47fc8ebf 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: 2023-08-08 +date: 2023-08-10 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 9423dfb94366c..ac85c4ff798d8 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: 2023-08-08 +date: 2023-08-10 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 9fa55673ed2b0..18cdd3e94731b 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ebt-tools'] --- import kbnEbtToolsObj from './kbn_ebt_tools.devdocs.json'; diff --git a/api_docs/kbn_ecs.mdx b/api_docs/kbn_ecs.mdx index 7ba02853d106f..1fd2511549f56 100644 --- a/api_docs/kbn_ecs.mdx +++ b/api_docs/kbn_ecs.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-ecs title: "@kbn/ecs" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/ecs plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ecs'] --- import kbnEcsObj from './kbn_ecs.devdocs.json'; diff --git a/api_docs/kbn_ecs_data_quality_dashboard.mdx b/api_docs/kbn_ecs_data_quality_dashboard.mdx index 0dbcabd54280f..e8184cd642a77 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: 2023-08-08 +date: 2023-08-10 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_assistant.mdx b/api_docs/kbn_elastic_assistant.mdx index 3d27411f79c8a..55c35b7e146ee 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/elastic-assistant'] --- import kbnElasticAssistantObj from './kbn_elastic_assistant.devdocs.json'; diff --git a/api_docs/kbn_es.mdx b/api_docs/kbn_es.mdx index 265c4b5b4b2e5..5050f95627ecc 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: 2023-08-08 +date: 2023-08-10 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 06d97ea2e6c09..c96bdbd286d34 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: 2023-08-08 +date: 2023-08-10 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 d6cef59c85df9..6b88702a88dc1 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: 2023-08-08 +date: 2023-08-10 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 b152de1a0efad..07413ad66ef3a 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: 2023-08-08 +date: 2023-08-10 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 f5bfbca78eb95..ed6d8ead4aa3a 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: 2023-08-08 +date: 2023-08-10 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 cda3ff57e110d..e5d1042aec594 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/eslint-plugin-imports'] --- import kbnEslintPluginImportsObj from './kbn_eslint_plugin_imports.devdocs.json'; diff --git a/api_docs/kbn_event_annotation_common.mdx b/api_docs/kbn_event_annotation_common.mdx index 4ce21cb4603ce..2498132adc226 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: 2023-08-08 +date: 2023-08-10 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.devdocs.json b/api_docs/kbn_event_annotation_components.devdocs.json index e835390ba84ac..54b9e95eb01e1 100644 --- a/api_docs/kbn_event_annotation_components.devdocs.json +++ b/api_docs/kbn_event_annotation_components.devdocs.json @@ -1131,7 +1131,15 @@ "section": "def-common.SavedObjectCommon", "text": "SavedObjectCommon" }, - "; }) => void; onCreateNew: () => void; }) => JSX.Element" + "<", + { + "pluginId": "savedObjectsFinder", + "scope": "common", + "docId": "kibSavedObjectsFinderPluginApi", + "section": "def-common.FinderAttributes", + "text": "FinderAttributes" + }, + ">; }) => void; onCreateNew: () => void; }) => JSX.Element" ], "path": "packages/kbn-event-annotation-components/types.ts", "deprecated": false, @@ -1178,7 +1186,15 @@ "section": "def-common.SavedObjectCommon", "text": "SavedObjectCommon" }, - "; }) => void" + "<", + { + "pluginId": "savedObjectsFinder", + "scope": "common", + "docId": "kibSavedObjectsFinderPluginApi", + "section": "def-common.FinderAttributes", + "text": "FinderAttributes" + }, + ">; }) => void" ], "path": "packages/kbn-event-annotation-components/types.ts", "deprecated": false, @@ -1237,13 +1253,21 @@ "description": [], "signature": [ { - "pluginId": "@kbn/core-saved-objects-common", + "pluginId": "@kbn/content-management-utils", + "scope": "common", + "docId": "kibKbnContentManagementUtilsPluginApi", + "section": "def-common.SOWithMetadata", + "text": "SOWithMetadata" + }, + "<", + { + "pluginId": "savedObjectsFinder", "scope": "common", - "docId": "kibKbnCoreSavedObjectsCommonPluginApi", - "section": "def-common.SavedObject", - "text": "SavedObject" + "docId": "kibSavedObjectsFinderPluginApi", + "section": "def-common.FinderAttributes", + "text": "FinderAttributes" }, - "" + ">" ], "path": "packages/kbn-event-annotation-components/types.ts", "deprecated": false, diff --git a/api_docs/kbn_event_annotation_components.mdx b/api_docs/kbn_event_annotation_components.mdx index 9cd8f7214cfa8..02b3d4b1a216d 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: 2023-08-08 +date: 2023-08-10 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 732812f7a79b7..365b3085bd27c 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: 2023-08-08 +date: 2023-08-10 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 5bdbfb13a0efb..6b93bad46d751 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/field-types'] --- import kbnFieldTypesObj from './kbn_field_types.devdocs.json'; diff --git a/api_docs/kbn_find_used_node_modules.mdx b/api_docs/kbn_find_used_node_modules.mdx index 2c8eb05ed00fb..3d3c6614c75f7 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: 2023-08-08 +date: 2023-08-10 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_ftr_common_functional_services.mdx b/api_docs/kbn_ftr_common_functional_services.mdx index dcd7828d8f729..f95efa21d1831 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: 2023-08-08 +date: 2023-08-10 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_generate.mdx b/api_docs/kbn_generate.mdx index 5ab4aeed0523f..0e46c21e56371 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: 2023-08-08 +date: 2023-08-10 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 a40025b07062d..ebf4aa2ab79ff 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: 2023-08-08 +date: 2023-08-10 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 195dc456047cf..d64302ecba7d3 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv'] --- import kbnGenerateCsvObj from './kbn_generate_csv.devdocs.json'; diff --git a/api_docs/kbn_generate_csv_types.mdx b/api_docs/kbn_generate_csv_types.mdx index de8d08099659f..02d760595f265 100644 --- a/api_docs/kbn_generate_csv_types.mdx +++ b/api_docs/kbn_generate_csv_types.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-generate-csv-types title: "@kbn/generate-csv-types" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/generate-csv-types plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/generate-csv-types'] --- import kbnGenerateCsvTypesObj from './kbn_generate_csv_types.devdocs.json'; diff --git a/api_docs/kbn_guided_onboarding.mdx b/api_docs/kbn_guided_onboarding.mdx index e03dc06db9fa2..101b5f981a365 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: 2023-08-08 +date: 2023-08-10 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 7e1396bcb3633..9ad0a5673680d 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: 2023-08-08 +date: 2023-08-10 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 fe31787dee3e4..4886cf2557874 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: 2023-08-08 +date: 2023-08-10 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 aa9e3fd4aeea1..3802212b8eb14 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: 2023-08-08 +date: 2023-08-10 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 5f08767456ce9..3051660f3aede 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: 2023-08-08 +date: 2023-08-10 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 c58cdd56cebd3..10a295a760f74 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: 2023-08-08 +date: 2023-08-10 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 2f53834a6ea42..51da5c5b5baff 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: 2023-08-08 +date: 2023-08-10 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 5f867be9c59b2..23ca2e22cc6b8 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: 2023-08-08 +date: 2023-08-10 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 abce71a506637..3ce1d23d09c4b 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/import-resolver'] --- import kbnImportResolverObj from './kbn_import_resolver.devdocs.json'; diff --git a/api_docs/kbn_infra_forge.mdx b/api_docs/kbn_infra_forge.mdx index 20c0060b80444..3244c174af0a6 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: 2023-08-08 +date: 2023-08-10 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 769d75499448a..29ec1aaa8c593 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/interpreter'] --- import kbnInterpreterObj from './kbn_interpreter.devdocs.json'; diff --git a/api_docs/kbn_io_ts_utils.devdocs.json b/api_docs/kbn_io_ts_utils.devdocs.json index 88c594ba2f1bc..06b7c2f9c5137 100644 --- a/api_docs/kbn_io_ts_utils.devdocs.json +++ b/api_docs/kbn_io_ts_utils.devdocs.json @@ -996,7 +996,7 @@ "description": [], "signature": [ "Type", - "" + "" ], "path": "packages/kbn-io-ts-utils/src/to_boolean_rt/index.ts", "deprecated": false, diff --git a/api_docs/kbn_io_ts_utils.mdx b/api_docs/kbn_io_ts_utils.mdx index 7871742ad90e1..6c7ec1976753a 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/io-ts-utils'] --- import kbnIoTsUtilsObj from './kbn_io_ts_utils.devdocs.json'; diff --git a/api_docs/kbn_jest_serializers.mdx b/api_docs/kbn_jest_serializers.mdx index 5275a27b9dc42..367e2690e7bb1 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: 2023-08-08 +date: 2023-08-10 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 ba7fc5802fd43..a98049fb4dd26 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: 2023-08-08 +date: 2023-08-10 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 9d53c0f40410b..67e9b1ddef60f 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/json-ast'] --- import kbnJsonAstObj from './kbn_json_ast.devdocs.json'; diff --git a/api_docs/kbn_kibana_manifest_schema.mdx b/api_docs/kbn_kibana_manifest_schema.mdx index c81f36b2dd300..72ff23c059432 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: 2023-08-08 +date: 2023-08-10 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 d55332c57262e..71799546b4e99 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/language-documentation-popover'] --- import kbnLanguageDocumentationPopoverObj from './kbn_language_documentation_popover.devdocs.json'; diff --git a/api_docs/kbn_logging.mdx b/api_docs/kbn_logging.mdx index 30e81fe7e6dce..85d66708cb65e 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: 2023-08-08 +date: 2023-08-10 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 23defe077087c..d85fa5685be5e 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/logging-mocks'] --- import kbnLoggingMocksObj from './kbn_logging_mocks.devdocs.json'; diff --git a/api_docs/kbn_managed_vscode_config.mdx b/api_docs/kbn_managed_vscode_config.mdx index f2c347ff0d8e2..6e5ff13b5fb25 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: 2023-08-08 +date: 2023-08-10 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 7b2f34834dc06..0ea3f4156b07c 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: 2023-08-08 +date: 2023-08-10 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_storybook_config.mdx b/api_docs/kbn_management_storybook_config.mdx index e1ee8679a1f9e..7135df80a0250 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: 2023-08-08 +date: 2023-08-10 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 fe91a56bfe951..adf5e16447694 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: 2023-08-08 +date: 2023-08-10 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 6c99005c7825a..25ea6d1ddbf37 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: 2023-08-08 +date: 2023-08-10 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 27d6a1535e2cd..9ab81cda021b0 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: 2023-08-08 +date: 2023-08-10 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 e80999e46e2cc..3fd56d85c061c 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: 2023-08-08 +date: 2023-08-10 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_category_validator.mdx b/api_docs/kbn_ml_category_validator.mdx index 2f32314397b45..9450e44a5d613 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: 2023-08-08 +date: 2023-08-10 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_data_frame_analytics_utils.mdx b/api_docs/kbn_ml_data_frame_analytics_utils.mdx index 046a864c1ba4a..1bec7154b1fac 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: 2023-08-08 +date: 2023-08-10 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 55bb1c3e001a9..4f5721186f436 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: 2023-08-08 +date: 2023-08-10 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 194920b61337e..8200185dd676d 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: 2023-08-08 +date: 2023-08-10 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 2332cec54f230..6887f9dfa1e00 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: 2023-08-08 +date: 2023-08-10 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 b863f9b37db68..4be90bea3c796 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: 2023-08-08 +date: 2023-08-10 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 6807a03355675..ce2db9a911c85 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: 2023-08-08 +date: 2023-08-10 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 495dd2e996efb..11e1c61046bbf 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: 2023-08-08 +date: 2023-08-10 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 ca1444af45137..b9b1bcc1d9b1c 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: 2023-08-08 +date: 2023-08-10 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 3b1ab520333fd..33fe3a77c0241 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: 2023-08-08 +date: 2023-08-10 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 d000fb610f36c..f7621acc959af 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: 2023-08-08 +date: 2023-08-10 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 69e93bf55bcb8..015eba349a723 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: 2023-08-08 +date: 2023-08-10 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 dc3aa4b33ce9c..f38f1b19de1e9 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: 2023-08-08 +date: 2023-08-10 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 70d162bde8b08..f1c63620a1d4c 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: 2023-08-08 +date: 2023-08-10 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 ffd5f8a5881e1..f5304553a8aa4 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: 2023-08-08 +date: 2023-08-10 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 ff84ab0ed20d7..92506805309af 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: 2023-08-08 +date: 2023-08-10 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 5086d30b3eb5d..ce9a687d1f9d1 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: 2023-08-08 +date: 2023-08-10 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 42c0c41ca1e7f..9e709e52bd482 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-string-hash'] --- import kbnMlStringHashObj from './kbn_ml_string_hash.devdocs.json'; diff --git a/api_docs/kbn_ml_trained_models_utils.mdx b/api_docs/kbn_ml_trained_models_utils.mdx index 41c37b3de7060..16a18c689ad81 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: 2023-08-08 +date: 2023-08-10 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_url_state.mdx b/api_docs/kbn_ml_url_state.mdx index 358eadfb73659..9d3a0ad27403d 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ml-url-state'] --- import kbnMlUrlStateObj from './kbn_ml_url_state.devdocs.json'; diff --git a/api_docs/kbn_monaco.mdx b/api_docs/kbn_monaco.mdx index 64b83da073a33..2a4a66ba5623d 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: 2023-08-08 +date: 2023-08-10 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 4d20d05ca243f..a4579d6d21b55 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: 2023-08-08 +date: 2023-08-10 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 894950a4c61ef..d2bbc5d60df94 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/observability-alert-details'] --- import kbnObservabilityAlertDetailsObj from './kbn_observability_alert_details.devdocs.json'; diff --git a/api_docs/kbn_optimizer.mdx b/api_docs/kbn_optimizer.mdx index 6791b1d97fe5a..039fd169e81d3 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: 2023-08-08 +date: 2023-08-10 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 85bf9046af977..68f6c2b8ba3ca 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: 2023-08-08 +date: 2023-08-10 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 bda4fcd016615..04f327032e7da 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: 2023-08-08 +date: 2023-08-10 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_performance_testing_dataset_extractor.mdx b/api_docs/kbn_performance_testing_dataset_extractor.mdx index 051f8d90787bf..3c87b9c0a1a81 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: 2023-08-08 +date: 2023-08-10 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_generator.mdx b/api_docs/kbn_plugin_generator.mdx index 9efe6b300e30b..ce0d0e970141d 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: 2023-08-08 +date: 2023-08-10 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 431a8af99adf6..2daac55d98b5f 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/plugin-helpers'] --- import kbnPluginHelpersObj from './kbn_plugin_helpers.devdocs.json'; diff --git a/api_docs/kbn_random_sampling.mdx b/api_docs/kbn_random_sampling.mdx index 289486f09d428..106e8eb4f681d 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: 2023-08-08 +date: 2023-08-10 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 da5d240964584..c01c73532ed54 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-field'] --- import kbnReactFieldObj from './kbn_react_field.devdocs.json'; diff --git a/api_docs/kbn_react_kibana_context_common.mdx b/api_docs/kbn_react_kibana_context_common.mdx index b23eb4928089b..e964b0faaaa73 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: 2023-08-08 +date: 2023-08-10 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 1af5802080806..36f24195bb524 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: 2023-08-08 +date: 2023-08-10 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 ac75bb3bdb311..1f5954d8df2ab 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: 2023-08-08 +date: 2023-08-10 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 957713bb1a751..d3dbc3f7848bf 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: 2023-08-08 +date: 2023-08-10 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 e2aa061cb4bea..e134d71dba66e 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: 2023-08-08 +date: 2023-08-10 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 c7d6c27548c55..18336f8c9acc2 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/react-kibana-mount'] --- import kbnReactKibanaMountObj from './kbn_react_kibana_mount.devdocs.json'; diff --git a/api_docs/kbn_repo_file_maps.mdx b/api_docs/kbn_repo_file_maps.mdx index b9c9725d04ee6..740a64be48407 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: 2023-08-08 +date: 2023-08-10 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 7392e055177b3..3cdeed510f331 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: 2023-08-08 +date: 2023-08-10 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 62955e96811da..2dcf054899ac7 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: 2023-08-08 +date: 2023-08-10 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 d7bab19e316ed..1ec1665d982a0 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: 2023-08-08 +date: 2023-08-10 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 f2dcf6582a1a4..6d8bf92b0fd85 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/reporting-common'] --- import kbnReportingCommonObj from './kbn_reporting_common.devdocs.json'; diff --git a/api_docs/kbn_rison.mdx b/api_docs/kbn_rison.mdx index d39dc1c0385ae..9ae13dad59ab1 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/rison'] --- import kbnRisonObj from './kbn_rison.devdocs.json'; diff --git a/api_docs/kbn_rrule.mdx b/api_docs/kbn_rrule.mdx index aa118bc496e35..473185e7ec57d 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: 2023-08-08 +date: 2023-08-10 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 92409aa81aa38..4d410fa27c46a 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: 2023-08-08 +date: 2023-08-10 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 bb0bc3382f502..6600a72923ae6 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/saved-objects-settings'] --- import kbnSavedObjectsSettingsObj from './kbn_saved_objects_settings.devdocs.json'; diff --git a/api_docs/kbn_security_solution_navigation.mdx b/api_docs/kbn_security_solution_navigation.mdx index 815a1197552d0..0a5fdef30287b 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: 2023-08-08 +date: 2023-08-10 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 0a74cefaf140a..b1a2f5e29171e 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: 2023-08-08 +date: 2023-08-10 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 ae4497a82d076..b1b81584c877c 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: 2023-08-08 +date: 2023-08-10 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 8726c38268640..db72e41129b27 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: 2023-08-08 +date: 2023-08-10 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 235ece6579de9..998cd2d31a6b7 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: 2023-08-08 +date: 2023-08-10 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 5589b2f530f97..6fb69d797146b 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: 2023-08-08 +date: 2023-08-10 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 c629a70eaeae3..1101bf7bed18e 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: 2023-08-08 +date: 2023-08-10 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 8784dae4ef7d8..04c11e6ab92b8 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-exception-list-components'] --- import kbnSecuritysolutionExceptionListComponentsObj from './kbn_securitysolution_exception_list_components.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_grouping.mdx b/api_docs/kbn_securitysolution_grouping.mdx index 1435f7d61f57f..166de05b4763a 100644 --- a/api_docs/kbn_securitysolution_grouping.mdx +++ b/api_docs/kbn_securitysolution_grouping.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-securitysolution-grouping title: "@kbn/securitysolution-grouping" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/securitysolution-grouping plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/securitysolution-grouping'] --- import kbnSecuritysolutionGroupingObj from './kbn_securitysolution_grouping.devdocs.json'; diff --git a/api_docs/kbn_securitysolution_hook_utils.mdx b/api_docs/kbn_securitysolution_hook_utils.mdx index 32ca05053289c..cb48b87491d7b 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: 2023-08-08 +date: 2023-08-10 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 22a450072fd3e..d251ce0237e69 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: 2023-08-08 +date: 2023-08-10 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 ebab6071e8d81..ae09f11f1fbae 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: 2023-08-08 +date: 2023-08-10 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 87a6fd81b10ea..091260a1e4bcf 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: 2023-08-08 +date: 2023-08-10 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 e87c29be26fe1..5488a4d058e5b 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: 2023-08-08 +date: 2023-08-10 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 8d9f9842dc69f..fbba031701e5b 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: 2023-08-08 +date: 2023-08-10 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 df6f0c1128ce5..850468aeafd84 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: 2023-08-08 +date: 2023-08-10 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 c9430b91c1899..5605d23108058 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: 2023-08-08 +date: 2023-08-10 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 7f4b2d4750f03..7b96c67b43423 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: 2023-08-08 +date: 2023-08-10 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 650998ba6f321..329ecfa0fe9d9 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: 2023-08-08 +date: 2023-08-10 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 6108a52fc0879..1c8bc83eaa5c5 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: 2023-08-08 +date: 2023-08-10 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 047a13ff0e0fd..b07ecb81aaaf1 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: 2023-08-08 +date: 2023-08-10 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 88150273d7da5..76af845693f60 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: 2023-08-08 +date: 2023-08-10 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 f6196c49f2940..34f94831f29e5 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/server-route-repository'] --- import kbnServerRouteRepositoryObj from './kbn_server_route_repository.devdocs.json'; diff --git a/api_docs/kbn_serverless_project_switcher.mdx b/api_docs/kbn_serverless_project_switcher.mdx index 6f280358cec5c..08d4986085710 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: 2023-08-08 +date: 2023-08-10 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_storybook_config.mdx b/api_docs/kbn_serverless_storybook_config.mdx index 9a18e91b6ff78..58a79277bd948 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: 2023-08-08 +date: 2023-08-10 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 f5a753bc3aaab..fbd77da2f7341 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: 2023-08-08 +date: 2023-08-10 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 41d395bf7e246..a193a2e99e497 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: 2023-08-08 +date: 2023-08-10 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_avatar_user_profile_components.mdx b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx index 4beb3231db452..9545b150e3749 100644 --- a/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx +++ b/api_docs/kbn_shared_ux_avatar_user_profile_components.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-avatar-user-profile-components title: "@kbn/shared-ux-avatar-user-profile-components" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-avatar-user-profile-components plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-avatar-user-profile-components'] --- import kbnSharedUxAvatarUserProfileComponentsObj from './kbn_shared_ux_avatar_user_profile_components.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 919291ee2d24d..c7c3d427a869a 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: 2023-08-08 +date: 2023-08-10 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_exit_full_screen_mocks.mdx b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx index 31f67a7732224..a22979f5b13c8 100644 --- a/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx +++ b/api_docs/kbn_shared_ux_button_exit_full_screen_mocks.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-shared-ux-button-exit-full-screen-mocks title: "@kbn/shared-ux-button-exit-full-screen-mocks" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/shared-ux-button-exit-full-screen-mocks plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-button-exit-full-screen-mocks'] --- import kbnSharedUxButtonExitFullScreenMocksObj from './kbn_shared_ux_button_exit_full_screen_mocks.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_button_toolbar.mdx b/api_docs/kbn_shared_ux_button_toolbar.mdx index c7be5ae0d8d23..398025a683674 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: 2023-08-08 +date: 2023-08-10 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 4923afb2f3563..a8b7cd7387f1c 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: 2023-08-08 +date: 2023-08-10 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 759df6f700995..37b6b3c8648bf 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: 2023-08-08 +date: 2023-08-10 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 8623b7e4f4d27..f99775fb830e6 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: 2023-08-08 +date: 2023-08-10 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_file_context.mdx b/api_docs/kbn_shared_ux_file_context.mdx index 079cd7d6a5dcb..823cf69e0db54 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: 2023-08-08 +date: 2023-08-10 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 811357a139728..d6e4a179d27a9 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: 2023-08-08 +date: 2023-08-10 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 47814b8c7eb51..991285d262c13 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: 2023-08-08 +date: 2023-08-10 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 91388199fbe63..cae2eb79f4ca1 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: 2023-08-08 +date: 2023-08-10 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 edddbc6f20c0b..fdb550af1e08b 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: 2023-08-08 +date: 2023-08-10 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 4cc3a68c3d1db..857d7a7f2b9aa 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: 2023-08-08 +date: 2023-08-10 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 b521456e62f20..cb23e3c4bbdd5 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: 2023-08-08 +date: 2023-08-10 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 e9b286aa5109f..6622922486287 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: 2023-08-08 +date: 2023-08-10 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 6451b59819e84..0dbcf32a88f15 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: 2023-08-08 +date: 2023-08-10 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 e7b3f47baf8e7..98ec4209f7b67 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: 2023-08-08 +date: 2023-08-10 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 21e9e7cf31995..14c9140cf23bc 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: 2023-08-08 +date: 2023-08-10 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 71229302d7c5b..7170a26c7c0f3 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: 2023-08-08 +date: 2023-08-10 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 90f4bd8dcad84..31b7a060b7fd4 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: 2023-08-08 +date: 2023-08-10 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 6bb75d60c122f..fdebed3eae57d 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: 2023-08-08 +date: 2023-08-10 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 5578bc12670a5..8404a52eeaabb 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: 2023-08-08 +date: 2023-08-10 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 7a25309d4728d..8bf4897074ffd 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: 2023-08-08 +date: 2023-08-10 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 561b6e180acac..e5715200637da 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: 2023-08-08 +date: 2023-08-10 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 6b8591b832ca7..ac2d30496dcee 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: 2023-08-08 +date: 2023-08-10 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 77ff7acea5927..27d2cd32d78bf 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: 2023-08-08 +date: 2023-08-10 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 a84303e13216c..3e68934c3f1c0 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: 2023-08-08 +date: 2023-08-10 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 0ea4839401c00..9f80c59c10f1d 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: 2023-08-08 +date: 2023-08-10 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 46a518352d9a9..16c403fdc4687 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: 2023-08-08 +date: 2023-08-10 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 c3b6c74213720..a4a60ea678e59 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: 2023-08-08 +date: 2023-08-10 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 e3edf8a67b8ea..3a5bfb3535ccf 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: 2023-08-08 +date: 2023-08-10 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 42af8a9811ca5..64dc173a2b377 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: 2023-08-08 +date: 2023-08-10 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 d5707fbb5792e..0a01bc802c924 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: 2023-08-08 +date: 2023-08-10 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 65d2a81e0e5b3..cd222a033e70f 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: 2023-08-08 +date: 2023-08-10 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 5964795eb49d4..7c90908187da5 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: 2023-08-08 +date: 2023-08-10 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 74cbfba121c9c..598a397c9a7d2 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: 2023-08-08 +date: 2023-08-10 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 8d6ff71719424..96c4501f84f30 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/shared-ux-storybook-mock'] --- import kbnSharedUxStorybookMockObj from './kbn_shared_ux_storybook_mock.devdocs.json'; diff --git a/api_docs/kbn_shared_ux_utility.mdx b/api_docs/kbn_shared_ux_utility.mdx index ef0fe567eb189..0fbb5c73c78ab 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: 2023-08-08 +date: 2023-08-10 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 213dffb218e96..970a213cc8643 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: 2023-08-08 +date: 2023-08-10 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 ec092e1d0296d..743b1866288fa 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/some-dev-log'] --- import kbnSomeDevLogObj from './kbn_some_dev_log.devdocs.json'; diff --git a/api_docs/kbn_std.mdx b/api_docs/kbn_std.mdx index c680cf30e2b20..19a122703a83d 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: 2023-08-08 +date: 2023-08-10 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 5d8ec59ecb184..cfe4fd52ff873 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: 2023-08-08 +date: 2023-08-10 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 755ee9f447cd9..da3af1449decf 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/storybook'] --- import kbnStorybookObj from './kbn_storybook.devdocs.json'; diff --git a/api_docs/kbn_telemetry_tools.mdx b/api_docs/kbn_telemetry_tools.mdx index a046a972fb1af..358ccda31ce17 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: 2023-08-08 +date: 2023-08-10 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 740c3f77368e1..f9dae23c767a7 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/test'] --- import kbnTestObj from './kbn_test.devdocs.json'; diff --git a/api_docs/kbn_test_jest_helpers.mdx b/api_docs/kbn_test_jest_helpers.mdx index 67378b52f35ad..1d99d57a481b2 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: 2023-08-08 +date: 2023-08-10 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 c520055faac88..4bbb77543c64f 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: 2023-08-08 +date: 2023-08-10 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 da6967718d10a..c803989e4246d 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/text-based-editor'] --- import kbnTextBasedEditorObj from './kbn_text_based_editor.devdocs.json'; diff --git a/api_docs/kbn_tooling_log.mdx b/api_docs/kbn_tooling_log.mdx index 4fbb7781ad46f..de2fdce4ded2d 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/tooling-log'] --- import kbnToolingLogObj from './kbn_tooling_log.devdocs.json'; diff --git a/api_docs/kbn_ts_projects.mdx b/api_docs/kbn_ts_projects.mdx index 2c6610824c6e8..b81eb3f6eb438 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: 2023-08-08 +date: 2023-08-10 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 d47a99ee54ce2..6248b21ab9ba7 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: 2023-08-08 +date: 2023-08-10 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 35e03a3ff3065..4b4187bf32ed9 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: 2023-08-08 +date: 2023-08-10 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 8407eb4258544..7914f81c134df 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: 2023-08-08 +date: 2023-08-10 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 6cb41dc8c4f9c..96f6401319ff4 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/ui-theme'] --- import kbnUiThemeObj from './kbn_ui_theme.devdocs.json'; diff --git a/api_docs/kbn_unified_field_list.mdx b/api_docs/kbn_unified_field_list.mdx index 3b0bd687483b8..6df817423e527 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/unified-field-list'] --- import kbnUnifiedFieldListObj from './kbn_unified_field_list.devdocs.json'; diff --git a/api_docs/kbn_url_state.mdx b/api_docs/kbn_url_state.mdx index 17cf7043cdaf1..52be8790127a8 100644 --- a/api_docs/kbn_url_state.mdx +++ b/api_docs/kbn_url_state.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/kbn-url-state title: "@kbn/url-state" image: https://source.unsplash.com/400x175/?github description: API docs for the @kbn/url-state plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/url-state'] --- import kbnUrlStateObj from './kbn_url_state.devdocs.json'; diff --git a/api_docs/kbn_user_profile_components.devdocs.json b/api_docs/kbn_user_profile_components.devdocs.json index 73f567df595ef..6082e35d46bb9 100644 --- a/api_docs/kbn_user_profile_components.devdocs.json +++ b/api_docs/kbn_user_profile_components.devdocs.json @@ -172,6 +172,57 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesKibanaProvider", + "type": "Function", + "tags": [], + "label": "UserProfilesKibanaProvider", + "description": [ + "\nKibana-specific Provider that maps to known dependency types." + ], + "signature": [ + "({ children, ...services }: React.PropsWithChildren<", + { + "pluginId": "@kbn/user-profile-components", + "scope": "common", + "docId": "kibKbnUserProfileComponentsPluginApi", + "section": "def-common.UserProfilesKibanaDependencies", + "text": "UserProfilesKibanaDependencies" + }, + ">) => JSX.Element" + ], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesKibanaProvider.$1", + "type": "CompoundType", + "tags": [], + "label": "{\n children,\n ...services\n}", + "description": [], + "signature": [ + "React.PropsWithChildren<", + { + "pluginId": "@kbn/user-profile-components", + "scope": "common", + "docId": "kibKbnUserProfileComponentsPluginApi", + "section": "def-common.UserProfilesKibanaDependencies", + "text": "UserProfilesKibanaDependencies" + }, + ">" + ], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/user-profile-components", "id": "def-common.UserProfilesPopover", @@ -230,6 +281,45 @@ "returnComment": [], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesProvider", + "type": "Function", + "tags": [], + "label": "UserProfilesProvider", + "description": [ + "\nAbstract external service Provider." + ], + "signature": [ + "({ children, ...services }: React.PropsWithChildren<", + "Services", + ">) => JSX.Element" + ], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesProvider.$1", + "type": "CompoundType", + "tags": [], + "label": "{ children, ...services }", + "description": [], + "signature": [ + "React.PropsWithChildren<", + "Services", + ">" + ], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/user-profile-components", "id": "def-common.UserProfilesSelectable", @@ -338,6 +428,55 @@ ], "returnComment": [], "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.useUpdateUserProfile", + "type": "Function", + "tags": [], + "label": "useUpdateUserProfile", + "description": [], + "signature": [ + "({ notificationSuccess, pageReloadChecker, }?: Props) => { update: (updatedData: D) => Promise; showSuccessNotification: ({ isRefreshRequired }?: { isRefreshRequired?: boolean | undefined; }) => void; userProfileData: ", + { + "pluginId": "@kbn/user-profile-components", + "scope": "common", + "docId": "kibKbnUserProfileComponentsPluginApi", + "section": "def-common.UserProfileData", + "text": "UserProfileData" + }, + " | null | undefined; isLoading: boolean; }" + ], + "path": "packages/kbn-user-profile-components/src/hooks/use_update_user_profile.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.useUpdateUserProfile.$1", + "type": "Object", + "tags": [], + "label": "{\n notificationSuccess = {},\n pageReloadChecker,\n}", + "description": [], + "signature": [ + "Props" + ], + "path": "packages/kbn-user-profile-components/src/hooks/use_update_user_profile.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false } ], "interfaces": [ @@ -575,7 +714,7 @@ "description": [ "\nAvatar stored in user profile." ], - "path": "packages/kbn-user-profile-components/src/user_profile.ts", + "path": "packages/kbn-user-profile-components/src/types.ts", "deprecated": false, "trackAdoption": false, "children": [ @@ -591,7 +730,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-user-profile-components/src/user_profile.ts", + "path": "packages/kbn-user-profile-components/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -607,7 +746,7 @@ "signature": [ "string | undefined" ], - "path": "packages/kbn-user-profile-components/src/user_profile.ts", + "path": "packages/kbn-user-profile-components/src/types.ts", "deprecated": false, "trackAdoption": false }, @@ -623,13 +762,219 @@ "signature": [ "string | null | undefined" ], - "path": "packages/kbn-user-profile-components/src/user_profile.ts", + "path": "packages/kbn-user-profile-components/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfileData", + "type": "Interface", + "tags": [], + "label": "UserProfileData", + "description": [], + "path": "packages/kbn-user-profile-components/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfileData.avatar", + "type": "Object", + "tags": [], + "label": "avatar", + "description": [], + "signature": [ + { + "pluginId": "@kbn/user-profile-components", + "scope": "common", + "docId": "kibKbnUserProfileComponentsPluginApi", + "section": "def-common.UserProfileAvatarData", + "text": "UserProfileAvatarData" + }, + " | undefined" + ], + "path": "packages/kbn-user-profile-components/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfileData.userSettings", + "type": "Object", + "tags": [], + "label": "userSettings", + "description": [], + "signature": [ + { + "pluginId": "@kbn/user-profile-components", + "scope": "common", + "docId": "kibKbnUserProfileComponentsPluginApi", + "section": "def-common.UserSettingsData", + "text": "UserSettingsData" + }, + " | undefined" + ], + "path": "packages/kbn-user-profile-components/src/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfileData.Unnamed", + "type": "IndexSignature", + "tags": [], + "label": "[key: string]: unknown", + "description": [], + "signature": [ + "[key: string]: unknown" + ], + "path": "packages/kbn-user-profile-components/src/types.ts", "deprecated": false, "trackAdoption": false } ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesKibanaDependencies", + "type": "Interface", + "tags": [], + "label": "UserProfilesKibanaDependencies", + "description": [ + "\nKibana-specific service types." + ], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesKibanaDependencies.core", + "type": "Object", + "tags": [], + "label": "core", + "description": [ + "CoreStart contract" + ], + "signature": [ + "{ notifications: ", + { + "pluginId": "@kbn/core-notifications-browser", + "scope": "common", + "docId": "kibKbnCoreNotificationsBrowserPluginApi", + "section": "def-common.NotificationsStart", + "text": "NotificationsStart" + }, + "; theme: ", + { + "pluginId": "@kbn/core-theme-browser", + "scope": "common", + "docId": "kibKbnCoreThemeBrowserPluginApi", + "section": "def-common.ThemeServiceStart", + "text": "ThemeServiceStart" + }, + "; }" + ], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesKibanaDependencies.security", + "type": "Object", + "tags": [], + "label": "security", + "description": [], + "signature": [ + "{ userProfiles: ", + "UserProfileAPIClient", + "; }" + ], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesKibanaDependencies.toMountPoint", + "type": "Function", + "tags": [], + "label": "toMountPoint", + "description": [ + "\nHandler from the '@kbn/kibana-react-plugin/public' Plugin\n\n```\nimport { toMountPoint } from '@kbn/kibana-react-plugin/public';\n```" + ], + "signature": [ + "(node: React.ReactNode, options?: { theme$: ", + "Observable", + "<{ readonly darkMode: boolean; }>; } | undefined) => ", + { + "pluginId": "@kbn/core-mount-utils-browser", + "scope": "common", + "docId": "kibKbnCoreMountUtilsBrowserPluginApi", + "section": "def-common.MountPoint", + "text": "MountPoint" + }, + "" + ], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesKibanaDependencies.toMountPoint.$1", + "type": "CompoundType", + "tags": [], + "label": "node", + "description": [], + "signature": [ + "React.ReactNode" + ], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false, + "isRequired": false + }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesKibanaDependencies.toMountPoint.$2", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserProfilesKibanaDependencies.toMountPoint.$2.theme$", + "type": "Object", + "tags": [], + "label": "theme$", + "description": [], + "signature": [ + "Observable", + "<{ readonly darkMode: boolean; }>" + ], + "path": "packages/kbn-user-profile-components/src/services.tsx", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [] + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/user-profile-components", "id": "def-common.UserProfilesPopoverProps", @@ -1093,6 +1438,43 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserSettingsData", + "type": "Interface", + "tags": [], + "label": "UserSettingsData", + "description": [ + "\nUser settings stored in the data object of the User Profile" + ], + "path": "packages/kbn-user-profile-components/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UserSettingsData.darkMode", + "type": "CompoundType", + "tags": [], + "label": "darkMode", + "description": [], + "signature": [ + { + "pluginId": "@kbn/user-profile-components", + "scope": "common", + "docId": "kibKbnUserProfileComponentsPluginApi", + "section": "def-common.DarkModeValue", + "text": "DarkModeValue" + }, + " | undefined" + ], + "path": "packages/kbn-user-profile-components/src/types.ts", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/user-profile-components", "id": "def-common.UserToolTipProps", @@ -1169,6 +1551,69 @@ ], "enums": [], "misc": [ + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.DarkModeValue", + "type": "Type", + "tags": [], + "label": "DarkModeValue", + "description": [], + "signature": [ + "\"\" | \"light\" | \"dark\"" + ], + "path": "packages/kbn-user-profile-components/src/types.ts", + "deprecated": false, + "trackAdoption": false, + "initialIsOpen": false + }, + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UpdateUserProfileHook", + "type": "Type", + "tags": [], + "label": "UpdateUserProfileHook", + "description": [], + "signature": [ + "({ notificationSuccess, pageReloadChecker, }?: Props) => { update: (updatedData: D) => Promise; showSuccessNotification: ({ isRefreshRequired }?: { isRefreshRequired?: boolean | undefined; }) => void; userProfileData: ", + { + "pluginId": "@kbn/user-profile-components", + "scope": "common", + "docId": "kibKbnUserProfileComponentsPluginApi", + "section": "def-common.UserProfileData", + "text": "UserProfileData" + }, + " | null | undefined; isLoading: boolean; }" + ], + "path": "packages/kbn-user-profile-components/src/hooks/use_update_user_profile.tsx", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "@kbn/user-profile-components", + "id": "def-common.UpdateUserProfileHook.$1", + "type": "Object", + "tags": [], + "label": "__0", + "description": [], + "signature": [ + "Props" + ], + "path": "packages/kbn-user-profile-components/src/hooks/use_update_user_profile.tsx", + "deprecated": false, + "trackAdoption": false + } + ], + "initialIsOpen": false + }, { "parentPluginId": "@kbn/user-profile-components", "id": "def-common.UserProfileWithAvatar", diff --git a/api_docs/kbn_user_profile_components.mdx b/api_docs/kbn_user_profile_components.mdx index 25e3e061b5b02..691b204e0d289 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/user-profile-components'] --- import kbnUserProfileComponentsObj from './kbn_user_profile_components.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 58 | 0 | 5 | 0 | +| 80 | 0 | 21 | 2 | ## Common diff --git a/api_docs/kbn_utility_types.mdx b/api_docs/kbn_utility_types.mdx index a5f33d9761e5e..ae1e131251210 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: 2023-08-08 +date: 2023-08-10 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 247cf97516111..79efc58af5a46 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: 2023-08-08 +date: 2023-08-10 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 4483896e948fa..05d8ec753475f 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: 2023-08-08 +date: 2023-08-10 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 2399b8a856ad1..4979e45203494 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/visualization-ui-components'] --- import kbnVisualizationUiComponentsObj from './kbn_visualization_ui_components.devdocs.json'; diff --git a/api_docs/kbn_yarn_lock_validator.mdx b/api_docs/kbn_yarn_lock_validator.mdx index b9927fd6e19f7..dac217dabfb5c 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', '@kbn/yarn-lock-validator'] --- import kbnYarnLockValidatorObj from './kbn_yarn_lock_validator.devdocs.json'; diff --git a/api_docs/kibana_overview.mdx b/api_docs/kibana_overview.mdx index 6e1f9222238c7..bec775fbd5cde 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'kibanaOverview'] --- import kibanaOverviewObj from './kibana_overview.devdocs.json'; diff --git a/api_docs/kibana_react.devdocs.json b/api_docs/kibana_react.devdocs.json index 7464f3e995e0b..1e490cd0d8e78 100644 --- a/api_docs/kibana_react.devdocs.json +++ b/api_docs/kibana_react.devdocs.json @@ -916,6 +916,18 @@ "plugin": "visualizations", "path": "src/plugins/visualizations/public/visualize_app/index.tsx" }, + { + "plugin": "serverless", + "path": "x-pack/plugins/serverless/public/plugin.tsx" + }, + { + "plugin": "serverless", + "path": "x-pack/plugins/serverless/public/plugin.tsx" + }, + { + "plugin": "serverless", + "path": "x-pack/plugins/serverless/public/plugin.tsx" + }, { "plugin": "controls", "path": "src/plugins/controls/public/options_list/embeddable/options_list_embeddable.tsx" @@ -1136,18 +1148,6 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/embeddable/embeddable.tsx" }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/public/application/maintenance_windows.tsx" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/public/application/maintenance_windows.tsx" - }, - { - "plugin": "alerting", - "path": "x-pack/plugins/alerting/public/application/maintenance_windows.tsx" - }, { "plugin": "security", "path": "x-pack/plugins/security/public/authentication/access_agreement/access_agreement_page.tsx" @@ -1268,6 +1268,18 @@ "plugin": "security", "path": "x-pack/plugins/security/public/nav_control/nav_control_service.tsx" }, + { + "plugin": "alerting", + "path": "x-pack/plugins/alerting/public/application/maintenance_windows.tsx" + }, + { + "plugin": "alerting", + "path": "x-pack/plugins/alerting/public/application/maintenance_windows.tsx" + }, + { + "plugin": "alerting", + "path": "x-pack/plugins/alerting/public/application/maintenance_windows.tsx" + }, { "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/app.tsx" @@ -1292,18 +1304,6 @@ "plugin": "triggersActionsUi", "path": "x-pack/plugins/triggers_actions_ui/public/application/connectors_app.tsx" }, - { - "plugin": "serverless", - "path": "x-pack/plugins/serverless/public/plugin.tsx" - }, - { - "plugin": "serverless", - "path": "x-pack/plugins/serverless/public/plugin.tsx" - }, - { - "plugin": "serverless", - "path": "x-pack/plugins/serverless/public/plugin.tsx" - }, { "plugin": "cases", "path": "x-pack/plugins/cases/public/application.tsx" @@ -1316,6 +1316,18 @@ "plugin": "cases", "path": "x-pack/plugins/cases/public/application.tsx" }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx" + }, { "plugin": "discover", "path": "src/plugins/discover/public/embeddable/saved_search_embeddable.tsx" @@ -1372,6 +1384,18 @@ "plugin": "exploratoryView", "path": "x-pack/plugins/exploratory_view/public/application/index.tsx" }, + { + "plugin": "observabilityAIAssistant", + "path": "x-pack/plugins/observability_ai_assistant/public/application.tsx" + }, + { + "plugin": "observabilityAIAssistant", + "path": "x-pack/plugins/observability_ai_assistant/public/application.tsx" + }, + { + "plugin": "observabilityAIAssistant", + "path": "x-pack/plugins/observability_ai_assistant/public/application.tsx" + }, { "plugin": "fleet", "path": "x-pack/plugins/fleet/public/applications/integrations/app.tsx" @@ -3634,61 +3658,13 @@ "plugin": "lens", "path": "x-pack/plugins/lens/public/trigger_actions/open_lens_config/helpers.ts" }, - { - "plugin": "@kbn/ml-date-picker", - "path": "x-pack/packages/ml/date_picker/src/hooks/use_date_picker_context.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/change_point_detection/change_point_detection_root.tsx" - }, - { - "plugin": "aiops", - "path": "x-pack/plugins/aiops/public/components/change_point_detection/change_point_detection_root.tsx" - }, { "plugin": "security", - "path": "x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx" + "path": "x-pack/plugins/security/public/account_management/account_management_app.tsx" }, { "plugin": "security", - "path": "x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx" + "path": "x-pack/plugins/security/public/account_management/account_management_app.tsx" }, { "plugin": "security", @@ -3758,6 +3734,70 @@ "plugin": "cases", "path": "x-pack/plugins/cases/public/components/visualizations/actions/add_to_existing_case.tsx" }, + { + "plugin": "@kbn/ml-date-picker", + "path": "x-pack/packages/ml/date_picker/src/hooks/use_date_picker_context.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/embeddable/embeddable_change_point_chart.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/embeddable/handle_explicit_input.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/embeddable/handle_explicit_input.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_categorization/log_categorization_app_state.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_categorization/show_flyout.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_app_state.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/log_rate_analysis/log_rate_analysis_content/log_rate_analysis_content_wrapper.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/change_point_detection/change_point_detection_root.tsx" + }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/components/change_point_detection/change_point_detection_root.tsx" + }, { "plugin": "observabilityShared", "path": "x-pack/plugins/observability_shared/public/components/header_menu/header_menu_portal.tsx" @@ -3992,35 +4032,35 @@ }, { "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/job_creation/common/create_flyout.tsx" + "path": "x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx" }, { "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/job_creation/common/create_flyout.tsx" + "path": "x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx" }, { "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx" + "path": "x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_setup_flyout.tsx" }, { "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/common/resolve_job_selection.tsx" + "path": "x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_setup_flyout.tsx" }, { "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_setup_flyout.tsx" + "path": "x-pack/plugins/ml/public/embeddables/job_creation/common/create_flyout.tsx" }, { "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_setup_flyout.tsx" + "path": "x-pack/plugins/ml/public/embeddables/job_creation/common/create_flyout.tsx" }, { "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_setup_flyout.tsx" + "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_setup_flyout.tsx" }, { "plugin": "ml", - "path": "x-pack/plugins/ml/public/embeddables/anomaly_swimlane/anomaly_swimlane_setup_flyout.tsx" + "path": "x-pack/plugins/ml/public/embeddables/anomaly_charts/anomaly_charts_setup_flyout.tsx" }, { "plugin": "ml", @@ -4138,6 +4178,14 @@ "plugin": "timelines", "path": "x-pack/plugins/timelines/public/components/hover_actions/actions/add_to_timeline.tsx" }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/take_action.tsx" + }, + { + "plugin": "cloudSecurityPosture", + "path": "x-pack/plugins/cloud_security_posture/public/components/take_action.tsx" + }, { "plugin": "runtimeFields", "path": "x-pack/plugins/runtime_fields/public/shared_imports.ts" @@ -4514,6 +4562,14 @@ "plugin": "uptime", "path": "x-pack/plugins/uptime/public/legacy_uptime/components/monitor/ml/ml_flyout_container.tsx" }, + { + "plugin": "cloudLinks", + "path": "x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.tsx" + }, + { + "plugin": "cloudLinks", + "path": "x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.tsx" + }, { "plugin": "console", "path": "src/plugins/console/public/shared_imports.ts" diff --git a/api_docs/kibana_react.mdx b/api_docs/kibana_react.mdx index fd0b38bf12cb1..c7be1b62d86ec 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: 2023-08-08 +date: 2023-08-10 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 d0010371e0fea..4dcb18805a70f 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: 2023-08-08 +date: 2023-08-10 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 6f976bbdca7fa..d70815191743c 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: 2023-08-08 +date: 2023-08-10 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 e33e34a0b36be..1a13adf50b509 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: 2023-08-08 +date: 2023-08-10 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 0583a521ae2f9..ea90872093f0a 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: 2023-08-08 +date: 2023-08-10 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 128e3d18314c0..95d2563383ae5 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licenseManagement'] --- import licenseManagementObj from './license_management.devdocs.json'; diff --git a/api_docs/licensing.devdocs.json b/api_docs/licensing.devdocs.json index e78f38fff12e2..9e94dad897ead 100644 --- a/api_docs/licensing.devdocs.json +++ b/api_docs/licensing.devdocs.json @@ -810,6 +810,10 @@ "plugin": "security", "path": "x-pack/plugins/security/public/plugin.tsx" }, + { + "plugin": "aiops", + "path": "x-pack/plugins/aiops/public/plugin.tsx" + }, { "plugin": "licenseManagement", "path": "x-pack/plugins/license_management/public/plugin.ts" diff --git a/api_docs/licensing.mdx b/api_docs/licensing.mdx index 98d216c70b6d6..9bdde79f8dd6f 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'licensing'] --- import licensingObj from './licensing.devdocs.json'; diff --git a/api_docs/lists.mdx b/api_docs/lists.mdx index 0959f42b36730..e6be664391f64 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'lists'] --- import listsObj from './lists.devdocs.json'; diff --git a/api_docs/logs_shared.mdx b/api_docs/logs_shared.mdx index 4444e39542caf..2493ce0d839da 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: 2023-08-08 +date: 2023-08-10 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 77219c568a9b9..28c2a79ba3ef0 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: 2023-08-08 +date: 2023-08-10 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 2191f1726b317..a760931ca5d51 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: 2023-08-08 +date: 2023-08-10 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 4a596b8f87948..4f61e1abe3a12 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'mapsEms'] --- import mapsEmsObj from './maps_ems.devdocs.json'; diff --git a/api_docs/ml.mdx b/api_docs/ml.mdx index aac94910e94b1..84fd36f31e5f5 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'ml'] --- import mlObj from './ml.devdocs.json'; diff --git a/api_docs/monitoring.mdx b/api_docs/monitoring.mdx index 1ac07084a95b9..d61214544d53b 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: 2023-08-08 +date: 2023-08-10 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 b5e8501f6ebd4..f2ec25e486513 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: 2023-08-08 +date: 2023-08-10 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 f0e8b14832169..5edf0c3638b1d 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: 2023-08-08 +date: 2023-08-10 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 3b494d9a2daad..4ab7b81595545 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'newsfeed'] --- import newsfeedObj from './newsfeed.devdocs.json'; diff --git a/api_docs/notifications.mdx b/api_docs/notifications.mdx index 8ebb28a12df00..ded2a49def137 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'notifications'] --- import notificationsObj from './notifications.devdocs.json'; diff --git a/api_docs/observability.devdocs.json b/api_docs/observability.devdocs.json index 60932d66f5c74..8cc7e821fa1a3 100644 --- a/api_docs/observability.devdocs.json +++ b/api_docs/observability.devdocs.json @@ -4371,7 +4371,7 @@ "label": "createOrUpdateIndex", "description": [], "signature": [ - "({\n index,\n mappings,\n settings,\n client,\n logger,\n}: { index: string; mappings: ", + "({\n index,\n mappings,\n client,\n logger,\n}: { index: string; mappings: ", "MappingTypeMapping", " & { date_detection?: boolean | undefined; dynamic?: ", "MappingDynamicMapping", @@ -4391,9 +4391,7 @@ "MappingSourceField", " | undefined; runtime?: ", "MappingRuntimeFields", - " | undefined; }; settings?: ", - "IndicesIndexSettings", - " | undefined; client: ", + " | undefined; }; client: ", { "pluginId": "@kbn/core-elasticsearch-server", "scope": "common", @@ -4420,7 +4418,7 @@ "id": "def-server.createOrUpdateIndex.$1", "type": "Object", "tags": [], - "label": "{\n index,\n mappings,\n settings,\n client,\n logger,\n}", + "label": "{\n index,\n mappings,\n client,\n logger,\n}", "description": [], "path": "x-pack/plugins/observability/server/utils/create_or_update_index.ts", "deprecated": false, @@ -4470,21 +4468,6 @@ "deprecated": false, "trackAdoption": false }, - { - "parentPluginId": "observability", - "id": "def-server.createOrUpdateIndex.$1.settings", - "type": "CompoundType", - "tags": [], - "label": "settings", - "description": [], - "signature": [ - "IndicesIndexSettings", - " | undefined" - ], - "path": "x-pack/plugins/observability/server/utils/create_or_update_index.ts", - "deprecated": false, - "trackAdoption": false - }, { "parentPluginId": "observability", "id": "def-server.createOrUpdateIndex.$1.client", diff --git a/api_docs/observability.mdx b/api_docs/observability.mdx index 2187ddd6940b1..0e2c22afa279d 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observability'] --- import observabilityObj from './observability.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/actionable-observability](https://github.com/orgs/elastic/team | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 509 | 45 | 502 | 16 | +| 508 | 45 | 501 | 16 | ## Client diff --git a/api_docs/observability_a_i_assistant.devdocs.json b/api_docs/observability_a_i_assistant.devdocs.json index 6a07ae0c41f05..f2fd46f618d93 100644 --- a/api_docs/observability_a_i_assistant.devdocs.json +++ b/api_docs/observability_a_i_assistant.devdocs.json @@ -206,6 +206,17 @@ "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.Conversation.public", + "type": "boolean", + "tags": [], + "label": "public", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -240,7 +251,7 @@ "label": "message", "description": [], "signature": [ - "{ content?: string | undefined; name?: string | undefined; role: ", + "{ content?: string | undefined; name?: string | undefined; event?: string | undefined; role: ", { "pluginId": "observabilityAIAssistant", "scope": "common", @@ -248,15 +259,7 @@ "section": "def-common.MessageRole", "text": "MessageRole" }, - "; function_call?: { name: string; args?: ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; trigger: ", + "; function_call?: { name: string; arguments?: string | undefined; trigger: ", { "pluginId": "observabilityAIAssistant", "scope": "common", @@ -280,15 +283,7 @@ "section": "def-common.MessageRole", "text": "MessageRole" }, - ".Elastic; } | undefined; data?: ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; }" + ".Elastic; } | undefined; data?: string | undefined; }" ], "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", "deprecated": false, @@ -321,7 +316,115 @@ "label": "APIReturnType", "description": [], "signature": [ - "{ \"GET /internal/observability_ai_assistant/connectors\": { endpoint: \"GET /internal/observability_ai_assistant/connectors\"; params?: undefined; handler: ({}: ", + "{ \"POST /internal/observability_ai_assistant/functions/setup_kb\": { endpoint: \"POST /internal/observability_ai_assistant/functions/setup_kb\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/functions/summarise\": { endpoint: \"POST /internal/observability_ai_assistant/functions/summarise\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ id: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; confidence: ", + "UnionC", + "<[", + "LiteralC", + "<\"low\">, ", + "LiteralC", + "<\"medium\">, ", + "LiteralC", + "<\"high\">]>; is_correction: ", + "Type", + "; public: ", + "Type", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { id: string; text: ", + "Branded", + "; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; public: boolean; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/functions/recall\": { endpoint: \"POST /internal/observability_ai_assistant/functions/recall\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ query: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { query: ", + "Branded", + "; }; }; }) => Promise<{ entries: ", + "KnowledgeBaseEntry", + "[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/functions/elasticsearch\": { endpoint: \"POST /internal/observability_ai_assistant/functions/elasticsearch\"; params?: ", + "TypeC", + "<{ body: ", + "IntersectionC", + "<[", + "TypeC", + "<{ method: ", + "UnionC", + "<[", + "LiteralC", + "<\"GET\">, ", + "LiteralC", + "<\"POST\">, ", + "LiteralC", + "<\"PATCH\">, ", + "LiteralC", + "<\"PUT\">, ", + "LiteralC", + "<\"DELETE\">]>; path: ", + "StringC", + "; }>, ", + "PartialC", + "<{ body: ", + "AnyC", + "; }>]>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { method: \"GET\" | \"DELETE\" | \"POST\" | \"PUT\" | \"PATCH\"; path: string; } & { body?: any; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/connectors\": { endpoint: \"GET /internal/observability_ai_assistant/connectors\"; params?: undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", ") => Promise<", { @@ -421,7 +524,15 @@ "StringC", "; }>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", - " & { params: { path: { conversationId: string; }; }; }) => Promise; } & ", + " & { params: { path: { conversationId: string; }; }; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", "TypeC", @@ -449,7 +560,21 @@ }, ", unknown>>; connectorId: ", "StringC", - "; }>; }> | undefined; handler: ({}: ", + "; functions: ", + "ArrayC", + "<", + "TypeC", + "<{ name: ", + "StringC", + "; description: ", + "StringC", + "; parameters: ", + "AnyC", + "; contexts: ", + "ArrayC", + "<", + "StringC", + ">; }>>; }>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", " & { params: { body: { messages: ", { @@ -459,7 +584,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; }; }; }) => Promise<", + "[]; connectorId: string; functions: { name: string; description: string; parameters: any; contexts: string[]; }[]; }; }; }) => Promise<", "IncomingMessage", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -480,7 +605,115 @@ "label": "ObservabilityAIAssistantAPIClientRequestParamsOf", "description": [], "signature": [ - "{ \"GET /internal/observability_ai_assistant/connectors\": { endpoint: \"GET /internal/observability_ai_assistant/connectors\"; params?: undefined; handler: ({}: ", + "{ \"POST /internal/observability_ai_assistant/functions/setup_kb\": { endpoint: \"POST /internal/observability_ai_assistant/functions/setup_kb\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/functions/summarise\": { endpoint: \"POST /internal/observability_ai_assistant/functions/summarise\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ id: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; confidence: ", + "UnionC", + "<[", + "LiteralC", + "<\"low\">, ", + "LiteralC", + "<\"medium\">, ", + "LiteralC", + "<\"high\">]>; is_correction: ", + "Type", + "; public: ", + "Type", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { id: string; text: ", + "Branded", + "; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; public: boolean; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/functions/recall\": { endpoint: \"POST /internal/observability_ai_assistant/functions/recall\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ query: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { query: ", + "Branded", + "; }; }; }) => Promise<{ entries: ", + "KnowledgeBaseEntry", + "[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/functions/elasticsearch\": { endpoint: \"POST /internal/observability_ai_assistant/functions/elasticsearch\"; params?: ", + "TypeC", + "<{ body: ", + "IntersectionC", + "<[", + "TypeC", + "<{ method: ", + "UnionC", + "<[", + "LiteralC", + "<\"GET\">, ", + "LiteralC", + "<\"POST\">, ", + "LiteralC", + "<\"PATCH\">, ", + "LiteralC", + "<\"PUT\">, ", + "LiteralC", + "<\"DELETE\">]>; path: ", + "StringC", + "; }>, ", + "PartialC", + "<{ body: ", + "AnyC", + "; }>]>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { method: \"GET\" | \"DELETE\" | \"POST\" | \"PUT\" | \"PATCH\"; path: string; } & { body?: any; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/connectors\": { endpoint: \"GET /internal/observability_ai_assistant/connectors\"; params?: undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", ") => Promise<", { @@ -580,7 +813,15 @@ "StringC", "; }>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", - " & { params: { path: { conversationId: string; }; }; }) => Promise; } & ", + " & { params: { path: { conversationId: string; }; }; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", "TypeC", @@ -608,7 +849,21 @@ }, ", unknown>>; connectorId: ", "StringC", - "; }>; }> | undefined; handler: ({}: ", + "; functions: ", + "ArrayC", + "<", + "TypeC", + "<{ name: ", + "StringC", + "; description: ", + "StringC", + "; parameters: ", + "AnyC", + "; contexts: ", + "ArrayC", + "<", + "StringC", + ">; }>>; }>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", " & { params: { body: { messages: ", { @@ -618,7 +873,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; }; }; }) => Promise<", + "[]; connectorId: string; functions: { name: string; description: string; parameters: any; contexts: string[]; }[]; }; }; }) => Promise<", "IncomingMessage", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -647,7 +902,7 @@ "label": "ObservabilityAIAssistantAPIEndpoint", "description": [], "signature": [ - "\"POST /internal/observability_ai_assistant/chat\" | \"GET /internal/observability_ai_assistant/conversation/{conversationId}\" | \"POST /internal/observability_ai_assistant/conversations\" | \"PUT /internal/observability_ai_assistant/conversation\" | \"POST /internal/observability_ai_assistant/conversation/{conversationId}\" | \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\" | \"GET /internal/observability_ai_assistant/connectors\"" + "\"POST /internal/observability_ai_assistant/chat\" | \"GET /internal/observability_ai_assistant/conversation/{conversationId}\" | \"POST /internal/observability_ai_assistant/conversations\" | \"PUT /internal/observability_ai_assistant/conversation\" | \"POST /internal/observability_ai_assistant/conversation/{conversationId}\" | \"DELETE /internal/observability_ai_assistant/conversation/{conversationId}\" | \"GET /internal/observability_ai_assistant/connectors\" | \"POST /internal/observability_ai_assistant/functions/elasticsearch\" | \"POST /internal/observability_ai_assistant/functions/recall\" | \"POST /internal/observability_ai_assistant/functions/summarise\" | \"POST /internal/observability_ai_assistant/functions/setup_kb\"" ], "path": "x-pack/plugins/observability_ai_assistant/public/api/index.ts", "deprecated": false, @@ -691,7 +946,16321 @@ "path": "x-pack/plugins/observability_ai_assistant/public/types.ts", "deprecated": false, "trackAdoption": false, - "children": [], + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantPluginStart.registerContext", + "type": "Function", + "tags": [], + "label": "registerContext", + "description": [], + "signature": [ + "(options: ", + "ContextDefinition", + ") => void" + ], + "path": "x-pack/plugins/observability_ai_assistant/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantPluginStart.registerContext.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "ContextDefinition" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantPluginStart.registerFunction", + "type": "Function", + "tags": [], + "label": "registerFunction", + "description": [], + "signature": [ + "(options: FunctionOptions, respond: RespondFunction, render?: RenderFunction | undefined) => void" + ], + "path": "x-pack/plugins/observability_ai_assistant/public/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantPluginStart.registerFunction.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "FunctionOptions" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantPluginStart.registerFunction.$2", + "type": "Function", + "tags": [], + "label": "respond", + "description": [], + "signature": [ + "(options: { arguments: ", + "node_modules/ts-algebra/lib/meta-types/resolve", + "$Resolve<", + "JSONSchema7", + " extends (TParameters extends Record ? ", + "DeepWritable", + " : TParameters) ? ", + "Any", + " : (TParameters extends Record ? ", + "DeepWritable", + " : TParameters) extends string | true ? ", + "Any", + " : (TParameters extends Record ? ", + "DeepWritable", + " : TParameters) extends false ? ", + "Never", + " : (TParameters extends Record ? ", + "DeepWritable", + " : TParameters) extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends string | true ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends false ? ", + "Never", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"$ref\"], \"#\">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "JSONSchema7", + " extends Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> ? ", + "Any", + " : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends string | true ? ", + "Any", + " : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends false ? ", + "Never", + " : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "ReferenceSchema", + " ? any : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends string | true ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends false ? ", + "Never", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"$ref\"], \"#\">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "JSONSchema7", + " extends Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> ? ", + "Any", + " : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends string | true ? ", + "Any", + " : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends false ? ", + "Never", + " : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "ReferenceSchema", + " ? any : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"enum\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { ...; }> : Omit<...> extends ", + "AnyOfSchema", + " ? ", + "If", + "<...> : Omit<...> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<...> : Omit<...> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + "<...> | ... 1 more ... | ", + "ParseConstSchema", + "<...> : Omit<...> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<...> : Omit<...> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + "<...> | ... 1 more ... | ", + "ParseSingleTypeSchema", + "<...> : ", + "Any", + "<...>> | ", + "ParseNullableSchema", + "<...> : Omit<...> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<...> : Omit<...> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<...> : Omit<...> extends ", + "OneOfSchema", + " ? ", + "If", + "<...> : Omit<...> extends ", + "AnyOfSchema", + " ? ", + "If", + "<...> : Omit<...> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<...> : Omit<...> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + "<...> | ... 1 more ... | ", + "ParseConstSchema", + "<...> : Omit<...> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<...> : Omit<...> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + "<...> | ... 1 more ... | ", + "ParseSingleTypeSchema", + "<...> : ", + "Any", + "<...>> : (TParameters extends Record<...> ? ", + "DeepWritable", + "<...> : TParameters) extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<...> : (TParameters extends Record<...> ? ", + "DeepWritable", + "<...> : TParameters) extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<...> : (TParameters extends Record<...> ? ", + "DeepWritable", + "<...> : TParameters) extends ", + "OneOfSchema", + " ? ", + "If", + "<...> : (TParameters extends Record<...> ? ", + "DeepWritable", + "<...> : TParameters) extends ", + "AnyOfSchema", + " ? ", + "If", + "<...> : (TParameters extends Record<...> ? ", + "DeepWritable", + "<...> : TParameters) extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<...> : (TParameters extends Record<...> ? ", + "DeepWritable", + "<...> : TParameters) extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + "<...> | ... 1 more ... | ", + "ParseConstSchema", + "<...> : (TParameters extends Record<...> ? ", + "DeepWritable", + "<...> : TParameters) extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<...> : (TParameters extends Record<...> ? ", + "DeepWritable", + "<...> : TParameters) extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + "<...> | ... 1 more ... | ", + "ParseSingleTypeSchema", + "<...> : ", + "Any", + "<...>, ", + "ResolveDefaultOptions", + ">; }, signal: AbortSignal) => Promise<...>" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false, + "returnComment": [], + "children": [ + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantPluginStart.registerFunction.$2.$1", + "type": "Object", + "tags": [], + "label": "options", + "description": [], + "signature": [ + "{ arguments: ", + "node_modules/ts-algebra/lib/meta-types/resolve", + "$Resolve<", + "JSONSchema7", + " extends (TParameters extends Record ? ", + "DeepWritable", + " : TParameters) ? ", + "Any", + " : (TParameters extends Record ? ", + "DeepWritable", + " : TParameters) extends string | true ? ", + "Any", + " : (TParameters extends Record ? ", + "DeepWritable", + " : TParameters) extends false ? ", + "Never", + " : (TParameters extends Record ? ", + "DeepWritable", + " : TParameters) extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends string | true ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends false ? ", + "Never", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"$ref\"], \"#\">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "MultipleTypesSchema", + " ? any : any> : any> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends string | true ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends false ? ", + "Never", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"$ref\"], \"#\">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "MultipleTypesSchema", + " ? any : any> : any> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends string | true ? ", + "Any", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends false ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "AnyOfSchema", + " ? ", + "Never", + " : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "MultipleTypesSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnMixedSchema<(", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">)[\"type\"], ", + "MultipleTypesSchema", + " & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\"> extends ", + "SingleTypeSchema", + " ? ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseSingleTypeSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { type: ", + "JSONSchema7TypeName", + "; } & Omit<", + "NullableSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : ", + "Any", + "> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"$ref\"], \"#\">> : Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "JSONSchema7", + " extends Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends string | true ? ", + "Any", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends false ? ", + "Never", + " : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "NullableSchema", + " ? ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> | ", + "ParseNullableSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { nullable: boolean; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "ReferenceSchema", + " ? ", + "ParseReferenceSchema", + "<", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, RecSplit<(", + "ReferenceSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"$ref\"], \"#\">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "AllOfSchema", + " ? RecurseOnAllOfSchema<(", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"allOf\"], ", + "AllOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "OneOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnOneOfSchema<(", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"oneOf\"], ", + "OneOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "AnyOfSchema", + " ? ", + "If", + "<", + "IsNever", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>>, ", + "Never", + ", ", + "DoesExtend", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>, ", + "Never", + "> extends true ? ", + "Never", + " : { type: \"union\"; values: RecurseOnAnyOfSchema<(", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"anyOf\"], ", + "AnyOfSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">, never>; }> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "EnumSchema", + " ? ", + "node_modules/ts-algebra/lib/meta-types/intersection/index", + "$Intersect<", + "If", + "<", + "IsNever", + "<", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"enum\"][number], never>>, ", + "Never", + ", { type: \"enum\"; values: ", + "Compute", + "<(", + "EnumSchema", + " & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">)[\"enum\"][number], never>; isSerialized: false; deserialized: never; }>, ", + "Any", + "> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "ConstSchema", + " ? ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> | ", + "ParseConstSchema", + " & { const?: unknown; enum?: unknown; items?: ", + "JSONSchema7", + " | ", + "JSONSchema7", + "[] | undefined; additionalItems?: ", + "JSONSchema7", + " | undefined; contains?: ", + "JSONSchema7", + " | undefined; properties?: Record | undefined; patternProperties?: Record | undefined; additionalProperties?: ", + "JSONSchema7", + " | undefined; dependencies?: { [key: string]: string[] | ", + "JSONSchema7", + "; } | undefined; propertyNames?: ", + "JSONSchema7", + " | undefined; if?: ", + "JSONSchema7", + " | undefined; then?: ", + "JSONSchema7", + " | undefined; else?: ", + "JSONSchema7", + " | undefined; allOf?: ", + "JSONSchema7", + "[] | undefined; anyOf?: ", + "JSONSchema7", + "[] | undefined; oneOf?: ", + "JSONSchema7", + "[] | undefined; not?: ", + "JSONSchema7", + " | undefined; nullable?: boolean | undefined; definitions?: { [key: string]: ", + "JSONSchema7", + "; } | undefined; examples?: unknown[] | undefined; default?: unknown; [$JSONSchema7]?: typeof ", + "node_modules/json-schema-to-ts/lib/types/definitions/jsonSchema7", + "$JSONSchema7 | undefined; } & { const: unknown; } & Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\">, ", + "ParseOptions", + " ? ", + "DeepWritable", + " : TParameters, ", + "FromSchemaDefaultOptions", + ">> : Omit<", + "AllOfSchema", + " & Omit<", + "NullableSchema", + " & (TParameters extends Record ? ", + "DeepWritable", + " : TParameters), \"nullable\">, \"allOf\"> extends ", + "MultipleTypesSchema", + " ? any : any> : any> : any, ", + "ResolveDefaultOptions", + ">; }" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantPluginStart.registerFunction.$2.$2", + "type": "Object", + "tags": [], + "label": "signal", + "description": [], + "signature": [ + "AbortSignal" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ] + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-public.ObservabilityAIAssistantPluginStart.registerFunction.$3", + "type": "Function", + "tags": [], + "label": "render", + "description": [], + "signature": [ + "RenderFunction | undefined" + ], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], "lifecycle": "start", "initialIsOpen": true } @@ -710,7 +17279,115 @@ "label": "ObservabilityAIAssistantServerRouteRepository", "description": [], "signature": [ - "{ \"GET /internal/observability_ai_assistant/connectors\": { endpoint: \"GET /internal/observability_ai_assistant/connectors\"; params?: undefined; handler: ({}: ", + "{ \"POST /internal/observability_ai_assistant/functions/setup_kb\": { endpoint: \"POST /internal/observability_ai_assistant/functions/setup_kb\"; params?: undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + ") => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/functions/summarise\": { endpoint: \"POST /internal/observability_ai_assistant/functions/summarise\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ id: ", + "StringC", + "; text: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; confidence: ", + "UnionC", + "<[", + "LiteralC", + "<\"low\">, ", + "LiteralC", + "<\"medium\">, ", + "LiteralC", + "<\"high\">]>; is_correction: ", + "Type", + "; public: ", + "Type", + "; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { id: string; text: ", + "Branded", + "; confidence: \"medium\" | \"high\" | \"low\"; is_correction: boolean; public: boolean; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/functions/recall\": { endpoint: \"POST /internal/observability_ai_assistant/functions/recall\"; params?: ", + "TypeC", + "<{ body: ", + "TypeC", + "<{ query: ", + "BrandC", + "<", + "StringC", + ", ", + { + "pluginId": "@kbn/io-ts-utils", + "scope": "common", + "docId": "kibKbnIoTsUtilsPluginApi", + "section": "def-common.NonEmptyStringBrand", + "text": "NonEmptyStringBrand" + }, + ">; }>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { query: ", + "Branded", + "; }; }; }) => Promise<{ entries: ", + "KnowledgeBaseEntry", + "[]; }>; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"POST /internal/observability_ai_assistant/functions/elasticsearch\": { endpoint: \"POST /internal/observability_ai_assistant/functions/elasticsearch\"; params?: ", + "TypeC", + "<{ body: ", + "IntersectionC", + "<[", + "TypeC", + "<{ method: ", + "UnionC", + "<[", + "LiteralC", + "<\"GET\">, ", + "LiteralC", + "<\"POST\">, ", + "LiteralC", + "<\"PATCH\">, ", + "LiteralC", + "<\"PUT\">, ", + "LiteralC", + "<\"DELETE\">]>; path: ", + "StringC", + "; }>, ", + "PartialC", + "<{ body: ", + "AnyC", + "; }>]>; }> | undefined; handler: ({}: ", + "ObservabilityAIAssistantRouteHandlerResources", + " & { params: { body: { method: \"GET\" | \"DELETE\" | \"POST\" | \"PUT\" | \"PATCH\"; path: string; } & { body?: any; }; }; }) => Promise; } & ", + "ObservabilityAIAssistantRouteCreateOptions", + "; \"GET /internal/observability_ai_assistant/connectors\": { endpoint: \"GET /internal/observability_ai_assistant/connectors\"; params?: undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", ") => Promise<", { @@ -810,7 +17487,15 @@ "StringC", "; }>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", - " & { params: { path: { conversationId: string; }; }; }) => Promise; } & ", + " & { params: { path: { conversationId: string; }; }; }) => Promise<", + { + "pluginId": "observabilityAIAssistant", + "scope": "common", + "docId": "kibObservabilityAIAssistantPluginApi", + "section": "def-common.Conversation", + "text": "Conversation" + }, + ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", "; \"POST /internal/observability_ai_assistant/chat\": { endpoint: \"POST /internal/observability_ai_assistant/chat\"; params?: ", "TypeC", @@ -838,7 +17523,21 @@ }, ", unknown>>; connectorId: ", "StringC", - "; }>; }> | undefined; handler: ({}: ", + "; functions: ", + "ArrayC", + "<", + "TypeC", + "<{ name: ", + "StringC", + "; description: ", + "StringC", + "; parameters: ", + "AnyC", + "; contexts: ", + "ArrayC", + "<", + "StringC", + ">; }>>; }>; }> | undefined; handler: ({}: ", "ObservabilityAIAssistantRouteHandlerResources", " & { params: { body: { messages: ", { @@ -848,7 +17547,7 @@ "section": "def-common.Message", "text": "Message" }, - "[]; connectorId: string; }; }; }) => Promise<", + "[]; connectorId: string; functions: { name: string; description: string; parameters: any; contexts: string[]; }[]; }; }; }) => Promise<", "IncomingMessage", ">; } & ", "ObservabilityAIAssistantRouteCreateOptions", @@ -975,6 +17674,17 @@ "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", "deprecated": false, "trackAdoption": false + }, + { + "parentPluginId": "observabilityAIAssistant", + "id": "def-common.Conversation.public", + "type": "boolean", + "tags": [], + "label": "public", + "description": [], + "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", + "deprecated": false, + "trackAdoption": false } ], "initialIsOpen": false @@ -1009,7 +17719,7 @@ "label": "message", "description": [], "signature": [ - "{ content?: string | undefined; name?: string | undefined; role: ", + "{ content?: string | undefined; name?: string | undefined; event?: string | undefined; role: ", { "pluginId": "observabilityAIAssistant", "scope": "common", @@ -1017,15 +17727,7 @@ "section": "def-common.MessageRole", "text": "MessageRole" }, - "; function_call?: { name: string; args?: ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; trigger: ", + "; function_call?: { name: string; arguments?: string | undefined; trigger: ", { "pluginId": "observabilityAIAssistant", "scope": "common", @@ -1049,15 +17751,7 @@ "section": "def-common.MessageRole", "text": "MessageRole" }, - ".Elastic; } | undefined; data?: ", - { - "pluginId": "@kbn/utility-types", - "scope": "common", - "docId": "kibKbnUtilityTypesPluginApi", - "section": "def-common.Serializable", - "text": "Serializable" - }, - "; }" + ".Elastic; } | undefined; data?: string | undefined; }" ], "path": "x-pack/plugins/observability_ai_assistant/common/types.ts", "deprecated": false, diff --git a/api_docs/observability_a_i_assistant.mdx b/api_docs/observability_a_i_assistant.mdx index f2868024f51cb..fb04665ad7c31 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: 2023-08-08 +date: 2023-08-10 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 | |-------------------|-----------|------------------------|-----------------| -| 35 | 0 | 33 | 5 | +| 45 | 0 | 43 | 7 | ## Client diff --git a/api_docs/observability_onboarding.mdx b/api_docs/observability_onboarding.mdx index 8499bbadd51b3..a876771d94e36 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: 2023-08-08 +date: 2023-08-10 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 3e93ed26a1aed..4f105830edc04 100644 --- a/api_docs/observability_shared.devdocs.json +++ b/api_docs/observability_shared.devdocs.json @@ -595,7 +595,7 @@ "label": "noCasesPermissions", "description": [], "signature": [ - "() => { all: boolean; create: boolean; read: boolean; update: boolean; delete: boolean; push: boolean; }" + "() => { all: boolean; create: boolean; read: boolean; update: boolean; delete: boolean; push: boolean; connectors: boolean; }" ], "path": "x-pack/plugins/observability_shared/public/utils/cases_permissions.ts", "deprecated": false, diff --git a/api_docs/observability_shared.mdx b/api_docs/observability_shared.mdx index b00388af882bc..49a91b491b06f 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'observabilityShared'] --- import observabilitySharedObj from './observability_shared.devdocs.json'; diff --git a/api_docs/osquery.mdx b/api_docs/osquery.mdx index 11d520ff3b5e0..a784ef7b6abfe 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'osquery'] --- import osqueryObj from './osquery.devdocs.json'; diff --git a/api_docs/plugin_directory.mdx b/api_docs/plugin_directory.mdx index 5836f5e27a50e..399e71eadb82b 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana'] --- @@ -21,7 +21,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | API Count | Any Count | Missing comments | Missing exports | |--------------|----------|-----------------|--------| -| 71820 | 556 | 61367 | 1472 | +| 71867 | 556 | 61386 | 1474 | ## Plugin Directory @@ -29,14 +29,14 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] |--------------|----------------|-----------|--------------|----------|---------------|--------| | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 275 | 10 | 269 | 27 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 36 | 1 | 32 | 2 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 60 | 1 | 0 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | AIOps plugin maintained by ML team. | 60 | 1 | 3 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 780 | 1 | 749 | 46 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | The user interface for Elastic APM | 48 | 0 | 48 | 113 | | | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | Asset manager plugin for entity assets (inventory, topology, etc) | 3 | 0 | 3 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 9 | 0 | 9 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Considering using bfetch capabilities when fetching large amounts of data. This services supports batching HTTP requests and streaming responses back. | 91 | 1 | 75 | 2 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds Canvas application to Kibana | 9 | 0 | 8 | 3 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 93 | 0 | 74 | 27 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | The Case management system in Kibana | 94 | 0 | 75 | 27 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | - | 268 | 16 | 253 | 10 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 68 | 0 | 16 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | Chat available on Elastic Cloud deployments for quicker assistance. | 3 | 0 | 2 | 0 | @@ -56,24 +56,24 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/fleet](https://github.com/orgs/elastic/teams/fleet) | Add custom data integrations so they can be displayed in the Fleet integrations app | 268 | 0 | 249 | 1 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds the Dashboard app to Kibana | 100 | 0 | 98 | 9 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | - | 54 | 0 | 51 | 0 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3295 | 119 | 2573 | 27 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 3301 | 119 | 2575 | 27 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin provides the ability to create data views via a modal flyout inside Kibana apps | 16 | 0 | 7 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Reusable data view field editor across Kibana | 72 | 0 | 33 | 0 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data view management app | 2 | 0 | 2 | 0 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 1012 | 0 | 243 | 2 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | Data services are useful for searching and querying data from Elasticsearch. Helpful utilities include: a re-usable react query bar, KQL autocomplete, async search, Data Views (Index Patterns) and field formatters. | 1024 | 0 | 246 | 2 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | The Data Visualizer tools help you understand your data, by analyzing the metrics and fields in a log file or an existing Elasticsearch index. | 31 | 3 | 25 | 1 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 12 | 0 | 10 | 3 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the Discover application and the saved search embeddable. | 78 | 0 | 51 | 15 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 37 | 0 | 35 | 2 | | discoverLogExplorer | [@elastic/infra-monitoring-ui](https://github.com/orgs/elastic/teams/infra-monitoring-ui) | This plugin exposes and registers Logs+ features. | 0 | 0 | 0 | 0 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | APIs used to assess the quality of data in Elasticsearch indexes | 2 | 0 | 0 | 0 | -| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 535 | 11 | 437 | 7 | +| | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds embeddables service to Kibana | 536 | 11 | 438 | 7 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Extends embeddable plugin with more functionality | 14 | 0 | 14 | 0 | | | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides encryption and decryption utilities for saved objects containing sensitive information. | 51 | 0 | 44 | 0 | | | [@elastic/enterprise-search-frontend](https://github.com/orgs/elastic/teams/enterprise-search-frontend) | Adds dashboards for discovering and managing Enterprise Search products. | 10 | 0 | 10 | 0 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 115 | 3 | 111 | 3 | -| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The Event Annotation service contains expressions for event annotations | 192 | 30 | 192 | 2 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 116 | 0 | 116 | 11 | +| | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | The Event Annotation service contains expressions for event annotations | 191 | 30 | 191 | 2 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 111 | 0 | 111 | 11 | | | [@elastic/uptime](https://github.com/orgs/elastic/teams/uptime) | - | 131 | 1 | 131 | 14 | | | [@elastic/kibana-presentation](https://github.com/orgs/elastic/teams/kibana-presentation) | Adds 'error' renderer to expressions | 17 | 0 | 15 | 2 | | | [@elastic/kibana-visualizations](https://github.com/orgs/elastic/teams/kibana-visualizations) | Expression Gauge plugin adds a `gauge` renderer and function to the expression plugin. The renderer will display the `gauge` chart. | 59 | 0 | 59 | 2 | @@ -132,8 +132,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 34 | 0 | 34 | 2 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 17 | 0 | 17 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 2 | 0 | 2 | 1 | -| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 509 | 45 | 502 | 16 | -| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 35 | 0 | 33 | 5 | +| | [@elastic/actionable-observability](https://github.com/orgs/elastic/teams/actionable-observability) | - | 508 | 45 | 501 | 16 | +| | [@elastic/obs-ai-assistant](https://github.com/orgs/elastic/teams/obs-ai-assistant) | - | 45 | 0 | 43 | 7 | | | [@elastic/apm-ui](https://github.com/orgs/elastic/teams/apm-ui) | - | 14 | 0 | 14 | 0 | | | [@elastic/observability-ui](https://github.com/orgs/elastic/teams/observability-ui) | - | 277 | 1 | 276 | 11 | | | [@elastic/security-defend-workflows](https://github.com/orgs/elastic/teams/security-defend-workflows) | - | 24 | 0 | 24 | 7 | @@ -146,16 +146,16 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 264 | 0 | 235 | 14 | | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 24 | 0 | 19 | 2 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 129 | 2 | 118 | 4 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 44 | 0 | 44 | 0 | -| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 154 | 0 | 140 | 2 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 25 | 0 | 25 | 0 | +| | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 161 | 0 | 147 | 2 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 79 | 0 | 73 | 3 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 100 | 0 | 52 | 1 | | | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | This plugin contains the definition and helper methods around saved searches, used by discover and visualizations. | 72 | 0 | 71 | 3 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 32 | 0 | 13 | 0 | | | [@elastic/kibana-reporting-services](https://github.com/orgs/elastic/teams/kibana-reporting-services) | Kibana Screenshotting Plugin | 27 | 0 | 8 | 5 | | searchprofiler | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 0 | 0 | 0 | 0 | -| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 277 | 0 | 89 | 4 | -| | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 192 | 2 | 126 | 32 | +| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | This plugin provides authentication and authorization features, and exposes functionality to understand the capabilities of the currently authenticated user. | 270 | 0 | 87 | 3 | +| | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | - | 194 | 2 | 128 | 32 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | ESS customizations for Security Solution. | 6 | 0 | 6 | 0 | | | [@elastic/security-solution](https://github.com/orgs/elastic/teams/security-solution) | Serverless customizations for security. | 6 | 0 | 6 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | The core Serverless plugin, providing APIs to Serverless Project plugins. | 17 | 0 | 16 | 0 | @@ -178,8 +178,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 257 | 1 | 213 | 22 | | | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | This plugin provides access to the transforms features provided by Elastic. Transforms enable you to convert existing Elasticsearch indices into summarized indices, which provide opportunities for new insights and analytics. | 4 | 0 | 4 | 1 | | translations | [@elastic/kibana-localization](https://github.com/orgs/elastic/teams/kibana-localization) | - | 0 | 0 | 0 | 0 | -| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 564 | 12 | 538 | 50 | -| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds UI Actions service to Kibana | 144 | 2 | 102 | 9 | +| | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 570 | 12 | 544 | 50 | +| | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Adds UI Actions service to Kibana | 145 | 2 | 103 | 9 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | Extends UI Actions plugin with more functionality | 206 | 0 | 140 | 9 | | | [@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. | 53 | 0 | 23 | 2 | | | [@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. | 142 | 2 | 104 | 22 | @@ -210,8 +210,8 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | Package name           | Maintaining team | Description | API Cnt | Any Cnt | Missing
comments | Missing
exports | |--------------|----------------|-----------|--------------|----------|---------------|--------| | | [@elastic/platform-deployment-management](https://github.com/orgs/elastic/teams/platform-deployment-management) | - | 11 | 5 | 11 | 0 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 30 | 0 | 6 | 1 | -| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 12 | 0 | 0 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 33 | 0 | 0 | 0 | +| | [@elastic/ml-ui](https://github.com/orgs/elastic/teams/ml-ui) | - | 20 | 0 | 0 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 16 | 0 | 15 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 24 | 0 | 24 | 0 | | | [@elastic/response-ops](https://github.com/orgs/elastic/teams/response-ops) | - | 8 | 0 | 7 | 1 | @@ -245,7 +245,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 14 | 0 | 14 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 9 | 0 | 9 | 0 | | | [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sharedux) | - | 58 | 0 | 40 | 4 | -| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 187 | 1 | 122 | 0 | +| | [@elastic/kibana-data-discovery](https://github.com/orgs/elastic/teams/kibana-data-discovery) | - | 188 | 1 | 123 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 0 | 0 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 7 | 0 | 7 | 1 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 4 | 0 | 4 | 0 | @@ -600,7 +600,7 @@ tags: ['contributor', 'dev', 'apidocs', 'kibana'] | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 7 | 0 | 6 | 0 | | | [@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 | 306 | 0 | 277 | 9 | | | [@elastic/security-threat-hunting-investigations](https://github.com/orgs/elastic/teams/security-threat-hunting-investigations) | - | 4 | 0 | 0 | 0 | -| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 58 | 0 | 5 | 0 | +| | [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana-security) | - | 80 | 0 | 21 | 2 | | | [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core) | - | 36 | 0 | 15 | 1 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 2 | 0 | 2 | 0 | | | [@elastic/kibana-operations](https://github.com/orgs/elastic/teams/kibana-operations) | - | 24 | 0 | 14 | 0 | diff --git a/api_docs/presentation_util.mdx b/api_docs/presentation_util.mdx index 0fe8f9a7d353e..99f4c28514e59 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: 2023-08-08 +date: 2023-08-10 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 0b39ac1b4e63c..334556cc3774f 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'profiling'] --- import profilingObj from './profiling.devdocs.json'; diff --git a/api_docs/remote_clusters.mdx b/api_docs/remote_clusters.mdx index 0ff4e46e2a510..559e1229116e7 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: 2023-08-08 +date: 2023-08-10 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 112b4b29f3ae1..bc9d258b05d1d 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: 2023-08-08 +date: 2023-08-10 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 f8272bfef1d9f..93d9d8abaf5e3 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'rollup'] --- import rollupObj from './rollup.devdocs.json'; diff --git a/api_docs/rule_registry.mdx b/api_docs/rule_registry.mdx index 274209f68d7d7..8d5eced80baa4 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: 2023-08-08 +date: 2023-08-10 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 589623de8182e..42b5675dedaa9 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: 2023-08-08 +date: 2023-08-10 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 a71ec6f5e7609..272abd228e1af 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjects'] --- import savedObjectsObj from './saved_objects.devdocs.json'; diff --git a/api_docs/saved_objects_finder.devdocs.json b/api_docs/saved_objects_finder.devdocs.json index 9ae6255f9aefe..5de85a8979f27 100644 --- a/api_docs/saved_objects_finder.devdocs.json +++ b/api_docs/saved_objects_finder.devdocs.json @@ -11,7 +11,15 @@ "label": "getSavedObjectFinder", "description": [], "signature": [ - "(uiSettings: ", + "(contentClient: ", + { + "pluginId": "contentManagement", + "scope": "public", + "docId": "kibContentManagementPluginApi", + "section": "def-public.ContentClient", + "text": "ContentClient" + }, + ", uiSettings: ", { "pluginId": "@kbn/core-ui-settings-browser", "scope": "common", @@ -19,22 +27,6 @@ "section": "def-common.IUiSettingsClient", "text": "IUiSettingsClient" }, - ", http: ", - { - "pluginId": "@kbn/core-http-browser", - "scope": "common", - "docId": "kibKbnCoreHttpBrowserPluginApi", - "section": "def-common.HttpSetup", - "text": "HttpSetup" - }, - ", savedObjectsManagement: ", - { - "pluginId": "savedObjectsManagement", - "scope": "public", - "docId": "kibSavedObjectsManagementPluginApi", - "section": "def-public.SavedObjectsManagementPluginStart", - "text": "SavedObjectsManagementPluginStart" - }, ", savedObjectsTagging?: ", { "pluginId": "savedObjectsTaggingOss", @@ -62,15 +54,15 @@ "id": "def-public.getSavedObjectFinder.$1", "type": "Object", "tags": [], - "label": "uiSettings", + "label": "contentClient", "description": [], "signature": [ { - "pluginId": "@kbn/core-ui-settings-browser", - "scope": "common", - "docId": "kibKbnCoreUiSettingsBrowserPluginApi", - "section": "def-common.IUiSettingsClient", - "text": "IUiSettingsClient" + "pluginId": "contentManagement", + "scope": "public", + "docId": "kibContentManagementPluginApi", + "section": "def-public.ContentClient", + "text": "ContentClient" } ], "path": "src/plugins/saved_objects_finder/public/finder/index.tsx", @@ -83,15 +75,15 @@ "id": "def-public.getSavedObjectFinder.$2", "type": "Object", "tags": [], - "label": "http", + "label": "uiSettings", "description": [], "signature": [ { - "pluginId": "@kbn/core-http-browser", + "pluginId": "@kbn/core-ui-settings-browser", "scope": "common", - "docId": "kibKbnCoreHttpBrowserPluginApi", - "section": "def-common.HttpSetup", - "text": "HttpSetup" + "docId": "kibKbnCoreUiSettingsBrowserPluginApi", + "section": "def-common.IUiSettingsClient", + "text": "IUiSettingsClient" } ], "path": "src/plugins/saved_objects_finder/public/finder/index.tsx", @@ -104,27 +96,6 @@ "id": "def-public.getSavedObjectFinder.$3", "type": "Object", "tags": [], - "label": "savedObjectsManagement", - "description": [], - "signature": [ - { - "pluginId": "savedObjectsManagement", - "scope": "public", - "docId": "kibSavedObjectsManagementPluginApi", - "section": "def-public.SavedObjectsManagementPluginStart", - "text": "SavedObjectsManagementPluginStart" - } - ], - "path": "src/plugins/saved_objects_finder/public/finder/index.tsx", - "deprecated": false, - "trackAdoption": false, - "isRequired": true - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-public.getSavedObjectFinder.$4", - "type": "Object", - "tags": [], "label": "savedObjectsTagging", "description": [], "signature": [ @@ -431,29 +402,31 @@ "parentPluginId": "savedObjectsFinder", "id": "def-public.SavedObjectMetaData.includeFields", "type": "Array", - "tags": [], + "tags": [ + "deprecated" + ], "label": "includeFields", "description": [], "signature": [ "string[] | undefined" ], "path": "src/plugins/saved_objects_finder/public/finder/saved_object_finder.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-public.SavedObjectMetaData.defaultSearchField", - "type": "string", - "tags": [], - "label": "defaultSearchField", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/saved_objects_finder/public/finder/saved_object_finder.tsx", - "deprecated": false, - "trackAdoption": false + "deprecated": true, + "trackAdoption": false, + "references": [ + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/wizard/search_selection/search_selection.tsx" + }, + { + "plugin": "visualizations", + "path": "src/plugins/visualizations/public/embeddable/visualize_embeddable_factory.tsx" + }, + { + "plugin": "graph", + "path": "x-pack/plugins/graph/public/components/source_picker.tsx" + } + ] } ], "initialIsOpen": false @@ -529,249 +502,6 @@ "path": "src/plugins/saved_objects_finder/common/types.ts", "deprecated": false, "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FinderAttributes.type", - "type": "string", - "tags": [], - "label": "type", - "description": [], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP", - "type": "Interface", - "tags": [], - "label": "FindQueryHTTP", - "description": [], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP.perPage", - "type": "number", - "tags": [], - "label": "perPage", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP.page", - "type": "number", - "tags": [], - "label": "page", - "description": [], - "signature": [ - "number | undefined" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP.type", - "type": "CompoundType", - "tags": [], - "label": "type", - "description": [], - "signature": [ - "string | string[]" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP.search", - "type": "string", - "tags": [], - "label": "search", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP.searchFields", - "type": "Array", - "tags": [], - "label": "searchFields", - "description": [], - "signature": [ - "string[] | undefined" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP.defaultSearchOperator", - "type": "CompoundType", - "tags": [], - "label": "defaultSearchOperator", - "description": [], - "signature": [ - "\"AND\" | \"OR\" | undefined" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP.sortField", - "type": "string", - "tags": [], - "label": "sortField", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP.sortOrder", - "type": "CompoundType", - "tags": [], - "label": "sortOrder", - "description": [], - "signature": [ - "\"asc\" | \"desc\" | undefined" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP.fields", - "type": "CompoundType", - "tags": [], - "label": "fields", - "description": [], - "signature": [ - "string | string[] | undefined" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindQueryHTTP.hasReference", - "type": "string", - "tags": [], - "label": "hasReference", - "description": [], - "signature": [ - "string | undefined" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindResponseHTTP", - "type": "Interface", - "tags": [], - "label": "FindResponseHTTP", - "description": [], - "signature": [ - { - "pluginId": "savedObjectsFinder", - "scope": "common", - "docId": "kibSavedObjectsFinderPluginApi", - "section": "def-common.FindResponseHTTP", - "text": "FindResponseHTTP" - }, - "" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindResponseHTTP.saved_objects", - "type": "Array", - "tags": [], - "label": "saved_objects", - "description": [], - "signature": [ - { - "pluginId": "savedObjectsFinder", - "scope": "common", - "docId": "kibSavedObjectsFinderPluginApi", - "section": "def-common.SavedObjectCommon", - "text": "SavedObjectCommon" - }, - "[]" - ], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindResponseHTTP.total", - "type": "number", - "tags": [], - "label": "total", - "description": [], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindResponseHTTP.page", - "type": "number", - "tags": [], - "label": "page", - "description": [], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "savedObjectsFinder", - "id": "def-common.FindResponseHTTP.per_page", - "type": "number", - "tags": [], - "label": "per_page", - "description": [], - "path": "src/plugins/saved_objects_finder/common/types.ts", - "deprecated": false, - "trackAdoption": false } ], "initialIsOpen": false @@ -818,11 +548,11 @@ "description": [], "signature": [ { - "pluginId": "@kbn/core-saved-objects-common", + "pluginId": "@kbn/content-management-utils", "scope": "common", - "docId": "kibKbnCoreSavedObjectsCommonPluginApi", - "section": "def-common.SavedObject", - "text": "SavedObject" + "docId": "kibKbnContentManagementUtilsPluginApi", + "section": "def-common.SOWithMetadata", + "text": "SOWithMetadata" }, "" ], diff --git a/api_docs/saved_objects_finder.mdx b/api_docs/saved_objects_finder.mdx index e37e0a65e9f47..8d56eb66947c8 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsFinder'] --- import savedObjectsFinderObj from './saved_objects_finder.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 | |-------------------|-----------|------------------------|-----------------| -| 44 | 0 | 44 | 0 | +| 25 | 0 | 25 | 0 | ## Client diff --git a/api_docs/saved_objects_management.devdocs.json b/api_docs/saved_objects_management.devdocs.json index 44279045cfc47..958d4058e2682 100644 --- a/api_docs/saved_objects_management.devdocs.json +++ b/api_docs/saved_objects_management.devdocs.json @@ -457,6 +457,153 @@ } ], "functions": [ + { + "parentPluginId": "savedObjectsManagement", + "id": "def-public.getTagFindReferences", + "type": "Function", + "tags": [], + "label": "getTagFindReferences", + "description": [], + "signature": [ + "({ selectedTags, taggingApi, }: { selectedTags?: string[] | undefined; taggingApi?: ", + { + "pluginId": "savedObjectsTaggingOss", + "scope": "public", + "docId": "kibSavedObjectsTaggingOssPluginApi", + "section": "def-public.SavedObjectsTaggingApi", + "text": "SavedObjectsTaggingApi" + }, + " | undefined; }) => ", + { + "pluginId": "@kbn/core-saved-objects-api-server", + "scope": "common", + "docId": "kibKbnCoreSavedObjectsApiServerPluginApi", + "section": "def-common.SavedObjectsFindOptionsReference", + "text": "SavedObjectsFindOptionsReference" + }, + "[] | undefined" + ], + "path": "src/plugins/saved_objects_management/public/lib/get_tag_references.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "savedObjectsManagement", + "id": "def-public.getTagFindReferences.$1", + "type": "Object", + "tags": [], + "label": "{\n selectedTags,\n taggingApi,\n}", + "description": [], + "path": "src/plugins/saved_objects_management/public/lib/get_tag_references.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "savedObjectsManagement", + "id": "def-public.getTagFindReferences.$1.selectedTags", + "type": "Array", + "tags": [], + "label": "selectedTags", + "description": [], + "signature": [ + "string[] | undefined" + ], + "path": "src/plugins/saved_objects_management/public/lib/get_tag_references.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "savedObjectsManagement", + "id": "def-public.getTagFindReferences.$1.taggingApi", + "type": "Object", + "tags": [], + "label": "taggingApi", + "description": [], + "signature": [ + { + "pluginId": "savedObjectsTaggingOss", + "scope": "public", + "docId": "kibSavedObjectsTaggingOssPluginApi", + "section": "def-public.SavedObjectsTaggingApi", + "text": "SavedObjectsTaggingApi" + }, + " | undefined" + ], + "path": "src/plugins/saved_objects_management/public/lib/get_tag_references.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, + { + "parentPluginId": "savedObjectsManagement", + "id": "def-public.parseQuery", + "type": "Function", + "tags": [], + "label": "parseQuery", + "description": [], + "signature": [ + "(query: ", + "Query", + ", types: ", + { + "pluginId": "savedObjectsManagement", + "scope": "common", + "docId": "kibSavedObjectsManagementPluginApi", + "section": "def-common.SavedObjectManagementTypeInfo", + "text": "SavedObjectManagementTypeInfo" + }, + "[]) => ParsedQuery" + ], + "path": "src/plugins/saved_objects_management/public/lib/parse_query.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "savedObjectsManagement", + "id": "def-public.parseQuery.$1", + "type": "Object", + "tags": [], + "label": "query", + "description": [], + "signature": [ + "Query" + ], + "path": "src/plugins/saved_objects_management/public/lib/parse_query.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + }, + { + "parentPluginId": "savedObjectsManagement", + "id": "def-public.parseQuery.$2", + "type": "Array", + "tags": [], + "label": "types", + "description": [], + "signature": [ + { + "pluginId": "savedObjectsManagement", + "scope": "common", + "docId": "kibSavedObjectsManagementPluginApi", + "section": "def-common.SavedObjectManagementTypeInfo", + "text": "SavedObjectManagementTypeInfo" + }, + "[]" + ], + "path": "src/plugins/saved_objects_management/public/lib/parse_query.ts", + "deprecated": false, + "trackAdoption": false, + "isRequired": true + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "savedObjectsManagement", "id": "def-public.processImportResponse", diff --git a/api_docs/saved_objects_management.mdx b/api_docs/saved_objects_management.mdx index 2af10a0ba1a5c..d395a34dd7749 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsManagement'] --- import savedObjectsManagementObj from './saved_objects_management.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-core](https://github.com/orgs/elastic/teams/kibana-core | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 154 | 0 | 140 | 2 | +| 161 | 0 | 147 | 2 | ## Client diff --git a/api_docs/saved_objects_tagging.mdx b/api_docs/saved_objects_tagging.mdx index 9453cbd5adb2c..1d089c75628e9 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: 2023-08-08 +date: 2023-08-10 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 0461d38388a45..73d9712e702cb 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'savedObjectsTaggingOss'] --- import savedObjectsTaggingOssObj from './saved_objects_tagging_oss.devdocs.json'; diff --git a/api_docs/saved_search.mdx b/api_docs/saved_search.mdx index e120f71b28e4b..fe238a6cb2d05 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: 2023-08-08 +date: 2023-08-10 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 a2d304cc86e66..3c672d14ca80b 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: 2023-08-08 +date: 2023-08-10 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 6f8e21a4b85fa..db5a6c76c83e6 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'screenshotting'] --- import screenshottingObj from './screenshotting.devdocs.json'; diff --git a/api_docs/security.devdocs.json b/api_docs/security.devdocs.json index 167308664bcd8..7246728a30a37 100644 --- a/api_docs/security.devdocs.json +++ b/api_docs/security.devdocs.json @@ -999,42 +999,6 @@ "deprecated": false, "trackAdoption": false, "initialIsOpen": false - }, - { - "parentPluginId": "security", - "id": "def-public.UpdateUserProfileHook", - "type": "Type", - "tags": [], - "label": "UpdateUserProfileHook", - "description": [], - "signature": [ - "(props?: Props | undefined) => { update: (data: ", - "UserProfileData", - ") => void; showSuccessNotification: (props: { isRefreshRequired: boolean; }) => void; isLoading: boolean; userProfileData?: ", - "UserProfileData", - " | null | undefined; }" - ], - "path": "x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx", - "deprecated": false, - "trackAdoption": false, - "returnComment": [], - "children": [ - { - "parentPluginId": "security", - "id": "def-public.UpdateUserProfileHook.$1", - "type": "Object", - "tags": [], - "label": "props", - "description": [], - "signature": [ - "Props | undefined" - ], - "path": "x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false } ], "objects": [], @@ -1163,9 +1127,21 @@ ], "signature": [ "{ update: (data: D) => Promise; suggest: (path: string, params: ", { "pluginId": "security", @@ -1183,7 +1159,13 @@ "text": "UserProfile" }, "[]>; bulkGet: (params: ", { "pluginId": "security", @@ -1201,7 +1183,13 @@ "text": "UserProfile" }, "[]>; getCurrent: (params?: ", { "pluginId": "security", @@ -1221,32 +1209,14 @@ ">; readonly userProfile$: ", "Observable", "<", - "UserProfileData", - " | null>; }" - ], - "path": "x-pack/plugins/security/public/plugin.tsx", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "security", - "id": "def-public.SecurityPluginStart.hooks", - "type": "Object", - "tags": [], - "label": "hooks", - "description": [ - "\nA set of hooks to work with Kibana user profiles" - ], - "signature": [ - "{ useUpdateUserProfile: ", { - "pluginId": "security", - "scope": "public", - "docId": "kibSecurityPluginApi", - "section": "def-public.UpdateUserProfileHook", - "text": "UpdateUserProfileHook" + "pluginId": "@kbn/user-profile-components", + "scope": "common", + "docId": "kibKbnUserProfileComponentsPluginApi", + "section": "def-common.UserProfileData", + "text": "UserProfileData" }, - "; }" + " | null>; }" ], "path": "x-pack/plugins/security/public/plugin.tsx", "deprecated": false, @@ -4849,70 +4819,6 @@ ], "initialIsOpen": false }, - { - "parentPluginId": "security", - "id": "def-common.UserProfileAvatarData", - "type": "Interface", - "tags": [], - "label": "UserProfileAvatarData", - "description": [ - "\nAvatar stored in user profile." - ], - "path": "x-pack/plugins/security/common/model/user_profile.ts", - "deprecated": false, - "trackAdoption": false, - "children": [ - { - "parentPluginId": "security", - "id": "def-common.UserProfileAvatarData.initials", - "type": "string", - "tags": [], - "label": "initials", - "description": [ - "\nOptional initials (two letters) of the user to use as avatar if avatar picture isn't specified." - ], - "signature": [ - "string | undefined" - ], - "path": "x-pack/plugins/security/common/model/user_profile.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "security", - "id": "def-common.UserProfileAvatarData.color", - "type": "string", - "tags": [], - "label": "color", - "description": [ - "\nBackground color of the avatar when initials are used." - ], - "signature": [ - "string | undefined" - ], - "path": "x-pack/plugins/security/common/model/user_profile.ts", - "deprecated": false, - "trackAdoption": false - }, - { - "parentPluginId": "security", - "id": "def-common.UserProfileAvatarData.imageUrl", - "type": "CompoundType", - "tags": [], - "label": "imageUrl", - "description": [ - "\nBase64 data URL for the user avatar image." - ], - "signature": [ - "string | null | undefined" - ], - "path": "x-pack/plugins/security/common/model/user_profile.ts", - "deprecated": false, - "trackAdoption": false - } - ], - "initialIsOpen": false - }, { "parentPluginId": "security", "id": "def-common.UserProfileUserInfo", diff --git a/api_docs/security.mdx b/api_docs/security.mdx index 292adb907ed5c..c11d842bd6a54 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'security'] --- import securityObj from './security.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/kibana-security](https://github.com/orgs/elastic/teams/kibana- | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 277 | 0 | 89 | 4 | +| 270 | 0 | 87 | 3 | ## Client diff --git a/api_docs/security_solution.devdocs.json b/api_docs/security_solution.devdocs.json index c662e145879ef..62ef5e036ebbd 100644 --- a/api_docs/security_solution.devdocs.json +++ b/api_docs/security_solution.devdocs.json @@ -698,6 +698,46 @@ } ], "returnComment": [] + }, + { + "parentPluginId": "securitySolution", + "id": "def-public.UpsellingService.getSectionsValue", + "type": "Function", + "tags": [], + "label": "getSectionsValue", + "description": [], + "signature": [ + "() => Map<", + { + "pluginId": "securitySolution", + "scope": "public", + "docId": "kibSecuritySolutionPluginApi", + "section": "def-public.UpsellingSectionId", + "text": "UpsellingSectionId" + }, + ", React.ComponentType<{}>>" + ], + "path": "x-pack/plugins/security_solution/public/common/lib/upsellings/upselling_service.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] + }, + { + "parentPluginId": "securitySolution", + "id": "def-public.UpsellingService.getMessagesValue", + "type": "Function", + "tags": [], + "label": "getMessagesValue", + "description": [], + "signature": [ + "() => Map<\"investigation_guide\", string>" + ], + "path": "x-pack/plugins/security_solution/public/common/lib/upsellings/upselling_service.ts", + "deprecated": false, + "trackAdoption": false, + "children": [], + "returnComment": [] } ], "initialIsOpen": false @@ -2045,7 +2085,7 @@ "label": "SectionUpsellings", "description": [], "signature": [ - "{ entity_analytics_panel?: React.ComponentType<{}> | undefined; endpointPolicyProtections?: React.ComponentType<{}> | undefined; }" + "{ entity_analytics_panel?: React.ComponentType<{}> | undefined; endpointPolicyProtections?: React.ComponentType<{}> | undefined; osquery_automated_response_actions?: React.ComponentType<{}> | undefined; }" ], "path": "x-pack/plugins/security_solution/public/common/lib/upsellings/types.ts", "deprecated": false, @@ -2060,7 +2100,7 @@ "label": "UpsellingSectionId", "description": [], "signature": [ - "\"entity_analytics_panel\" | \"endpointPolicyProtections\"" + "\"entity_analytics_panel\" | \"endpointPolicyProtections\" | \"osquery_automated_response_actions\"" ], "path": "x-pack/plugins/security_solution/public/common/lib/upsellings/types.ts", "deprecated": false, diff --git a/api_docs/security_solution.mdx b/api_docs/security_solution.mdx index c64f8c3f50052..90c9f0ff7cde5 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'securitySolution'] --- import securitySolutionObj from './security_solution.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/security-solution](https://github.com/orgs/elastic/teams/secur | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 192 | 2 | 126 | 32 | +| 194 | 2 | 128 | 32 | ## Client diff --git a/api_docs/security_solution_ess.mdx b/api_docs/security_solution_ess.mdx index a9739d6975107..021a68466fba6 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: 2023-08-08 +date: 2023-08-10 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 ba832361ce496..01b4591d7d5cb 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: 2023-08-08 +date: 2023-08-10 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 459fdbaba17f1..d74013cbdb736 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: 2023-08-08 +date: 2023-08-10 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 5f07e440f3f62..3754e22fb88fa 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: 2023-08-08 +date: 2023-08-10 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 d0d3c45b346be..d47db0b6fd0fd 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: 2023-08-08 +date: 2023-08-10 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 36c1c386fe626..6253d454a38f7 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: 2023-08-08 +date: 2023-08-10 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 dd82b7a7820c6..a0434ac17a210 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'share'] --- import shareObj from './share.devdocs.json'; diff --git a/api_docs/snapshot_restore.mdx b/api_docs/snapshot_restore.mdx index f8ab5e8b4628b..0a17014d3618b 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: 2023-08-08 +date: 2023-08-10 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 53d46e39ab72c..2c72ab3b89813 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: 2023-08-08 +date: 2023-08-10 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 7e05dfd474d7a..c7554bc62fcf2 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: 2023-08-08 +date: 2023-08-10 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 0bf6d4874a9a8..86bf629608c0a 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: 2023-08-08 +date: 2023-08-10 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 868d29e007c8f..31642e5fbb806 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: 2023-08-08 +date: 2023-08-10 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 746ecac6f05e1..d8cc15b0e578c 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: 2023-08-08 +date: 2023-08-10 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 0c6166a26328a..d6f986fc4a44c 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: 2023-08-08 +date: 2023-08-10 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 ade3334eb49c2..40cb64ab84f17 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: 2023-08-08 +date: 2023-08-10 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 b0ee09e8d8339..450979f04eccb 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'telemetryManagementSection'] --- import telemetryManagementSectionObj from './telemetry_management_section.devdocs.json'; diff --git a/api_docs/text_based_languages.mdx b/api_docs/text_based_languages.mdx index 5caa041d59d6d..eed262ea515d7 100644 --- a/api_docs/text_based_languages.mdx +++ b/api_docs/text_based_languages.mdx @@ -8,7 +8,7 @@ slug: /kibana-dev-docs/api/textBasedLanguages title: "textBasedLanguages" image: https://source.unsplash.com/400x175/?github description: API docs for the textBasedLanguages plugin -date: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'textBasedLanguages'] --- import textBasedLanguagesObj from './text_based_languages.devdocs.json'; diff --git a/api_docs/threat_intelligence.mdx b/api_docs/threat_intelligence.mdx index e134dec835ed6..34122a05b3b95 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: 2023-08-08 +date: 2023-08-10 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 a8e4b3b5a20f8..63d40f7edeff2 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: 2023-08-08 +date: 2023-08-10 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 4d0f82ab99596..4b2f1c6453716 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'transform'] --- import transformObj from './transform.devdocs.json'; diff --git a/api_docs/triggers_actions_ui.devdocs.json b/api_docs/triggers_actions_ui.devdocs.json index 2c72f5d31c911..4e3966581d22a 100644 --- a/api_docs/triggers_actions_ui.devdocs.json +++ b/api_docs/triggers_actions_ui.devdocs.json @@ -450,6 +450,112 @@ ], "initialIsOpen": false }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.executeAction", + "type": "Function", + "tags": [], + "label": "executeAction", + "description": [], + "signature": [ + "({\n id,\n params,\n http,\n signal,\n}: { id: string; http: ", + { + "pluginId": "@kbn/core-http-browser", + "scope": "common", + "docId": "kibKbnCoreHttpBrowserPluginApi", + "section": "def-common.HttpSetup", + "text": "HttpSetup" + }, + "; params: Record; signal?: AbortSignal | undefined; }) => Promise<", + { + "pluginId": "actions", + "scope": "common", + "docId": "kibActionsPluginApi", + "section": "def-common.ActionTypeExecutorResult", + "text": "ActionTypeExecutorResult" + }, + ">" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/action_connector_api/execute.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.executeAction.$1", + "type": "Object", + "tags": [], + "label": "{\n id,\n params,\n http,\n signal,\n}", + "description": [], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/action_connector_api/execute.ts", + "deprecated": false, + "trackAdoption": false, + "children": [ + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.executeAction.$1.id", + "type": "string", + "tags": [], + "label": "id", + "description": [], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/action_connector_api/execute.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.executeAction.$1.http", + "type": "Object", + "tags": [], + "label": "http", + "description": [], + "signature": [ + { + "pluginId": "@kbn/core-http-browser", + "scope": "common", + "docId": "kibKbnCoreHttpBrowserPluginApi", + "section": "def-common.HttpSetup", + "text": "HttpSetup" + } + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/action_connector_api/execute.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.executeAction.$1.params", + "type": "Object", + "tags": [], + "label": "params", + "description": [], + "signature": [ + "{ [x: string]: unknown; }" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/action_connector_api/execute.ts", + "deprecated": false, + "trackAdoption": false + }, + { + "parentPluginId": "triggersActionsUi", + "id": "def-public.executeAction.$1.signal", + "type": "Object", + "tags": [], + "label": "signal", + "description": [], + "signature": [ + "AbortSignal | undefined" + ], + "path": "x-pack/plugins/triggers_actions_ui/public/application/lib/action_connector_api/execute.ts", + "deprecated": false, + "trackAdoption": false + } + ] + } + ], + "returnComment": [], + "initialIsOpen": false + }, { "parentPluginId": "triggersActionsUi", "id": "def-public.ForLastExpression", @@ -1429,7 +1535,7 @@ "label": "TextAreaWithMessageVariables", "description": [], "signature": [ - "({ messageVariables, paramsProperty, index, inputTargetValue, isDisabled, editAction, label, errors, }: React.PropsWithChildren) => JSX.Element" + "({ messageVariables, paramsProperty, index, inputTargetValue, isDisabled, editAction, label, errors, helpText, }: React.PropsWithChildren) => JSX.Element" ], "path": "x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.tsx", "deprecated": false, @@ -1440,7 +1546,7 @@ "id": "def-public.TextAreaWithMessageVariables.$1", "type": "CompoundType", "tags": [], - "label": "{\n messageVariables,\n paramsProperty,\n index,\n inputTargetValue,\n isDisabled = false,\n editAction,\n label,\n errors,\n}", + "label": "{\n messageVariables,\n paramsProperty,\n index,\n inputTargetValue,\n isDisabled = false,\n editAction,\n label,\n errors,\n helpText,\n}", "description": [], "signature": [ "React.PropsWithChildren" diff --git a/api_docs/triggers_actions_ui.mdx b/api_docs/triggers_actions_ui.mdx index 9eafa3e8da610..84aba97cc4adc 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'triggersActionsUi'] --- import triggersActionsUiObj from './triggers_actions_ui.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 | |-------------------|-----------|------------------------|-----------------| -| 564 | 12 | 538 | 50 | +| 570 | 12 | 544 | 50 | ## Client diff --git a/api_docs/ui_actions.devdocs.json b/api_docs/ui_actions.devdocs.json index 1335ccf655813..466038b9bb162 100644 --- a/api_docs/ui_actions.devdocs.json +++ b/api_docs/ui_actions.devdocs.json @@ -2241,6 +2241,27 @@ "deprecated": false, "trackAdoption": false }, + { + "parentPluginId": "uiActions", + "id": "def-public.VisualizeFieldContext.textBasedColumns", + "type": "Array", + "tags": [], + "label": "textBasedColumns", + "description": [], + "signature": [ + { + "pluginId": "expressions", + "scope": "common", + "docId": "kibExpressionsPluginApi", + "section": "def-common.DatatableColumn", + "text": "DatatableColumn" + }, + "[] | undefined" + ], + "path": "src/plugins/ui_actions/public/types.ts", + "deprecated": false, + "trackAdoption": false + }, { "parentPluginId": "uiActions", "id": "def-public.VisualizeFieldContext.originatingApp", diff --git a/api_docs/ui_actions.mdx b/api_docs/ui_actions.mdx index 01c5f50bac220..7cff9e38c01dc 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActions'] --- import uiActionsObj from './ui_actions.devdocs.json'; @@ -21,7 +21,7 @@ Contact [@elastic/appex-sharedux](https://github.com/orgs/elastic/teams/appex-sh | Public API count | Any count | Items lacking comments | Missing exports | |-------------------|-----------|------------------------|-----------------| -| 144 | 2 | 102 | 9 | +| 145 | 2 | 103 | 9 | ## Client diff --git a/api_docs/ui_actions_enhanced.mdx b/api_docs/ui_actions_enhanced.mdx index 3e22d68385fce..a574e50b1282b 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'uiActionsEnhanced'] --- import uiActionsEnhancedObj from './ui_actions_enhanced.devdocs.json'; diff --git a/api_docs/unified_histogram.mdx b/api_docs/unified_histogram.mdx index 3da5d56294975..e38231b65f207 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedHistogram'] --- import unifiedHistogramObj from './unified_histogram.devdocs.json'; diff --git a/api_docs/unified_search.mdx b/api_docs/unified_search.mdx index 03e9d55385d40..578b5f8165084 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch'] --- import unifiedSearchObj from './unified_search.devdocs.json'; diff --git a/api_docs/unified_search_autocomplete.mdx b/api_docs/unified_search_autocomplete.mdx index 153cbbc053047..a352625e3e118 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'unifiedSearch.autocomplete'] --- import unifiedSearchAutocompleteObj from './unified_search_autocomplete.devdocs.json'; diff --git a/api_docs/uptime.mdx b/api_docs/uptime.mdx index aeaf31dc6c99d..00c541219be11 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: 2023-08-08 +date: 2023-08-10 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 8d3fab6cb85b4..c0c067bb5ea27 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: 2023-08-08 +date: 2023-08-10 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 a87f8530bd772..48e4afa5a952c 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: 2023-08-08 +date: 2023-08-10 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 41ba7d449fded..cec241a512ef1 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: 2023-08-08 +date: 2023-08-10 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 a0b85ee1fcbae..0f3ccf018e385 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: 2023-08-08 +date: 2023-08-10 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 cf0915fb30f3c..c3b18a05c609f 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: 2023-08-08 +date: 2023-08-10 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 b474cae15bc68..75a89ea4a40eb 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: 2023-08-08 +date: 2023-08-10 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 5bc15be9f7c0f..5699386716742 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: 2023-08-08 +date: 2023-08-10 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 7643ddfaae90e..73ddb8d102d73 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: 2023-08-08 +date: 2023-08-10 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 d7fc9723f84a0..4185e8265e10c 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: 2023-08-08 +date: 2023-08-10 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 fe7f2cd1a24a0..c7f07b1d5229a 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: 2023-08-08 +date: 2023-08-10 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 925862995104a..e58e86f88b3ab 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: 2023-08-08 +date: 2023-08-10 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 68339735ba1b9..2e8de9a940af1 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: 2023-08-08 +date: 2023-08-10 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 c44837021f0c4..5df7d900f783c 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: 2023-08-08 +date: 2023-08-10 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 7b2d1ab51cdeb..aeefc7168a6e5 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: 2023-08-08 +date: 2023-08-10 tags: ['contributor', 'dev', 'apidocs', 'kibana', 'visualizations'] --- import visualizationsObj from './visualizations.devdocs.json'; diff --git a/config/serverless.yml b/config/serverless.yml index 43e9b86eb1f4a..7a79f262cea73 100644 --- a/config/serverless.yml +++ b/config/serverless.yml @@ -90,3 +90,6 @@ vis_type_timeseries.readOnly: true vis_type_vislib.readOnly: true vis_type_xy.readOnly: true input_control_vis.readOnly: true + +# Disable cases in stack management +xpack.cases.stack.enabled: false diff --git a/package.json b/package.json index 53f5526bf73dd..8962b9736814b 100644 --- a/package.json +++ b/package.json @@ -837,7 +837,7 @@ "deep-freeze-strict": "^1.1.1", "deepmerge": "^4.2.2", "del": "^6.1.0", - "elastic-apm-node": "^3.49.0", + "elastic-apm-node": "^3.49.1", "email-addresses": "^5.0.0", "execa": "^4.0.2", "expiry-js": "0.1.7", @@ -1395,7 +1395,7 @@ "blob-polyfill": "^7.0.20220408", "callsites": "^3.1.0", "chance": "1.0.18", - "chromedriver": "^114.0.2", + "chromedriver": "^115.0.1", "clean-webpack-plugin": "^3.0.0", "cli-table3": "^0.6.1", "compression-webpack-plugin": "^4.0.0", @@ -1444,6 +1444,7 @@ "faker": "^5.1.0", "fetch-mock": "^7.3.9", "file-loader": "^4.2.0", + "find-cypress-specs": "^1.35.1", "form-data": "^4.0.0", "geckodriver": "^4.0.0", "gulp-brotli": "^3.0.0", @@ -1526,6 +1527,7 @@ "sinon": "^7.4.2", "sort-package-json": "^1.53.1", "source-map": "^0.7.4", + "spec-change": "^1.7.1", "string-replace-loader": "^2.2.0", "style-loader": "^1.1.3", "stylelint": "^14.9.1", diff --git a/packages/core/application/core-application-browser-internal/src/utils/append_app_path.ts b/packages/core/application/core-application-browser-internal/src/utils/append_app_path.ts index 575e1f10a553e..afcdbfb18196a 100644 --- a/packages/core/application/core-application-browser-internal/src/utils/append_app_path.ts +++ b/packages/core/application/core-application-browser-internal/src/utils/append_app_path.ts @@ -8,7 +8,7 @@ import { removeSlashes } from './remove_slashes'; -export const appendAppPath = (appBasePath: string, path: string = '') => { +export const appendAppPath = (appBasePath = '', path: string = '') => { // Only prepend slash if not a hash or query path path = path === '' || path.startsWith('#') || path.startsWith('?') ? path : `/${path}`; // Do not remove trailing slash when in hashbang or basePath diff --git a/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.test.tsx b/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.test.tsx index d8e409cad2e09..ad7c6d8fc52a5 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.test.tsx +++ b/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.test.tsx @@ -158,6 +158,7 @@ describe('start', () => { ] `); }); + it('strips off "snapshot" from the kibana version if present', async () => { const { chrome, service } = await start({ options: { browserSupportsCsp: false, kibanaVersion: '8.0.0-SnAPshot' }, @@ -339,6 +340,24 @@ describe('start', () => { ] `); }); + + it('change visibility when EUI component in full screen', async () => { + const body = document.body; + const startDeps = defaultStartDeps([new FakeApp('foo')], 'foo'); + const { chrome } = await start({ startDeps }); + + // Chrome is initially visible + let isVisible = await Rx.lastValueFrom(chrome.getIsVisible$().pipe(Rx.take(1))); + expect(isVisible).toBe(true); + + // Add EUI class that should hide the chrome + body.classList.add('euiDataGrid__restrictBody'); + await new Promise((resolve) => setTimeout(resolve)); // wait next tick + + // Chrome should be hidden + isVisible = await Rx.lastValueFrom(chrome.getIsVisible$().pipe(Rx.take(1))); + expect(isVisible).toBe(false); + }); }); describe('badge', () => { diff --git a/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx b/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx index 0b575e4a0f215..76fef465d823c 100644 --- a/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx +++ b/packages/core/chrome/core-chrome-browser-internal/src/chrome_service.tsx @@ -79,6 +79,7 @@ export class ChromeService { private readonly recentlyAccessed = new RecentlyAccessedService(); private readonly docTitle = new DocTitleService(); private readonly projectNavigation = new ProjectNavigationService(); + private mutationObserver: MutationObserver | undefined; constructor(private readonly params: ConstructorParams) {} @@ -114,6 +115,53 @@ export class ChromeService { ); } + private setIsVisible = (isVisible: boolean) => this.isForceHidden$.next(!isVisible); + + /** + * Some EUI component can be toggled in Full screen (e.g. the EuiDataGrid). When they are toggled in full + * screen we want to hide the chrome, and when they are toggled back to normal we want to show the chrome. + */ + private handleEuiFullScreenChanges = () => { + const { body } = document; + // HTML class names that are added to the body when Eui components are toggled in full screen + const classesOnBodyWhenEuiFullScreen = ['euiDataGrid__restrictBody']; + + let isChromeHiddenForEuiFullScreen = false; + let isChromeVisible = false; + + this.isVisible$.pipe(takeUntil(this.stop$)).subscribe((isVisible) => { + isChromeVisible = isVisible; + }); + + const onBodyClassesChange = () => { + const { className } = body; + if ( + classesOnBodyWhenEuiFullScreen.some((name) => className.includes(name)) && + isChromeVisible + ) { + isChromeHiddenForEuiFullScreen = true; + this.setIsVisible(false); + } else if ( + classesOnBodyWhenEuiFullScreen.every((name) => !className.includes(name)) && + !isChromeVisible && + isChromeHiddenForEuiFullScreen + ) { + isChromeHiddenForEuiFullScreen = false; + this.setIsVisible(true); + } + }; + + this.mutationObserver = new MutationObserver((mutationList) => { + mutationList.forEach((mutation) => { + if (mutation.type === 'attributes' && mutation.attributeName === 'class') { + onBodyClassesChange(); + } + }); + }); + + this.mutationObserver.observe(body, { attributes: true }); + }; + public setup({ analytics }: SetupDeps) { const docTitle = this.docTitle.setup({ document: window.document }); registerAnalyticsContextProvider(analytics, docTitle.title$); @@ -128,6 +176,7 @@ export class ChromeService { customBranding, }: StartDeps): Promise { this.initVisibility(application); + this.handleEuiFullScreenChanges(); const globalHelpExtensionMenuLinks$ = new BehaviorSubject( [] @@ -379,7 +428,7 @@ export class ChromeService { getIsVisible$: () => this.isVisible$, - setIsVisible: (isVisible: boolean) => this.isForceHidden$.next(!isVisible), + setIsVisible: this.setIsVisible.bind(this), getBadge$: () => badge$.pipe(takeUntil(this.stop$)), @@ -463,5 +512,6 @@ export class ChromeService { this.navLinks.stop(); this.projectNavigation.stop(); this.stop$.next(); + this.mutationObserver?.disconnect(); } } diff --git a/packages/kbn-check-mappings-update-cli/current_mappings.json b/packages/kbn-check-mappings-update-cli/current_mappings.json index 748b27fe13dd1..c2c9022b42b2a 100644 --- a/packages/kbn-check-mappings-update-cli/current_mappings.json +++ b/packages/kbn-check-mappings-update-cli/current_mappings.json @@ -629,17 +629,6 @@ } } }, - "search": { - "dynamic": false, - "properties": { - "title": { - "type": "text" - }, - "description": { - "type": "text" - } - } - }, "alert": { "dynamic": false, "properties": { @@ -931,6 +920,17 @@ } } }, + "search": { + "dynamic": false, + "properties": { + "title": { + "type": "text" + }, + "description": { + "type": "text" + } + } + }, "visualization": { "dynamic": false, "properties": { @@ -1657,6 +1657,9 @@ "auth_type": { "type": "keyword" }, + "connection_type": { + "type": "keyword" + }, "username": { "type": "keyword" }, @@ -1743,6 +1746,12 @@ }, "broker_buffer_size": { "type": "integer" + }, + "required_acks": { + "type": "integer" + }, + "channel_buffer_size": { + "type": "integer" } } }, diff --git a/packages/kbn-optimizer/limits.yml b/packages/kbn-optimizer/limits.yml index b08ff89b5dd09..d63b19f67f783 100644 --- a/packages/kbn-optimizer/limits.yml +++ b/packages/kbn-optimizer/limits.yml @@ -129,7 +129,7 @@ pageLoadAssetSize: snapshotRestore: 79032 spaces: 57868 stackAlerts: 58316 - stackConnectors: 36314 + stackConnectors: 52131 synthetics: 40958 telemetry: 51957 telemetryManagementSection: 38586 diff --git a/packages/kbn-user-profile-components/index.ts b/packages/kbn-user-profile-components/index.ts index 5f8d1db6fcf62..c3f5650c17837 100644 --- a/packages/kbn-user-profile-components/index.ts +++ b/packages/kbn-user-profile-components/index.ts @@ -19,6 +19,17 @@ export { getUserDisplayName } from './src/user_profile'; export type { UserProfile, UserProfileUserInfo, - UserProfileAvatarData, GetUserDisplayNameParams, } from './src/user_profile'; +export type { + UserProfileData, + UserSettingsData, + DarkModeValue, + UserProfileAvatarData, +} from './src/types'; +export { useUpdateUserProfile, type UpdateUserProfileHook } from './src/hooks'; +export { + UserProfilesKibanaProvider, + UserProfilesProvider, + type UserProfilesKibanaDependencies, +} from './src/services'; diff --git a/packages/kbn-user-profile-components/src/hooks/index.ts b/packages/kbn-user-profile-components/src/hooks/index.ts new file mode 100644 index 0000000000000..c3f6c8f3b973f --- /dev/null +++ b/packages/kbn-user-profile-components/src/hooks/index.ts @@ -0,0 +1,9 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +export { useUpdateUserProfile, type UpdateUserProfileHook } from './use_update_user_profile'; diff --git a/x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.test.tsx b/packages/kbn-user-profile-components/src/hooks/use_update_user_profile.test.tsx similarity index 52% rename from x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.test.tsx rename to packages/kbn-user-profile-components/src/hooks/use_update_user_profile.test.tsx index 6690e9b6cf946..3f3621b8aae18 100644 --- a/x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.test.tsx +++ b/packages/kbn-user-profile-components/src/hooks/use_update_user_profile.test.tsx @@ -1,58 +1,82 @@ /* * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. */ -import { act, renderHook } from '@testing-library/react-hooks'; -import { BehaviorSubject, first, lastValueFrom } from 'rxjs'; -import { coreMock } from '@kbn/core/public/mocks'; - -import { getUseUpdateUserProfile } from './use_update_user_profile'; -import { UserProfileAPIClient } from './user_profile_api_client'; +import React from 'react'; +import { act, renderHook, type WrapperComponent } from '@testing-library/react-hooks'; +import { BehaviorSubject, first, lastValueFrom, of } from 'rxjs'; -const { notifications, http } = coreMock.createStart(); -const userProfileApiClient = new UserProfileAPIClient(http); -const useUpdateUserProfile = getUseUpdateUserProfile({ - apiClient: userProfileApiClient, - notifications, -}); +import { coreMock } from '@kbn/core/public/mocks'; -describe('useUpdateUserProfile', () => { - let spy: jest.SpyInstance; +import { useUpdateUserProfile } from './use_update_user_profile'; +import { UserProfilesKibanaProvider } from '../services'; + +const core = coreMock.createStart(); +const security = { + authc: {}, + navControlService: {}, + userProfiles: { + getCurrent: jest.fn(), + bulkGet: jest.fn(), + suggest: jest.fn(), + update: jest.fn(), + userProfile$: of({}), + }, + uiApi: {}, +}; + +const { http, notifications } = core; + +const wrapper: WrapperComponent = ({ children }) => ( + () => () => undefined} + > + {children} + +); + +describe('useUpdateUserProfile() hook', () => { + const updateUserProfiles = jest.fn(); beforeEach(() => { - spy = jest.spyOn(userProfileApiClient, 'update'); + security.userProfiles = { + ...security.userProfiles, + update: updateUserProfiles, + userProfile$: of({}), + }; + + updateUserProfiles.mockReset().mockResolvedValue({}); http.get.mockReset(); http.post.mockReset().mockResolvedValue(undefined); notifications.toasts.addSuccess.mockReset(); }); - afterEach(() => { - spy.mockRestore(); - }); - test('should call the apiClient with the updated user profile data', async () => { - const { result } = renderHook(() => useUpdateUserProfile()); + const { result } = renderHook(() => useUpdateUserProfile(), { wrapper }); const { update } = result.current; await act(async () => { update({ userSettings: { darkMode: 'dark' } }); }); - expect(spy).toHaveBeenCalledWith({ userSettings: { darkMode: 'dark' } }); + expect(updateUserProfiles).toHaveBeenCalledWith({ userSettings: { darkMode: 'dark' } }); }); test('should update the isLoading state while updating', async () => { - const { result, waitForNextUpdate } = renderHook(() => useUpdateUserProfile()); - const { update } = result.current; - const httpPostDone = new BehaviorSubject(false); - - http.post.mockImplementationOnce(async () => { - await lastValueFrom(httpPostDone.pipe(first((v) => v === true))); + const updateDone = new BehaviorSubject(false); + updateUserProfiles.mockImplementationOnce(async () => { + await lastValueFrom(updateDone.pipe(first((v) => v === true))); }); + const { result, waitForNextUpdate } = renderHook(() => useUpdateUserProfile(), { wrapper }); + const { update } = result.current; + expect(result.current.isLoading).toBeFalsy(); await act(async () => { @@ -61,16 +85,18 @@ describe('useUpdateUserProfile', () => { expect(result.current.isLoading).toBeTruthy(); - httpPostDone.next(true); // Resolve the http.post promise + updateDone.next(true); // Resolve the http.post promise await waitForNextUpdate(); expect(result.current.isLoading).toBeFalsy(); }); test('should show a success notification by default', async () => { - const { result } = renderHook(() => useUpdateUserProfile()); + const { result } = renderHook(() => useUpdateUserProfile(), { wrapper }); const { update } = result.current; + expect(notifications.toasts.addSuccess).not.toHaveBeenCalled(); + await act(async () => { await update({ userSettings: { darkMode: 'dark' } }); }); @@ -88,11 +114,7 @@ describe('useUpdateUserProfile', () => { return true; }; - const { result } = renderHook(() => - useUpdateUserProfile({ - pageReloadChecker, - }) - ); + const { result } = renderHook(() => useUpdateUserProfile({ pageReloadChecker }), { wrapper }); const { update } = result.current; await act(async () => { @@ -114,21 +136,17 @@ describe('useUpdateUserProfile', () => { const pageReloadChecker = jest.fn(); const initialValue = { foo: 'bar' }; - http.get.mockReset().mockResolvedValue({ data: initialValue }); - const userProfileApiClient2 = new UserProfileAPIClient(http); - await userProfileApiClient2.getCurrent(); // Sets the initial value of the userProfile$ Observable - - const { result } = renderHook(() => - getUseUpdateUserProfile({ - apiClient: userProfileApiClient2, - notifications, - })({ - pageReloadChecker, - }) - ); + + security.userProfiles = { + ...security.userProfiles, + userProfile$: of(initialValue), + }; + + const { result } = renderHook(() => useUpdateUserProfile({ pageReloadChecker }), { wrapper }); const { update } = result.current; const nextValue = { userSettings: { darkMode: 'light' as const } }; + await act(async () => { await update(nextValue); }); diff --git a/packages/kbn-user-profile-components/src/hooks/use_update_user_profile.tsx b/packages/kbn-user-profile-components/src/hooks/use_update_user_profile.tsx new file mode 100644 index 0000000000000..3e015fe92eac5 --- /dev/null +++ b/packages/kbn-user-profile-components/src/hooks/use_update_user_profile.tsx @@ -0,0 +1,136 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; +import React, { useCallback, useRef, useState } from 'react'; +import useObservable from 'react-use/lib/useObservable'; +import { i18n } from '@kbn/i18n'; + +import type { UserProfileData } from '../types'; +import { useUserProfiles } from '../services'; + +interface Props { + notificationSuccess?: { + /** Flag to indicate if a notification is shown after update. Default: `true` */ + enabled?: boolean; + /** Customize the title of the notification */ + title?: string; + /** Customize the "page reload needed" text of the notification */ + pageReloadText?: string; + }; + /** Predicate to indicate if the update requires a page reload */ + pageReloadChecker?: ( + previsous: UserProfileData | null | undefined, + next: UserProfileData + ) => boolean; +} + +const i18nTexts = { + notificationSuccess: { + title: i18n.translate( + 'userProfileComponents.updateUserProfile.notification.submitSuccessTitle', + { + defaultMessage: 'Profile updated', + } + ), + pageReloadText: i18n.translate( + 'userProfileComponents.updateUserProfile.notification.requiresPageReloadDescription', + { + defaultMessage: 'One or more settings require you to reload the page to take effect.', + } + ), + }, +}; + +export const useUpdateUserProfile = ({ + notificationSuccess = {}, + pageReloadChecker, +}: Props = {}) => { + const { userProfileApiClient, notifySuccess } = useUserProfiles(); + const { userProfile$ } = userProfileApiClient; + const { + enabled: notificationSuccessEnabled = true, + title: notificationTitle = i18nTexts.notificationSuccess.title, + pageReloadText = i18nTexts.notificationSuccess.pageReloadText, + } = notificationSuccess; + const [isLoading, setIsLoading] = useState(false); + const userProfileData = useObservable(userProfile$); + // Keep a snapshot before updating the user profile so we can compare previous and updated values + const userProfileSnapshot = useRef(); + + const showSuccessNotification = useCallback( + ({ isRefreshRequired = false }: { isRefreshRequired?: boolean } = {}) => { + if (isRefreshRequired) { + notifySuccess( + { + title: notificationTitle, + text: ( + + +

{pageReloadText}

+ window.location.reload()} + data-test-subj="windowReloadButton" + > + {i18n.translate( + 'userProfileComponents.updateUserProfile.notification.requiresPageReloadButtonLabel', + { + defaultMessage: 'Reload page', + } + )} + +
+
+ ), + }, + { + durationMs: 1000 * 60 * 5, + } + ); + } else { + notifySuccess({ title: notificationTitle }); + } + }, + [notificationTitle, notifySuccess, pageReloadText] + ); + + const onUserProfileUpdate = useCallback( + (updatedData: UserProfileData) => { + setIsLoading(false); + + if (notificationSuccessEnabled) { + const isRefreshRequired = pageReloadChecker?.(userProfileSnapshot.current, updatedData); + showSuccessNotification({ isRefreshRequired }); + } + }, + [notificationSuccessEnabled, showSuccessNotification, pageReloadChecker] + ); + + const update = useCallback( + (updatedData: D) => { + userProfileSnapshot.current = userProfileData; + setIsLoading(true); + return userProfileApiClient.update(updatedData).then(() => onUserProfileUpdate(updatedData)); + }, + [userProfileApiClient, onUserProfileUpdate, userProfileData] + ); + + return { + /** Update the user profile */ + update, + /** Handler to show a notification after the user profile has been updated */ + showSuccessNotification, + /** The current user profile data */ + userProfileData, + /** Flag to indicate if currently updating */ + isLoading, + }; +}; + +export type UpdateUserProfileHook = typeof useUpdateUserProfile; diff --git a/packages/kbn-user-profile-components/src/services.tsx b/packages/kbn-user-profile-components/src/services.tsx new file mode 100644 index 0000000000000..0e08ca911eb61 --- /dev/null +++ b/packages/kbn-user-profile-components/src/services.tsx @@ -0,0 +1,109 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import React, { FC, useContext } from 'react'; +import type { Observable } from 'rxjs'; +import type { NotificationsStart, ToastOptions } from '@kbn/core-notifications-browser'; +import type { MountPoint } from '@kbn/core-mount-utils-browser'; +import type { ThemeServiceStart } from '@kbn/core-theme-browser'; + +import type { UserProfileAPIClient } from './types'; + +type NotifyFn = ( + data: { title: string; text?: JSX.Element }, + options?: { durationMs?: number } +) => void; + +export interface Services { + userProfileApiClient: UserProfileAPIClient; + notifySuccess: NotifyFn; +} + +const UserProfilesContext = React.createContext(null); + +/** + * Abstract external service Provider. + */ +export const UserProfilesProvider: FC = ({ children, ...services }) => { + return {children}; +}; + +/** + * Kibana-specific service types. + */ +export interface UserProfilesKibanaDependencies { + /** CoreStart contract */ + core: { + notifications: NotificationsStart; + theme: ThemeServiceStart; + }; + security: { + userProfiles: UserProfileAPIClient; + }; + /** + * Handler from the '@kbn/kibana-react-plugin/public' Plugin + * + * ``` + * import { toMountPoint } from '@kbn/kibana-react-plugin/public'; + * ``` + */ + toMountPoint: ( + node: React.ReactNode, + options?: { theme$: Observable<{ readonly darkMode: boolean }> } + ) => MountPoint; +} + +/** + * Kibana-specific Provider that maps to known dependency types. + */ +export const UserProfilesKibanaProvider: FC = ({ + children, + ...services +}) => { + const { + core: { notifications, theme }, + security: { userProfiles: userProfileApiClient }, + toMountPoint, + } = services; + + return ( + { + const toastOptions: ToastOptions = {}; + if (options?.durationMs) { + toastOptions.toastLifeTimeMs = options.durationMs; + } + notifications.toasts.addSuccess( + { + title, + text: text ? toMountPoint(text, { theme$: theme.theme$ }) : undefined, + }, + toastOptions + ); + }} + > + {children} + + ); +}; + +/** + * React hook for accessing pre-wired services. + */ +export function useUserProfiles() { + const context = useContext(UserProfilesContext); + + if (!context) { + throw new Error( + 'UserProfilesContext is missing. Ensure your component or React root is wrapped with or .' + ); + } + + return context; +} diff --git a/packages/kbn-user-profile-components/src/types.ts b/packages/kbn-user-profile-components/src/types.ts new file mode 100644 index 0000000000000..77b6895756bdf --- /dev/null +++ b/packages/kbn-user-profile-components/src/types.ts @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Observable } from 'rxjs'; + +/** + * Avatar stored in user profile. + */ +export interface UserProfileAvatarData { + /** + * Optional initials (two letters) of the user to use as avatar if avatar picture isn't specified. + */ + initials?: string; + /** + * Background color of the avatar when initials are used. + */ + color?: string; + /** + * Base64 data URL for the user avatar image. + */ + imageUrl?: string | null; +} + +export type DarkModeValue = '' | 'dark' | 'light'; + +/** + * User settings stored in the data object of the User Profile + */ +export interface UserSettingsData { + darkMode?: DarkModeValue; +} + +export interface UserProfileData { + avatar?: UserProfileAvatarData; + userSettings?: UserSettingsData; + [key: string]: unknown; +} + +export interface UserProfileAPIClient { + userProfile$: Observable; + update: (data: D) => Promise; +} diff --git a/packages/kbn-user-profile-components/src/user_avatar.tsx b/packages/kbn-user-profile-components/src/user_avatar.tsx index 2413694317c27..1b2a2152f27fc 100644 --- a/packages/kbn-user-profile-components/src/user_avatar.tsx +++ b/packages/kbn-user-profile-components/src/user_avatar.tsx @@ -10,8 +10,9 @@ import type { EuiAvatarProps } from '@elastic/eui'; import { EuiAvatar, useEuiTheme } from '@elastic/eui'; import type { FunctionComponent } from 'react'; import React from 'react'; +import { UserProfileAvatarData } from './types'; -import type { UserProfile, UserProfileUserInfo, UserProfileAvatarData } from './user_profile'; +import type { UserProfile, UserProfileUserInfo } from './user_profile'; import { getUserAvatarColor, getUserAvatarInitials, diff --git a/packages/kbn-user-profile-components/src/user_profile.ts b/packages/kbn-user-profile-components/src/user_profile.ts index 4d0803ad6dbec..965f5e9706e8e 100644 --- a/packages/kbn-user-profile-components/src/user_profile.ts +++ b/packages/kbn-user-profile-components/src/user_profile.ts @@ -7,6 +7,7 @@ */ import { VISUALIZATION_COLORS } from '@elastic/eui'; +import type { UserProfileAvatarData, UserProfileData } from './types'; /** * IMPORTANT: @@ -60,29 +61,6 @@ export interface UserProfileUserInfo { full_name?: string; } -/** - * Placeholder for data stored in user profile. - */ -export type UserProfileData = Record; - -/** - * Avatar stored in user profile. - */ -export interface UserProfileAvatarData { - /** - * Optional initials (two letters) of the user to use as avatar if avatar picture isn't specified. - */ - initials?: string; - /** - * Background color of the avatar when initials are used. - */ - color?: string; - /** - * Base64 data URL for the user avatar image. - */ - imageUrl?: string | null; -} - export const USER_AVATAR_FALLBACK_CODE_POINT = 97; // code point for lowercase "a" export const USER_AVATAR_MAX_INITIALS = 2; diff --git a/packages/kbn-user-profile-components/src/user_tooltip.tsx b/packages/kbn-user-profile-components/src/user_tooltip.tsx index c2678996aebb3..76b7ca1414274 100644 --- a/packages/kbn-user-profile-components/src/user_tooltip.tsx +++ b/packages/kbn-user-profile-components/src/user_tooltip.tsx @@ -11,9 +11,10 @@ import { EuiToolTip, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; import type { FunctionComponent } from 'react'; import React from 'react'; -import type { UserProfileUserInfo, UserProfileAvatarData } from './user_profile'; +import type { UserProfileUserInfo } from './user_profile'; import { UserAvatar } from './user_avatar'; import { getUserDisplayName } from './user_profile'; +import { UserProfileAvatarData } from './types'; /** * Props of {@link UserToolTip} component diff --git a/packages/kbn-user-profile-components/tsconfig.json b/packages/kbn-user-profile-components/tsconfig.json index 6f64745691be8..a602ca242d733 100644 --- a/packages/kbn-user-profile-components/tsconfig.json +++ b/packages/kbn-user-profile-components/tsconfig.json @@ -13,7 +13,11 @@ ], "kbn_references": [ "@kbn/i18n", - "@kbn/i18n-react" + "@kbn/i18n-react", + "@kbn/core-notifications-browser", + "@kbn/core", + "@kbn/core-theme-browser", + "@kbn/core-mount-utils-browser", ], "exclude": [ "target/**/*", diff --git a/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts b/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts index c5ce6a38d9dc9..d0b9d01272b24 100644 --- a/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts +++ b/src/core/server/integration_tests/saved_objects/migrations/group2/check_registered_types.test.ts @@ -105,7 +105,7 @@ describe('checking migration metadata changes on all registered SO types', () => "infrastructure-ui-source": "113182d6895764378dfe7fa9fa027244f3a457c4", "ingest-agent-policies": "f11cc19275f4c3e4ee7c5cd6423b6706b21b989d", "ingest-download-sources": "d7edc5e588d9afa61c4b831604582891c54ef1c7", - "ingest-outputs": "bffa0fd93dfdde904d7f5aff77df72d1c35938d9", + "ingest-outputs": "b4e636b13a5d0f89f0400fb67811d4cca4736eb0", "ingest-package-policies": "55816507db0134b8efbe0509e311a91ce7e1c6cc", "ingest_manager_settings": "418311b03c8eda53f5d2ea6f54c1356afaa65511", "inventory-view": "b8683c8e352a286b4aca1ab21003115a4800af83", diff --git a/src/dev/ci_setup/setup_env.sh b/src/dev/ci_setup/setup_env.sh index 085f433a2218b..2bcf3775183e5 100644 --- a/src/dev/ci_setup/setup_env.sh +++ b/src/dev/ci_setup/setup_env.sh @@ -128,6 +128,7 @@ export PATH="$PATH:$yarnGlobalDir" # use a proxy to fetch chromedriver/geckodriver asset export GECKODRIVER_CDNURL="https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache" +export CHROMEDRIVER_LEGACY_CDNURL="https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache" export CHROMEDRIVER_CDNURL="https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache" export CHROMEDRIVER_CDNBINARIESURL="https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache" export RE2_DOWNLOAD_MIRROR="https://us-central1-elastic-kibana-184716.cloudfunctions.net/kibana-ci-proxy-cache" diff --git a/src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts b/src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts index b59a8ee2c5166..dfeff855f867f 100644 --- a/src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts +++ b/src/plugins/chart_expressions/expression_heatmap/common/types/expression_renderers.ts @@ -10,7 +10,11 @@ import type { PaletteRegistry } from '@kbn/coloring'; import type { ChartsPluginSetup, ChartsPluginStart } from '@kbn/charts-plugin/public'; import type { DatatableUtilitiesService } from '@kbn/data-plugin/common'; import type { IFieldFormat, SerializedFieldFormat } from '@kbn/field-formats-plugin/common'; -import type { RangeSelectContext, ValueClickContext } from '@kbn/embeddable-plugin/public'; +import type { + RangeSelectContext, + ValueClickContext, + MultiValueClickContext, +} from '@kbn/embeddable-plugin/public'; import type { PersistedState } from '@kbn/visualizations-plugin/public'; import { IInterpreterRenderHandlers } from '@kbn/expressions-plugin/common'; import type { HeatmapExpressionProps } from './expression_functions'; @@ -25,6 +29,11 @@ export interface BrushEvent { data: RangeSelectContext['data']; } +export interface MultiFilterEvent { + name: 'multiFilter'; + data: MultiValueClickContext['data']; +} + export type FormatFactory = (mapping?: SerializedFieldFormat) => IFieldFormat; export type HeatmapRenderProps = HeatmapExpressionProps & { @@ -35,6 +44,7 @@ export type HeatmapRenderProps = HeatmapExpressionProps & { datatableUtilities: DatatableUtilitiesService; onClickValue: (data: FilterEvent['data']) => void; onSelectRange: (data: BrushEvent['data']) => void; + onClickMultiValue: (data: MultiFilterEvent['data']) => void; paletteService: PaletteRegistry; uiState: PersistedState; interactive: boolean; diff --git a/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.test.tsx b/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.test.tsx index 34b4df99c9af4..eef7fd3eb6aba 100644 --- a/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.test.tsx +++ b/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.test.tsx @@ -14,6 +14,8 @@ import { GeometryValue, XYChartSeriesIdentifier, Tooltip, + TooltipAction, + TooltipValue, } from '@elastic/charts'; import { chartPluginMock } from '@kbn/charts-plugin/public/mocks'; import { EmptyPlaceholder } from '@kbn/charts-plugin/public'; @@ -121,6 +123,7 @@ describe('HeatmapComponent', function () { uiState, onClickValue: jest.fn(), onSelectRange: jest.fn(), + onClickMultiValue: jest.fn(), datatableUtilities: createDatatableUtilitiesMock(), paletteService: palettesRegistry, formatFactory: formatService.deserialize, @@ -444,4 +447,67 @@ describe('HeatmapComponent', function () { expect(settingsComponent.prop('ariaUseDefaultSummary')).toEqual(true); }); }); + + describe('tooltip', () => { + it('should not have actions if chart is not interactive', () => { + const component = shallowWithIntl(); + const tooltip = component.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions).toBeUndefined(); + }); + it('should have tooltip actions when the chart is fully configured and interactive', () => { + const component = shallowWithIntl(); + const tooltip = component.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions?.length).toBe(1); + expect(actions).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + onSelect: expect.any(Function), + disabled: expect.any(Function), + }), + ]) + ); + }); + + it('selecting correct actions calls a callback with correct filter data', () => { + const component = shallowWithIntl(); + const tooltip = component.find(Tooltip); + const actions = tooltip.prop('actions') as TooltipAction[]; + actions[0].onSelect!( + [ + { + label: 'Dest', + datum: { + x: 'a', + y: 'd', + value: 0, + originalIndex: 0, + }, + } as TooltipValue, + { + label: 'Test', + datum: { + x: 'a', + y: 'd', + value: 0, + originalIndex: 0, + }, + } as TooltipValue, + ], + [] + ); + expect(wrapperProps.onClickMultiValue).toHaveBeenCalledWith({ + data: [ + { + cells: [ + { column: 1, row: 0 }, + { column: 2, row: 0 }, + ], + table: wrapperProps.data, + }, + ], + }); + }); + }); }); diff --git a/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.tsx b/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.tsx index 95856d1bae485..97e5979766089 100644 --- a/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.tsx +++ b/src/plugins/chart_expressions/expression_heatmap/public/components/heatmap_component.tsx @@ -18,12 +18,13 @@ import { ScaleType, Settings, TooltipType, - TooltipProps, ESFixedIntervalUnit, ESCalendarIntervalUnit, PartialTheme, SettingsProps, Tooltip, + SeriesIdentifier, + TooltipValue, } from '@elastic/charts'; import type { CustomPaletteState } from '@kbn/charts-plugin/public'; import { search } from '@kbn/data-plugin/public'; @@ -36,6 +37,7 @@ import { DEFAULT_LEGEND_SIZE, LegendSizeToPixels, } from '@kbn/visualizations-plugin/common/constants'; +import { i18n } from '@kbn/i18n'; import { DatatableColumn } from '@kbn/expressions-plugin/public'; import { IconChartHeatmap } from '@kbn/chart-icons'; import { getOverridesFor } from '@kbn/chart-expressions-common'; @@ -138,7 +140,7 @@ function computeColorRanges( export const HeatmapComponent: FC = memo( ({ - data, + data: table, args, timeZone, formatFactory, @@ -147,6 +149,7 @@ export const HeatmapComponent: FC = memo( datatableUtilities, onClickValue, onSelectRange, + onClickMultiValue, paletteService, uiState, interactive, @@ -204,8 +207,6 @@ export const HeatmapComponent: FC = memo( }, [renderComplete] ); - - const table = data; const valueAccessor = args.valueAccessor ? getAccessorByDimension(args.valueAccessor, table.columns) : undefined; @@ -221,10 +222,10 @@ export const HeatmapComponent: FC = memo( ? getAccessorByDimension(args.yAccessor, table.columns) : undefined; const splitChartRowAccessor = args.splitRowAccessor - ? getSplitDimensionAccessor(data.columns, args.splitRowAccessor, formatFactory) + ? getSplitDimensionAccessor(table.columns, args.splitRowAccessor, formatFactory) : undefined; const splitChartColumnAccessor = args.splitColumnAccessor - ? getSplitDimensionAccessor(data.columns, args.splitColumnAccessor, formatFactory) + ? getSplitDimensionAccessor(table.columns, args.splitColumnAccessor, formatFactory) : undefined; const xAxisColumnIndex = table.columns.findIndex((v) => v.id === xAccessor); @@ -260,6 +261,8 @@ export const HeatmapComponent: FC = memo( datatables: [formattedTable.table], }); + const hasTooltipActions = interactive; + const onElementClick = useCallback( (e: HeatmapElementEvent[]) => { const cell = e[0][0]; @@ -277,6 +280,7 @@ export const HeatmapComponent: FC = memo( }), column: xAxisColumnIndex, value: x, + table, }, ...(yAxisColumn ? [ @@ -290,6 +294,7 @@ export const HeatmapComponent: FC = memo( }), column: yAxisColumnIndex, value: y, + table, }, ] : []), @@ -317,15 +322,10 @@ export const HeatmapComponent: FC = memo( points.push(point); } } - const context: FilterEvent['data'] = { - data: points.map((point) => ({ - row: point.row, - column: point.column, - value: point.value, - table, - })), - }; - onClickValue(context); + + onClickValue({ + data: points, + }); }, [ args.splitColumnAccessor, @@ -472,10 +472,6 @@ export const HeatmapComponent: FC = memo( } } - const tooltip: TooltipProps = { - type: args.showTooltip ? TooltipType.Follow : TooltipType.None, - }; - const valueFormatter = (d: number) => { let value = d; @@ -598,6 +594,69 @@ export const HeatmapComponent: FC = memo( const xAxisTitle = args.gridConfig.xTitle ?? xAxisColumn?.name; const yAxisTitle = args.gridConfig.yTitle ?? yAxisColumn?.name; + const filterSelectedTooltipValues = ( + tooltipSelectedValues: Array< + TooltipValue, SeriesIdentifier> + > + ) => { + const { datum } = tooltipSelectedValues[0]; + if (!datum) { + return; + } + const { x, y } = datum; + + const shouldFilterByX = tooltipSelectedValues.some( + ({ label }) => label === xAxisColumn?.name + ); + + const shouldFilterByY = tooltipSelectedValues.some( + ({ label }) => label === yAxisColumn?.name + ); + + const cells = [ + ...(xAxisColumn && shouldFilterByX + ? [ + { + column: xAxisColumnIndex, + row: table.rows.findIndex((r) => { + if (!xAxisColumn) return false; + if (formattedTable.formattedColumns[xAxisColumn.id]) { + // stringify the value to compare with the chart value + return xValuesFormatter.convert(r[xAxisColumn.id]) === x; + } + return r[xAxisColumn.id] === x; + }), + }, + ] + : []), + ...(yAxisColumn && shouldFilterByY + ? [ + { + column: yAxisColumnIndex, + row: table.rows.findIndex((r) => { + if (formattedTable.formattedColumns[yAxisColumn.id]) { + // stringify the value to compare with the chart value + return yValuesFormatter.convert(r[yAxisColumn.id]) === y; + } + return r[yAxisColumn.id] === y; + }), + }, + ] + : []), + ]; + + if (cells.length) { + onClickMultiValue({ + data: [ + { + table, + cells, + }, + ], + }); + } + }; + return ( <> {showLegend !== undefined && ( @@ -619,7 +678,31 @@ export const HeatmapComponent: FC = memo( splitColumnAccessor={splitChartColumnAccessor} splitRowAccessor={splitChartRowAccessor} /> - + , SeriesIdentifier> + actions={ + hasTooltipActions + ? [ + { + disabled: (selected) => selected.length < 1, + label: (selected) => + selected.length === 0 + ? i18n.translate( + 'expressionHeatmap.tooltipActions.emptyFilterSelection', + { + defaultMessage: 'Select at least one series to filter', + } + ) + : i18n.translate('expressionHeatmap.tooltipActions.filterValues', { + defaultMessage: 'Filter {seriesNumber} series', + values: { seriesNumber: selected.length }, + }), + onSelect: filterSelectedTooltipValues, + }, + ] + : undefined + } + type={args.showTooltip ? TooltipType.Follow : TooltipType.None} + /> { handlers.event({ name: 'brush', data }); }; + const onClickMultiValue = (data: MultiFilterEvent['data']) => { + handlers.event({ name: 'multiFilter', data }); + }; const renderComplete = () => { const executionContext = handlers.getExecutionContext(); @@ -97,6 +101,7 @@ export const heatmapRenderer: ( chartsActiveCursorService={plugins.charts.activeCursor} syncTooltips={config.syncTooltips} syncCursor={config.syncCursor} + onClickMultiValue={onClickMultiValue} /> diff --git a/src/plugins/chart_expressions/expression_heatmap/public/utils/get_split_dimension_utils.test.ts b/src/plugins/chart_expressions/expression_heatmap/public/utils/get_split_dimension_utils.test.ts index 6b510b28c8060..6a4912f0af501 100644 --- a/src/plugins/chart_expressions/expression_heatmap/public/utils/get_split_dimension_utils.test.ts +++ b/src/plugins/chart_expressions/expression_heatmap/public/utils/get_split_dimension_utils.test.ts @@ -136,7 +136,7 @@ describe('createSplitPoint', () => { const point = createSplitPoint(splitDimension, 'c', defaultFormatter, data); expect(defaultFormatter).toHaveBeenCalledTimes(1); - expect(point).toStrictEqual({ column: 2, row: 1, value: 'c' }); + expect(point).toStrictEqual({ column: 2, row: 1, value: 'c', table: data }); }); it('returns undefined if value is not found in the table', () => { diff --git a/src/plugins/chart_expressions/expression_heatmap/public/utils/get_split_dimension_utils.ts b/src/plugins/chart_expressions/expression_heatmap/public/utils/get_split_dimension_utils.ts index e59d6c1aec28b..ec4c69ad233c3 100644 --- a/src/plugins/chart_expressions/expression_heatmap/public/utils/get_split_dimension_utils.ts +++ b/src/plugins/chart_expressions/expression_heatmap/public/utils/get_split_dimension_utils.ts @@ -51,6 +51,7 @@ export function createSplitPoint( row: splitPointRowIndex, column: table.columns.findIndex((column) => column.id === accessor), value: table.rows[splitPointRowIndex][accessor], + table, }; } } diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/components/__snapshots__/partition_vis_component.test.tsx.snap b/src/plugins/chart_expressions/expression_partition_vis/public/components/__snapshots__/partition_vis_component.test.tsx.snap index 65fa256304fde..0b8a82459fd97 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/components/__snapshots__/partition_vis_component.test.tsx.snap +++ b/src/plugins/chart_expressions/expression_partition_vis/public/components/__snapshots__/partition_vis_component.test.tsx.snap @@ -223,6 +223,15 @@ exports[`PartitionVisComponent should render correct structure for donut 1`] = ` > { + it('should not have actions if chart is not interactive', () => { + const component = shallow(); + const tooltip = component.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions).toBeUndefined(); + }); + it('should not have actions if chart has only metrics', () => { + const noBucketParams = { + ...wrapperProps, + visParams: { + ...wrapperProps.visParams, + dimensions: { ...wrapperProps.visParams.dimensions, buckets: [] }, + }, + }; + + const component = shallow(); + const tooltip = component.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions).toBeUndefined(); + }); + it('should have tooltip actions when the chart is fully configured and interactive', () => { + const component = shallow(); + const tooltip = component.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions?.length).toBe(1); + expect(actions).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + onSelect: expect.any(Function), + disabled: expect.any(Function), + }), + ]) + ); + }); + it('selecting correct actions calls a callback with correct filter data', () => { + const component = shallow(); + const tooltip = component.find(Tooltip); + const actions = tooltip.prop('actions') as TooltipAction[]; + actions[0].onSelect!( + [ + { + label: 'JetBeats', + color: '#79aad9', + isHighlighted: false, + isVisible: true, + seriesIdentifier: { + specId: 'donut', + key: 'JetBeats', + }, + value: 655, + formattedValue: '655', + valueAccessor: 1, + }, + ], + [] + ); + expect(wrapperProps.fireEvent).toHaveBeenCalledWith({ + name: 'multiFilter', + data: { data: [{ cells: [{ column: 0, row: 2 }], table: wrapperProps.visData }] }, + }); + }); + }); }); diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx index c151741158ac1..de1c977cbdadf 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx +++ b/src/plugins/chart_expressions/expression_partition_vis/public/components/partition_vis_component.tsx @@ -20,7 +20,9 @@ import { PartitionElementEvent, SettingsProps, Tooltip, + TooltipValue, } from '@elastic/charts'; +import { i18n } from '@kbn/i18n'; import { useEuiTheme } from '@elastic/eui'; import type { PaletteRegistry } from '@kbn/coloring'; import { LegendToggle, ChartsPluginSetup } from '@kbn/charts-plugin/public'; @@ -72,6 +74,7 @@ import { } from './partition_vis_component.styles'; import { filterOutConfig } from '../utils/filter_out_config'; import { ColumnCellValueActions, FilterEvent, StartDeps } from '../types'; +import { getMultiFilterCells } from '../utils/filter_helpers'; declare global { interface Window { @@ -205,6 +208,7 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { splitChartDimension, splitChartFormatter ); + props.fireEvent({ name: 'filter', data: { data } }); }, [metricColumn.id, originalVisData, props, visParams.dimensions.metrics.length] @@ -385,10 +389,7 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { ); const fixedViewPort = document.getElementById('app-fixed-viewport'); - const tooltip: TooltipProps = { - ...(fixedViewPort ? { boundary: fixedViewPort } : {}), - type: visParams.addTooltip ? TooltipType.Follow : TooltipType.None, - }; + const legendPosition = visParams.legendPosition ?? Position.Right; const splitChartColumnAccessor = splitColumn @@ -405,6 +406,49 @@ const PartitionVisComponent = (props: PartitionVisComponentProps) => { ? getColumnByAccessor(splitRow[0], visData.columns) : undefined; + const hasTooltipActions = + interactive && bucketAccessors.filter((a) => a !== 'metric-name').length > 0; + + const tooltip: TooltipProps = { + ...(fixedViewPort ? { boundary: fixedViewPort } : {}), + type: visParams.addTooltip ? TooltipType.Follow : TooltipType.None, + actions: hasTooltipActions + ? [ + { + disabled: (selected) => selected.length < 1, + label: (selected) => + selected.length === 0 + ? i18n.translate('expressionPartitionVis.tooltipActions.emptyFilterSelection', { + defaultMessage: 'Select at least one series to filter', + }) + : i18n.translate('expressionPartitionVis.tooltipActions.filterValues', { + defaultMessage: 'Filter {seriesNumber} series', + values: { seriesNumber: selected.length }, + }), + onSelect: ( + tooltipSelectedValues: Array< + TooltipValue, SeriesIdentifier> + > + ) => { + const cells = getMultiFilterCells(tooltipSelectedValues, bucketColumns, visData); + + props.fireEvent({ + name: 'multiFilter', + data: { + data: [ + { + table: visData, + cells, + }, + ], + }, + }); + }, + }, + ] + : undefined, + }; + /** * Checks whether data have all zero values. * If so, the no data container is loaded. diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/types.ts b/src/plugins/chart_expressions/expression_partition_vis/public/types.ts index 77636d3a41832..0beca2e79de8d 100755 --- a/src/plugins/chart_expressions/expression_partition_vis/public/types.ts +++ b/src/plugins/chart_expressions/expression_partition_vis/public/types.ts @@ -5,7 +5,11 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import type { CellValueContext, ValueClickContext } from '@kbn/embeddable-plugin/public'; +import type { + CellValueContext, + ValueClickContext, + MultiValueClickContext, +} from '@kbn/embeddable-plugin/public'; import { ChartsPluginSetup, ChartsPluginStart } from '@kbn/charts-plugin/public'; import { Plugin as ExpressionsPublicPlugin, @@ -36,6 +40,11 @@ export interface FilterEvent { data: ValueClickContext['data']; } +export interface MultiFilterEvent { + name: 'multiFilter'; + data: MultiValueClickContext['data']; +} + export interface CellValueAction { id: string; iconType: string; diff --git a/src/plugins/chart_expressions/expression_partition_vis/public/utils/filter_helpers.ts b/src/plugins/chart_expressions/expression_partition_vis/public/utils/filter_helpers.ts index c7b793d87149f..b34a4f74147d8 100644 --- a/src/plugins/chart_expressions/expression_partition_vis/public/utils/filter_helpers.ts +++ b/src/plugins/chart_expressions/expression_partition_vis/public/utils/filter_helpers.ts @@ -6,7 +6,7 @@ * Side Public License, v 1. */ -import { LayerValue, SeriesIdentifier } from '@elastic/charts'; +import { LayerValue, SeriesIdentifier, TooltipValue } from '@elastic/charts'; import { Datatable, DatatableColumn } from '@kbn/expressions-plugin/public'; import { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { ValueClickContext } from '@kbn/embeddable-plugin/public'; @@ -26,6 +26,45 @@ export const canFilter = async ( return Boolean(filters.length); }; +export const getMultiFilterCells = ( + tooltipSelectedValues: Array, SeriesIdentifier>>, + bucketColumns: Array>, + visData: Datatable +) => { + const row = visData.rows.findIndex((r) => + tooltipSelectedValues.every(({ valueAccessor, seriesIdentifier }) => { + if (typeof valueAccessor !== 'number' || valueAccessor < 1) return; + const index = valueAccessor - 1; + const bucketColumnId = bucketColumns[index].id; + if (!bucketColumnId) return; + return r[bucketColumnId] === seriesIdentifier.key; + }) + ); + + return tooltipSelectedValues + .map(({ valueAccessor }) => { + if (typeof valueAccessor !== 'number' || valueAccessor < 1) return; + const index = valueAccessor - 1; + const bucketColumnId = bucketColumns[index].id; + if (!bucketColumnId) return; + const column = visData.columns.findIndex((c) => c.id === bucketColumnId); + + if (column === -1) { + return; + } + + return { + column, + row, + }; + }) + .filter(nonNullable); +}; + +function nonNullable(v: T): v is NonNullable { + return v != null; +} + export const getFilterClickData = ( clickedLayers: LayerValue[], bucketColumns: Array>, diff --git a/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap b/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap index fb8faf123fa66..fe76259b65889 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap +++ b/src/plugins/chart_expressions/expression_xy/public/components/__snapshots__/xy_chart.test.tsx.snap @@ -565,6 +565,11 @@ exports[`XYChart component it renders area 1`] = ` "label": [Function], "onSelect": [Function], }, + Object { + "disabled": [Function], + "label": [Function], + "onSelect": [Function], + }, ] } headerFormatter={[Function]} @@ -1568,6 +1573,11 @@ exports[`XYChart component it renders bar 1`] = ` "label": [Function], "onSelect": [Function], }, + Object { + "disabled": [Function], + "label": [Function], + "onSelect": [Function], + }, ] } headerFormatter={[Function]} @@ -2571,6 +2581,11 @@ exports[`XYChart component it renders horizontal bar 1`] = ` "label": [Function], "onSelect": [Function], }, + Object { + "disabled": [Function], + "label": [Function], + "onSelect": [Function], + }, ] } headerFormatter={[Function]} @@ -3574,6 +3589,11 @@ exports[`XYChart component it renders line 1`] = ` "label": [Function], "onSelect": [Function], }, + Object { + "disabled": [Function], + "label": [Function], + "onSelect": [Function], + }, ] } headerFormatter={[Function]} @@ -4577,6 +4597,11 @@ exports[`XYChart component it renders stacked area 1`] = ` "label": [Function], "onSelect": [Function], }, + Object { + "disabled": [Function], + "label": [Function], + "onSelect": [Function], + }, ] } headerFormatter={[Function]} @@ -5580,6 +5605,11 @@ exports[`XYChart component it renders stacked bar 1`] = ` "label": [Function], "onSelect": [Function], }, + Object { + "disabled": [Function], + "label": [Function], + "onSelect": [Function], + }, ] } headerFormatter={[Function]} @@ -6583,6 +6613,11 @@ exports[`XYChart component it renders stacked horizontal bar 1`] = ` "label": [Function], "onSelect": [Function], }, + Object { + "disabled": [Function], + "label": [Function], + "onSelect": [Function], + }, ] } headerFormatter={[Function]} @@ -7616,6 +7651,11 @@ exports[`XYChart component split chart should render split chart if both, splitR "label": [Function], "onSelect": [Function], }, + Object { + "disabled": [Function], + "label": [Function], + "onSelect": [Function], + }, ] } headerFormatter={[Function]} @@ -8857,6 +8897,11 @@ exports[`XYChart component split chart should render split chart if splitColumnA "label": [Function], "onSelect": [Function], }, + Object { + "disabled": [Function], + "label": [Function], + "onSelect": [Function], + }, ] } headerFormatter={[Function]} @@ -10091,6 +10136,11 @@ exports[`XYChart component split chart should render split chart if splitRowAcce "label": [Function], "onSelect": [Function], }, + Object { + "disabled": [Function], + "label": [Function], + "onSelect": [Function], + }, ] } headerFormatter={[Function]} diff --git a/src/plugins/chart_expressions/expression_xy/public/components/tooltip/tooltip_actions.tsx b/src/plugins/chart_expressions/expression_xy/public/components/tooltip/tooltip_actions.tsx new file mode 100644 index 0000000000000..04cec59fd0b1d --- /dev/null +++ b/src/plugins/chart_expressions/expression_xy/public/components/tooltip/tooltip_actions.tsx @@ -0,0 +1,259 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +import { Datum, TooltipAction, TooltipValue, XYChartSeriesIdentifier } from '@elastic/charts'; +import { + getAccessorByDimension, + getColumnByAccessor, +} from '@kbn/visualizations-plugin/common/utils'; +import { FormatFactory } from '@kbn/visualization-ui-components'; +import { FieldFormat } from '@kbn/field-formats-plugin/common'; +import { i18n } from '@kbn/i18n'; +import { MultiClickTriggerEvent } from '@kbn/charts-plugin/public'; +import { Datatable } from '@kbn/expressions-plugin/common'; +import { BooleanRelation } from '@kbn/es-query'; +import { isTimeChart } from '../../../common/helpers'; +import { CommonXYDataLayerConfig } from '../../../common'; +import { DatatablesWithFormatInfo, LayersFieldFormats } from '../../helpers'; +import { MultiFilterEvent } from '../../types'; + +type XYTooltipValue = TooltipValue, XYChartSeriesIdentifier>; + +function nonNullable(v: T): v is NonNullable { + return v != null; +} + +export function createSplitPoint( + accessor: string | number, + value: string | number | undefined, + rows: Datatable['rows'], + table: Datatable +) { + if (value === undefined) return; + const splitPointRowIndex = rows.findIndex((row) => { + if (Array.isArray(value)) { + return value.includes(row[accessor]); + } + return row[accessor] === value; + }); + if (splitPointRowIndex !== -1) { + return { + row: splitPointRowIndex, + column: table.columns.findIndex((column) => column.id === accessor), + value: table.rows[splitPointRowIndex][accessor], + table, + }; + } +} + +export const getXSeriesPoint = ( + layer: CommonXYDataLayerConfig, + value: any, + fieldFormats: LayersFieldFormats, + formattedDatatables: DatatablesWithFormatInfo, + xAxisFormatter: FieldFormat, + formatFactory: FormatFactory +) => { + const { table } = layer; + const xColumn = layer.xAccessor && getColumnByAccessor(layer.xAccessor, table.columns); + const xAccessor = layer.xAccessor + ? getAccessorByDimension(layer.xAccessor, table.columns) + : undefined; + + const xFormat = xColumn ? fieldFormats[layer.layerId].xAccessors[xColumn.id] : undefined; + const currentXFormatter = + xAccessor && formattedDatatables[layer.layerId]?.formattedColumns[xAccessor] && xColumn + ? formatFactory(xFormat) + : xAxisFormatter; + + const rowIndex = table.rows.findIndex((row) => { + if (xAccessor) { + if (formattedDatatables[layer.layerId]?.formattedColumns[xAccessor]) { + // stringify the value to compare with the chart value + return currentXFormatter.convert(row[xAccessor]) === value; + } + return row[xAccessor] === value; + } + }); + + return { + row: rowIndex, + column: table.columns.findIndex((col) => col.id === xAccessor), + table, + value: xAccessor ? table.rows[rowIndex][xAccessor] : value, + }; +}; + +function getXSeriesValue(dataLayers: CommonXYDataLayerConfig[], firstSeries: XYTooltipValue) { + const layer = dataLayers.find((l) => + firstSeries.seriesIdentifier.seriesKeys.some((key: string | number) => + l.accessors.some( + (accessor) => getAccessorByDimension(accessor, l.table.columns) === key.toString() + ) + ) + ); + if (!layer) return; + + const { table } = layer; + + const xAccessor = layer.xAccessor + ? getAccessorByDimension(layer.xAccessor, table.columns) + : undefined; + + return xAccessor ? firstSeries.datum?.[xAccessor] : null; +} + +export const getTooltipActions = ( + dataLayers: CommonXYDataLayerConfig[], + onClickMultiValue: (data: MultiFilterEvent['data']) => void, + fieldFormats: LayersFieldFormats, + formattedDatatables: DatatablesWithFormatInfo, + xAxisFormatter: FieldFormat, + formatFactory: FormatFactory, + isEnabled?: boolean +) => { + if (!isEnabled) return; + const hasSplitAccessors = dataLayers.some((l) => l.splitAccessors?.length); + const hasXAxis = dataLayers.every((l) => l.xAccessor); + const isTimeViz = isTimeChart(dataLayers); + + if (!hasSplitAccessors && !hasXAxis) return; + + const xSeriesActions: Array> = hasXAxis + ? [ + { + disabled: () => !hasXAxis, + label: (_, [firstSeries]: XYTooltipValue[]) => { + if (isTimeViz) { + return i18n.translate('expressionXY.tooltipActions.filterByTime', { + defaultMessage: 'Filter by time', + }); + } + + const value = getXSeriesValue(dataLayers, firstSeries); + + return i18n.translate('expressionXY.tooltipActions.filterForXSeries', { + defaultMessage: 'Filter for {value}', + values: { + value: xAxisFormatter.convert(value) || value, + }, + }); + }, + + onSelect: (_: XYTooltipValue[], [firstSeries]: XYTooltipValue[]) => { + const layer = dataLayers.find((l) => + firstSeries.seriesIdentifier.seriesKeys.some((key: string | number) => + l.accessors.some( + (accessor) => getAccessorByDimension(accessor, l.table.columns) === key.toString() + ) + ) + ); + if (!layer) return; + + const value = getXSeriesValue(dataLayers, firstSeries); + + const xSeriesPoint = getXSeriesPoint( + layer, + value, + fieldFormats, + formattedDatatables, + xAxisFormatter, + formatFactory + ); + + const context: MultiFilterEvent['data'] = { + data: [ + { + table: xSeriesPoint.table, + cells: [ + { + row: xSeriesPoint.row, + column: xSeriesPoint.column, + }, + ], + }, + ], + }; + onClickMultiValue(context); + }, + }, + ] + : []; + + const breakdownTooltipActions: Array> = + hasSplitAccessors + ? [ + { + disabled: (selected) => selected.length < 1, + label: (selected) => + selected.length === 0 + ? i18n.translate('expressionXY.tooltipActions.emptyFilterSelection', { + defaultMessage: 'Select at least one series to filter', + }) + : i18n.translate('expressionXY.tooltipActions.filterValues', { + defaultMessage: 'Filter {seriesNumber} selected series', + values: { seriesNumber: selected.length }, + }), + onSelect: (tooltipSelectedValues: XYTooltipValue[]) => { + const layerIndexes: number[] = []; + tooltipSelectedValues.forEach((v) => { + const index = dataLayers.findIndex((l) => + v.seriesIdentifier.seriesKeys.some((key: string | number) => + l.accessors.some( + (accessor) => + getAccessorByDimension(accessor, l.table.columns) === key.toString() + ) + ) + ); + if (!layerIndexes.includes(index) && index !== -1) { + layerIndexes.push(index); + } + }); + + const filterPoints: MultiClickTriggerEvent['data']['data'] = []; + + if (!layerIndexes.length) return; + layerIndexes.forEach((layerIndex) => { + const layer = dataLayers[layerIndex]; + const { table } = layer; + + if (layer.splitAccessors?.length !== 1) return; + + const splitAccessor = getAccessorByDimension( + layer.splitAccessors[0], + table.columns + ); + const splitPoints = tooltipSelectedValues + .map((v) => + createSplitPoint( + splitAccessor, + v.datum?.[splitAccessor], + formattedDatatables[layer.layerId].table.rows, + table + ) + ) + .filter(nonNullable); + if (splitPoints.length) { + filterPoints.push({ + cells: splitPoints.map(({ row, column }) => ({ row, column })), + relation: BooleanRelation.OR, + table, + }); + } + }); + if (filterPoints?.length) { + onClickMultiValue({ + data: filterPoints, + }); + } + }, + }, + ] + : []; + return [...xSeriesActions, ...breakdownTooltipActions]; +}; diff --git a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.test.tsx b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.test.tsx index a43e4f1c05410..4a9e63c5ad7b3 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.test.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.test.tsx @@ -107,6 +107,7 @@ describe('XYChart component', () => { convertSpy = jest.fn((x) => x); getFormatSpy = jest.fn(); getFormatSpy.mockReturnValue({ convert: convertSpy }); + jest.clearAllMocks(); defaultProps = { data: dataPluginMock.createStartContract(), @@ -1140,126 +1141,6 @@ describe('XYChart component', () => { expect(headerFormatter).toBeUndefined(); }); - test('should not have tooltip actions for the detailed tooltip', () => { - const { args, data } = sampleArgs(); - - const wrapper = mountWithIntl( - - ); - - const tooltip = wrapper.find(Tooltip); - const actions = tooltip.prop('actions'); - expect(actions).toBeUndefined(); - }); - - test('should not have tooltip actions for no split accessor', () => { - const { args, data } = sampleArgs(); - - const wrapper = mountWithIntl( - - ); - - const tooltip = wrapper.find(Tooltip); - const actions = tooltip.prop('actions'); - expect(actions).toBeUndefined(); - }); - - test('should have tooltip actions for split accessor and default tooltip', () => { - const { args, data } = sampleArgs(); - - const wrapper = mountWithIntl( - - ); - - const tooltip = wrapper.find(Tooltip); - const actions = tooltip.prop('actions'); - expect(actions?.length).toBe(1); - expect(actions).toEqual( - expect.arrayContaining([ - expect.objectContaining({ - onSelect: expect.any(Function), - disabled: expect.any(Function), - }), - ]) - ); - }); - test('onElementClick returns correct context data', () => { const geometry: GeometryValue = { x: 5, y: 1, accessor: 'y1', mark: null, datum: {} }; const series = { @@ -3548,4 +3429,213 @@ describe('XYChart component', () => { } }); }); + + describe('tooltip actions', () => { + test('should not have tooltip actions for the detailed tooltip', () => { + const { args, data } = sampleArgs(); + + const wrapper = mountWithIntl( + + ); + + const tooltip = wrapper.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions).toBeUndefined(); + }); + test('should not have tooltip action when there is no split accessor nor x serie', () => { + const { args, data } = sampleArgs(); + + const wrapper = mountWithIntl( + + ); + + const tooltip = wrapper.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions).toBeUndefined(); + }); + test('should not have only x series tooltip action when there is no split accessor', () => { + const { args, data } = sampleArgs(); + + const wrapper = mountWithIntl( + + ); + + const tooltip = wrapper.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions?.length).toBe(1); + expect(actions).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + onSelect: expect.any(Function), + disabled: expect.any(Function), + }), + ]) + ); + }); + test('should have tooltip actions for split accessor and x series', () => { + const { args, data } = sampleArgs(); + + const wrapper = mountWithIntl( + + ); + + const tooltip = wrapper.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions?.length).toBe(2); + expect(actions).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + onSelect: expect.any(Function), + disabled: expect.any(Function), + }), + ]) + ); + }); + test('should have tooltip actions for split accessor', () => { + const { args, data } = sampleArgs(); + + const wrapper = mountWithIntl( + + ); + + const tooltip = wrapper.find(Tooltip); + const actions = tooltip.prop('actions'); + expect(actions?.length).toBe(1); + expect(actions).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + onSelect: expect.any(Function), + disabled: expect.any(Function), + }), + ]) + ); + }); + test('should call onClickMultiValue with a correct data for multiple series selected', () => {}); + test('should call onClickMultiValue with a correct data for time selected', () => {}); + }); }); diff --git a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx index e1ad4fa19d1c0..b8ac9d5cd0bbb 100644 --- a/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx +++ b/src/plugins/chart_expressions/expression_xy/public/components/xy_chart.tsx @@ -8,7 +8,6 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { css } from '@emotion/react'; -import { i18n } from '@kbn/i18n'; import { Chart, Settings, @@ -30,13 +29,12 @@ import { XYChartElementEvent, Tooltip, XYChartSeriesIdentifier, - TooltipValue, SettingsProps, } from '@elastic/charts'; import { partition } from 'lodash'; import { IconType } from '@elastic/eui'; import { PaletteRegistry } from '@kbn/coloring'; -import { Datatable, RenderMode } from '@kbn/expressions-plugin/common'; +import { RenderMode } from '@kbn/expressions-plugin/common'; import type { DataPublicPluginStart } from '@kbn/data-plugin/public'; import { EmptyPlaceholder, LegendToggle } from '@kbn/charts-plugin/public'; import { EventAnnotationServiceType } from '@kbn/event-annotation-plugin/public'; @@ -113,6 +111,7 @@ import { XYCurrentTime } from './xy_current_time'; import './xy_chart.scss'; import { TooltipHeader } from './tooltip'; import { LegendColorPickerWrapperContext, LegendColorPickerWrapper } from './legend_color_picker'; +import { createSplitPoint, getTooltipActions, getXSeriesPoint } from './tooltip/tooltip_actions'; declare global { interface Window { @@ -150,7 +149,6 @@ export type XYChartRenderProps = Omit & { function nonNullable(v: T): v is NonNullable { return v != null; } - function getValueLabelsStyling(isHorizontal: boolean): { displayValue: RecursivePartial; } { @@ -184,28 +182,6 @@ function getIconForSeriesType(layer: CommonXYDataLayerConfig): IconType { ); } -function createSplitPoint( - accessor: string | number, - value: string | number, - rows: Datatable['rows'], - table: Datatable -) { - const splitPointRowIndex = rows.findIndex((row) => { - if (Array.isArray(value)) { - return value.includes(row[accessor]); - } - return row[accessor] === value; - }); - if (splitPointRowIndex !== -1) { - return { - row: splitPointRowIndex, - column: table.columns.findIndex((column) => column.id === accessor), - value: table.rows[splitPointRowIndex][accessor], - table, - }; - } -} - export const XYChartReportable = React.memo(XYChart); export function XYChart({ @@ -560,59 +536,11 @@ export function XYChart({ valueLabels !== ValueLabelModes.HIDE && getValueLabelsStyling(shouldRotate); - const filterSelectedTooltipValues = ( - tooltipSelectedValues: Array< - TooltipValue, XYChartSeriesIdentifier> - > - ) => { - const layerIndexes: number[] = []; - tooltipSelectedValues.forEach((v) => { - const index = dataLayers.findIndex((l) => - v.seriesIdentifier.seriesKeys.some((key: string | number) => - l.accessors.some( - (accessor) => getAccessorByDimension(accessor, l.table.columns) === key.toString() - ) - ) - ); - if (!layerIndexes.includes(index) && index !== -1) { - layerIndexes.push(index); - } - }); - - if (!layerIndexes.length) return; - layerIndexes.forEach((layerIndex) => { - const layer = dataLayers[layerIndex]; - const { table } = layer; - - if (layer.splitAccessors?.length !== 1) return; - - const splitAccessor = getAccessorByDimension(layer.splitAccessors[0], table.columns); - const filterValues = tooltipSelectedValues - .map((v) => v.datum?.[splitAccessor]) - .filter(nonNullable); - - const splitPoints = filterValues - .map((v) => - createSplitPoint(splitAccessor, v, formattedDatatables[layer.layerId].table.rows, table) - ) - .filter(nonNullable); - if (splitPoints.length) { - onClickMultiValue({ - data: { - column: splitPoints[0].column, - value: splitPoints.map(({ value }) => value), - table, - }, - }); - } - }); - }; - const clickHandler: ElementClickListener = ([elementEvent]) => { // this cast is safe because we are rendering a cartesian chart const [xyGeometry, xySeries] = elementEvent as XYChartElementEvent; - const layerIndex = dataLayers.findIndex((l) => + const layer = dataLayers.find((l) => xySeries.seriesKeys.some((key: string | number) => l.accessors.some( (accessor) => getAccessorByDimension(accessor, l.table.columns) === key.toString() @@ -620,42 +548,19 @@ export function XYChart({ ) ); - if (layerIndex === -1) { + if (!layer) { return; } - - const layer = dataLayers[layerIndex]; const { table } = layer; - const xColumn = layer.xAccessor && getColumnByAccessor(layer.xAccessor, table.columns); - const xAccessor = layer.xAccessor - ? getAccessorByDimension(layer.xAccessor, table.columns) - : undefined; - - const xFormat = xColumn ? fieldFormats[layer.layerId].xAccessors[xColumn.id] : undefined; - const currentXFormatter = - xAccessor && formattedDatatables[layer.layerId]?.formattedColumns[xAccessor] && xColumn - ? formatFactory(xFormat) - : xAxisFormatter; - - const rowIndex = table.rows.findIndex((row) => { - if (xAccessor) { - if (formattedDatatables[layer.layerId]?.formattedColumns[xAccessor]) { - // stringify the value to compare with the chart value - return currentXFormatter.convert(row[xAccessor]) === xyGeometry.x; - } - return row[xAccessor] === xyGeometry.x; - } - }); - - const points = [ - { - row: rowIndex, - column: table.columns.findIndex((col) => col.id === xAccessor), - value: xAccessor ? table.rows[rowIndex][xAccessor] : xyGeometry.x, - table, - }, - ]; + const xSeriesPoint = getXSeriesPoint( + layer, + xyGeometry.x, + fieldFormats, + formattedDatatables, + xAxisFormatter, + formatFactory + ); const splitPoints: FilterEvent['data']['data'] = []; @@ -700,7 +605,7 @@ export function XYChart({ } const context: FilterEvent['data'] = { - data: [...points, ...splitPoints], + data: [xSeriesPoint, ...splitPoints], }; onClickValue(context); }; @@ -796,8 +701,6 @@ export function XYChart({ overflowX: 'hidden', position: uiState ? 'absolute' : 'relative', }); - // enable the tooltip actions only if there is at least one splitAccessor to the dataLayer - const hasTooltipActions = dataLayers.some((dataLayer) => dataLayer.splitAccessors) && interactive; const { theme: settingsThemeOverrides = {}, ...settingsOverrides } = getOverridesFor( overrides, @@ -844,25 +747,15 @@ export function XYChart({ ) : undefined } - actions={ - !args.detailedTooltip && hasTooltipActions - ? [ - { - disabled: (selected) => selected.length < 1, - label: (selected) => - selected.length === 0 - ? i18n.translate('expressionXY.tooltipActions.emptyFilterSelection', { - defaultMessage: 'Select at least one series to filter', - }) - : i18n.translate('expressionXY.tooltipActions.filterValues', { - defaultMessage: 'Filter {seriesNumber} series', - values: { seriesNumber: selected.length }, - }), - onSelect: filterSelectedTooltipValues, - }, - ] - : undefined - } + actions={getTooltipActions( + dataLayers, + onClickMultiValue, + fieldFormats, + formattedDatatables, + xAxisFormatter, + formatFactory, + interactive && !args.detailedTooltip + )} customTooltip={ args.detailedTooltip ? ({ header, values }) => ( diff --git a/src/plugins/chart_expressions/expression_xy/tsconfig.json b/src/plugins/chart_expressions/expression_xy/tsconfig.json index 7f2af7005070d..901b7eb0568c6 100644 --- a/src/plugins/chart_expressions/expression_xy/tsconfig.json +++ b/src/plugins/chart_expressions/expression_xy/tsconfig.json @@ -32,6 +32,8 @@ "@kbn/kibana-react-plugin", "@kbn/chart-expressions-common", "@kbn/event-annotation-common", + "@kbn/visualization-ui-components", + "@kbn/es-query", ], "exclude": [ "target/**/*", diff --git a/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts b/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts index e39c858f3e903..981ff3664fbec 100644 --- a/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts +++ b/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.test.ts @@ -10,7 +10,7 @@ import { buildOtherBucketAgg, mergeOtherBucketAggResponse, updateMissingBucket, - OTHER_BUCKET_SEPARATOR as SEP, + OTHER_NESTED_BUCKET_SEPARATOR as SEP, constructSingleTermOtherFilter, } from './_terms_other_bucket_helper'; import type { DataViewField, DataView } from '@kbn/data-views-plugin/common'; @@ -97,188 +97,121 @@ const nestedTerm = { ], }; -const singleTermResponse = { - took: 10, - timed_out: false, - _shards: { - total: 1, - successful: 1, - skipped: 0, - failed: 0, +function wrapResponse(aggregationResponse: Record) { + return { + took: 3, + timed_out: false, + _shards: { total: 1, successful: 1, skipped: 0, failed: 0 }, + hits: { total: 14005, max_score: 0, hits: [] }, + aggregations: aggregationResponse, + status: 200, + }; +} + +const singleTermResponse = wrapResponse({ + '1': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 8325, + buckets: [ + { key: 'ios', doc_count: 2850 }, + { key: 'win xp', doc_count: 2830 }, + { key: '__missing__', doc_count: 1430 }, + ], }, - hits: { - total: 14005, - max_score: 0, - hits: [], - }, - aggregations: { - '1': { - doc_count_error_upper_bound: 0, - sum_other_doc_count: 8325, - buckets: [ - { key: 'ios', doc_count: 2850 }, - { key: 'win xp', doc_count: 2830 }, - { key: '__missing__', doc_count: 1430 }, - ], - }, - }, - status: 200, -}; +}); -const nestedTermResponse = { - took: 10, - timed_out: false, - _shards: { - total: 1, - successful: 1, - skipped: 0, - failed: 0, - }, - hits: { - total: 14005, - max_score: 0, - hits: [], - }, - aggregations: { - '1': { - doc_count_error_upper_bound: 0, - sum_other_doc_count: 8325, - buckets: [ - { - '2': { - doc_count_error_upper_bound: 0, - sum_other_doc_count: 8325, - buckets: [ - { key: 'ios', doc_count: 2850 }, - { key: 'win xp', doc_count: 2830 }, - { key: '__missing__', doc_count: 1430 }, - ], - }, - key: 'US-with-dash', - doc_count: 2850, +const nestedTermResponse = wrapResponse({ + '1': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 8325, + buckets: [ + { + '2': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 8325, + buckets: [ + { key: 'ios', doc_count: 2850 }, + { key: 'win xp', doc_count: 2830 }, + { key: '__missing__', doc_count: 1430 }, + ], }, - { - '2': { - doc_count_error_upper_bound: 0, - sum_other_doc_count: 8325, - buckets: [ - { key: 'ios', doc_count: 1850 }, - { key: 'win xp', doc_count: 1830 }, - { key: '__missing__', doc_count: 130 }, - ], - }, - key: 'IN-with-dash', - doc_count: 2830, + key: 'US-with-dash', + doc_count: 2850, + }, + { + '2': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 8325, + buckets: [ + { key: 'ios', doc_count: 1850 }, + { key: 'win xp', doc_count: 1830 }, + { key: '__missing__', doc_count: 130 }, + ], }, - ], - }, + key: 'IN-with-dash', + doc_count: 2830, + }, + ], }, - status: 200, -}; +}); -const exhaustiveNestedTermResponse = { - took: 10, - timed_out: false, - _shards: { - total: 1, - successful: 1, - skipped: 0, - failed: 0, - }, - hits: { - total: 14005, - max_score: 0, - hits: [], - }, - aggregations: { - '1': { - doc_count_error_upper_bound: 0, - sum_other_doc_count: 8325, - buckets: [ - { - '2': { - doc_count_error_upper_bound: 0, - sum_other_doc_count: 0, - buckets: [ - { key: 'ios', doc_count: 2850 }, - { key: 'win xp', doc_count: 2830 }, - { key: '__missing__', doc_count: 1430 }, - ], - }, - key: 'US-with-dash', - doc_count: 2850, +const exhaustiveNestedTermResponse = wrapResponse({ + '1': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 8325, + buckets: [ + { + '2': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { key: 'ios', doc_count: 2850 }, + { key: 'win xp', doc_count: 2830 }, + { key: '__missing__', doc_count: 1430 }, + ], }, - { - '2': { - doc_count_error_upper_bound: 0, - sum_other_doc_count: 0, - buckets: [ - { key: 'ios', doc_count: 1850 }, - { key: 'win xp', doc_count: 1830 }, - { key: '__missing__', doc_count: 130 }, - ], - }, - key: 'IN-with-dash', - doc_count: 2830, + key: 'US-with-dash', + doc_count: 2850, + }, + { + '2': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [ + { key: 'ios', doc_count: 1850 }, + { key: 'win xp', doc_count: 1830 }, + { key: '__missing__', doc_count: 130 }, + ], }, - ], - }, + key: 'IN-with-dash', + doc_count: 2830, + }, + ], }, - status: 200, -}; +}); -const nestedTermResponseNoResults = { - took: 10, - timed_out: false, - _shards: { - total: 1, - successful: 1, - skipped: 0, - failed: 0, - }, - hits: { - total: 0, - max_score: null, - hits: [], - }, - aggregations: { - '1': { - doc_count_error_upper_bound: 0, - sum_other_doc_count: 0, - buckets: [], - }, +const nestedTermResponseNoResults = wrapResponse({ + '1': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 0, + buckets: [], }, - status: 200, -}; +}); -const singleOtherResponse = { - took: 3, - timed_out: false, - _shards: { total: 1, successful: 1, skipped: 0, failed: 0 }, - hits: { total: 14005, max_score: 0, hits: [] }, - aggregations: { - 'other-filter': { - buckets: { '': { doc_count: 2805 } }, - }, +const singleOtherResponse = wrapResponse({ + 'other-filter': { + buckets: { '': { doc_count: 2805 } }, }, - status: 200, -}; +}); -const nestedOtherResponse = { - took: 3, - timed_out: false, - _shards: { total: 1, successful: 1, skipped: 0, failed: 0 }, - hits: { total: 14005, max_score: 0, hits: [] }, - aggregations: { - 'other-filter': { - buckets: { - [`${SEP}US-with-dash`]: { doc_count: 2805 }, - [`${SEP}IN-with-dash`]: { doc_count: 2804 }, - }, +const nestedOtherResponse = wrapResponse({ + 'other-filter': { + buckets: { + [`${SEP}US-with-dash`]: { doc_count: 2805 }, + [`${SEP}IN-with-dash`]: { doc_count: 2804 }, }, }, - status: 200, -}; +}); describe('Terms Agg Other bucket helper', () => { const typesRegistry = mockAggTypesRegistry(); @@ -326,28 +259,12 @@ describe('Terms Agg Other bucket helper', () => { }); test('returns a function for undefined agg buckets', () => { - const response = { - took: 10, - timed_out: false, - _shards: { - total: 1, - successful: 1, - skipped: 0, - failed: 0, - }, - hits: { - total: 14005, - max_score: 0, - hits: [], - }, - aggregations: { - 2: { - doc_count_error_upper_bound: 0, - sum_other_doc_count: 8325, - }, + const response = wrapResponse({ + 2: { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 8325, }, - status: 200, - }; + }); const aggConfigs = getAggConfigs(nestedTerm.aggs); const agg = buildOtherBucketAgg( aggConfigs, @@ -706,22 +623,15 @@ describe('Terms Agg Other bucket helper', () => { }, }; - const otherResponse = { - took: 3, - timed_out: false, - _shards: { total: 1, successful: 1, skipped: 0, failed: 0 }, - hits: { total: 14005, max_score: 0, hits: [] }, - aggregations: { - 'other-filter': { - buckets: { - [`${SEP}US-with-dash`]: { doc_count: 2805 }, - [`${SEP}IN-with-dash`]: { doc_count: 2804 }, - [`${SEP}`]: { doc_count: 2804 }, - }, + const otherResponse = wrapResponse({ + 'other-filter': { + buckets: { + [`${SEP}US-with-dash`]: { doc_count: 2805 }, + [`${SEP}IN-with-dash`]: { doc_count: 2804 }, + [`${SEP}`]: { doc_count: 2804 }, }, }, - status: 200, - }; + }); const aggConfigs = getAggConfigs(nestedTerm.aggs); const otherAggConfig = buildOtherBucketAgg( aggConfigs, @@ -745,6 +655,269 @@ describe('Terms Agg Other bucket helper', () => { expect((topAgg['1'] as any).buckets[2]['2'].buckets[3].key).toEqual('__other__'); } }); + + test('correctly merges other bucket when the term response contains an empty string', () => { + const response = wrapResponse({ + '0': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 82, + buckets: [ + { + key: '', + doc_count: 657, + }, + { + key: 'ios', + doc_count: 300, + }, + { + key: 'win xp', + doc_count: 284, + }, + { + doc_count: 82, + filters: [ + { + meta: { + type: 'phrases', + key: 'machine.os.raw', + params: ['ios', 'win xp', ''], + negate: true, + }, + query: { + bool: { + should: [ + { + match_phrase: { + 'machine.os.raw': '', + }, + }, + { + match_phrase: { + 'machine.os.raw': 'ios', + }, + }, + { + match_phrase: { + 'machine.os.raw': 'win xp', + }, + }, + ], + minimum_should_match: 1, + }, + }, + }, + ], + key: '__other__', + }, + ], + }, + }); + + const otherResponse = wrapResponse({ + 'other-filter': { + buckets: { + '': { + doc_count: 82, + filters: [ + { + meta: { + type: 'phrases', + key: 'machine.os.raw', + params: ['ios', 'win xp', ''], + negate: true, + }, + query: { + bool: { + should: [ + { + match_phrase: { + 'machine.os.raw': 'ios', + }, + }, + { + match_phrase: { + 'machine.os.raw': 'win xp', + }, + }, + { + match_phrase: { + 'machine.os.raw': '', + }, + }, + ], + minimum_should_match: 1, + }, + }, + }, + ], + key: '__other__', + }, + }, + }, + }); + const aggConfigs = getAggConfigs(singleTerm.aggs); + const otherAggConfig = buildOtherBucketAgg( + aggConfigs, + aggConfigs.aggs[0] as IBucketAggConfig, + enrichResponseWithSampling(response) + ); + + expect(otherAggConfig).toBeDefined(); + if (otherAggConfig) { + const mergedResponse = mergeOtherBucketAggResponse( + aggConfigs, + enrichResponseWithSampling(response), + enrichResponseWithSampling(otherResponse), + aggConfigs.aggs[0] as IBucketAggConfig, + otherAggConfig(), + constructSingleTermOtherFilter + ); + + const topAgg = getTopAggregations(mergedResponse); + const topBuckets = (topAgg['1'] as any).buckets; + expect(topBuckets[2].key).toEqual(''); + expect(topBuckets[2]['2'].buckets[3].key).toEqual('__other__'); + } + }); + + test('correctly merges other bucket with both top and nested terms agg have empty string', () => { + const response = wrapResponse({ + ...nestedTermResponse.aggregations, + '1': { + ...nestedTermResponse.aggregations['1'], + buckets: [ + ...nestedTermResponse.aggregations['1'].buckets, + { + '2': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 8325, + buckets: [ + { key: 'ios', doc_count: 1850 }, + { key: 'win xp', doc_count: 1830 }, + { key: '__missing__', doc_count: 130 }, + { key: '', doc_count: 130 }, + ], + }, + key: '', + doc_count: 2830, + }, + ], + }, + }); + + const otherRootResponse = wrapResponse({ + 'other-filter': { + buckets: { + '': { + '2': { + doc_count_error_upper_bound: 0, + sum_other_doc_count: 59, + buckets: [ + { + key: 'US-with-dash', + doc_count: 13, + }, + { + key: 'IN-with-dash', + doc_count: 12, + }, + { + key: '', + doc_count: 12, + }, + ], + }, + doc_count: 84, + key: '__other__', + filters: [ + { + meta: { + type: 'phrases', + key: 'machine.os.raw', + params: ['', 'ios', 'win xp'], + negate: true, + }, + query: { + bool: { + should: [ + { + match_phrase: { + 'machine.os.raw': '', + }, + }, + { + match_phrase: { + 'machine.os.raw': 'ios', + }, + }, + { + match_phrase: { + 'machine.os.raw': 'win xp', + }, + }, + ], + minimum_should_match: 1, + }, + }, + }, + ], + }, + }, + }, + }); + + const otherResponse = wrapResponse({ + 'other-filter': { + buckets: { + [`${SEP}US-with-dash`]: { doc_count: 2805 }, + [`${SEP}IN-with-dash`]: { doc_count: 2804 }, + [`${SEP}`]: { doc_count: 2804 }, + [`${SEP}__other__`]: { doc_count: 3000 }, + }, + }, + }); + const aggConfigs = getAggConfigs(nestedTerm.aggs); + const otherRootAggConfig = buildOtherBucketAgg( + aggConfigs, + aggConfigs.aggs[0] as IBucketAggConfig, + enrichResponseWithSampling(response) + ); + + if (otherRootAggConfig) { + const mergedTopResponse = mergeOtherBucketAggResponse( + aggConfigs, + enrichResponseWithSampling(response), + enrichResponseWithSampling(otherRootResponse), + aggConfigs.aggs[0] as IBucketAggConfig, + otherRootAggConfig(), + constructSingleTermOtherFilter + ); + + const otherAggConfig = buildOtherBucketAgg( + aggConfigs, + aggConfigs.aggs[1] as IBucketAggConfig, + enrichResponseWithSampling(mergedTopResponse) + ); + if (otherAggConfig) { + const mergedResponse = mergeOtherBucketAggResponse( + aggConfigs, + enrichResponseWithSampling(mergedTopResponse), + enrichResponseWithSampling(otherResponse), + aggConfigs.aggs[1] as IBucketAggConfig, + otherAggConfig(), + constructSingleTermOtherFilter + ); + + const topAgg = getTopAggregations(mergedResponse); + expect((topAgg['1'] as any).buckets[2].key).toEqual(''); + expect((topAgg['1'] as any).buckets[2]['2'].buckets[4].key).toEqual('__other__'); + + expect((topAgg['1'] as any).buckets[3].key).toEqual('__other__'); + expect((topAgg['1'] as any).buckets[3]['2'].buckets[3].key).toEqual('__other__'); + } + } + }); }); describe(`updateMissingBucket${getTitlePostfix()}`, () => { diff --git a/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.ts b/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.ts index d4542d1513f16..9737883733266 100644 --- a/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.ts +++ b/src/plugins/data/common/search/aggs/buckets/_terms_other_bucket_helper.ts @@ -22,7 +22,9 @@ import { IAggType } from '../agg_type'; import { IAggConfig } from '../agg_config'; import { createSamplerAgg } from '../utils/sampler'; -export const OTHER_BUCKET_SEPARATOR = '╰┄►'; +const MISSING_KEY_STRING = '__missing__'; +export const OTHER_NESTED_BUCKET_SEPARATOR = '╰┄►'; +const otherBucketRegexp = new RegExp(`^${OTHER_NESTED_BUCKET_SEPARATOR}`); /** * walks the aggregation DSL and returns DSL starting at aggregation with id of startFromAggId @@ -56,10 +58,11 @@ const getAggResultBuckets = ( aggWithOtherBucket: IAggConfig, key: string ) => { - const keyParts = key.split(OTHER_BUCKET_SEPARATOR); + const keyParts = key.split(OTHER_NESTED_BUCKET_SEPARATOR); let responseAgg = response; for (const i in keyParts) { - if (keyParts[i] || keyParts[i] === '') { + // enable also the empty string + if (keyParts[i] != null) { const responseAggs: Array> = values(responseAgg); // If you have multi aggs, we cannot just assume the first one is the `other` bucket, // so we need to loop over each agg until we find it. @@ -75,8 +78,13 @@ const getAggResultBuckets = ( return bucketKey === keyParts[i]; }); if (aggResultBucket) { - responseAgg = aggResultBucket; - break; + // this is a special check in order to avoid an overwrite when + // there's an empty string term at root level for the data request + // as the other request will default to empty string category as well + if (!responseAgg?.[aggWithOtherBucket.id] || keyParts[i] !== '') { + responseAgg = aggResultBucket; + break; + } } } } @@ -94,19 +102,20 @@ const getAggResultBuckets = ( * @param aggId: id of the aggregation with missing bucket */ const getAggConfigResultMissingBuckets = (responseAggs: any, aggId: string) => { - const missingKey = '__missing__'; - let resultBuckets: Array> = []; + const resultBuckets: Array> = []; if (responseAggs[aggId]) { const matchingBucket = responseAggs[aggId].buckets.find( - (bucket: Record) => bucket.key === missingKey + (bucket: Record) => bucket.key === MISSING_KEY_STRING ); - if (matchingBucket) resultBuckets.push(matchingBucket); + if (matchingBucket) { + resultBuckets.push(matchingBucket); + } return resultBuckets; } each(responseAggs, (agg) => { if (agg.buckets) { each(agg.buckets, (bucket) => { - resultBuckets = [...resultBuckets, ...getAggConfigResultMissingBuckets(bucket, aggId)]; + resultBuckets.push(...getAggConfigResultMissingBuckets(bucket, aggId)); }); } }); @@ -124,7 +133,7 @@ const getOtherAggTerms = (requestAgg: Record, key: string, otherAgg return requestAgg['other-filter'].filters.filters[key].bool.must_not .filter( (filter: Record) => - filter.match_phrase && filter.match_phrase[otherAgg.params.field.name] + filter.match_phrase && filter.match_phrase[otherAgg.params.field.name] != null // mind empty strings! ) .map((filter: Record) => filter.match_phrase[otherAgg.params.field.name]); }; @@ -220,7 +229,7 @@ export const buildOtherBucketAgg = ( bucket, newAgg.id, newFilters, - `${key}${OTHER_BUCKET_SEPARATOR}${bucketKey.toString()}` + `${key}${OTHER_NESTED_BUCKET_SEPARATOR}${bucketKey.toString()}` ); }); return; @@ -229,7 +238,7 @@ export const buildOtherBucketAgg = ( const hasScriptedField = !!aggWithOtherBucket.params.field?.scripted; const hasMissingBucket = !!aggWithOtherBucket.params.missingBucket; const hasMissingBucketKey = agg.buckets.some( - (bucket: { key: string }) => bucket.key === '__missing__' + (bucket: { key: string }) => bucket.key === MISSING_KEY_STRING ); if ( aggWithOtherBucket.params.field && @@ -246,7 +255,7 @@ export const buildOtherBucketAgg = ( // create not filters for all the buckets each(agg.buckets, (bucket) => { - if (bucket.key === '__missing__') return; + if (bucket.key === MISSING_KEY_STRING) return; const filter = currentAgg.createFilter(currentAgg.getKey(bucket, bucket.key)); filter.meta.negate = true; filters.push(filter); @@ -302,7 +311,7 @@ export const mergeOtherBucketAggResponse = ( 'buckets' in aggregationsRoot!['other-filter'] ? aggregationsRoot!['other-filter'].buckets : {}; each(buckets, (bucket, key) => { if (!bucket.doc_count || key === undefined) return; - const bucketKey = key.replace(new RegExp(`^${OTHER_BUCKET_SEPARATOR}`), ''); + const bucketKey = key.replace(otherBucketRegexp, ''); const aggResultBuckets = getAggResultBuckets( aggsConfig, updatedAggregationsRoot, @@ -319,7 +328,7 @@ export const mergeOtherBucketAggResponse = ( if ( aggResultBuckets.some( - (aggResultBucket: Record) => aggResultBucket.key === '__missing__' + (aggResultBucket: Record) => aggResultBucket.key === MISSING_KEY_STRING ) ) { bucket.filters.push( @@ -330,7 +339,6 @@ export const mergeOtherBucketAggResponse = ( }); return updatedResponse; }; - export const updateMissingBucket = ( response: estypes.SearchResponse, aggConfigs: IAggConfigs, @@ -342,7 +350,7 @@ export const updateMissingBucket = ( agg.id ); aggResultBuckets.forEach((bucket) => { - bucket.key = '__missing__'; + bucket.key = MISSING_KEY_STRING; }); return updatedResponse; }; @@ -394,7 +402,7 @@ export const createOtherBucketPostFlightRequest = ( nestedSearchSource.setField('aggs', filterAgg); - const { rawResponse: response } = await lastValueFrom( + const { rawResponse: otherResponse } = await lastValueFrom( nestedSearchSource.fetch$({ abortSignal, sessionId: searchSessionId, @@ -416,7 +424,7 @@ export const createOtherBucketPostFlightRequest = ( resp = mergeOtherBucketAggResponse( aggConfigs, resp, - response, + otherResponse, aggConfig, filterAgg(), otherFilterBuilder diff --git a/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.test.ts b/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.test.ts index 804f898945e57..f138544065b82 100644 --- a/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.test.ts +++ b/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.test.ts @@ -11,50 +11,81 @@ import { dataPluginMock } from '../../mocks'; import { setIndexPatterns, setSearchService } from '../../services'; import { createFiltersFromMultiValueClickAction } from './create_filters_from_multi_value_click'; import { FieldFormatsGetConfigFn, BytesFormat } from '@kbn/field-formats-plugin/common'; +import { Datatable } from '@kbn/expressions-plugin/common'; +import { BooleanRelation, Filter } from '@kbn/es-query'; const mockField = { name: 'bytes', filterable: true, }; +let table: Pick; + describe('createFiltersFromMultiValueClickAction', () => { let dataPoints: Parameters[0]['data']; beforeEach(() => { - dataPoints = { - table: { - columns: [ - { - name: 'test', - id: '1-1', - meta: { - type: 'date', - source: 'esaggs', - sourceParams: { - indexPatternId: 'logstash-*', - type: 'histogram', - params: { - field: 'bytes', - interval: 30, - otherBucket: true, - }, + table = { + columns: [ + { + name: 'test', + id: '1-1', + meta: { + type: 'date', + source: 'esaggs', + sourceParams: { + indexPatternId: 'logstash-*', + type: 'histogram', + params: { + field: 'bytes', + interval: 30, + otherBucket: true, }, }, }, - ], - rows: [ - { - '1-1': '2048', + }, + { + name: 'avg', + id: '2-2', + meta: { + type: 'number', + source: 'esaggs', + sourceParams: { + indexPatternId: 'logstash-*', + type: 'average', + params: { + field: 'bytes', + }, + }, }, - ], - meta: { - source: 'dataview-1', - type: 'esaggs', }, + ], + rows: [ + { + '1-1': 1691189380, + '2-2': 2048, + }, + { + '1-1': 1691189680, + '2-2': 90, + }, + ], + meta: { + source: 'dataview-1', + type: 'esaggs', }, - column: 0, - value: ['2048'], }; + dataPoints = [ + { + table, + cells: [ + { + column: 0, + row: 0, + }, + ], + }, + ]; const dataStart = dataPluginMock.createStartContract(); setSearchService(dataStart.search); @@ -72,30 +103,117 @@ describe('createFiltersFromMultiValueClickAction', () => { }); test('ignores event when value for rows is not provided', async () => { - dataPoints.table.rows[0]['1-1'] = null; + dataPoints[0].table.rows[0]['1-1'] = null; const filters = await createFiltersFromMultiValueClickAction({ data: dataPoints }); expect(filters).toBeUndefined(); }); test('ignores event when dataview id is not provided', async () => { - dataPoints.table.meta = undefined; + dataPoints[0].table.meta = undefined; const filters = await createFiltersFromMultiValueClickAction({ data: dataPoints }); expect(filters).toBeUndefined(); }); test('handles an event when aggregations type is a terms', async () => { - (dataPoints.table.columns[0].meta.sourceParams as any).type = 'terms'; - const filters = await createFiltersFromMultiValueClickAction({ data: dataPoints }); + (dataPoints[0].table.columns[0].meta.sourceParams as any).type = 'terms'; + const filters = (await createFiltersFromMultiValueClickAction({ + data: dataPoints, + })) as Filter[]; - expect(filters?.query?.match_phrase?.bytes).toEqual('2048'); + expect(filters[0]?.query?.match_phrase?.bytes).toEqual(1691189380); }); test('handles an event when aggregations type is not terms', async () => { - const filters = await createFiltersFromMultiValueClickAction({ data: dataPoints }); + const filters = (await createFiltersFromMultiValueClickAction({ + data: dataPoints, + })) as Filter[]; - expect(filters?.query?.range.bytes.gte).toEqual(2048); - expect(filters?.query?.range.bytes.lt).toEqual(2078); + expect(filters[0]?.query?.range.bytes.gte).toEqual(1691189380); + expect(filters[0]?.query?.range.bytes.lt).toEqual(1691189410); + }); + test('creates combined filters if relation is passed', async () => { + dataPoints[0].cells = [ + { + column: 0, + row: 0, + }, + { + column: 0, + row: 1, + }, + ]; + dataPoints[0].relation = BooleanRelation.OR; + const filters = (await createFiltersFromMultiValueClickAction({ + data: dataPoints, + })) as Filter[]; + expect(filters.length).toEqual(1); + expect(filters[0]?.meta.type).toEqual('combined'); + }); + test('creates separate filters if relation is not passed', async () => { + dataPoints[0].cells = [ + { + column: 0, + row: 0, + }, + { + column: 0, + row: 1, + }, + ]; + const filters = (await createFiltersFromMultiValueClickAction({ + data: dataPoints, + })) as Filter[]; + expect(filters.length).toEqual(2); + }); + test('creates separate filters for multiple tables', async () => { + dataPoints = [ + { + table, + cells: [ + { + column: 0, + row: 0, + }, + ], + }, + { + table, + cells: [ + { + column: 0, + row: 1, + }, + ], + }, + ]; + const filters = (await createFiltersFromMultiValueClickAction({ + data: dataPoints, + })) as Filter[]; + expect(filters.length).toEqual(2); + }); + test('doesnt combine duplicate filters', async () => { + dataPoints = [ + { + table, + cells: [ + { + column: 0, + row: 0, + }, + { + column: 0, + row: 0, + }, + ], + relation: BooleanRelation.OR, + }, + ]; + const filters = (await createFiltersFromMultiValueClickAction({ + data: dataPoints, + })) as Filter[]; + expect(filters.length).toEqual(1); + expect(filters[0]?.meta?.type).toEqual('range'); }); }); diff --git a/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.ts b/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.ts index b33f994015cfe..5bce14cedf1cd 100644 --- a/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.ts +++ b/src/plugins/data/public/actions/filters/create_filters_from_multi_value_click.ts @@ -5,68 +5,77 @@ * in compliance with, at your election, the Elastic License 2.0 or the Server * Side Public License, v 1. */ -import { buildCombinedFilter, Filter, toggleFilterNegated, BooleanRelation } from '@kbn/es-query'; +import { + buildCombinedFilter, + toggleFilterNegated, + Filter, + compareFilters, + COMPARE_ALL_OPTIONS, +} from '@kbn/es-query'; +import { Truthy, uniqWith } from 'lodash'; import { createFilter } from './create_filters_from_value_click'; import type { MultiValueClickContext } from '../multi_value_click_action'; +import { mapAndFlattenFilters } from '../../query'; type MultiValueClickDataContext = MultiValueClickContext['data']; +export const truthy = (value: T): value is Truthy => !!value; + /** @public */ export const createFiltersFromMultiValueClickAction = async ({ data, negate, -}: MultiValueClickDataContext) => { - const { table, column, value } = data; - const dataViewId = table?.meta?.source; - if (!dataViewId) return; - - const columnId = table.columns[column].id; +}: MultiValueClickDataContext): Promise => { + if (!data || data.length === 0) return; - const filters = ( + const result = ( await Promise.all( - value.map(async (v) => { - return ( - await createFilter( - table, - column, - table.rows.findIndex((r) => r[columnId] === v) + data.map(async (d) => { + const { table, cells, relation } = d; + const dataViewId = table?.meta?.source; + if (!dataViewId) return; + + const filters = ( + await Promise.all( + cells.map(async ({ column, row }) => await createFilter(table, column, row)) ) - )?.[0]; + ) + .flat() + .filter(truthy); + + const uniqueFilters = uniqWith(mapAndFlattenFilters(filters), (a, b) => + compareFilters(a, b, COMPARE_ALL_OPTIONS) + ); + + if (uniqueFilters.length === 0) return; + + if (uniqueFilters.length === 1) { + return negate ? [toggleFilterNegated(uniqueFilters[0])] : uniqueFilters; + } + + if (!relation) { + return negate ? uniqueFilters.map((f) => toggleFilterNegated(f)) : uniqueFilters; + } + + const filtersHaveAlias = uniqueFilters.every((f) => f.meta.alias); + const alias = filtersHaveAlias + ? uniqueFilters.map((f) => f.meta.alias).join(` ${relation} `) + : ''; + + return buildCombinedFilter( + relation, + uniqueFilters, + { id: dataViewId }, + undefined, + negate, + alias + ); }) ) - ).filter(Boolean) as Filter[]; - if (filters.length === 0) return; - // no need for combined filter in case of one filter - if (filters.length === 1) { - if (filters[0] && negate) { - return toggleFilterNegated(filters[0]); - } - return filters[0]; - } - const filtersHaveAlias = filters.every((f) => f.meta.alias); - let alias = ''; - if (filtersHaveAlias) { - filters.forEach((f, i) => { - if (i === filters.length - 1) { - alias += `${f.meta.alias}`; - } else { - alias += `${f.meta.alias} ${BooleanRelation.OR} `; - } - }); - } - let filter: Filter = buildCombinedFilter( - BooleanRelation.OR, - filters, - { - id: dataViewId, - }, - undefined, - undefined, - alias - ); - if (filter && negate) { - filter = toggleFilterNegated(filter); - } + ) + .flat() + .filter(truthy); - return filter; + if (result.length === 0) return; + return result; }; diff --git a/src/plugins/data/public/actions/multi_value_click_action.ts b/src/plugins/data/public/actions/multi_value_click_action.ts index 422b1d8653e02..1f9059ae5e866 100644 --- a/src/plugins/data/public/actions/multi_value_click_action.ts +++ b/src/plugins/data/public/actions/multi_value_click_action.ts @@ -6,10 +6,10 @@ * Side Public License, v 1. */ -import type { Filter } from '@kbn/es-query'; import { Datatable } from '@kbn/expressions-plugin/public'; import { UiActionsActionDefinition } from '@kbn/ui-actions-plugin/public'; -import { FilterManager } from '../query'; +import { BooleanRelation, extractTimeFilter, convertRangeFilterToTimeRange } from '@kbn/es-query'; +import { QueryStart } from '../query'; import { createFiltersFromMultiValueClickAction } from './filters/create_filters_from_multi_value_click'; export type MultiValueClickActionContext = MultiValueClickContext; @@ -20,18 +20,21 @@ export interface MultiValueClickContext { // Apps using this property will need to cast to `IEmbeddable`. embeddable?: unknown; data: { - data: { + data: Array<{ + cells: Array<{ + column: number; + row: number; + }>; table: Pick; - column: number; - value: any[]; - }; + relation?: BooleanRelation; + }>; timeFieldName?: string; negate?: boolean; }; } export function createMultiValueClickActionDefinition( - getStartServices: () => { filterManager: FilterManager } + getStartServices: () => { query: QueryStart } ): UiActionsActionDefinition { return { type: ACTION_MULTI_VALUE_CLICK, @@ -41,9 +44,23 @@ export function createMultiValueClickActionDefinition( const filters = await createFiltersFromMultiValueClickAction(context.data); return Boolean(filters); }, - execute: async (context: MultiValueClickActionContext) => { - const filter = (await createFiltersFromMultiValueClickAction(context.data)) as Filter; - getStartServices().filterManager.addFilters(filter); + execute: async ({ data }: MultiValueClickActionContext) => { + const filters = await createFiltersFromMultiValueClickAction(data); + if (!filters || filters?.length === 0) return; + const { + filterManager, + timefilter: { timefilter }, + } = getStartServices().query; + + if (data.timeFieldName) { + const { timeRangeFilter, restOfFilters } = extractTimeFilter(data.timeFieldName, filters); + filterManager.addFilters(restOfFilters); + if (timeRangeFilter) { + timefilter.setTime(convertRangeFilterToTimeRange(timeRangeFilter)); + } + } else { + filterManager.addFilters(filters); + } }, }; } diff --git a/src/plugins/data/public/plugin.ts b/src/plugins/data/public/plugin.ts index 02d5e7f69ad51..8f4e37afb29b2 100644 --- a/src/plugins/data/public/plugin.ts +++ b/src/plugins/data/public/plugin.ts @@ -158,7 +158,7 @@ export class DataPublicPlugin uiActions.addTriggerAction( 'MULTI_VALUE_CLICK_TRIGGER', createMultiValueClickActionDefinition(() => ({ - filterManager: query.filterManager, + query, })) ); diff --git a/src/plugins/data_views/common/data_views/data_views.test.ts b/src/plugins/data_views/common/data_views/data_views.test.ts index e6d09710fe016..2ea7726cc2bb9 100644 --- a/src/plugins/data_views/common/data_views/data_views.test.ts +++ b/src/plugins/data_views/common/data_views/data_views.test.ts @@ -629,4 +629,36 @@ describe('IndexPatterns', () => { expect(apiClient.getFieldsForWildcard.mock.calls[0][0].allowNoIndex).toBe(true); }); }); + + describe('getExistingIndices', () => { + test('getExistingIndices returns the valid matched indices', async () => { + apiClient.getFieldsForWildcard = jest + .fn() + .mockResolvedValueOnce({ fields: ['length'] }) + .mockResolvedValue({ fields: [] }); + const patternList = await indexPatterns.getExistingIndices(['packetbeat-*', 'filebeat-*']); + expect(apiClient.getFieldsForWildcard).toBeCalledTimes(2); + expect(patternList.length).toBe(1); + }); + + test('getExistingIndices checks the positive pattern if provided with a negative pattern', async () => { + const mockFn = jest.fn().mockResolvedValue({ fields: ['length'] }); + apiClient.getFieldsForWildcard = mockFn; + const patternList = await indexPatterns.getExistingIndices(['-filebeat-*', 'filebeat-*']); + expect(mockFn.mock.calls[0][0].pattern).toEqual('filebeat-*'); + expect(mockFn.mock.calls[1][0].pattern).toEqual('filebeat-*'); + expect(patternList).toEqual(['-filebeat-*', 'filebeat-*']); + }); + + test('getExistingIndices handles an error', async () => { + apiClient.getFieldsForWildcard = jest + .fn() + .mockImplementationOnce(async () => { + throw new DataViewMissingIndices('Catch me if you can!'); + }) + .mockImplementation(() => Promise.resolve({ fields: ['length'] })); + const patternList = await indexPatterns.getExistingIndices(['packetbeat-*', 'filebeat-*']); + expect(patternList).toEqual(['filebeat-*']); + }); + }); }); diff --git a/src/plugins/data_views/common/data_views/data_views.ts b/src/plugins/data_views/common/data_views/data_views.ts index 469fd2a1fa61e..9537526046266 100644 --- a/src/plugins/data_views/common/data_views/data_views.ts +++ b/src/plugins/data_views/common/data_views/data_views.ts @@ -7,10 +7,12 @@ */ import { i18n } from '@kbn/i18n'; +import { defer, from } from 'rxjs'; import type { PublicMethodsOf } from '@kbn/utility-types'; import { castEsToKbnFieldTypeName } from '@kbn/field-types'; import { FieldFormatsStartCommon, FORMATS_UI_SETTINGS } from '@kbn/field-formats-plugin/common'; import { v4 as uuidv4 } from 'uuid'; +import { rateLimitingForkJoin } from './utils'; import { PersistenceAPI } from '../types'; import { createDataViewCache } from '.'; @@ -236,6 +238,12 @@ export interface DataViewsServicePublicMethods { * @param options - options for getting fields */ getFieldsForWildcard: (options: GetFieldsOptions) => Promise; + /** + * Get existing index pattern list by providing string array index pattern list. + * @param indices - index pattern list + * @returns index pattern list of index patterns that match indices + */ + getExistingIndices: (indices: string[]) => Promise; /** * Get list of data view ids. * @param refresh - clear cache and fetch from server @@ -505,6 +513,41 @@ export class DataViewsService { return fields; }; + /** + * Get existing index pattern list by providing string array index pattern list. + * @param indices index pattern list + * @returns index pattern list + */ + getExistingIndices = async (indices: string[]): Promise => { + const indicesObs = indices.map((pattern) => { + // when checking a negative pattern, check if the positive pattern exists + const indexToQuery = pattern.trim().startsWith('-') + ? pattern.trim().substring(1) + : pattern.trim(); + return defer(() => + from( + this.getFieldsForWildcard({ + // check one field to keep request fast/small + fields: ['_id'], + // true so no errors thrown in browser + allowNoIndex: true, + pattern: indexToQuery, + }) + ) + ); + }); + + return new Promise((resolve) => { + rateLimitingForkJoin(indicesObs, 3, []).subscribe((value) => { + resolve(value.map((v) => v.length > 0)); + }); + }) + .then((allPatterns: boolean[]) => + indices.filter((pattern, i, self) => self.indexOf(pattern) === i && allPatterns[i]) + ) + .catch(() => indices); + }; + /** * Get field list by providing an index patttern (or spec). * @param options options for getting field list diff --git a/src/plugins/data_views/common/data_views/utils.ts b/src/plugins/data_views/common/data_views/utils.ts index a5d0447f79339..ec1c41fc3eaca 100644 --- a/src/plugins/data_views/common/data_views/utils.ts +++ b/src/plugins/data_views/common/data_views/utils.ts @@ -6,6 +6,8 @@ * Side Public License, v 1. */ +import { catchError, from, Observable, of } from 'rxjs'; +import { mergeMap, last, map, toArray } from 'rxjs/operators'; import type { RuntimeField, RuntimeFieldSpec, RuntimePrimitiveTypes } from '../types'; export const removeFieldAttrs = (runtimeField: RuntimeField): RuntimeFieldSpec => { @@ -23,3 +25,30 @@ export const removeFieldAttrs = (runtimeField: RuntimeField): RuntimeFieldSpec = ...fieldsTypeOnly, }; }; + +const MAX_CONCURRENT_REQUESTS = 3; +/** + * Helper function to run forkJoin + * with restrictions on how many input observables can be subscribed to concurrently + */ +export function rateLimitingForkJoin( + observables: Array>, + maxConcurrentRequests = MAX_CONCURRENT_REQUESTS, + failValue: T +): Observable { + return from(observables).pipe( + mergeMap( + (observable, index) => + observable.pipe( + last(), + map((value) => ({ index, value })), + catchError(() => of({ index, value: failValue })) + ), + maxConcurrentRequests + ), + toArray(), + map((indexedObservables) => + indexedObservables.sort((l, r) => l.index - r.index).map((obs) => obs.value) + ) + ); +} diff --git a/src/plugins/embeddable/public/lib/triggers/triggers.ts b/src/plugins/embeddable/public/lib/triggers/triggers.ts index 94c09c2d79376..dbafad289c006 100644 --- a/src/plugins/embeddable/public/lib/triggers/triggers.ts +++ b/src/plugins/embeddable/public/lib/triggers/triggers.ts @@ -9,6 +9,7 @@ import { i18n } from '@kbn/i18n'; import { Datatable, DatatableColumnMeta } from '@kbn/expressions-plugin/common'; import { Trigger, RowClickContext } from '@kbn/ui-actions-plugin/public'; +import { BooleanRelation } from '@kbn/es-query'; import { IEmbeddable } from '..'; export interface EmbeddableContext { @@ -32,11 +33,14 @@ export interface ValueClickContext { export interface MultiValueClickContext { embeddable?: T; data: { - data: { + data: Array<{ table: Pick; - column: number; - value: any[]; - }; + cells: Array<{ + column: number; + row: number; + }>; + relation?: BooleanRelation; + }>; timeFieldName?: string; negate?: boolean; }; @@ -157,12 +161,27 @@ export const cellValueTrigger: Trigger = { export const isValueClickTriggerContext = ( context: ChartActionContext -): context is ValueClickContext => context.data && 'data' in context.data; +): context is ValueClickContext => { + return ( + context.data && + 'data' in context.data && + Array.isArray(context.data.data) && + context.data.data.length > 0 && + 'column' in context.data.data[0] + ); +}; export const isMultiValueClickTriggerContext = ( context: ChartActionContext -): context is MultiValueClickContext => - context.data && 'data' in context.data && !Array.isArray(context.data.data); +): context is MultiValueClickContext => { + return ( + context.data && + 'data' in context.data && + Array.isArray(context.data.data) && + context.data.data.length > 0 && + 'cells' in context.data.data[0] + ); +}; export const isRangeSelectTriggerContext = ( context: ChartActionContext diff --git a/src/setup_node_env/dns_ipv4_first.js b/src/setup_node_env/dns_ipv4_first.js new file mode 100644 index 0000000000000..75dd876c46d35 --- /dev/null +++ b/src/setup_node_env/dns_ipv4_first.js @@ -0,0 +1,13 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0 and the Server Side Public License, v 1; you may not use this file except + * in compliance with, at your election, the Elastic License 2.0 or the Server + * Side Public License, v 1. + */ + +// enables Node 16 default DNS lookup behavior for the current thread +require('dns').setDefaultResultOrder('ipv4first'); + +// overrides current process node options, so it can be restored in worker threads too +process.env.NODE_OPTIONS = `${process.env.NODE_OPTIONS || ''} --dns-result-order=ipv4first`; diff --git a/src/setup_node_env/index.js b/src/setup_node_env/index.js index 4f7babd66ac58..176785e10246a 100644 --- a/src/setup_node_env/index.js +++ b/src/setup_node_env/index.js @@ -10,7 +10,7 @@ require('./setup_env'); // restore < Node 16 default DNS lookup behavior -require('dns').setDefaultResultOrder('ipv4first'); +require('./dns_ipv4_first'); require('@kbn/babel-register').install(); require('./polyfill'); diff --git a/test/functional/apps/dashboard/group5/embed_mode.ts b/test/functional/apps/dashboard/group5/embed_mode.ts index 2599326daba43..16934fc9101a8 100644 --- a/test/functional/apps/dashboard/group5/embed_mode.ts +++ b/test/functional/apps/dashboard/group5/embed_mode.ts @@ -24,8 +24,7 @@ export default function ({ const screenshot = getService('screenshots'); const log = getService('log'); - // Failing: See https://github.com/elastic/kibana/issues/163207 - describe.skip('embed mode', () => { + describe('embed mode', () => { /* * Note: The baseline images used in all of the screenshot tests in this test suite were taken directly from the CI environment * in order to overcome a known issue with the pixel density of fonts being significantly different when running locally versus diff --git a/test/functional/apps/visualize/group5/_tsvb_time_series.ts b/test/functional/apps/visualize/group5/_tsvb_time_series.ts index 28aa95ad24263..eec30c52018a7 100644 --- a/test/functional/apps/visualize/group5/_tsvb_time_series.ts +++ b/test/functional/apps/visualize/group5/_tsvb_time_series.ts @@ -23,8 +23,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const browser = getService('browser'); const kibanaServer = getService('kibanaServer'); - // Failing: See https://github.com/elastic/kibana/issues/162995 - describe.skip('visual builder', function describeIndexTests() { + describe('visual builder', function describeIndexTests() { before(async () => { await security.testUser.setRoles([ 'kibana_admin', @@ -167,7 +166,8 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { }); }); - describe('Clicking on the chart', () => { + describe('Clicking on the chart', function () { + this.tags('skipFirefox'); const act = async (visName: string, clickCoordinates: { x: number; y: number }) => { await testSubjects.click('visualizeSaveButton'); diff --git a/test/functional/apps/visualize/group6/_tsvb_tsdb_basic.ts b/test/functional/apps/visualize/group6/_tsvb_tsdb_basic.ts index 35769d524012d..44953ae2e6619 100644 --- a/test/functional/apps/visualize/group6/_tsvb_tsdb_basic.ts +++ b/test/functional/apps/visualize/group6/_tsvb_tsdb_basic.ts @@ -17,8 +17,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { const esArchiver = getService('esArchiver'); const testSubjects = getService('testSubjects'); - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/163454 - describe.skip('visual builder tsdb check', function describeIndexTests() { + describe('visual builder tsdb check', function describeIndexTests() { before(async () => { log.info(`loading sample TSDB index...`); await esArchiver.load('test/functional/fixtures/es_archiver/kibana_sample_data_logs_tsdb'); @@ -62,15 +61,5 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) { expect(isFieldForAggregationValid).to.be(true); expect(await testSubjects.exists('visualization-error-text')).to.be(false); }); - - it('should show an error when using an unsupported tsdb field type', async () => { - await visualBuilder.selectAggType('Average'); - await visualBuilder.setFieldForAggregation('bytes_counter'); - // this is still returning true - const isFieldForAggregationValid = await visualBuilder.checkFieldForAggregationValidity(); - expect(isFieldForAggregationValid).to.be(true); - // but an error should appear in visualization - expect(await testSubjects.exists('visualization-error-text')).to.be(true); - }); }); } diff --git a/test/functional/page_objects/visual_builder_page.ts b/test/functional/page_objects/visual_builder_page.ts index 67a8dd42b9ec1..4c5939f728f01 100644 --- a/test/functional/page_objects/visual_builder_page.ts +++ b/test/functional/page_objects/visual_builder_page.ts @@ -7,7 +7,6 @@ */ import type { DebugState } from '@elastic/charts'; -import expect from '@kbn/expect'; import { FtrService } from '../ftr_provider_context'; import { WebElementWrapper } from '../services/lib/web_element_wrapper'; @@ -845,10 +844,14 @@ export class VisualBuilderPageObject extends FtrService { ) { await this.setMetricsGroupBy('terms'); await this.common.sleep(1000); - const byField = await this.testSubjects.find('groupByField'); - await this.comboBox.setElement(byField, field); - const isSelected = await this.comboBox.isOptionSelected(byField, field); - expect(isSelected).to.be(true); + await this.retry.try(async () => { + const byField = await this.testSubjects.find('groupByField'); + await this.comboBox.setElement(byField, field); + const isSelected = await this.comboBox.isOptionSelected(byField, field); + if (!isSelected) { + throw new Error(`setMetricsGroupByTerms: failed to set '${field}' field`); + } + }); await this.setMetricsGroupByFiltering(filtering.include, filtering.exclude); } @@ -860,13 +863,17 @@ export class VisualBuilderPageObject extends FtrService { // In case of StaleElementReferenceError 'browser' service will try to find element again await fieldSelectAddButtonLast.click(); await this.common.sleep(2000); - const selectedByField = await this.find.byXPath( - `(//*[@data-test-subj='fieldSelectItem'])[last()]` - ); - await this.comboBox.setElement(selectedByField, field); - const isSelected = await this.comboBox.isOptionSelected(selectedByField, field); - expect(isSelected).to.be(true); + await this.retry.try(async () => { + const selectedByField = await this.find.byXPath( + `(//*[@data-test-subj='fieldSelectItem'])[last()]` + ); + await this.comboBox.setElement(selectedByField, field); + const isSelected = await this.comboBox.isOptionSelected(selectedByField, field); + if (!isSelected) { + throw new Error(`setAnotherGroupByTermsField: failed to set '${field}' field`); + } + }); } public async setMetricsGroupByFiltering(include?: string, exclude?: string) { diff --git a/test/functional/screenshots/baseline/dashboard_embed_mode.png b/test/functional/screenshots/baseline/dashboard_embed_mode.png index 0c6b375233679..592cd6c4ff403 100644 Binary files a/test/functional/screenshots/baseline/dashboard_embed_mode.png and b/test/functional/screenshots/baseline/dashboard_embed_mode.png differ diff --git a/test/functional/screenshots/baseline/dashboard_embed_mode_scrolling.png b/test/functional/screenshots/baseline/dashboard_embed_mode_scrolling.png index 822bcb90ae935..eed23bc7ed78f 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/screenshots/baseline/dashboard_embed_mode_with_url_params.png b/test/functional/screenshots/baseline/dashboard_embed_mode_with_url_params.png index cbf96cdbf278b..26a18ede2d686 100644 Binary files a/test/functional/screenshots/baseline/dashboard_embed_mode_with_url_params.png and b/test/functional/screenshots/baseline/dashboard_embed_mode_with_url_params.png differ diff --git a/test/plugin_functional/test_suites/core_plugins/rendering.ts b/test/plugin_functional/test_suites/core_plugins/rendering.ts index fe3054e41dfd6..66a2e385d3e6c 100644 --- a/test/plugin_functional/test_suites/core_plugins/rendering.ts +++ b/test/plugin_functional/test_suites/core_plugins/rendering.ts @@ -197,6 +197,7 @@ export default function ({ getService }: PluginFunctionalProviderContext) { 'xpack.cases.files.allowedMimeTypes (array)', 'xpack.cases.files.maxSize (number)', 'xpack.cases.markdownPlugins.lens (boolean)', + 'xpack.cases.stack.enabled (boolean)', 'xpack.ccr.ui.enabled (boolean)', 'xpack.cloud.base_url (string)', 'xpack.cloud.cname (string)', diff --git a/test/scripts/jenkins_security_solution_cypress_firefox.sh b/test/scripts/jenkins_security_solution_cypress_firefox.sh deleted file mode 100755 index 79623d5a2a23b..0000000000000 --- a/test/scripts/jenkins_security_solution_cypress_firefox.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env bash - -source test/scripts/jenkins_test_setup_xpack.sh - -echo " -> Running security solution cypress tests" -cd "$XPACK_DIR" - -node scripts/functional_tests \ - --debug --bail \ - --kibana-install-dir "$KIBANA_INSTALL_DIR" \ - --config test/security_solution_cypress/config.firefox.ts - -echo "" -echo "" diff --git a/typings/index.d.ts b/typings/index.d.ts index d561c1444a77a..0134f5be84018 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -20,3 +20,5 @@ declare module 'react-syntax-highlighter/dist/cjs/prism-light'; declare module 'monaco-editor/esm/vs/basic-languages/markdown/markdown'; declare module 'monaco-editor/esm/vs/basic-languages/css/css'; declare module 'monaco-editor/esm/vs/basic-languages/yaml/yaml'; + +declare module 'find-cypress-specs'; diff --git a/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts b/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts index e3942b26ee6fa..5c4acce28b108 100644 --- a/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts +++ b/x-pack/plugins/alerting/server/alerts_service/alerts_service.test.ts @@ -114,6 +114,7 @@ const getIndexTemplatePutBody = (opts?: GetIndexTemplatePutBodyOpts) => { name: '.alerts-ilm-policy', rollover_alias: `.alerts-${context ? context : 'test'}.alerts-${namespace}`, }, + 'index.mapping.ignore_malformed': true, 'index.mapping.total_fields.limit': 2500, }, mappings: { @@ -640,6 +641,7 @@ describe('Alerts Service', () => { name: '.alerts-ilm-policy', rollover_alias: `.alerts-empty.alerts-default`, }, + 'index.mapping.ignore_malformed': true, 'index.mapping.total_fields.limit': 2500, }, mappings: { diff --git a/x-pack/plugins/alerting/server/alerts_service/lib/create_or_update_index_template.test.ts b/x-pack/plugins/alerting/server/alerts_service/lib/create_or_update_index_template.test.ts index d4ce203a0d0e3..38c2207e5f410 100644 --- a/x-pack/plugins/alerting/server/alerts_service/lib/create_or_update_index_template.test.ts +++ b/x-pack/plugins/alerting/server/alerts_service/lib/create_or_update_index_template.test.ts @@ -42,6 +42,7 @@ const IndexTemplate = (namespace: string = 'default') => ({ name: 'test-ilm-policy', rollover_alias: `.alerts-test.alerts-${namespace}`, }, + 'index.mapping.ignore_malformed': true, 'index.mapping.total_fields.limit': 2500, }, }, diff --git a/x-pack/plugins/alerting/server/alerts_service/lib/create_or_update_index_template.ts b/x-pack/plugins/alerting/server/alerts_service/lib/create_or_update_index_template.ts index a17fad2d875ed..388fe6344a51f 100644 --- a/x-pack/plugins/alerting/server/alerts_service/lib/create_or_update_index_template.ts +++ b/x-pack/plugins/alerting/server/alerts_service/lib/create_or_update_index_template.ts @@ -54,6 +54,7 @@ export const getIndexTemplate = ({ rollover_alias: indexPatterns.alias, }, 'index.mapping.total_fields.limit': totalFieldsLimit, + 'index.mapping.ignore_malformed': true, }, mappings: { dynamic: false, diff --git a/x-pack/plugins/apm/ftr_e2e/cypress/e2e/read_only_user/transaction_details/transaction_details.cy.ts b/x-pack/plugins/apm/ftr_e2e/cypress/e2e/read_only_user/transaction_details/transaction_details.cy.ts index dd73051be9f2e..6886fc582f631 100644 --- a/x-pack/plugins/apm/ftr_e2e/cypress/e2e/read_only_user/transaction_details/transaction_details.cy.ts +++ b/x-pack/plugins/apm/ftr_e2e/cypress/e2e/read_only_user/transaction_details/transaction_details.cy.ts @@ -151,4 +151,30 @@ describe('Transaction details', () => { }); }); }); + + describe('when changing filters which results in no trace samples', () => { + it('trace waterfall must reset to empty state', () => { + cy.visitKibana( + `/app/apm/services/opbeans-java/transactions/view?${new URLSearchParams( + { + ...timeRange, + transactionName: 'GET /api/product', + } + )}` + ); + + cy.getByTestSubj('apmWaterfallButton').should('exist'); + + cy.getByTestSubj('apmUnifiedSearchBar') + .type(`_id: "123"`) + .type('{enter}'); + + cy.getByTestSubj('apmWaterfallButton').should('not.exist'); + cy.getByTestSubj('apmNoTraceFound').should('exist'); + + cy.reload(); + + cy.getByTestSubj('apmNoTraceFound').should('exist'); + }); + }); }); diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.tsx index 0c05b945c1b70..47642ebbdc6dc 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/distribution/index.tsx @@ -20,7 +20,7 @@ import { useApmServiceContext } from '../../../../context/apm_service/use_apm_se import { useAnyOfApmParams } from '../../../../hooks/use_apm_params'; import { useTimeRange } from '../../../../hooks/use_time_range'; import { DurationDistributionChartWithScrubber } from '../../../shared/charts/duration_distribution_chart_with_scrubber'; -import { HeightRetainer } from '../../../shared/height_retainer'; +import { ResettingHeightRetainer } from '../../../shared/height_retainer/resetting_height_container'; import { fromQuery, push, toQuery } from '../../../shared/links/url_helpers'; import { TransactionTab } from '../waterfall_with_summary/transaction_tabs'; import { useTransactionDistributionChartData } from './use_transaction_distribution_chart_data'; @@ -99,7 +99,7 @@ export function TransactionDistribution({ ); return ( - +
-
+ ); } diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/use_waterfall_fetcher.ts b/x-pack/plugins/apm/public/components/app/transaction_details/use_waterfall_fetcher.ts index 81e0d736aee19..a01bb00ea0e44 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/use_waterfall_fetcher.ts +++ b/x-pack/plugins/apm/public/components/app/transaction_details/use_waterfall_fetcher.ts @@ -56,7 +56,10 @@ export function useWaterfallFetcher({ [traceId, start, end, transactionId] ); - const waterfall = useMemo(() => getWaterfall(data), [data]); + const waterfall = useMemo( + () => getWaterfall(traceId ? data : INITIAL_DATA), + [data, traceId] + ); return { waterfall, status, error }; } diff --git a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx index e19400490133b..a14572f089137 100644 --- a/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx +++ b/x-pack/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/index.tsx @@ -60,8 +60,10 @@ export function WaterfallWithSummary({ const isLoading = waterfallFetchResult.status === FETCH_STATUS.LOADING || traceSamplesFetchStatus === FETCH_STATUS.LOADING; + // When traceId is not present, call to waterfallFetchResult will not be initiated const isSucceded = - waterfallFetchResult.status === FETCH_STATUS.SUCCESS && + (waterfallFetchResult.status === FETCH_STATUS.SUCCESS || + waterfallFetchResult.status === FETCH_STATUS.NOT_INITIATED) && traceSamplesFetchStatus === FETCH_STATUS.SUCCESS; useEffect(() => { @@ -96,6 +98,7 @@ export function WaterfallWithSummary({ })} } + data-test-subj="apmNoTraceFound" titleSize="s" /> ); diff --git a/x-pack/plugins/cases/common/ui/types.ts b/x-pack/plugins/cases/common/ui/types.ts index 86f32c87ebeeb..e2e453aaaf278 100644 --- a/x-pack/plugins/cases/common/ui/types.ts +++ b/x-pack/plugins/cases/common/ui/types.ts @@ -59,6 +59,9 @@ export interface CasesUiConfigType { maxSize?: number; allowedMimeTypes: string[]; }; + stack: { + enabled: boolean; + }; } export const StatusAll = 'all' as const; diff --git a/x-pack/plugins/cases/public/components/user_actions/comment/comment.test.tsx b/x-pack/plugins/cases/public/components/user_actions/comment/comment.test.tsx index 77d38e87a2c41..bab441edbe80c 100644 --- a/x-pack/plugins/cases/public/components/user_actions/comment/comment.test.tsx +++ b/x-pack/plugins/cases/public/components/user_actions/comment/comment.test.tsx @@ -587,28 +587,60 @@ describe('createCommentUserActionBuilder', () => { }); }); - it('renders correctly an action', async () => { - const userAction = getHostIsolationUserAction(); - - const builder = createCommentUserActionBuilder({ - ...builderArgs, - caseData: { - ...builderArgs.caseData, - comments: [hostIsolationComment()], - }, - userAction, + describe('Host isolation action', () => { + it('renders correctly an action', async () => { + const userAction = getHostIsolationUserAction(); + + const builder = createCommentUserActionBuilder({ + ...builderArgs, + caseData: { + ...builderArgs.caseData, + comments: [hostIsolationComment()], + }, + userAction, + }); + + const createdUserAction = builder.build(); + render( + + + + ); + + expect(screen.getByTestId('endpoint-action')).toBeInTheDocument(); + expect(screen.getByText('submitted isolate request on host')).toBeInTheDocument(); + expect(screen.getByText('host1')).toBeInTheDocument(); + expect(screen.getByText('I just isolated the host!')).toBeInTheDocument(); }); - const createdUserAction = builder.build(); - render( - - - - ); + it('shows the correct username', async () => { + const createdBy = { profileUid: userProfiles[0].uid }; + const userAction = getHostIsolationUserAction({ + createdBy, + }); - expect(screen.getByText('submitted isolate request on host')).toBeInTheDocument(); - expect(screen.getByText('host1')).toBeInTheDocument(); - expect(screen.getByText('I just isolated the host!')).toBeInTheDocument(); + const builder = createCommentUserActionBuilder({ + ...builderArgs, + caseData: { + ...builderArgs.caseData, + comments: [hostIsolationComment({ createdBy })], + }, + userAction, + }); + + const createdUserAction = builder.build(); + render( + + + + ); + + expect( + screen.getAllByTestId('case-user-profile-avatar-damaged_raccoon')[0] + ).toBeInTheDocument(); + expect(screen.getAllByText('DR')[0]).toBeInTheDocument(); + expect(screen.getAllByText('Damaged Raccoon')[0]).toBeInTheDocument(); + }); }); describe('Attachment framework', () => { diff --git a/x-pack/plugins/cases/public/components/user_actions/index.test.tsx b/x-pack/plugins/cases/public/components/user_actions/index.test.tsx index 1d3ba134f7e6d..4530e115a2f04 100644 --- a/x-pack/plugins/cases/public/components/user_actions/index.test.tsx +++ b/x-pack/plugins/cases/public/components/user_actions/index.test.tsx @@ -13,18 +13,11 @@ import { waitForEuiPopoverOpen } from '@elastic/eui/lib/test/rtl'; import routeData from 'react-router'; import { useUpdateComment } from '../../containers/use_update_comment'; -import { - basicCase, - caseUserActions, - getHostIsolationUserAction, - getUserAction, - hostIsolationComment, -} from '../../containers/mock'; +import { basicCase, caseUserActions, getUserAction } from '../../containers/mock'; import { UserActions } from '.'; import type { AppMockRenderer } from '../../common/mock'; import { createAppMockRenderer } from '../../common/mock'; import { UserActionActions } from '../../../common/types/domain'; -import { userProfiles, userProfilesMap } from '../../containers/user_profiles/api.mock'; import { getCaseConnectorsMockResponse } from '../../common/mock/connectors'; import type { UserActivityParams } from '../user_actions_activity_bar/types'; import { useFindCaseUserActions } from '../../containers/use_find_case_user_actions'; @@ -325,277 +318,4 @@ describe.skip(`UserActions`, () => { expect(screen.getAllByTestId('add-comment')[1].textContent).toContain(newComment); }); }); - - // FLAKY: https://github.com/elastic/kibana/issues/156742 - describe.skip('Host isolation action', () => { - it('renders in the cases details view', async () => { - const isolateAction = [getHostIsolationUserAction()]; - const props = { - ...defaultProps, - data: { ...defaultProps.data, comments: [...basicCase.comments, hostIsolationComment()] }, - }; - - useFindCaseUserActionsMock.mockReturnValue({ - ...defaultUseFindCaseUserActions, - data: { userActions: isolateAction }, - }); - - appMockRender.render(); - await waitFor(() => { - expect(screen.getByTestId('endpoint-action')).toBeInTheDocument(); - }); - }); - - it('shows the correct username', async () => { - const isolateAction = [ - getHostIsolationUserAction({ createdBy: { profileUid: userProfiles[0].uid } }), - ]; - const props = { - ...defaultProps, - userProfiles: userProfilesMap, - data: { - ...defaultProps.data, - comments: [hostIsolationComment({ createdBy: { profileUid: userProfiles[0].uid } })], - }, - }; - - useFindCaseUserActionsMock.mockReturnValue({ - ...defaultUseFindCaseUserActions, - data: { userActions: isolateAction }, - }); - - appMockRender.render(); - - expect( - screen.getAllByTestId('case-user-profile-avatar-damaged_raccoon')[0] - ).toBeInTheDocument(); - expect(screen.getAllByText('DR')[0]).toBeInTheDocument(); - expect(screen.getAllByText('Damaged Raccoon')[0]).toBeInTheDocument(); - }); - }); - - // FLAKY: https://github.com/elastic/kibana/issues/156750 - // FLAKY: https://github.com/elastic/kibana/issues/156749 - // FLAKY: https://github.com/elastic/kibana/issues/156748 - // FLAKY: https://github.com/elastic/kibana/issues/156747 - // FLAKY: https://github.com/elastic/kibana/issues/156746 - // FLAKY: https://github.com/elastic/kibana/issues/156745 - // FLAKY: https://github.com/elastic/kibana/issues/156744 - // FLAKY: https://github.com/elastic/kibana/issues/156743 - describe.skip('pagination', () => { - beforeEach(() => { - jest.clearAllMocks(); - }); - - it('Loading spinner when user actions loading', () => { - useFindCaseUserActionsMock.mockReturnValue({ isLoading: true }); - useInfiniteFindCaseUserActionsMock.mockReturnValue({ isLoading: true }); - appMockRender.render( - - ); - - expect(screen.getByTestId('user-actions-loading')).toBeInTheDocument(); - }); - - it('renders two user actions list when user actions are more than 10', () => { - appMockRender.render(); - - expect(screen.getAllByTestId('user-actions-list')).toHaveLength(2); - }); - - it('renders only one user actions list when last page is 0', async () => { - useFindCaseUserActionsMock.mockReturnValue({ - ...defaultUseFindCaseUserActions, - data: { userActions: [] }, - }); - const props = { - ...defaultProps, - userActionsStats: { - total: 0, - totalComments: 0, - totalOtherActions: 0, - }, - }; - - appMockRender.render(); - - await waitForComponentToUpdate(); - - expect(screen.getAllByTestId('user-actions-list')).toHaveLength(1); - }); - - it('renders only one user actions list when last page is 1', async () => { - useFindCaseUserActionsMock.mockReturnValue({ - ...defaultUseFindCaseUserActions, - data: { userActions: [] }, - }); - const props = { - ...defaultProps, - userActionsStats: { - total: 1, - totalComments: 0, - totalOtherActions: 1, - }, - }; - - appMockRender.render(); - - await waitForComponentToUpdate(); - - expect(screen.getAllByTestId('user-actions-list')).toHaveLength(1); - }); - - it('renders only one action list when user actions are less than or equal to 10', async () => { - useFindCaseUserActionsMock.mockReturnValue({ - ...defaultUseFindCaseUserActions, - data: { userActions: [] }, - }); - const props = { - ...defaultProps, - userActionsStats: { - total: 10, - totalComments: 6, - totalOtherActions: 4, - }, - }; - - appMockRender.render(); - - await waitForComponentToUpdate(); - - expect(screen.getAllByTestId('user-actions-list')).toHaveLength(1); - }); - - it('call fetchNextPage on showMore button click', async () => { - useInfiniteFindCaseUserActionsMock.mockReturnValue({ - ...defaultInfiniteUseFindCaseUserActions, - hasNextPage: true, - }); - const props = { - ...defaultProps, - userActionsStats: { - total: 25, - totalComments: 10, - totalOtherActions: 15, - }, - }; - - appMockRender.render(); - - await waitForComponentToUpdate(); - - expect(screen.getAllByTestId('user-actions-list')).toHaveLength(2); - - const showMore = screen.getByTestId('cases-show-more-user-actions'); - - expect(showMore).toBeInTheDocument(); - - userEvent.click(showMore); - - await waitFor(() => { - expect(defaultInfiniteUseFindCaseUserActions.fetchNextPage).toHaveBeenCalled(); - }); - }); - - it('shows more button visible 21st user action added', async () => { - const mockUserActions = [ - ...caseUserActions, - getUserAction('comment', UserActionActions.create), - getUserAction('comment', UserActionActions.update), - getUserAction('comment', UserActionActions.create), - getUserAction('comment', UserActionActions.update), - getUserAction('comment', UserActionActions.create), - getUserAction('comment', UserActionActions.update), - getUserAction('comment', UserActionActions.create), - ]; - useInfiniteFindCaseUserActionsMock.mockReturnValue({ - ...defaultInfiniteUseFindCaseUserActions, - data: { - pages: [ - { - total: 20, - page: 1, - perPage: 10, - userActions: mockUserActions, - }, - ], - }, - }); - useFindCaseUserActionsMock.mockReturnValue({ - ...defaultUseFindCaseUserActions, - data: { - total: 20, - page: 2, - perPage: 10, - userActions: mockUserActions, - }, - }); - const props = { - ...defaultProps, - userActionsStats: { - total: 20, - totalComments: 10, - totalOtherActions: 10, - }, - }; - - const { rerender } = appMockRender.render(); - - await waitForComponentToUpdate(); - - expect(screen.getAllByTestId('user-actions-list')).toHaveLength(2); - expect(screen.queryByTestId('cases-show-more-user-actions')).not.toBeInTheDocument(); - - useInfiniteFindCaseUserActionsMock.mockReturnValue({ - ...defaultInfiniteUseFindCaseUserActions, - data: { - pages: [ - { - total: 21, - page: 1, - perPage: 10, - userActions: mockUserActions, - }, - { - total: 21, - page: 2, - perPage: 10, - userActions: [getUserAction('comment', UserActionActions.create)], - }, - ], - }, - hasNextPage: true, - }); - useFindCaseUserActionsMock.mockReturnValue({ - ...defaultUseFindCaseUserActions, - data: { - total: 21, - page: 2, - perPage: 10, - userActions: mockUserActions, - }, - }); - - const newProps = { - ...props, - userActionsStats: { - total: 21, - totalComments: 11, - totalOtherActions: 10, - }, - }; - - rerender(); - - await waitForComponentToUpdate(); - - expect(screen.getAllByTestId('user-actions-list')).toHaveLength(2); - - const firstUserActionsList = screen.getAllByTestId('user-actions-list')[0]; - - expect(firstUserActionsList.getElementsByTagName('li')).toHaveLength(11); - - expect(screen.getByTestId('cases-show-more-user-actions')).toBeInTheDocument(); - }); - }); }); diff --git a/x-pack/plugins/cases/public/plugin.test.ts b/x-pack/plugins/cases/public/plugin.test.ts new file mode 100644 index 0000000000000..bb81b7d501c5d --- /dev/null +++ b/x-pack/plugins/cases/public/plugin.test.ts @@ -0,0 +1,154 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PluginInitializerContext } from '@kbn/core/public'; +import { coreMock } from '@kbn/core/public/mocks'; +import { licensingMock } from '@kbn/licensing-plugin/public/mocks'; +import { featuresPluginMock } from '@kbn/features-plugin/public/mocks'; +import { securityMock } from '@kbn/security-plugin/public/mocks'; +import { managementPluginMock } from '@kbn/management-plugin/public/mocks'; +import { uiActionsPluginMock } from '@kbn/ui-actions-plugin/public/mocks'; +import { dataPluginMock } from '@kbn/data-plugin/public/mocks'; +import { embeddablePluginMock } from '@kbn/embeddable-plugin/public/mocks'; +import { lensPluginMock } from '@kbn/lens-plugin/public/mocks'; +import { contentManagementMock } from '@kbn/content-management-plugin/public/mocks'; +import { mockStorage } from '@kbn/kibana-utils-plugin/public/storage/hashed_item_store/mock'; +import { triggersActionsUiMock } from '@kbn/triggers-actions-ui-plugin/public/mocks'; +import type { CasesPluginSetup, CasesPluginStart } from './types'; +import { CasesUiPlugin } from './plugin'; +import { ALLOWED_MIME_TYPES } from '../common/constants/mime_types'; + +function getConfig(overrides = {}) { + return { + markdownPlugins: { lens: true }, + files: { maxSize: 1, allowedMimeTypes: ALLOWED_MIME_TYPES }, + stack: { enabled: true }, + ...overrides, + }; +} + +describe('Cases Ui Plugin', () => { + let context: PluginInitializerContext; + let plugin: CasesUiPlugin; + let coreSetup: ReturnType; + let coreStart: ReturnType; + let pluginsSetup: jest.Mocked; + let pluginsStart: jest.Mocked; + + beforeEach(() => { + context = coreMock.createPluginInitializerContext(getConfig()); + plugin = new CasesUiPlugin(context); + coreSetup = coreMock.createSetup(); + coreStart = coreMock.createStart(); + + pluginsSetup = { + files: { + filesClientFactory: { asScoped: jest.fn(), asUnscoped: jest.fn() }, + registerFileKind: jest.fn(), + }, + security: securityMock.createSetup(), + management: managementPluginMock.createSetupContract(), + }; + + pluginsStart = { + licensing: licensingMock.createStart(), + uiActions: uiActionsPluginMock.createStartContract(), + files: { + filesClientFactory: { asScoped: jest.fn(), asUnscoped: jest.fn() }, + getAllFindKindDefinitions: jest.fn(), + getFileKindDefinition: jest.fn(), + }, + features: featuresPluginMock.createStart(), + security: securityMock.createStart(), + data: dataPluginMock.createStartContract(), + embeddable: embeddablePluginMock.createStartContract(), + lens: lensPluginMock.createStartContract(), + contentManagement: contentManagementMock.createStartContract(), + storage: { + store: { + getItem: mockStorage.getItem, + setItem: mockStorage.setItem, + removeItem: mockStorage.removeItem, + clear: mockStorage.clear, + }, + get: jest.fn(), + set: jest.fn(), + clear: jest.fn(), + remove: jest.fn(), + }, + triggersActionsUi: triggersActionsUiMock.createStart(), + }; + }); + + describe('setup()', () => { + it('should start setup cases plugin correctly', async () => { + const setup = plugin.setup(coreSetup, pluginsSetup); + + expect(setup).toMatchInlineSnapshot(` + Object { + "attachmentFramework": Object { + "registerExternalReference": [Function], + "registerPersistableState": [Function], + }, + } + `); + }); + + it('should register kibana feature when stack is enabled', async () => { + plugin.setup(coreSetup, pluginsSetup); + + expect( + pluginsSetup.management.sections.section.insightsAndAlerting.registerApp + ).toHaveBeenCalled(); + }); + + it('should not register kibana feature when stack is disabled', async () => { + context = coreMock.createPluginInitializerContext(getConfig({ stack: { enabled: false } })); + const pluginWithStackDisabled = new CasesUiPlugin(context); + + pluginWithStackDisabled.setup(coreSetup, pluginsSetup); + + expect( + pluginsSetup.management.sections.section.insightsAndAlerting.registerApp + ).not.toHaveBeenCalled(); + }); + }); + + describe('start', () => { + it('should start cases plugin correctly', async () => { + const pluginStart = plugin.start(coreStart, pluginsStart); + + expect(pluginStart).toStrictEqual({ + api: { + cases: { + bulkGet: expect.any(Function), + find: expect.any(Function), + getCasesMetrics: expect.any(Function), + getCasesStatus: expect.any(Function), + }, + getRelatedCases: expect.any(Function), + }, + helpers: { + canUseCases: expect.any(Function), + getRuleIdFromEvent: expect.any(Function), + getUICapabilities: expect.any(Function), + groupAlertsByRule: expect.any(Function), + }, + hooks: { + useCasesAddToExistingCaseModal: expect.any(Function), + useCasesAddToNewCaseFlyout: expect.any(Function), + }, + ui: { + getAllCasesSelectorModal: expect.any(Function), + getCases: expect.any(Function), + getCasesContext: expect.any(Function), + getRecentCases: expect.any(Function), + }, + }); + }); + }); +}); diff --git a/x-pack/plugins/cases/public/plugin.ts b/x-pack/plugins/cases/public/plugin.ts index 82d62f2c07da7..f4909f344e7fc 100644 --- a/x-pack/plugins/cases/public/plugin.ts +++ b/x-pack/plugins/cases/public/plugin.ts @@ -75,30 +75,32 @@ export class CasesUiPlugin }); } - plugins.management.sections.section.insightsAndAlerting.registerApp({ - id: APP_ID, - title: APP_TITLE, - order: 1, - async mount(params: ManagementAppMountParams) { - const [coreStart, pluginsStart] = (await core.getStartServices()) as [ - CoreStart, - CasesPluginStart, - unknown - ]; - - const { renderApp } = await import('./application'); - - return renderApp({ - mountParams: params, - coreStart, - pluginsStart, - storage, - kibanaVersion, - externalReferenceAttachmentTypeRegistry, - persistableStateAttachmentTypeRegistry, - }); - }, - }); + if (config.stack.enabled) { + plugins.management.sections.section.insightsAndAlerting.registerApp({ + id: APP_ID, + title: APP_TITLE, + order: 1, + async mount(params: ManagementAppMountParams) { + const [coreStart, pluginsStart] = (await core.getStartServices()) as [ + CoreStart, + CasesPluginStart, + unknown + ]; + + const { renderApp } = await import('./application'); + + return renderApp({ + mountParams: params, + coreStart, + pluginsStart, + storage, + kibanaVersion, + externalReferenceAttachmentTypeRegistry, + persistableStateAttachmentTypeRegistry, + }); + }, + }); + } return { attachmentFramework: { diff --git a/x-pack/plugins/cases/server/config.test.ts b/x-pack/plugins/cases/server/config.test.ts index 54fc42f694bc2..352faac983f29 100644 --- a/x-pack/plugins/cases/server/config.test.ts +++ b/x-pack/plugins/cases/server/config.test.ts @@ -106,6 +106,9 @@ describe('config validation', () => { "markdownPlugins": Object { "lens": true, }, + "stack": Object { + "enabled": true, + }, } `); }); diff --git a/x-pack/plugins/cases/server/config.ts b/x-pack/plugins/cases/server/config.ts index c2daeb73b03de..7e30671ee4734 100644 --- a/x-pack/plugins/cases/server/config.ts +++ b/x-pack/plugins/cases/server/config.ts @@ -20,6 +20,9 @@ export const ConfigSchema = schema.object({ // intentionally not setting a default here so that we can determine if the user set it maxSize: schema.maybe(schema.number({ min: 0 })), }), + stack: schema.object({ + enabled: schema.boolean({ defaultValue: true }), + }), }); export type ConfigType = TypeOf; diff --git a/x-pack/plugins/cases/server/index.ts b/x-pack/plugins/cases/server/index.ts index 62748905f6b82..b1cadb43f147c 100644 --- a/x-pack/plugins/cases/server/index.ts +++ b/x-pack/plugins/cases/server/index.ts @@ -16,6 +16,7 @@ export const config: PluginConfigDescriptor = { exposeToBrowser: { markdownPlugins: true, files: { maxSize: true, allowedMimeTypes: true }, + stack: { enabled: true }, }, deprecations: ({ renameFromRoot }) => [ renameFromRoot('xpack.case.enabled', 'xpack.cases.enabled', { level: 'critical' }), diff --git a/x-pack/plugins/cases/server/plugin.test.ts b/x-pack/plugins/cases/server/plugin.test.ts new file mode 100644 index 0000000000000..255e6ce42af68 --- /dev/null +++ b/x-pack/plugins/cases/server/plugin.test.ts @@ -0,0 +1,123 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PluginInitializerContext } from '@kbn/core/server'; +import {} from '@kbn/core/server'; +import { coreMock } from '@kbn/core/server/mocks'; +import { usageCollectionPluginMock } from '@kbn/usage-collection-plugin/server/mocks'; +import { licensingMock } from '@kbn/licensing-plugin/server/mocks'; +import { featuresPluginMock } from '@kbn/features-plugin/server/mocks'; +import { createFilesSetupMock } from '@kbn/files-plugin/server/mocks'; +import { securityMock } from '@kbn/security-plugin/server/mocks'; +import { makeLensEmbeddableFactory } from '@kbn/lens-plugin/server/embeddable/make_lens_embeddable_factory'; +import { taskManagerMock } from '@kbn/task-manager-plugin/server/mocks'; +import { actionsMock } from '@kbn/actions-plugin/server/mocks'; +import { notificationsMock } from '@kbn/notifications-plugin/server/mocks'; +import { alertsMock } from '@kbn/alerting-plugin/server/mocks'; +import type { PluginsSetup, PluginsStart } from './plugin'; +import { CasePlugin } from './plugin'; +import type { ConfigType } from './config'; +import { ALLOWED_MIME_TYPES } from '../common/constants/mime_types'; + +function getConfig(overrides = {}) { + return { + markdownPlugins: { lens: true }, + files: { maxSize: 1, allowedMimeTypes: ALLOWED_MIME_TYPES }, + stack: { enabled: true }, + ...overrides, + }; +} + +describe('Cases Plugin', () => { + let context: PluginInitializerContext; + let plugin: CasePlugin; + let coreSetup: ReturnType; + let coreStart: ReturnType; + let pluginsSetup: jest.Mocked; + let pluginsStart: jest.Mocked; + + beforeEach(() => { + context = coreMock.createPluginInitializerContext(getConfig()); + + plugin = new CasePlugin(context); + coreSetup = coreMock.createSetup(); + coreStart = coreMock.createStart(); + + pluginsSetup = { + taskManager: taskManagerMock.createSetup(), + actions: actionsMock.createSetup(), + files: createFilesSetupMock(), + lens: { + lensEmbeddableFactory: makeLensEmbeddableFactory( + () => ({}), + () => ({}), + {} + ), + registerVisualizationMigration: jest.fn(), + }, + security: securityMock.createSetup(), + licensing: licensingMock.createSetup(), + usageCollection: usageCollectionPluginMock.createSetupContract(), + features: featuresPluginMock.createSetup(), + }; + + pluginsStart = { + licensing: licensingMock.createStart(), + actions: actionsMock.createStart(), + files: { fileServiceFactory: { asScoped: jest.fn(), asInternal: jest.fn() } }, + features: featuresPluginMock.createStart(), + security: securityMock.createStart(), + notifications: notificationsMock.createStart(), + ruleRegistry: { getRacClientWithRequest: jest.fn(), alerting: alertsMock.createStart() }, + }; + }); + + describe('setup()', () => { + it('should start setup cases plugin correctly', async () => { + plugin.setup(coreSetup, pluginsSetup); + + expect(context.logger.get().debug).toHaveBeenCalledWith( + `Setting up Case Workflow with core contract [${Object.keys( + coreSetup + )}] and plugins [${Object.keys(pluginsSetup)}]` + ); + }); + + it('should register kibana feature when stack is enabled', async () => { + plugin.setup(coreSetup, pluginsSetup); + + expect(pluginsSetup.features.registerKibanaFeature).toHaveBeenCalled(); + }); + + it('should not register kibana feature when stack is disabled', async () => { + context = coreMock.createPluginInitializerContext( + getConfig({ stack: { enabled: false } }) + ); + const pluginWithStackDisabled = new CasePlugin(context); + + pluginWithStackDisabled.setup(coreSetup, pluginsSetup); + + expect(pluginsSetup.features.registerKibanaFeature).not.toHaveBeenCalled(); + }); + }); + + describe('start', () => { + it('should start cases plugin correctly', async () => { + const pluginStart = plugin.start(coreStart, pluginsStart); + + expect(context.logger.get().debug).toHaveBeenCalledWith(`Starting Case Workflow`); + + expect(pluginStart).toMatchInlineSnapshot(` + Object { + "getCasesClientWithRequest": [Function], + "getExternalReferenceAttachmentTypeRegistry": [Function], + "getPersistableStateAttachmentTypeRegistry": [Function], + } + `); + }); + }); +}); diff --git a/x-pack/plugins/cases/server/plugin.ts b/x-pack/plugins/cases/server/plugin.ts index 0ae005e09b188..510686f1a98bd 100644 --- a/x-pack/plugins/cases/server/plugin.ts +++ b/x-pack/plugins/cases/server/plugin.ts @@ -121,7 +121,9 @@ export class CasePlugin { this.securityPluginSetup = plugins.security; this.lensEmbeddableFactory = plugins.lens.lensEmbeddableFactory; - plugins.features.registerKibanaFeature(getCasesKibanaFeature()); + if (this.caseConfig.stack.enabled) { + plugins.features.registerKibanaFeature(getCasesKibanaFeature()); + } core.savedObjects.registerType( createCaseCommentSavedObjectType({ diff --git a/x-pack/plugins/cases/tsconfig.json b/x-pack/plugins/cases/tsconfig.json index cb82b27d5334d..ccd6e228d6aff 100644 --- a/x-pack/plugins/cases/tsconfig.json +++ b/x-pack/plugins/cases/tsconfig.json @@ -68,6 +68,7 @@ "@kbn/core-theme-browser", "@kbn/serverless", "@kbn/core-http-server", + "@kbn/alerting-plugin", "@kbn/content-management-plugin", ], "exclude": [ diff --git a/x-pack/plugins/cloud_integrations/cloud_links/kibana.jsonc b/x-pack/plugins/cloud_integrations/cloud_links/kibana.jsonc index b9b9a0f629b64..4b6625f842f79 100644 --- a/x-pack/plugins/cloud_integrations/cloud_links/kibana.jsonc +++ b/x-pack/plugins/cloud_integrations/cloud_links/kibana.jsonc @@ -11,6 +11,9 @@ "cloud", "security", "guidedOnboarding" + ], + "requiredBundles": [ + "kibanaReact" ] } } diff --git a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/__snapshots__/maybe_add_cloud_links.test.ts.snap b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/__snapshots__/maybe_add_cloud_links.test.ts.snap new file mode 100644 index 0000000000000..7a957943fe2f0 --- /dev/null +++ b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/__snapshots__/maybe_add_cloud_links.test.ts.snap @@ -0,0 +1,51 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`maybeAddCloudLinks when cloud enabled and it fails to fetch the user, it sets the links 2`] = ` +Array [ + Object { + "href": "profile-url", + "iconType": "user", + "label": "Profile", + "order": 100, + "setAsProfile": true, + }, + Object { + "href": "billing-url", + "iconType": "visGauge", + "label": "Billing", + "order": 200, + }, + Object { + "href": "organization-url", + "iconType": "gear", + "label": "Organization", + "order": 300, + }, + Any, +] +`; + +exports[`maybeAddCloudLinks when cloud enabled and the user is an Elastic Cloud user, it sets the links 2`] = ` +Array [ + Object { + "href": "profile-url", + "iconType": "user", + "label": "Profile", + "order": 100, + "setAsProfile": true, + }, + Object { + "href": "billing-url", + "iconType": "visGauge", + "label": "Billing", + "order": 200, + }, + Object { + "href": "organization-url", + "iconType": "gear", + "label": "Organization", + "order": 300, + }, + Any, +] +`; diff --git a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/maybe_add_cloud_links.test.ts b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/maybe_add_cloud_links.test.ts index f2e14d1a08526..b9045fdc9a59f 100644 --- a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/maybe_add_cloud_links.test.ts +++ b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/maybe_add_cloud_links.test.ts @@ -14,12 +14,11 @@ import { maybeAddCloudLinks } from './maybe_add_cloud_links'; describe('maybeAddCloudLinks', () => { it('should skip if cloud is disabled', async () => { const security = securityMock.createStart(); + const core = coreMock.createStart(); maybeAddCloudLinks({ + core, security, - chrome: coreMock.createStart().chrome, cloud: { ...cloudMock.createStart(), isCloudEnabled: false }, - docLinks: coreMock.createStart().docLinks, - uiSettingsClient: coreMock.createStart().uiSettings, }); // Since there's a promise, let's wait for the next tick await new Promise((resolve) => process.nextTick(resolve)); @@ -31,13 +30,12 @@ describe('maybeAddCloudLinks', () => { security.authc.getCurrentUser.mockResolvedValue( securityMock.createMockAuthenticatedUser({ elastic_cloud_user: true }) ); - const { chrome, docLinks, uiSettings } = coreMock.createStart(); + const core = coreMock.createStart(); + const { chrome } = core; maybeAddCloudLinks({ security, - chrome, + core, cloud: { ...cloudMock.createStart(), isCloudEnabled: true }, - docLinks, - uiSettingsClient: uiSettings, }); // Since there's a promise, let's wait for the next tick await new Promise((resolve) => process.nextTick(resolve)); @@ -53,104 +51,28 @@ describe('maybeAddCloudLinks', () => { ] `); expect(security.navControlService.addUserMenuLinks).toHaveBeenCalledTimes(1); - expect(security.navControlService.addUserMenuLinks.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Array [ - Object { - "href": "profile-url", - "iconType": "user", - "label": "Profile", - "order": 100, - "setAsProfile": true, - }, - Object { - "href": "billing-url", - "iconType": "visGauge", - "label": "Billing", - "order": 200, - }, - Object { - "href": "organization-url", - "iconType": "gear", - "label": "Organization", - "order": 300, - }, - Object { - "content": , - "href": "", - "iconType": "", - "label": "", - "order": 400, - }, - ], - ] - `); + expect(security.navControlService.addUserMenuLinks.mock.calls[0][0]).toMatchSnapshot([ + { + href: 'profile-url', + iconType: 'user', + label: 'Profile', + order: 100, + setAsProfile: true, + }, + { + href: 'billing-url', + iconType: 'visGauge', + label: 'Billing', + order: 200, + }, + { + href: 'organization-url', + iconType: 'gear', + label: 'Organization', + order: 300, + }, + expect.any(Object), + ]); expect(chrome.setHelpMenuLinks).toHaveBeenCalledTimes(1); expect(chrome.setHelpMenuLinks.mock.calls[0]).toMatchInlineSnapshot(` @@ -176,13 +98,12 @@ describe('maybeAddCloudLinks', () => { it('when cloud enabled and it fails to fetch the user, it sets the links', async () => { const security = securityMock.createStart(); security.authc.getCurrentUser.mockRejectedValue(new Error('Something went terribly wrong')); - const { chrome, docLinks, uiSettings } = coreMock.createStart(); + const core = coreMock.createStart(); + const { chrome } = core; maybeAddCloudLinks({ security, - chrome, + core, cloud: { ...cloudMock.createStart(), isCloudEnabled: true }, - docLinks, - uiSettingsClient: uiSettings, }); // Since there's a promise, let's wait for the next tick await new Promise((resolve) => process.nextTick(resolve)); @@ -198,104 +119,28 @@ describe('maybeAddCloudLinks', () => { ] `); expect(security.navControlService.addUserMenuLinks).toHaveBeenCalledTimes(1); - expect(security.navControlService.addUserMenuLinks.mock.calls[0]).toMatchInlineSnapshot(` - Array [ - Array [ - Object { - "href": "profile-url", - "iconType": "user", - "label": "Profile", - "order": 100, - "setAsProfile": true, - }, - Object { - "href": "billing-url", - "iconType": "visGauge", - "label": "Billing", - "order": 200, - }, - Object { - "href": "organization-url", - "iconType": "gear", - "label": "Organization", - "order": 300, - }, - Object { - "content": , - "href": "", - "iconType": "", - "label": "", - "order": 400, - }, - ], - ] - `); + expect(security.navControlService.addUserMenuLinks.mock.calls[0][0]).toMatchSnapshot([ + { + href: 'profile-url', + iconType: 'user', + label: 'Profile', + order: 100, + setAsProfile: true, + }, + { + href: 'billing-url', + iconType: 'visGauge', + label: 'Billing', + order: 200, + }, + { + href: 'organization-url', + iconType: 'gear', + label: 'Organization', + order: 300, + }, + expect.any(Object), + ]); expect(chrome.setHelpMenuLinks).toHaveBeenCalledTimes(1); expect(chrome.setHelpMenuLinks.mock.calls[0]).toMatchInlineSnapshot(` Array [ @@ -322,13 +167,12 @@ describe('maybeAddCloudLinks', () => { security.authc.getCurrentUser.mockResolvedValue( securityMock.createMockAuthenticatedUser({ elastic_cloud_user: false }) ); - const { chrome, docLinks, uiSettings } = coreMock.createStart(); + const core = coreMock.createStart(); + const { chrome } = core; maybeAddCloudLinks({ security, - chrome, + core, cloud: { ...cloudMock.createStart(), isCloudEnabled: true }, - docLinks, - uiSettingsClient: uiSettings, }); // Since there's a promise, let's wait for the next tick await new Promise((resolve) => process.nextTick(resolve)); diff --git a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/maybe_add_cloud_links.ts b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/maybe_add_cloud_links.ts index 1becd2cdf7254..33fb4df7bfce2 100644 --- a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/maybe_add_cloud_links.ts +++ b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/maybe_add_cloud_links.ts @@ -9,28 +9,18 @@ import { catchError, defer, filter, map, of, combineLatest } from 'rxjs'; import { i18n } from '@kbn/i18n'; import type { CloudStart } from '@kbn/cloud-plugin/public'; -import type { ChromeStart } from '@kbn/core/public'; +import type { CoreStart } from '@kbn/core/public'; import type { SecurityPluginStart } from '@kbn/security-plugin/public'; -import type { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; -import type { DocLinksStart } from '@kbn/core-doc-links-browser'; import { createUserMenuLinks } from './user_menu_links'; import { createHelpMenuLinks } from './help_menu_links'; export interface MaybeAddCloudLinksDeps { + core: CoreStart; security: SecurityPluginStart; - chrome: ChromeStart; cloud: CloudStart; - docLinks: DocLinksStart; - uiSettingsClient: IUiSettingsClient; } -export function maybeAddCloudLinks({ - security, - chrome, - cloud, - docLinks, - uiSettingsClient, -}: MaybeAddCloudLinksDeps): void { +export function maybeAddCloudLinks({ core, security, cloud }: MaybeAddCloudLinksDeps): void { const userObservable = defer(() => security.authc.getCurrentUser()).pipe( // Check if user is a cloud user. map((user) => user.elastic_cloud_user), @@ -39,7 +29,7 @@ export function maybeAddCloudLinks({ filter((isElasticCloudUser) => isElasticCloudUser === true), map(() => { if (cloud.deploymentUrl) { - chrome.setCustomNavLink({ + core.chrome.setCustomNavLink({ title: i18n.translate('xpack.cloudLinks.deploymentLinkLabel', { defaultMessage: 'Manage this deployment', }), @@ -47,22 +37,26 @@ export function maybeAddCloudLinks({ href: cloud.deploymentUrl, }); } - const userMenuLinks = createUserMenuLinks({ cloud, security, uiSettingsClient }); + const userMenuLinks = createUserMenuLinks({ + core, + cloud, + security, + }); security.navControlService.addUserMenuLinks(userMenuLinks); }) ); - const helpObservable = chrome.getHelpSupportUrl$(); + const helpObservable = core.chrome.getHelpSupportUrl$(); if (cloud.isCloudEnabled) { combineLatest({ user: userObservable, helpSupportUrl: helpObservable }).subscribe( ({ helpSupportUrl }) => { const helpMenuLinks = createHelpMenuLinks({ - docLinks, + docLinks: core.docLinks, helpSupportUrl, }); - chrome.setHelpMenuLinks(helpMenuLinks); + core.chrome.setHelpMenuLinks(helpMenuLinks); } ); } diff --git a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_hook.ts b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_hook.ts index 75d6ae4d1d329..c0a4fcc3a09ac 100644 --- a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_hook.ts +++ b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_hook.ts @@ -7,21 +7,20 @@ import { useCallback, useEffect, useState } from 'react'; import { i18n } from '@kbn/i18n'; -import type { SecurityPluginStart } from '@kbn/security-plugin/public'; import { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; +import { useUpdateUserProfile } from '@kbn/user-profile-components'; interface Deps { uiSettingsClient: IUiSettingsClient; - security: SecurityPluginStart; } -export const useThemeDarkmodeToggle = ({ uiSettingsClient, security }: Deps) => { +export const useThemeDarkmodeToggle = ({ uiSettingsClient }: Deps) => { const [isDarkModeOn, setIsDarkModeOn] = useState(false); // If a value is set in kibana.yml (uiSettings.overrides.theme:darkMode) // we don't allow the user to change the theme color. const valueSetInKibanaConfig = uiSettingsClient.isOverridden('theme:darkMode'); - const { userProfileData, isLoading, update } = security.hooks.useUpdateUserProfile({ + const { userProfileData, isLoading, update } = useUpdateUserProfile({ notificationSuccess: { title: i18n.translate('xpack.cloudLinks.userMenuLinks.darkMode.successNotificationTitle', { defaultMessage: 'Color theme updated', diff --git a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.test.tsx b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.test.tsx index 2bebdad488498..6b06cd64b9e23 100644 --- a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.test.tsx +++ b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.test.tsx @@ -11,18 +11,22 @@ import '@testing-library/jest-dom'; import { coreMock } from '@kbn/core/public/mocks'; import { securityMock } from '@kbn/security-plugin/public/mocks'; -import { ThemDarkModeToggle } from './theme_darkmode_toggle'; +import { ThemeDarkModeToggle } from './theme_darkmode_toggle'; -describe('ThemDarkModeToggle', () => { - const mockUseUpdateUserProfile = jest.fn(); - const mockGetSpaceDarkModeValue = jest.fn(); +const mockUseUpdateUserProfile = jest.fn(); +jest.mock('@kbn/user-profile-components', () => { + const original = jest.requireActual('@kbn/user-profile-components'); + return { + ...original, + useUpdateUserProfile: () => mockUseUpdateUserProfile(), + }; +}); + +describe('ThemeDarkModeToggle', () => { it('renders correctly and toggles dark mode', () => { - const security = { - ...securityMock.createStart(), - hooks: { useUpdateUserProfile: mockUseUpdateUserProfile }, - }; - const { uiSettings } = coreMock.createStart(); + const security = securityMock.createStart(); + const core = coreMock.createStart(); const mockUpdate = jest.fn(); mockUseUpdateUserProfile.mockReturnValue({ @@ -31,10 +35,8 @@ describe('ThemDarkModeToggle', () => { update: mockUpdate, }); - mockGetSpaceDarkModeValue.mockReturnValue(false); - const { getByTestId, rerender } = render( - + ); const toggleSwitch = getByTestId('darkModeToggleSwitch'); @@ -49,7 +51,7 @@ describe('ThemDarkModeToggle', () => { }); // Rerender the component to apply the new props - rerender(); + rerender(); fireEvent.click(toggleSwitch); expect(mockUpdate).toHaveBeenLastCalledWith({ userSettings: { darkMode: 'light' } }); diff --git a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.tsx b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.tsx index 3f85c2ed63a76..20085172b2c68 100644 --- a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.tsx +++ b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/theme_darkmode_toggle.tsx @@ -17,19 +17,30 @@ import { import { i18n } from '@kbn/i18n'; import type { SecurityPluginStart } from '@kbn/security-plugin/public'; import { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; +import { UserProfilesKibanaProvider } from '@kbn/user-profile-components'; +import { CoreStart } from '@kbn/core-lifecycle-browser'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; + import { useThemeDarkmodeToggle } from './theme_darkmode_hook'; interface Props { - uiSettingsClient: IUiSettingsClient; security: SecurityPluginStart; + core: CoreStart; } -export const ThemDarkModeToggle = ({ security, uiSettingsClient }: Props) => { +export const ThemeDarkModeToggle = ({ security, core }: Props) => { + return ( + + + + ); +}; + +function ThemeDarkModeToggleUi({ uiSettingsClient }: { uiSettingsClient: IUiSettingsClient }) { const toggleTextSwitchId = useGeneratedHtmlId({ prefix: 'toggleTextSwitch' }); const { euiTheme } = useEuiTheme(); const { isVisible, toggle, isDarkModeOn, colorScheme } = useThemeDarkmodeToggle({ - security, uiSettingsClient, }); @@ -77,4 +88,4 @@ export const ThemDarkModeToggle = ({ security, uiSettingsClient }: Props) => { ); -}; +} diff --git a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/user_menu_links.tsx b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/user_menu_links.tsx index 1eae5d6ed0c58..16ffa32360f25 100644 --- a/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/user_menu_links.tsx +++ b/x-pack/plugins/cloud_integrations/cloud_links/public/maybe_add_cloud_links/user_menu_links.tsx @@ -9,17 +9,17 @@ import React from 'react'; import { i18n } from '@kbn/i18n'; import type { CloudStart } from '@kbn/cloud-plugin/public'; import type { SecurityPluginStart, UserMenuLink } from '@kbn/security-plugin/public'; -import { IUiSettingsClient } from '@kbn/core-ui-settings-browser'; -import { ThemDarkModeToggle } from './theme_darkmode_toggle'; +import type { CoreStart } from '@kbn/core/public'; +import { ThemeDarkModeToggle } from './theme_darkmode_toggle'; export const createUserMenuLinks = ({ + core, cloud, security, - uiSettingsClient, }: { + core: CoreStart; cloud: CloudStart; security: SecurityPluginStart; - uiSettingsClient: IUiSettingsClient; }): UserMenuLink[] => { const { profileUrl, billingUrl, organizationUrl } = cloud; @@ -60,7 +60,7 @@ export const createUserMenuLinks = ({ } userMenuLinks.push({ - content: , + content: , order: 400, label: '', iconType: '', diff --git a/x-pack/plugins/cloud_integrations/cloud_links/public/plugin.tsx b/x-pack/plugins/cloud_integrations/cloud_links/public/plugin.tsx index 7ee3f0969251d..38b568791b70b 100755 --- a/x-pack/plugins/cloud_integrations/cloud_links/public/plugin.tsx +++ b/x-pack/plugins/cloud_integrations/cloud_links/public/plugin.tsx @@ -44,11 +44,9 @@ export class CloudLinksPlugin } if (security) { maybeAddCloudLinks({ + core, security, - chrome: core.chrome, cloud, - docLinks: core.docLinks, - uiSettingsClient: core.uiSettings, }); } } diff --git a/x-pack/plugins/cloud_integrations/cloud_links/tsconfig.json b/x-pack/plugins/cloud_integrations/cloud_links/tsconfig.json index 0dfa7ce42858d..f1a67895cdd5e 100644 --- a/x-pack/plugins/cloud_integrations/cloud_links/tsconfig.json +++ b/x-pack/plugins/cloud_integrations/cloud_links/tsconfig.json @@ -20,6 +20,9 @@ "@kbn/core-chrome-browser", "@kbn/core-doc-links-browser", "@kbn/core-ui-settings-browser", + "@kbn/user-profile-components", + "@kbn/core-lifecycle-browser", + "@kbn/kibana-react-plugin", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/cloud_security_posture/common/constants.ts b/x-pack/plugins/cloud_security_posture/common/constants.ts index 91d42c2544191..058b23e3477a5 100644 --- a/x-pack/plugins/cloud_security_posture/common/constants.ts +++ b/x-pack/plugins/cloud_security_posture/common/constants.ts @@ -123,5 +123,3 @@ export const VULNERABILITIES_SEVERITY: Record = { CRITICAL: 'CRITICAL', UNKNOWN: 'UNKNOWN', }; - -export const VULNERABILITIES_ENUMERATION = 'CVE'; diff --git a/x-pack/plugins/cloud_security_posture/common/utils/get_safe_vulnerabilities_query_filter.ts b/x-pack/plugins/cloud_security_posture/common/utils/get_safe_vulnerabilities_query_filter.ts index 5cbbf6dd054a7..fb2bbd1c51273 100644 --- a/x-pack/plugins/cloud_security_posture/common/utils/get_safe_vulnerabilities_query_filter.ts +++ b/x-pack/plugins/cloud_security_posture/common/utils/get_safe_vulnerabilities_query_filter.ts @@ -5,7 +5,7 @@ * 2.0. */ import { QueryDslQueryContainer } from '@elastic/elasticsearch/lib/api/types'; -import { VULNERABILITIES_ENUMERATION, VULNERABILITIES_SEVERITY } from '../constants'; +import { VULNERABILITIES_SEVERITY } from '../constants'; export const getSafeVulnerabilitiesQueryFilter = (query?: QueryDslQueryContainer) => ({ ...query, @@ -29,7 +29,6 @@ export const getSafeVulnerabilitiesQueryFilter = (query?: QueryDslQueryContainer { exists: { field: 'vulnerability.severity' } }, { exists: { field: 'resource.id' } }, { exists: { field: 'resource.name' } }, - { match_phrase: { 'vulnerability.enumeration': VULNERABILITIES_ENUMERATION } }, ], }, }); diff --git a/x-pack/plugins/cloud_security_posture/public/common/api/create_detection_rule.ts b/x-pack/plugins/cloud_security_posture/public/common/api/create_detection_rule.ts new file mode 100644 index 0000000000000..ef0aa3321f35e --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/common/api/create_detection_rule.ts @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { HttpSetup } from '@kbn/core/public'; + +const DETECTION_ENGINE_URL = '/api/detection_engine' as const; +const DETECTION_ENGINE_RULES_URL = `${DETECTION_ENGINE_URL}/rules` as const; + +interface RuleCreateProps { + type: string; + language: string; + license: string; + author: string[]; + filters: any[]; + false_positives: any[]; + risk_score: number; + risk_score_mapping: any[]; + severity: string; + severity_mapping: any[]; + threat: any[]; + interval: string; + from: string; + to: string; + timestamp_override: string; + timestamp_override_fallback_disabled: boolean; + actions: any[]; + enabled: boolean; + alert_suppression: { + group_by: string[]; + missing_fields_strategy: string; + }; + index: string[]; + query: string; + references: string[]; + name: string; + description: string; + tags: string[]; +} + +export interface RuleResponse extends RuleCreateProps { + id: string; +} + +export const createDetectionRule = async ({ + http, + rule, +}: { + http: HttpSetup; + rule: RuleCreateProps; +}): Promise => { + const res = await http.post(DETECTION_ENGINE_RULES_URL, { + body: JSON.stringify(rule), + }); + + return res as RuleResponse; +}; diff --git a/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx b/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx new file mode 100644 index 0000000000000..57684d02fd157 --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/components/take_action.tsx @@ -0,0 +1,129 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useState } from 'react'; +import { + EuiButton, + EuiContextMenuItem, + EuiContextMenuPanel, + EuiFlexGroup, + EuiFlexItem, + EuiPopover, + EuiText, + useGeneratedHtmlId, +} from '@elastic/eui'; +import { toMountPoint } from '@kbn/kibana-react-plugin/public'; +import type { HttpSetup } from '@kbn/core/public'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { CREATE_RULE_ACTION_SUBJ, TAKE_ACTION_SUBJ } from './test_subjects'; +import { useKibana } from '../common/hooks/use_kibana'; +import type { RuleResponse } from '../common/api/create_detection_rule'; + +const RULE_PAGE_PATH = '/app/security/rules/id/'; + +interface TakeActionProps { + createRuleFn: (http: HttpSetup) => Promise; +} +/* + * This component is used to create a detection rule from Flyout. + * It accepts a createRuleFn parameter which is used to create a rule in a generic way. + */ +export const TakeAction = ({ createRuleFn }: TakeActionProps) => { + const [isPopoverOpen, setPopoverOpen] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const closePopover = () => { + setPopoverOpen(false); + }; + + const smallContextMenuPopoverId = useGeneratedHtmlId({ + prefix: 'smallContextMenuPopover', + }); + + const { http, notifications } = useKibana().services; + + const showSuccessToast = (ruleResponse: RuleResponse) => { + return notifications.toasts.addSuccess({ + toastLifeTimeMs: 10000, + color: 'success', + iconType: '', + text: toMountPoint( +
+ + {ruleResponse.name} + {` `} + + + + + + + + + + + + +
+ ), + }); + }; + + const button = ( + setPopoverOpen(!isPopoverOpen)} + > + + + ); + + return ( + + { + closePopover(); + setIsLoading(true); + const ruleResponse = await createRuleFn(http); + setIsLoading(false); + showSuccessToast(ruleResponse); + }} + data-test-subj={CREATE_RULE_ACTION_SUBJ} + > + + , + ]} + /> + + ); +}; diff --git a/x-pack/plugins/cloud_security_posture/public/components/test_subjects.ts b/x-pack/plugins/cloud_security_posture/public/components/test_subjects.ts index 638076818d3f0..a1fa5d985df3c 100644 --- a/x-pack/plugins/cloud_security_posture/public/components/test_subjects.ts +++ b/x-pack/plugins/cloud_security_posture/public/components/test_subjects.ts @@ -32,4 +32,7 @@ export const NO_VULNERABILITIES_STATUS_TEST_SUBJ = { export const VULNERABILITIES_CONTAINER_TEST_SUBJ = 'vulnerabilities_container'; -export const VULNERABILITIES_CVSS_SCORE_BADGE_SUBJ = 'vuknerabilities_cvss_score_badge'; +export const VULNERABILITIES_CVSS_SCORE_BADGE_SUBJ = 'vulnerabilities_cvss_score_badge'; + +export const TAKE_ACTION_SUBJ = 'csp:take_action'; +export const CREATE_RULE_ACTION_SUBJ = 'csp:create_rule'; diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx index f59463e00125f..2c59f360850d8 100644 --- a/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/findings_flyout/findings_flyout.tsx @@ -25,9 +25,11 @@ import { } from '@elastic/eui'; import { assertNever } from '@kbn/std'; import { i18n } from '@kbn/i18n'; +import type { HttpSetup } from '@kbn/core/public'; import cisLogoIcon from '../../../assets/icons/cis_logo.svg'; import { CspFinding } from '../../../../common/schemas/csp_finding'; import { CspEvaluationBadge } from '../../../components/csp_evaluation_badge'; +import { TakeAction } from '../../../components/take_action'; import { TableTab } from './table_tab'; import { JsonTab } from './json_tab'; import { OverviewTab } from './overview_tab'; @@ -36,6 +38,7 @@ import type { BenchmarkId } from '../../../../common/types'; import { CISBenchmarkIcon } from '../../../components/cis_benchmark_icon'; import { BenchmarkName } from '../../../../common/types'; import { FINDINGS_FLYOUT } from '../test_subjects'; +import { createDetectionRuleFromFinding } from '../utils/create_detection_rule_from_finding'; const tabs = [ { @@ -127,6 +130,9 @@ export const FindingsRuleFlyout = ({ }: FindingFlyoutProps) => { const [tab, setTab] = useState(tabs[0]); + const createMisconfigurationRuleFn = async (http: HttpSetup) => + await createDetectionRuleFromFinding(http, findings); + return ( @@ -160,7 +166,7 @@ export const FindingsRuleFlyout = ({ - + + + + diff --git a/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_finding.ts b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_finding.ts new file mode 100644 index 0000000000000..179ac6e27713c --- /dev/null +++ b/x-pack/plugins/cloud_security_posture/public/pages/configurations/utils/create_detection_rule_from_finding.ts @@ -0,0 +1,99 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { HttpSetup } from '@kbn/core/public'; +import type { CspFinding } from '../../../../common/schemas/csp_finding'; +import { LATEST_FINDINGS_INDEX_DEFAULT_NS } from '../../../../common/constants'; +import { createDetectionRule } from '../../../common/api/create_detection_rule'; + +const DEFAULT_RULE_RISK_SCORE = 0; +const DEFAULT_RULE_SEVERITY = 'low'; +const DEFAULT_RULE_ENABLED = true; +const DEFAULT_RULE_AUTHOR = 'Elastic'; +const DEFAULT_RULE_LICENSE = 'Elastic License v2'; +const ALERT_SUPPRESSION_FIELD = 'resource.id'; +const ALERT_TIMESTAMP_FIELD = 'event.ingested'; + +enum AlertSuppressionMissingFieldsStrategy { + // per each document a separate alert will be created + DoNotSuppress = 'doNotSuppress', + // only one alert will be created per suppress by bucket + Suppress = 'suppress', +} + +const convertReferencesLinksToArray = (input: string | undefined) => { + if (!input) { + return []; + } + // Match all URLs in the input string using a regular expression + const matches = input.match(/(https?:\/\/\S+)/g); + + if (!matches) { + return []; + } + + // Remove the numbers and new lines + return matches.map((link) => link.replace(/^\d+\. /, '').replace(/\n/g, '')); +}; + +const STATIC_RULE_TAGS = ['Elastic', 'Cloud Security']; + +const generateMisconfigurationsTags = (finding: CspFinding) => { + return [STATIC_RULE_TAGS] + .concat(finding.rule.tags) + .concat( + finding.rule.benchmark.posture_type ? [finding.rule.benchmark.posture_type.toUpperCase()] : [] + ) + .flat(); +}; + +const generateMisconfigurationsRuleQuery = (finding: CspFinding) => { + return ` + rule.benchmark.rule_number: "${finding.rule.benchmark.rule_number}" + AND rule.benchmark.id: "${finding.rule.benchmark.id}" + AND result.evaluation: "failed" + `; +}; + +/* + * Creates a detection rule from a CspFinding + */ +export const createDetectionRuleFromFinding = async (http: HttpSetup, finding: CspFinding) => { + return await createDetectionRule({ + http, + rule: { + type: 'query', + language: 'kuery', + license: DEFAULT_RULE_LICENSE, + author: [DEFAULT_RULE_AUTHOR], + filters: [], + false_positives: [], + risk_score: DEFAULT_RULE_RISK_SCORE, + risk_score_mapping: [], + severity: DEFAULT_RULE_SEVERITY, + severity_mapping: [], + threat: [], + interval: '1h', + from: 'now-7200s', + to: 'now', + timestamp_override: ALERT_TIMESTAMP_FIELD, + timestamp_override_fallback_disabled: false, + actions: [], + enabled: DEFAULT_RULE_ENABLED, + alert_suppression: { + group_by: [ALERT_SUPPRESSION_FIELD], + missing_fields_strategy: AlertSuppressionMissingFieldsStrategy.Suppress, + }, + index: [LATEST_FINDINGS_INDEX_DEFAULT_NS], + query: generateMisconfigurationsRuleQuery(finding), + references: convertReferencesLinksToArray(finding.rule.references), + name: finding.rule.name, + description: finding.rule.rationale, + tags: generateMisconfigurationsTags(finding), + }, + }); +}; diff --git a/x-pack/plugins/cloud_security_posture/tsconfig.json b/x-pack/plugins/cloud_security_posture/tsconfig.json index ae8f7d610002b..a88bbf2bd0995 100755 --- a/x-pack/plugins/cloud_security_posture/tsconfig.json +++ b/x-pack/plugins/cloud_security_posture/tsconfig.json @@ -48,7 +48,7 @@ "@kbn/shared-ux-router", "@kbn/core-saved-objects-server", "@kbn/share-plugin", - "@kbn/core-http-server", + "@kbn/core-http-server" ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/enterprise_search/jest.config.dev.js b/x-pack/plugins/enterprise_search/jest.config.dev.js new file mode 100644 index 0000000000000..638235a6deef5 --- /dev/null +++ b/x-pack/plugins/enterprise_search/jest.config.dev.js @@ -0,0 +1,16 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../', + projects: [ + '/x-pack/plugins/enterprise_search/public/**/jest.config.js', + '/x-pack/plugins/enterprise_search/common/**/jest.config.js', + '/x-pack/plugins/enterprise_search/server/**/jest.config.js', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/analytics/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/analytics/jest.config.js new file mode 100644 index 0000000000000..58b5334165ec5 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/analytics/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/plugins/enterprise_search/public/applications/analytics'], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/analytics', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/app_search/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/app_search/jest.config.js new file mode 100644 index 0000000000000..7d591c369c18b --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/app_search/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/plugins/enterprise_search/public/applications/app_search'], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/app_search', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/applications/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/applications/jest.config.js new file mode 100644 index 0000000000000..1e04c0845ec9f --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/applications/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/plugins/enterprise_search/public/applications/applications'], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/applications', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/elasticsearch/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/elasticsearch/jest.config.js new file mode 100644 index 0000000000000..ab90da605f2b3 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/elasticsearch/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/plugins/enterprise_search/public/applications/elasticsearch'], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/elasticsearch', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/jest.config.js new file mode 100644 index 0000000000000..a55b8bbc715f4 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content/jest.config.js @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: [ + '/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content', + ], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/enterprise_search_content', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/jest.config.js new file mode 100644 index 0000000000000..fd5a6db3b8e0c --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview/jest.config.js @@ -0,0 +1,28 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: [ + '/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview', + ], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/enterprise_search_overview', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/esre/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/esre/jest.config.js new file mode 100644 index 0000000000000..e6ef9e507cf27 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/esre/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/plugins/enterprise_search/public/applications/esre'], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/esre', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/search_experiences/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/search_experiences/jest.config.js new file mode 100644 index 0000000000000..1e39c00ae9893 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/search_experiences/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/plugins/enterprise_search/public/applications/search_experiences'], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/search_experiences', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/shared/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/shared/jest.config.js new file mode 100644 index 0000000000000..5ee13cc30aeaf --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/shared/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/plugins/enterprise_search/public/applications/shared'], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/shared', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/vector_search/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/vector_search/jest.config.js new file mode 100644 index 0000000000000..24158650aa75f --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/vector_search/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/plugins/enterprise_search/public/applications/vector_search'], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/vector_search', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/applications/workplace_search/jest.config.js b/x-pack/plugins/enterprise_search/public/applications/workplace_search/jest.config.js new file mode 100644 index 0000000000000..6ae1b5b9b1a84 --- /dev/null +++ b/x-pack/plugins/enterprise_search/public/applications/workplace_search/jest.config.js @@ -0,0 +1,26 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +module.exports = { + preset: '@kbn/test', + rootDir: '../../../../../..', + roots: ['/x-pack/plugins/enterprise_search/public/applications/workplace_search'], + collectCoverage: true, + coverageReporters: ['text', 'html'], + collectCoverageFrom: [ + '/x-pack/plugins/enterprise_search/public/applications/**/*.{ts,tsx}', + '!/x-pack/plugins/enterprise_search/public/*.ts', + '!/x-pack/plugins/enterprise_search/server/*.ts', + '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', + ], + coverageDirectory: + '/target/kibana-coverage/jest/x-pack/plugins/enterprise_search/public/applications/workplace_search', + modulePathIgnorePatterns: [ + '/x-pack/plugins/enterprise_search/public/applications/app_search/cypress', + '/x-pack/plugins/enterprise_search/public/applications/workplace_search/cypress', + ], +}; diff --git a/x-pack/plugins/enterprise_search/public/jest.config.js b/x-pack/plugins/enterprise_search/public/jest.config.js index c527b85707b42..fec5a831f2fee 100644 --- a/x-pack/plugins/enterprise_search/public/jest.config.js +++ b/x-pack/plugins/enterprise_search/public/jest.config.js @@ -8,11 +8,15 @@ module.exports = { preset: '@kbn/test', rootDir: '../../../..', + /** all nested directories have their own Jest config file */ + testMatch: [ + '/x-pack/plugins/enterprise_search/public/applications/*.test.{js,mjs,ts,tsx}', + ], roots: ['/x-pack/plugins/enterprise_search/public'], collectCoverage: true, coverageReporters: ['text', 'html'], collectCoverageFrom: [ - '/x-pack/plugins/enterprise_search/**/*.{ts,tsx}', + '/x-pack/plugins/enterprise_search/public/applications/*.{ts,tsx}', '!/x-pack/plugins/enterprise_search/public/*.ts', '!/x-pack/plugins/enterprise_search/server/*.ts', '!/x-pack/plugins/enterprise_search/public/applications/test_helpers/**/*.{ts,tsx}', diff --git a/x-pack/plugins/fleet/common/constants/output.ts b/x-pack/plugins/fleet/common/constants/output.ts index b23fbc3cc2c2a..59f3ceff36a0f 100644 --- a/x-pack/plugins/fleet/common/constants/output.ts +++ b/x-pack/plugins/fleet/common/constants/output.ts @@ -42,6 +42,12 @@ export const kafkaAuthType = { Userpass: 'user_pass', Ssl: 'ssl', Kerberos: 'kerberos', + None: 'none', +} as const; + +export const kafkaConnectionType = { + Plaintext: 'plaintext', + Encryption: 'encryption', } as const; export const kafkaSaslMechanism = { @@ -60,18 +66,19 @@ export const kafkaTopicWhenType = { Equals: 'equals', Contains: 'contains', Regexp: 'regexp', - Range: 'range', - Network: 'network', - HasFields: 'has_fields', - Or: 'or', - And: 'and', - Not: 'not', } as const; export const kafkaAcknowledgeReliabilityLevel = { - Commit: 'Wait for local commit', - Replica: 'Wait for all replicas to commit', - DoNotWait: 'Do not wait', + Commit: 1, + Replica: -1, + DoNotWait: 0, +} as const; + +export const kafkaVerificationModes = { + Full: 'full', + None: 'none', + Strict: 'strict', + Certificate: 'certificate', } as const; export const kafkaSupportedVersions = [ diff --git a/x-pack/plugins/fleet/common/openapi/bundled.json b/x-pack/plugins/fleet/common/openapi/bundled.json index cc1ad5c98c32a..200cebba48cc7 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.json +++ b/x-pack/plugins/fleet/common/openapi/bundled.json @@ -7701,6 +7701,15 @@ }, "key": { "type": "string" + }, + "verification_mode": { + "type": "string", + "enum": [ + "none", + "full", + "certificate", + "strict" + ] } } }, @@ -7751,6 +7760,13 @@ "auth_type": { "type": "string" }, + "connection_type": { + "type": "string", + "enum": [ + "plaintext", + "encryption" + ] + }, "username": { "type": "string" }, @@ -7826,11 +7842,8 @@ "broker_timeout": { "type": "number" }, - "broker_buffer_size": { + "required_acks": { "type": "number" - }, - "broker_ack_reliability": { - "type": "string" } }, "required": [ @@ -8103,6 +8116,15 @@ }, "key": { "type": "string" + }, + "verification_mode": { + "type": "string", + "enum": [ + "none", + "full", + "certificate", + "strict" + ] } } }, @@ -8153,6 +8175,13 @@ "auth_type": { "type": "string" }, + "connection_type": { + "type": "string", + "enum": [ + "plaintext", + "encryption" + ] + }, "username": { "type": "string" }, @@ -8228,10 +8257,7 @@ "broker_timeout": { "type": "number" }, - "broker_ack_reliability": { - "type": "string" - }, - "broker_buffer_size": { + "required_acks": { "type": "number" } }, diff --git a/x-pack/plugins/fleet/common/openapi/bundled.yaml b/x-pack/plugins/fleet/common/openapi/bundled.yaml index 0d72245fa2d99..6c216e464a104 100644 --- a/x-pack/plugins/fleet/common/openapi/bundled.yaml +++ b/x-pack/plugins/fleet/common/openapi/bundled.yaml @@ -4959,6 +4959,13 @@ components: type: string key: type: string + verification_mode: + type: string + enum: + - none + - full + - certificate + - strict proxy_id: type: string shipper: @@ -4990,6 +4997,11 @@ components: type: string auth_type: type: string + connection_type: + type: string + enum: + - plaintext + - encryption username: type: string password: @@ -5038,10 +5050,8 @@ components: type: number broker_timeout: type: number - broker_buffer_size: + required_acks: type: number - broker_ack_reliability: - type: string required: - name - type @@ -5223,6 +5233,13 @@ components: type: string key: type: string + verification_mode: + type: string + enum: + - none + - full + - certificate + - strict proxy_id: type: string shipper: @@ -5254,6 +5271,11 @@ components: type: string auth_type: type: string + connection_type: + type: string + enum: + - plaintext + - encryption username: type: string password: @@ -5302,9 +5324,7 @@ components: type: number broker_timeout: type: number - broker_ack_reliability: - type: string - broker_buffer_size: + required_acks: type: number required: - name diff --git a/x-pack/plugins/fleet/common/openapi/components/schemas/output_create_request_kafka.yaml b/x-pack/plugins/fleet/common/openapi/components/schemas/output_create_request_kafka.yaml index dbed2b44dc08a..fa76c2301ed94 100644 --- a/x-pack/plugins/fleet/common/openapi/components/schemas/output_create_request_kafka.yaml +++ b/x-pack/plugins/fleet/common/openapi/components/schemas/output_create_request_kafka.yaml @@ -35,6 +35,9 @@ properties: type: string key: type: string + verification_mode: + type: string + enum: ['none', 'full', 'certificate', 'strict'] proxy_id: type: string shipper: @@ -66,6 +69,9 @@ properties: type: string auth_type: type: string + connection_type: + type: string + enum: ['plaintext', 'encryption'] username: type: string password: @@ -114,10 +120,8 @@ properties: type: number broker_timeout: type: number - broker_buffer_size: + required_acks: type: number - broker_ack_reliability: - type: string required: - name - type diff --git a/x-pack/plugins/fleet/common/openapi/components/schemas/output_update_request_kafka.yaml b/x-pack/plugins/fleet/common/openapi/components/schemas/output_update_request_kafka.yaml index bb1e76fa70a55..2ce5525a1a9f4 100644 --- a/x-pack/plugins/fleet/common/openapi/components/schemas/output_update_request_kafka.yaml +++ b/x-pack/plugins/fleet/common/openapi/components/schemas/output_update_request_kafka.yaml @@ -35,6 +35,9 @@ properties: type: string key: type: string + verification_mode: + type: string + enum: ['none', 'full', 'certificate', 'strict'] proxy_id: type: string shipper: @@ -66,6 +69,9 @@ properties: type: string auth_type: type: string + connection_type: + type: string + enum: ['plaintext', 'encryption'] username: type: string password: @@ -114,9 +120,7 @@ properties: type: number broker_timeout: type: number - broker_ack_reliability: - type: string - broker_buffer_size: + required_acks: type: number required: - name diff --git a/x-pack/plugins/fleet/common/types/models/output.ts b/x-pack/plugins/fleet/common/types/models/output.ts index 95f353575afd6..a537e0ab0233b 100644 --- a/x-pack/plugins/fleet/common/types/models/output.ts +++ b/x-pack/plugins/fleet/common/types/models/output.ts @@ -11,14 +11,18 @@ import type { kafkaAuthType, kafkaCompressionType, kafkaSaslMechanism } from '.. import type { kafkaPartitionType } from '../../constants'; import type { kafkaTopicWhenType } from '../../constants'; import type { kafkaAcknowledgeReliabilityLevel } from '../../constants'; +import type { kafkaVerificationModes } from '../../constants'; +import type { kafkaConnectionType } from '../../constants'; export type OutputType = typeof outputType; export type KafkaCompressionType = typeof kafkaCompressionType; export type KafkaAuthType = typeof kafkaAuthType; +export type KafkaConnectionTypeType = typeof kafkaConnectionType; export type KafkaSaslMechanism = typeof kafkaSaslMechanism; export type KafkaPartitionType = typeof kafkaPartitionType; export type KafkaTopicWhenType = typeof kafkaTopicWhenType; export type KafkaAcknowledgeReliabilityLevel = typeof kafkaAcknowledgeReliabilityLevel; +export type KafkaVerificationMode = typeof kafkaVerificationModes; interface NewBaseOutput { is_default: boolean; @@ -34,6 +38,7 @@ interface NewBaseOutput { certificate_authorities?: string[]; certificate?: string; key?: string; + verification_mode?: ValueOf; } | null; proxy_id?: string | null; shipper?: ShipperOutput | null; @@ -76,6 +81,7 @@ export interface KafkaOutput extends NewBaseOutput { compression?: ValueOf; compression_level?: number; auth_type?: ValueOf; + connection_type?: ValueOf; username?: string; password?: string; sasl?: { @@ -105,6 +111,5 @@ export interface KafkaOutput extends NewBaseOutput { }>; timeout?: number; broker_timeout?: number; - broker_ack_reliability?: ValueOf; - broker_buffer_size?: number; + required_acks?: ValueOf; } diff --git a/x-pack/plugins/fleet/cypress/e2e/fleet_settings_outputs.cy.ts b/x-pack/plugins/fleet/cypress/e2e/fleet_settings_outputs.cy.ts index 45ff5257fc7c2..2d9f33d8e1efa 100644 --- a/x-pack/plugins/fleet/cypress/e2e/fleet_settings_outputs.cy.ts +++ b/x-pack/plugins/fleet/cypress/e2e/fleet_settings_outputs.cy.ts @@ -5,10 +5,6 @@ * 2.0. */ -import { allowedExperimentalValues } from '../../common/experimental_features'; - -import { ExperimentalFeaturesService } from '../../public/services'; - import { getSpecificSelectorId, SETTINGS_CONFIRM_MODAL_BTN, @@ -42,323 +38,358 @@ describe('Outputs', () => { }); describe('Kafka', () => { - ExperimentalFeaturesService.init(allowedExperimentalValues); - - const { kafkaOutput: isKafkaOutputEnabled } = ExperimentalFeaturesService.get(); - - // TODO: Remove IF statement once Kafka is GA - if (!isKafkaOutputEnabled) { - it('is not available', () => { - visit('/app/fleet/settings'); - }); - } else { - describe('Form validation', () => { - it('renders all form fields', () => { - selectKafkaOutput(); - - cy.getBySel(SETTINGS_OUTPUTS.NAME_INPUT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.VERSION_SELECT); - cy.get('[placeholder="Specify host"'); - cy.getBySel(SETTINGS_OUTPUTS.ADD_HOST_ROW_BTN); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SELECT).within(() => { - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_PASSWORD_OPTION); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SSL_OPTION); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_KERBEROS_OPTION); - }); - - // Verify user/pass fields - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_INPUT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_PASSWORD_INPUT); - - // Verify SSL fields - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SSL_OPTION).click(); - cy.get('[placeholder="Specify certificate authority"]'); - cy.get('[placeholder="Specify ssl certificate"]'); - cy.get('[placeholder="Specify certificate key"]'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_PASSWORD_OPTION).click(); - - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_SELECT).within(() => { - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_PLAIN_OPTION); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_SCRAM_256_OPTION); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_SCRAM_512_OPTION); - }); + describe('Form validation', () => { + it('renders all form fields', () => { + selectKafkaOutput(); + + cy.getBySel(SETTINGS_OUTPUTS.NAME_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.VERSION_SELECT); + cy.get('[placeholder="Specify host"'); + cy.getBySel(SETTINGS_OUTPUTS.ADD_HOST_ROW_BTN); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SELECT).within(() => { + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_NONE_OPTION); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_PASSWORD_OPTION); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SSL_OPTION); + }); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_PANEL).within(() => { - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_SELECT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_RANDOM_OPTION); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_HASH_OPTION); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_ROUND_ROBIN_OPTION); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_EVENTS_INPUT); - }); + // Verify user/pass fields + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_PASSWORD_INPUT); + cy.get('[placeholder="Specify certificate authority"]'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_VERIFICATION_MODE_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_CONNECTION_TYPE_SELECT).should( + 'not.exist' + ); + + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_SELECT).within(() => { + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_PLAIN_OPTION); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_SCRAM_256_OPTION); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_SCRAM_512_OPTION); + }); - // Verify Round Robin fields - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_RANDOM_OPTION).click(); + // Verify SSL fields + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SSL_OPTION).click(); + cy.get('[placeholder="Specify certificate authority"]'); + cy.get('[placeholder="Specify ssl certificate"]'); + cy.get('[placeholder="Specify certificate key"]'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_VERIFICATION_MODE_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_CONNECTION_TYPE_SELECT).should( + 'not.exist' + ); + + // Verify None fields + + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_NONE_OPTION).click(); + + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_SELECT).should('not.exist'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_INPUT).should('not.exist'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_PASSWORD_INPUT).should('not.exist'); + cy.get('[placeholder="Specify ssl certificate"]').should('not.exist'); + cy.get('[placeholder="Specify certificate key"]').should('not.exist'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_VERIFICATION_MODE_INPUT).should( + 'not.exist' + ); + cy.get('[placeholder="Specify certificate authority"]').should('not.exist'); + + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_CONNECTION_TYPE_SELECT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_CONNECTION_TYPE_PLAIN_OPTION); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_CONNECTION_TYPE_ENCRYPTION_OPTION); + + cy.getBySel( + SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_CONNECTION_TYPE_ENCRYPTION_OPTION + ).click(); + + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_VERIFICATION_MODE_INPUT); + cy.get('[placeholder="Specify certificate authority"]'); + + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_PASSWORD_OPTION).click(); + + // Verify Partitioning fields + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_PANEL).within(() => { + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_SELECT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_RANDOM_OPTION); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_HASH_OPTION); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_ROUND_ROBIN_OPTION); cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_EVENTS_INPUT); + }); - // Verify Hash fields - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_HASH_OPTION).click(); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_HASH_INPUT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_RANDOM_OPTION).click(); - - // Topics - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_PANEL).within(() => { - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_DEFAULT_TOPIC_INPUT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON); - }); + // Verify Round Robin fields + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_RANDOM_OPTION).click(); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_EVENTS_INPUT); - // Verify one topic processor fields - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON).click(); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT); - - // Verify additional topic processor fields - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON).click(); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT); - cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT, 1)); - cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT, 1)); - cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT, 1)); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_DRAG_HANDLE_ICON); - - // Verify remove topic processors - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_REMOVE_ROW_BUTTON).click(); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_REMOVE_ROW_BUTTON).click(); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT).should('not.exist'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT).should('not.exist'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT).should('not.exist'); - - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_PANEL).within(() => { - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_KEY_INPUT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_VALUE_INPUT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_ADD_ROW_BUTTON).should('be.disabled'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_REMOVE_ROW_BUTTON).should('be.disabled'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_CLIENT_ID_INPUT); - }); + // Verify Hash fields + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_HASH_OPTION).click(); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_HASH_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_RANDOM_OPTION).click(); - // Verify add header - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_KEY_INPUT).type('key'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_VALUE_INPUT).type('value'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_ADD_ROW_BUTTON).should('be.enabled'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_REMOVE_ROW_BUTTON).should('be.disabled'); + // Topics + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_PANEL).within(() => { + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_DEFAULT_TOPIC_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON); + }); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_ADD_ROW_BUTTON).click(); - cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.HEADERS_KEY_INPUT, 1)); - cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.HEADERS_VALUE_INPUT, 1)); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_ADD_ROW_BUTTON).should('be.enabled'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_REMOVE_ROW_BUTTON).should('be.enabled'); - - // Verify remove header - cy.getBySel( - getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.HEADERS_REMOVE_ROW_BUTTON, 1) - ).click(); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_ADD_ROW_BUTTON).should('be.enabled'); + // Verify one topic processor fields + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON).click(); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT); + + // Verify additional topic processor fields + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON).click(); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT); + cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT, 1)); + cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT, 1)); + cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT, 1)); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_DRAG_HANDLE_ICON); + + // Verify remove topic processors + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_REMOVE_ROW_BUTTON).click(); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_REMOVE_ROW_BUTTON).click(); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT).should('not.exist'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT).should('not.exist'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT).should('not.exist'); + + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_PANEL).within(() => { + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_KEY_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_VALUE_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_ADD_ROW_BUTTON).should('be.disabled'); cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_REMOVE_ROW_BUTTON).should('be.disabled'); - - // Compression - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_CODEC_INPUT).should('not.exist'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_SWITCH).click(); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_LEVEL_INPUT).should('not.exist'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_CODEC_INPUT).select('gzip'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_LEVEL_INPUT).should('exist'); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_LEVEL_INPUT).select('1'); - - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.BROKER_PANEL).within(() => { - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.BROKER_ACK_RELIABILITY_SELECT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.BROKER_CHANNEL_BUFFER_SIZE_SELECT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.BROKER_TIMEOUT_SELECT); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.BROKER_REACHABILITY_TIMEOUT_SELECT); - }); - cy.getBySel(SETTINGS_OUTPUTS_KAFKA.KEY_INPUT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_CLIENT_ID_INPUT).should( + 'have.value', + 'Elastic' + ); }); - it('displays proper error messages', () => { - selectKafkaOutput(); - cy.getBySel(SETTINGS_SAVE_BTN).click(); - - cy.contains('Name is required'); - cy.contains('URL is required'); - cy.contains('Username is required'); - cy.contains('Password is required'); - cy.contains('Default topic is required'); - shouldDisplayError(SETTINGS_OUTPUTS.NAME_INPUT); - shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_INPUT); - shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_PASSWORD_INPUT); - shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.TOPICS_DEFAULT_TOPIC_INPUT); + // Verify add header + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_KEY_INPUT).type('key'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_VALUE_INPUT).type('value'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_ADD_ROW_BUTTON).should('be.enabled'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_REMOVE_ROW_BUTTON).should('be.disabled'); + + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_ADD_ROW_BUTTON).click(); + cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.HEADERS_KEY_INPUT, 1)); + cy.getBySel(getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.HEADERS_VALUE_INPUT, 1)); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_ADD_ROW_BUTTON).should('be.enabled'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_REMOVE_ROW_BUTTON).should('be.enabled'); + + // Verify remove header + cy.getBySel( + getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.HEADERS_REMOVE_ROW_BUTTON, 1) + ).click(); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_ADD_ROW_BUTTON).should('be.enabled'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_REMOVE_ROW_BUTTON).should('be.disabled'); + + // Compression + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_CODEC_INPUT).should('not.exist'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_SWITCH).click(); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_LEVEL_INPUT).should('not.exist'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_CODEC_INPUT).select('gzip'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_LEVEL_INPUT).should('exist'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.COMPRESSION_LEVEL_INPUT).select('1'); + + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.BROKER_PANEL).within(() => { + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.BROKER_ACK_RELIABILITY_SELECT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.BROKER_TIMEOUT_SELECT); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.BROKER_REACHABILITY_TIMEOUT_SELECT); }); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.KEY_INPUT); }); - // Test buttons presence before accessing output directly via url and delete via api - describe('Output operations', () => { - let kafkaOutputId: string; + it('displays proper error messages', () => { + selectKafkaOutput(); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.HEADERS_CLIENT_ID_INPUT).clear(); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.TOPICS_ADD_ROW_BUTTON).click(); + cy.getBySel(SETTINGS_SAVE_BTN).click(); + + cy.contains('Name is required'); + cy.contains('Host is required'); + cy.contains('Username is required'); + cy.contains('Password is required'); + cy.contains('Default topic is required'); + cy.contains('Topic is required'); + cy.contains( + 'Client ID is invalid. Only letters, numbers, dots, underscores, and dashes are allowed.' + ); + cy.contains('Must be a key, value pair i.e. "http.response.code: 200"'); + shouldDisplayError(SETTINGS_OUTPUTS.NAME_INPUT); + shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_INPUT); + shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_PASSWORD_INPUT); + shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.TOPICS_DEFAULT_TOPIC_INPUT); + shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT); + shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.TOPICS_TOPIC_INPUT); + shouldDisplayError(SETTINGS_OUTPUTS_KAFKA.HEADERS_CLIENT_ID_INPUT); + }); + }); - before(() => { - loadKafkaOutput().then((data) => { - kafkaOutputId = data.item.id; - }); - }); + // Test buttons presence before accessing output directly via url and delete via api + describe('Output operations', () => { + let kafkaOutputId: string; - it('opens edit modal', () => { - visit('/app/fleet/settings'); - cy.get(`a[href="/app/fleet/settings/outputs/${kafkaOutputId}"]`) - .parents('tr') - .within(() => { - cy.contains(kafkaOutputBody.name); - cy.contains(kafkaOutputBody.type); - cy.contains(kafkaOutputBody.hosts[0]); - cy.getBySel('editOutputBtn').click(); - cy.url().should('include', `/app/fleet/settings/outputs/${kafkaOutputId}`); - }); - }); - it('delete output', () => { - visit('/app/fleet/settings'); - cy.get(`a[href="/app/fleet/settings/outputs/${kafkaOutputId}"]`) - .parents('tr') - .within(() => { - cy.get('[title="Delete"]').click(); - }); - cy.getBySel(SETTINGS_CONFIRM_MODAL_BTN).click(); - cy.get(`a[href="app/fleet/settings/outputs/${kafkaOutputId}"]`).should('not.exist'); + before(() => { + loadKafkaOutput().then((data) => { + kafkaOutputId = data.item.id; }); }); - describe('Form submit', () => { - let kafkaOutputId: string; - - before(() => { - interceptOutputId((id) => { - kafkaOutputId = id; + it('opens edit modal', () => { + visit('/app/fleet/settings'); + cy.get(`a[href="/app/fleet/settings/outputs/${kafkaOutputId}"]`) + .parents('tr') + .within(() => { + cy.contains(kafkaOutputBody.name); + cy.contains(kafkaOutputBody.type); + cy.contains(kafkaOutputBody.hosts[0]); + cy.getBySel('editOutputBtn').click(); + cy.url().should('include', `/app/fleet/settings/outputs/${kafkaOutputId}`); }); - }); + }); + it('delete output', () => { + visit('/app/fleet/settings'); + cy.get(`a[href="/app/fleet/settings/outputs/${kafkaOutputId}"]`) + .parents('tr') + .within(() => { + cy.get('[title="Delete"]').click(); + }); + cy.getBySel(SETTINGS_CONFIRM_MODAL_BTN).click(); + cy.get(`a[href="app/fleet/settings/outputs/${kafkaOutputId}"]`).should('not.exist'); + }); + }); - after(() => { - cleanupOutput(kafkaOutputId); + describe('Form submit', () => { + let kafkaOutputId: string; + + before(() => { + interceptOutputId((id) => { + kafkaOutputId = id; }); + }); - it('saves the output', () => { - selectKafkaOutput(); + after(() => { + cleanupOutput(kafkaOutputId); + }); - fillInKafkaOutputForm(); + it('saves the output', () => { + selectKafkaOutput(); - cy.intercept('POST', '**/api/fleet/outputs').as('saveOutput'); + fillInKafkaOutputForm(); - cy.getBySel(SETTINGS_SAVE_BTN).click(); + cy.intercept('POST', '**/api/fleet/outputs').as('saveOutput'); - cy.wait('@saveOutput').then((interception) => { - const responseBody = interception.response?.body; - cy.visit(`/app/fleet/settings/outputs/${responseBody?.item?.id}`); - }); + cy.getBySel(SETTINGS_SAVE_BTN).click(); - validateSavedKafkaOutputForm(); + cy.wait('@saveOutput').then((interception) => { + const responseBody = interception.response?.body; + cy.visit(`/app/fleet/settings/outputs/${responseBody?.item?.id}`); }); + + validateSavedKafkaOutputForm(); }); + }); - describe('Form edit', () => { - let kafkaOutputId: string; + describe('Form edit', () => { + let kafkaOutputId: string; - before(() => { - loadKafkaOutput().then((data) => { - kafkaOutputId = data.item.id; - }); - }); - after(() => { - cleanupOutput(kafkaOutputId); + before(() => { + loadKafkaOutput().then((data) => { + kafkaOutputId = data.item.id; }); + }); + after(() => { + cleanupOutput(kafkaOutputId); + }); - it('edits the output', () => { - visit(`/app/fleet/settings/outputs/${kafkaOutputId}`); + it('edits the output', () => { + visit(`/app/fleet/settings/outputs/${kafkaOutputId}`); - resetKafkaOutputForm(); + resetKafkaOutputForm(); - fillInKafkaOutputForm(); + fillInKafkaOutputForm(); - cy.getBySel(SETTINGS_SAVE_BTN).click(); - cy.getBySel(SETTINGS_CONFIRM_MODAL_BTN).click(); - visit(`/app/fleet/settings/outputs/${kafkaOutputId}`); + cy.getBySel(SETTINGS_SAVE_BTN).click(); + cy.getBySel(SETTINGS_CONFIRM_MODAL_BTN).click(); + visit(`/app/fleet/settings/outputs/${kafkaOutputId}`); - validateSavedKafkaOutputForm(); - }); + validateSavedKafkaOutputForm(); }); + }); - describe('Form output type change', () => { - let kafkaOutputToESId: string; - let kafkaOutputToLogstashId: string; - let logstashOutputToKafkaId: string; - let esOutputToKafkaId: string; + describe('Form output type change', () => { + let kafkaOutputToESId: string; + let kafkaOutputToLogstashId: string; + let logstashOutputToKafkaId: string; + let esOutputToKafkaId: string; - before(() => { - loadKafkaOutput().then((data) => { - kafkaOutputToESId = data.item.id; - }); - loadKafkaOutput().then((data) => { - kafkaOutputToLogstashId = data.item.id; - }); - loadESOutput().then((data) => { - esOutputToKafkaId = data.item.id; - }); - loadLogstashOutput().then((data) => { - logstashOutputToKafkaId = data.item.id; - }); + before(() => { + loadKafkaOutput().then((data) => { + kafkaOutputToESId = data.item.id; }); - after(() => { - cleanupOutput(kafkaOutputToESId); - cleanupOutput(kafkaOutputToLogstashId); - cleanupOutput(logstashOutputToKafkaId); - cleanupOutput(esOutputToKafkaId); + loadKafkaOutput().then((data) => { + kafkaOutputToLogstashId = data.item.id; }); - it('changes output type from es to kafka', () => { - validateOutputTypeChangeToKafka(esOutputToKafkaId); + loadESOutput().then((data) => { + esOutputToKafkaId = data.item.id; }); - - it('changes output type from logstash to kafka', () => { - validateOutputTypeChangeToKafka(logstashOutputToKafkaId); + loadLogstashOutput().then((data) => { + logstashOutputToKafkaId = data.item.id; }); + }); + after(() => { + cleanupOutput(kafkaOutputToESId); + cleanupOutput(kafkaOutputToLogstashId); + cleanupOutput(logstashOutputToKafkaId); + cleanupOutput(esOutputToKafkaId); + }); + it('changes output type from es to kafka', () => { + validateOutputTypeChangeToKafka(esOutputToKafkaId); + }); - it('changes output type from kafka to es', () => { - visit(`/app/fleet/settings/outputs/${kafkaOutputToESId}`); - cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).select('elasticsearch'); - cy.getBySel(kafkaOutputFormValues.name.selector).clear().type('kafka_to_es'); + it('changes output type from logstash to kafka', () => { + validateOutputTypeChangeToKafka(logstashOutputToKafkaId); + }); - cy.intercept('PUT', '**/api/fleet/outputs/**').as('saveOutput'); + it('changes output type from kafka to es', () => { + visit(`/app/fleet/settings/outputs/${kafkaOutputToESId}`); + cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).select('elasticsearch'); + cy.getBySel(kafkaOutputFormValues.name.selector).clear().type('kafka_to_es'); + cy.get('[placeholder="Specify host URL"').clear().type('https://localhost:5000'); - cy.getBySel(SETTINGS_SAVE_BTN).click(); - cy.getBySel(SETTINGS_CONFIRM_MODAL_BTN).click(); + cy.intercept('PUT', '**/api/fleet/outputs/**').as('saveOutput'); - // wait for the save request to finish to avoid race condition - cy.wait('@saveOutput').then(() => { - visit(`/app/fleet/settings/outputs/${kafkaOutputToESId}`); - }); + cy.getBySel(SETTINGS_SAVE_BTN).click(); + cy.getBySel(SETTINGS_CONFIRM_MODAL_BTN).click(); - cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).should('have.value', 'elasticsearch'); - cy.getBySel(kafkaOutputFormValues.name.selector).should('have.value', 'kafka_to_es'); + // wait for the save request to finish to avoid race condition + cy.wait('@saveOutput').then(() => { + visit(`/app/fleet/settings/outputs/${kafkaOutputToESId}`); }); - it('changes output type from kafka to logstash', () => { - visit(`/app/fleet/settings/outputs/${kafkaOutputToLogstashId}`); - cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).select('logstash'); - cy.getBySel(kafkaOutputFormValues.name.selector).clear().type('kafka_to_logstash'); - cy.get('[placeholder="Specify host"').clear().type('localhost:5000'); - cy.get('[placeholder="Specify ssl certificate"]').clear().type('SSL CERTIFICATE'); - cy.get('[placeholder="Specify certificate key"]').clear().type('SSL KEY'); + cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).should('have.value', 'elasticsearch'); + cy.getBySel(kafkaOutputFormValues.name.selector).should('have.value', 'kafka_to_es'); + }); - cy.intercept('PUT', '**/api/fleet/outputs/**').as('saveOutput'); + it('changes output type from kafka to logstash', () => { + visit(`/app/fleet/settings/outputs/${kafkaOutputToLogstashId}`); + cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).select('logstash'); + cy.getBySel(kafkaOutputFormValues.name.selector).clear().type('kafka_to_logstash'); + cy.get('[placeholder="Specify host"').clear().type('localhost:5000'); + cy.get('[placeholder="Specify ssl certificate"]').clear().type('SSL CERTIFICATE'); + cy.get('[placeholder="Specify certificate key"]').clear().type('SSL KEY'); - cy.getBySel(SETTINGS_SAVE_BTN).click(); - cy.getBySel(SETTINGS_CONFIRM_MODAL_BTN).click(); + cy.intercept('PUT', '**/api/fleet/outputs/**').as('saveOutput'); - // wait for the save request to finish to avoid race condition - cy.wait('@saveOutput').then(() => { - visit(`/app/fleet/settings/outputs/${kafkaOutputToLogstashId}`); - }); + cy.getBySel(SETTINGS_SAVE_BTN).click(); + cy.getBySel(SETTINGS_CONFIRM_MODAL_BTN).click(); - cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).should('have.value', 'logstash'); - cy.getBySel(kafkaOutputFormValues.name.selector).should( - 'have.value', - 'kafka_to_logstash' - ); + // wait for the save request to finish to avoid race condition + cy.wait('@saveOutput').then(() => { + visit(`/app/fleet/settings/outputs/${kafkaOutputToLogstashId}`); }); + + cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).should('have.value', 'logstash'); + cy.getBySel(kafkaOutputFormValues.name.selector).should('have.value', 'kafka_to_logstash'); }); - } + }); }); }); diff --git a/x-pack/plugins/fleet/cypress/screens/fleet.ts b/x-pack/plugins/fleet/cypress/screens/fleet.ts index b21dfa7c4e66c..e6b6ac1f47008 100644 --- a/x-pack/plugins/fleet/cypress/screens/fleet.ts +++ b/x-pack/plugins/fleet/cypress/screens/fleet.ts @@ -136,11 +136,16 @@ export const getSpecificSelectorId = (selector: string, id: number) => { export const SETTINGS_OUTPUTS_KAFKA = { VERSION_SELECT: 'settingsOutputsFlyout.kafkaVersionInput', AUTHENTICATION_SELECT: 'settingsOutputsFlyout.kafkaAuthenticationRadioInput', + AUTHENTICATION_NONE_OPTION: 'kafkaAuthenticationNoneRadioButton', AUTHENTICATION_USERNAME_PASSWORD_OPTION: 'kafkaAuthenticationUsernamePasswordRadioButton', AUTHENTICATION_SSL_OPTION: 'kafkaAuthenticationSSLRadioButton', AUTHENTICATION_KERBEROS_OPTION: 'kafkaAuthenticationKerberosRadioButton', AUTHENTICATION_USERNAME_INPUT: 'settingsOutputsFlyout.kafkaUsernameInput', AUTHENTICATION_PASSWORD_INPUT: 'settingsOutputsFlyout.kafkaPasswordInput', + AUTHENTICATION_VERIFICATION_MODE_INPUT: 'settingsOutputsFlyout.kafkaVerificationModeInput', + AUTHENTICATION_CONNECTION_TYPE_SELECT: 'settingsOutputsFlyout.kafkaConnectionTypeRadioInput', + AUTHENTICATION_CONNECTION_TYPE_PLAIN_OPTION: 'kafkaConnectionTypePlaintextRadioButton', + AUTHENTICATION_CONNECTION_TYPE_ENCRYPTION_OPTION: 'kafkaConnectionTypeEncryptionRadioButton', AUTHENTICATION_SASL_SELECT: 'settingsOutputsFlyout.kafkaSaslInput', AUTHENTICATION_SASL_PLAIN_OPTION: 'kafkaSaslPlainRadioButton', AUTHENTICATION_SASL_SCRAM_256_OPTION: 'kafkaSaslScramSha256RadioButton', @@ -173,7 +178,6 @@ export const SETTINGS_OUTPUTS_KAFKA = { BROKER_PANEL: 'settingsOutputsFlyout.kafkaBrokerSettingsPanel', BROKER_TIMEOUT_SELECT: 'settingsOutputsFlyout.kafkaBrokerTimeoutInput', BROKER_REACHABILITY_TIMEOUT_SELECT: 'settingsOutputsFlyout.kafkaBrokerReachabilityTimeoutInput', - BROKER_CHANNEL_BUFFER_SIZE_SELECT: 'settingsOutputsFlyout.kafkaBrokerChannelBufferSizeInput', BROKER_ACK_RELIABILITY_SELECT: 'settingsOutputsFlyout.kafkaBrokerAckReliabilityInputLabel', KEY_INPUT: 'settingsOutputsFlyout.kafkaKeyInput', }; diff --git a/x-pack/plugins/fleet/cypress/screens/fleet_outputs.ts b/x-pack/plugins/fleet/cypress/screens/fleet_outputs.ts index c5f7a852197c1..de6ef1097b74a 100644 --- a/x-pack/plugins/fleet/cypress/screens/fleet_outputs.ts +++ b/x-pack/plugins/fleet/cypress/screens/fleet_outputs.ts @@ -21,6 +21,7 @@ export const selectKafkaOutput = () => { visit('/app/fleet/settings'); cy.getBySel(SETTINGS_OUTPUTS.ADD_BTN).click(); cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).select('kafka'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_PASSWORD_OPTION).click(); }; export const shouldDisplayError = (handler: string) => { @@ -56,7 +57,7 @@ export const kafkaOutputBody = { name: 'kafka_test1', type: 'kafka', is_default: false, - hosts: ['https://example.com'], + hosts: ['example.com:2000'], topics: [{ topic: 'test' }], auth_type: 'user_pass', username: 'kafka', @@ -96,6 +97,10 @@ export const kafkaOutputFormValues = { selector: SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_PASSWORD_INPUT, value: 'test_password', }, + verificationMode: { + selector: SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_VERIFICATION_MODE_INPUT, + value: 'certificate', + }, hash: { selector: SETTINGS_OUTPUTS_KAFKA.PARTITIONING_HASH_INPUT, value: 'testHash', @@ -110,7 +115,7 @@ export const kafkaOutputFormValues = { }, firstTopicCondition: { selector: SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT, - value: 'testCondition', + value: 'testCondition: abc', }, firstTopicWhen: { selector: SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT, @@ -122,7 +127,7 @@ export const kafkaOutputFormValues = { }, secondTopicCondition: { selector: getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_CONDITION_INPUT, 1), - value: 'testCondition1', + value: 'testCondition1: dca', }, secondTopicWhen: { selector: getSpecificSelectorId(SETTINGS_OUTPUTS_KAFKA.TOPICS_WHEN_INPUT, 1), @@ -154,11 +159,7 @@ export const kafkaOutputFormValues = { }, brokerAckReliability: { selector: SETTINGS_OUTPUTS_KAFKA.BROKER_ACK_RELIABILITY_SELECT, - value: 'Do not wait', - }, - brokerChannelBufferSize: { - selector: SETTINGS_OUTPUTS_KAFKA.BROKER_CHANNEL_BUFFER_SIZE_SELECT, - value: '512', + value: '0', }, brokerTimeout: { selector: SETTINGS_OUTPUTS_KAFKA.BROKER_TIMEOUT_SELECT, @@ -185,9 +186,13 @@ export const resetKafkaOutputForm = () => { export const fillInKafkaOutputForm = () => { cy.getBySel(kafkaOutputFormValues.name.selector).type(kafkaOutputFormValues.name.value); - cy.get('[placeholder="Specify host"').clear().type('http://localhost:5000'); + cy.get('[placeholder="Specify host"').clear().type('localhost:5000'); cy.getBySel(kafkaOutputFormValues.username.selector).type(kafkaOutputFormValues.username.value); cy.getBySel(kafkaOutputFormValues.password.selector).type(kafkaOutputFormValues.password.value); + cy.getBySel(kafkaOutputFormValues.verificationMode.selector).select( + kafkaOutputFormValues.verificationMode.value + ); + cy.get('[placeholder="Specify certificate authority"]').clear().type('testCA'); cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_SCRAM_256_OPTION).click(); cy.getBySel(SETTINGS_OUTPUTS_KAFKA.PARTITIONING_HASH_OPTION).click(); @@ -249,9 +254,6 @@ export const fillInKafkaOutputForm = () => { cy.getBySel(kafkaOutputFormValues.brokerAckReliability.selector).select( kafkaOutputFormValues.brokerAckReliability.value ); - cy.getBySel(kafkaOutputFormValues.brokerChannelBufferSize.selector).select( - kafkaOutputFormValues.brokerChannelBufferSize.value - ); cy.getBySel(kafkaOutputFormValues.brokerTimeout.selector).select( kafkaOutputFormValues.brokerTimeout.value ); @@ -267,6 +269,9 @@ export const validateSavedKafkaOutputForm = () => { cy.getBySel(selector).should('have.value', value); }); + cy.get('[placeholder="Specify host"').should('have.value', 'localhost:5000'); + cy.get('[placeholder="Specify certificate authority"]').should('have.value', 'testCA'); + cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).should('have.value', 'kafka'); cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_SASL_SCRAM_256_OPTION) @@ -285,6 +290,8 @@ export const validateOutputTypeChangeToKafka = (outputId: string) => { visit(`/app/fleet/settings/outputs/${outputId}`); cy.getBySel(kafkaOutputFormValues.name.selector).clear(); cy.getBySel(SETTINGS_OUTPUTS.TYPE_INPUT).select('kafka'); + cy.getBySel(SETTINGS_OUTPUTS_KAFKA.AUTHENTICATION_USERNAME_PASSWORD_OPTION).click(); + fillInKafkaOutputForm(); cy.intercept('PUT', '**/api/fleet/outputs/**').as('saveOutput'); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/components/post_install_cloud_formation_modal.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/components/post_install_cloud_formation_modal.tsx index e8300e35d0862..7ed959e40efa0 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/components/post_install_cloud_formation_modal.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/components/post_install_cloud_formation_modal.tsx @@ -22,7 +22,7 @@ import { useQuery } from '@tanstack/react-query'; import type { AgentPolicy, PackagePolicy } from '../../../../../types'; import { sendGetEnrollmentAPIKeys, useCreateCloudFormationUrl } from '../../../../../hooks'; -import { getCloudFormationTemplateUrlFromPackagePolicy } from '../../../../../services'; +import { getCloudFormationPropsFromPackagePolicy } from '../../../../../services'; import { CloudFormationGuide } from '../../../../../components'; export const PostInstallCloudFormationModal: React.FunctionComponent<{ @@ -39,13 +39,11 @@ export const PostInstallCloudFormationModal: React.FunctionComponent<{ }) ); - const cloudFormationTemplateUrl = - getCloudFormationTemplateUrlFromPackagePolicy(packagePolicy) || ''; + const cloudFormationProps = getCloudFormationPropsFromPackagePolicy(packagePolicy); const { cloudFormationUrl, error, isError, isLoading } = useCreateCloudFormationUrl({ - cloudFormationTemplateUrl, enrollmentAPIKey: apyKeysData?.data?.items[0]?.api_key, - packagePolicy, + cloudFormationProps, }); return ( diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx index 52d02d93c8097..dbb901316cece 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/agent_policy/create_package_policy_page/single_page_layout/hooks/form.tsx @@ -39,7 +39,7 @@ import type { PackagePolicyFormState } from '../../types'; import { SelectedPolicyTab } from '../../components'; import { useOnSaveNavigate } from '../../hooks'; import { prepareInputPackagePolicyDataset } from '../../services/prepare_input_pkg_policy_dataset'; -import { getCloudFormationTemplateUrlFromPackagePolicy } from '../../../../../services'; +import { getCloudFormationPropsFromPackagePolicy } from '../../../../../services'; async function createAgentPolicy({ packagePolicy, @@ -301,7 +301,7 @@ export function useOnSubmit({ }); const hasCloudFormation = data?.item - ? getCloudFormationTemplateUrlFromPackagePolicy(data.item) + ? getCloudFormationPropsFromPackagePolicy(data.item).templateUrl : false; if (hasCloudFormation) { diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/index.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/index.test.tsx index d577a1643ac0c..46b367011395c 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/index.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/index.test.tsx @@ -43,9 +43,6 @@ const logstashInputsLabels = [ ]; const kafkaInputsLabels = [ - 'Username', - 'Password', - 'SASL Mechanism', 'Partitioning strategy', 'Number of events', 'Default topic', @@ -53,7 +50,6 @@ const kafkaInputsLabels = [ 'Value', 'Broker timeout', 'Broker reachability timeout', - 'Channel buffer size', 'ACK Reliability', 'Key (optional)', ]; @@ -143,7 +139,7 @@ describe('EditOutputFlyout', () => { }); // Does not show logstash inputs - logstashInputsLabels.forEach((label) => { + ['Client SSL certificate key', 'Client SSL certificate'].forEach((label) => { expect(utils.queryByLabelText(label)).toBeNull(); }); }); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka.tsx index 222def40b5a75..f6af3270487be 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka.tsx @@ -84,13 +84,13 @@ export const OutputFormKafkaSection: React.FunctionComponent = (props) => helpText={ ), @@ -105,6 +105,7 @@ export const OutputFormKafkaSection: React.FunctionComponent = (props) => + diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_authentication.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_authentication.tsx index 271f3fe144aca..42a7b66727597 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_authentication.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_authentication.tsx @@ -5,14 +5,16 @@ * 2.0. */ -import React from 'react'; +import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; import { + EuiFieldPassword, EuiFieldText, EuiFormRow, EuiPanel, EuiRadioGroup, + EuiSelect, EuiSpacer, EuiTextArea, EuiTitle, @@ -20,7 +22,13 @@ import { import { FormattedMessage } from '@kbn/i18n-react'; import { MultiRowInput } from '../multi_row_input'; -import { kafkaAuthType, kafkaSaslMechanism } from '../../../../../../../common/constants'; + +import { + kafkaAuthType, + kafkaConnectionType, + kafkaSaslMechanism, + kafkaVerificationModes, +} from '../../../../../../../common/constants'; import type { OutputFormInputsType } from './use_output_form'; @@ -43,6 +51,11 @@ const kafkaSaslOptions = [ ]; const kafkaAuthenticationsOptions = [ + { + id: kafkaAuthType.None, + label: 'None', + 'data-test-subj': 'kafkaAuthenticationNoneRadioButton', + }, { id: kafkaAuthType.Userpass, label: 'Username / Password', @@ -53,11 +66,6 @@ const kafkaAuthenticationsOptions = [ label: 'SSL', 'data-test-subj': 'kafkaAuthenticationSSLRadioButton', }, - { - id: kafkaAuthType.Kerberos, - label: 'Kerberos', - 'data-test-subj': 'kafkaAuthenticationKerberosRadioButton', - }, ]; export const OutputFormKafkaAuthentication: React.FunctionComponent<{ @@ -65,28 +73,56 @@ export const OutputFormKafkaAuthentication: React.FunctionComponent<{ }> = (props) => { const { inputs } = props; + const kafkaVerificationModeOptions = useMemo( + () => + (Object.keys(kafkaVerificationModes) as Array).map( + (key) => { + return { + text: kafkaVerificationModes[key], + label: key, + }; + } + ), + [] + ); + + const kafkaConnectionTypeOptions = useMemo( + () => + (Object.keys(kafkaConnectionType) as Array).map((key) => { + return { + id: kafkaConnectionType[key], + label: key, + 'data-test-subj': `kafkaConnectionType${key}RadioButton`, + }; + }), + [] + ); + const renderAuthentication = () => { switch (inputs.kafkaAuthMethodInput.value) { + case kafkaAuthType.None: + return ( + + } + > + + + ); case kafkaAuthType.Ssl: return ( <> - ); - case kafkaAuthType.Kerberos: - return null; default: case kafkaAuthType.Userpass: return ( @@ -165,7 +199,8 @@ export const OutputFormKafkaAuthentication: React.FunctionComponent<{ } {...inputs.kafkaAuthPasswordInput.formRowProps} > - { + const displayEncryptionSection = + inputs.kafkaConnectionTypeInput.value !== kafkaConnectionType.Plaintext || + inputs.kafkaAuthMethodInput.value !== kafkaAuthType.None; + + if (!displayEncryptionSection) { + return null; + } + + return ( + <> + + + + + + } + > + + + + ); + }; + return ( - - -

- + + +

+ +

+
+ + + -

-
- - - - - {renderAuthentication()} -
+
+ {renderAuthentication()} + + {renderEncryptionSection()} + ); }; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_broker.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_broker.tsx index f6b0477c81515..2fb40f3e5e376 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_broker.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_broker.tsx @@ -27,14 +27,18 @@ export const OutputFormKafkaBroker: React.FunctionComponent<{ inputs: OutputForm [] ); - const kafkaBrokerChannelBufferSizeOptions = useMemo( - () => - Array.from({ length: 4 }, (_, i) => Math.pow(2, i + 7)).map((buffer) => ({ - text: buffer, - label: `${buffer}`, - })), - [] - ); + const getAckReliabilityLabel = (value: number) => { + switch (value) { + case kafkaAcknowledgeReliabilityLevel.DoNotWait: + return 'No response'; + case kafkaAcknowledgeReliabilityLevel.Replica: + return 'Wait for all replicas to commit'; + default: + case kafkaAcknowledgeReliabilityLevel.Commit: + return 'Wait for local commit'; + } + }; + const kafkaBrokerAckReliabilityOptions = useMemo( () => ( @@ -44,7 +48,7 @@ export const OutputFormKafkaBroker: React.FunctionComponent<{ inputs: OutputForm ).map((key) => { return { text: kafkaAcknowledgeReliabilityLevel[key], - label: kafkaAcknowledgeReliabilityLevel[key], + label: getAckReliabilityLabel(kafkaAcknowledgeReliabilityLevel[key]), }; }), [] @@ -111,28 +115,6 @@ export const OutputFormKafkaBroker: React.FunctionComponent<{ inputs: OutputForm options={kafkaBrokerTimeoutOptions} /> - - } - helpText={ - - } - > - - } > diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_headers.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_headers.tsx index 3f605463a65bc..89ff4b5d0de7a 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_headers.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_kafka_headers.tsx @@ -114,7 +114,7 @@ export const OutputFormKafkaHeaders: React.FunctionComponent<{ inputs: OutputFor const keyErrors = matchErrorsByIndex(index, 'key'); const valueErrors = matchErrorsByIndex(index, 'value'); return ( - <> +
{index > 0 && } @@ -173,7 +173,7 @@ export const OutputFormKafkaHeaders: React.FunctionComponent<{ inputs: OutputFor /> - +
); })} {displayErrors(globalErrors)} @@ -198,6 +198,7 @@ export const OutputFormKafkaHeaders: React.FunctionComponent<{ inputs: OutputFor defaultMessage="Client ID" /> } + {...inputs.kafkaClientIdInput.formRowProps} > { @@ -64,7 +63,30 @@ export const OutputFormKafkaTopics: React.FunctionComponent<{ inputs: OutputForm acc[err.index] = []; } - acc[err.index].push(err.message); + if (!err.condition) { + acc[err.index].push(err.message); + } + + return acc; + }, []); + }, [errors]); + + const indexedConditionErrors = useMemo(() => { + if (!errors) { + return []; + } + return errors.reduce((acc, err) => { + if (err.index === undefined) { + return acc; + } + + if (!acc[err.index]) { + acc[err.index] = []; + } + + if (err.condition) { + acc[err.index].push(err.message); + } return acc; }, []); @@ -97,9 +119,10 @@ export const OutputFormKafkaTopics: React.FunctionComponent<{ inputs: OutputForm (index: number) => { const updatedTopics = topics.filter((_, i) => i !== index); indexedErrors.splice(index, 1); + indexedConditionErrors.splice(index, 1); onChange(updatedTopics); }, - [topics, indexedErrors, onChange] + [topics, indexedErrors, indexedConditionErrors, onChange] ); const displayErrors = (errorMessages?: string[]) => { @@ -132,10 +155,13 @@ export const OutputFormKafkaTopics: React.FunctionComponent<{ inputs: OutputForm const sourceErrors = indexedErrors[source.index]; indexedErrors.splice(source.index, 1); indexedErrors.splice(destination.index, 0, sourceErrors); + const sourceConditionErrors = indexedConditionErrors[source.index]; + indexedConditionErrors.splice(source.index, 1); + indexedConditionErrors.splice(destination.index, 0, sourceConditionErrors); onChange(items); } }, - [topics, indexedErrors, onChange] + [topics, indexedErrors, indexedConditionErrors, onChange] ); return ( @@ -187,6 +213,7 @@ export const OutputFormKafkaTopics: React.FunctionComponent<{ inputs: OutputForm {topics.map((topic, index) => { const topicErrors = indexedErrors[index]; + const topicConditionErrors = indexedConditionErrors[index]; return ( - + 0} + > 0} onChange={(e) => handleTopicProcessorChange(index, 'condition', e.target.value) } @@ -301,6 +333,7 @@ export const OutputFormKafkaTopics: React.FunctionComponent<{ inputs: OutputForm <> {topics.map((topic, index) => { const topicErrors = indexedErrors[index]; + const topicConditionErrors = indexedConditionErrors[index]; return ( <> @@ -320,10 +353,15 @@ export const OutputFormKafkaTopics: React.FunctionComponent<{ inputs: OutputForm - + 0} + > 0} onChange={(e) => handleTopicProcessorChange(index, 'condition', e.target.value) } diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_validators.test.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_validators.test.tsx index 04b07ac9c8b4a..d5da6f553cf89 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_validators.test.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_validators.test.tsx @@ -11,9 +11,71 @@ import { validateYamlConfig, validateCATrustedFingerPrint, validateKafkaHeaders, + validateKafkaHosts, } from './output_form_validators'; describe('Output form validation', () => { + describe('validateKafkaHosts', () => { + it('should not work without any urls', () => { + const res = validateKafkaHosts([]); + + expect(res).toEqual([{ message: 'Host is required' }]); + }); + + it('should work with valid url', () => { + const res = validateKafkaHosts(['test.fr:9200']); + + expect(res).toBeUndefined(); + }); + + it('should work with multiple valid urls', () => { + const res = validateKafkaHosts(['test.fr:9200', 'test2.fr:9200', 'test.fr:9999']); + + expect(res).toBeUndefined(); + }); + + it('should return an error with invalid url', () => { + const res = validateKafkaHosts(['toto']); + + expect(res).toEqual([ + { index: 0, message: 'Invalid format. Expected "host:port" without protocol.' }, + ]); + }); + + it('should return an error with url with defined protocol', () => { + const res = validateKafkaHosts(['https://test.fr:9200']); + + expect(res).toEqual([ + { index: 0, message: 'Invalid format. Expected "host:port" without protocol.' }, + ]); + }); + + it('should return an error with url with invalid port', () => { + const res = validateKafkaHosts(['test.fr:qwerty9200']); + + expect(res).toEqual([ + { index: 0, message: 'Invalid port number. Expected a number between 1 and 65535' }, + ]); + }); + + it('should return an error with multiple invalid urls', () => { + const res = validateKafkaHosts(['toto', 'tata']); + + expect(res).toEqual([ + { index: 0, message: 'Invalid format. Expected "host:port" without protocol.' }, + { index: 1, message: 'Invalid format. Expected "host:port" without protocol.' }, + ]); + }); + it('should return an error with duplicate urls', () => { + const res = validateKafkaHosts(['test.fr:2000', 'test.fr:2000']); + + expect(res).toEqual([ + { index: 0, message: 'Duplicate URL' }, + { index: 1, message: 'Duplicate URL' }, + ]); + }); + }); + describe('validateESHosts', () => { it('should not work without any urls', () => { const res = validateESHosts([]); diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_validators.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_validators.tsx index 8d658e545a854..bbb5b5dda3e91 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_validators.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/output_form_validators.tsx @@ -8,6 +8,73 @@ import { i18n } from '@kbn/i18n'; import { safeLoad } from 'js-yaml'; +export function validateKafkaHosts(value: string[]) { + const res: Array<{ message: string; index?: number }> = []; + const urlIndexes: { [key: string]: number[] } = {}; + + value.forEach((val, idx) => { + if (!val) { + res.push({ + message: i18n.translate('xpack.fleet.settings.outputForm.kafkaHostFieldRequiredError', { + defaultMessage: 'Host is required', + }), + }); + return; + } + + // Split the URL into parts based on ":" + const urlParts = val.split(':'); + if (urlParts.length !== 2 || !urlParts[0] || !urlParts[1]) { + res.push({ + message: i18n.translate('xpack.fleet.settings.outputForm.kafkaHostPortError', { + defaultMessage: 'Invalid format. Expected "host:port" without protocol.', + }), + index: idx, + }); + return; + } + + // Validate that the port is a valid number + const port = parseInt(urlParts[1], 10); + if (isNaN(port) || port < 1 || port > 65535) { + res.push({ + message: i18n.translate('xpack.fleet.settings.outputForm.kafkaPortError', { + defaultMessage: 'Invalid port number. Expected a number between 1 and 65535', + }), + index: idx, + }); + } + + const curIndexes = urlIndexes[val] || []; + urlIndexes[val] = [...curIndexes, idx]; + }); + + Object.values(urlIndexes) + .filter(({ length }) => length > 1) + .forEach((indexes) => { + indexes.forEach((index) => + res.push({ + message: i18n.translate('xpack.fleet.settings.outputForm.kafkaHostDuplicateError', { + defaultMessage: 'Duplicate URL', + }), + index, + }) + ); + }); + + if (value.length === 0) { + res.push({ + message: i18n.translate('xpack.fleet.settings.outputForm.kafkaHostRequiredError', { + defaultMessage: 'Host is required', + }), + }); + } + + if (res.length) { + return res; + } +} + export function validateESHosts(value: string[]) { const res: Array<{ message: string; index?: number }> = []; const urlIndexes: { [key: string]: number[] } = {}; @@ -211,14 +278,31 @@ export function validateKafkaDefaultTopic(value: string) { } } +export function validateKafkaClientId(value: string) { + const regex = /^[A-Za-z0-9._-]+$/; + return regex.test(value) + ? undefined + : [ + i18n.translate('xpack.fleet.settings.outputForm.kafkaClientIdFormattingMessage', { + defaultMessage: + 'Client ID is invalid. Only letters, numbers, dots, underscores, and dashes are allowed.', + }), + ]; +} + export function validateKafkaTopics( topics: Array<{ topic: string; + when?: { + condition?: string; + type?: string; + }; }> ) { const errors: Array<{ message: string; index: number; + condition?: boolean; }> = []; topics.forEach((topic, index) => { @@ -230,6 +314,19 @@ export function validateKafkaTopics( index, }); } + if ( + !topic.when?.condition || + topic.when.condition === '' || + topic.when.condition.split(':').length - 1 !== 1 + ) { + errors.push({ + message: i18n.translate('xpack.fleet.settings.outputForm.kafkaTopicConditionRequired', { + defaultMessage: 'Must be a key, value pair i.e. "http.response.code: 200"', + }), + index, + condition: true, + }); + } }); if (errors.length) { return errors; diff --git a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/use_output_form.tsx b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/use_output_form.tsx index dbd1b4b0c7a30..bd1891f3ebc12 100644 --- a/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/use_output_form.tsx +++ b/x-pack/plugins/fleet/public/applications/fleet/sections/settings/components/edit_output_flyout/use_output_form.tsx @@ -21,8 +21,10 @@ import { kafkaAcknowledgeReliabilityLevel, kafkaAuthType, kafkaCompressionType, + kafkaConnectionType, kafkaPartitionType, kafkaSaslMechanism, + kafkaVerificationModes, outputType, } from '../../../../../../../common/constants'; @@ -57,6 +59,8 @@ import { validateKafkaHeaders, validateKafkaDefaultTopic, validateKafkaTopics, + validateKafkaClientId, + validateKafkaHosts, } from './output_form_validators'; import { confirmUpdate } from './confirm_update'; @@ -87,7 +91,9 @@ export interface OutputFormInputsType { maxBatchBytes: ReturnType; kafkaHostsInput: ReturnType; kafkaVersionInput: ReturnType; + kafkaVerificationModeInput: ReturnType; kafkaAuthMethodInput: ReturnType; + kafkaConnectionTypeInput: ReturnType; kafkaSaslMechanismInput: ReturnType; kafkaAuthUsernameInput: ReturnType; kafkaAuthPasswordInput: ReturnType; @@ -104,7 +110,6 @@ export interface OutputFormInputsType { kafkaCompressionCodecInput: ReturnType; kafkaBrokerTimeoutInput: ReturnType; kafkaBrokerReachabilityTimeoutInput: ReturnType; - kafkaBrokerChannelBufferSizeInput: ReturnType; kafkaBrokerAckReliabilityInput: ReturnType; kafkaKeyInput: ReturnType; kafkaSslCertificateInput: ReturnType; @@ -278,15 +283,20 @@ export function useOutputForm(onSucess: () => void, output?: Output) { const kafkaHostsInput = useComboInput( 'kafkaHostsComboBox', output?.hosts ?? [], - validateESHosts, + validateKafkaHosts, isDisabled('hosts') ); const kafkaAuthMethodInput = useRadioInput( - kafkaOutput?.auth_type ?? kafkaAuthType.Userpass, + kafkaOutput?.auth_type ?? kafkaAuthType.None, isDisabled('auth_type') ); + const kafkaConnectionTypeInput = useRadioInput( + kafkaOutput?.connection_type ?? kafkaConnectionType.Plaintext, + isDisabled('connection_type') + ); + const kafkaAuthUsernameInput = useInput( kafkaOutput?.username, kafkaAuthMethodInput.value === kafkaAuthType.Userpass ? validateKafkaUsername : undefined, @@ -315,6 +325,12 @@ export function useOutputForm(onSucess: () => void, output?: Output) { isSSLEditable ); + const kafkaVerificationModeInput = useInput( + kafkaOutput?.ssl?.verification_mode ?? kafkaVerificationModes.Full, + undefined, + isSSLEditable + ); + const kafkaSaslMechanismInput = useRadioInput( kafkaOutput?.sasl?.mechanism ?? kafkaSaslMechanism.Plain, isDisabled('sasl') @@ -360,8 +376,8 @@ export function useOutputForm(onSucess: () => void, output?: Output) { ); const kafkaClientIdInput = useInput( - kafkaOutput?.client_id ?? 'Elastic agent', - undefined, + kafkaOutput?.client_id ?? 'Elastic', + validateKafkaClientId, isDisabled('client_id') ); @@ -392,16 +408,10 @@ export function useOutputForm(onSucess: () => void, output?: Output) { isDisabled('timeout') ); - const kafkaBrokerChannelBufferSizeInput = useInput( - `${kafkaOutput?.broker_buffer_size ?? 256}`, - undefined, - isDisabled('broker_buffer_size') - ); - const kafkaBrokerAckReliabilityInput = useInput( - kafkaOutput?.broker_ack_reliability ?? kafkaAcknowledgeReliabilityLevel.Commit, + `${kafkaOutput?.required_acks ?? kafkaAcknowledgeReliabilityLevel.Commit}`, undefined, - isDisabled('broker_ack_reliability') + isDisabled('required_acks') ); const kafkaKeyInput = useInput(kafkaOutput?.key, undefined, isDisabled('key')); @@ -434,7 +444,9 @@ export function useOutputForm(onSucess: () => void, output?: Output) { maxBatchBytes, kafkaVersionInput, kafkaHostsInput, + kafkaVerificationModeInput, kafkaAuthMethodInput, + kafkaConnectionTypeInput, kafkaAuthUsernameInput, kafkaAuthPasswordInput, kafkaSaslMechanismInput, @@ -449,7 +461,6 @@ export function useOutputForm(onSucess: () => void, output?: Output) { kafkaCompressionCodecInput, kafkaBrokerTimeoutInput, kafkaBrokerReachabilityTimeoutInput, - kafkaBrokerChannelBufferSizeInput, kafkaBrokerAckReliabilityInput, kafkaKeyInput, kafkaSslCertificateAuthoritiesInput, @@ -467,6 +478,7 @@ export function useOutputForm(onSucess: () => void, output?: Output) { const kafkaHostsValid = kafkaHostsInput.validate(); const kafkaUsernameValid = kafkaAuthUsernameInput.validate(); const kafkaPasswordValid = kafkaAuthPasswordInput.validate(); + const kafkaClientIDValid = kafkaClientIdInput.validate(); const kafkaSslCertificateValid = kafkaSslCertificateInput.validate(); const kafkaSslKeyValid = kafkaSslKeyInput.validate(); const kafkaDefaultTopicValid = kafkaDefaultTopicInput.validate(); @@ -501,7 +513,8 @@ export function useOutputForm(onSucess: () => void, output?: Output) { kafkaHeadersValid && kafkaDefaultTopicValid && kafkaTopicsValid && - additionalYamlConfigValid + additionalYamlConfigValid && + kafkaClientIDValid ); } else { // validate ES @@ -519,6 +532,7 @@ export function useOutputForm(onSucess: () => void, output?: Output) { kafkaHostsInput, kafkaAuthUsernameInput, kafkaAuthPasswordInput, + kafkaClientIdInput, kafkaSslCertificateInput, kafkaSslKeyInput, kafkaDefaultTopicInput, @@ -582,7 +596,7 @@ export function useOutputForm(onSucess: () => void, output?: Output) { const payload: NewOutput = (() => { const parseIntegerIfStringDefined = (value: string | undefined): number | undefined => { if (value !== undefined) { - const parsedInt = parseInt(value, 10); // Specify the base as 10 for decimal numbers + const parsedInt = parseInt(value, 10); if (!isNaN(parsedInt)) { return parsedInt; } @@ -592,6 +606,10 @@ export function useOutputForm(onSucess: () => void, output?: Output) { switch (typeInput.value) { case outputType.Kafka: + const definedCA = kafkaSslCertificateAuthoritiesInput.value.filter( + (val) => val !== '' + ).length; + return { name: nameInput.value, type: outputType.Kafka, @@ -599,18 +617,26 @@ export function useOutputForm(onSucess: () => void, output?: Output) { is_default: defaultOutputInput.value, is_default_monitoring: defaultMonitoringOutputInput.value, config_yaml: additionalYamlConfigInput.value, - ...(kafkaAuthMethodInput.value === kafkaAuthType.Ssl + ...(kafkaConnectionTypeInput.value !== kafkaConnectionType.Plaintext || + kafkaAuthMethodInput.value !== kafkaAuthType.None ? { ssl: { - certificate: kafkaSslCertificateInput.value, - key: kafkaSslKeyInput.value, - certificate_authorities: kafkaSslCertificateAuthoritiesInput.value.filter( - (val) => val !== '' - ), + ...(definedCA + ? { + certificate_authorities: + kafkaSslCertificateAuthoritiesInput.value.filter((val) => val !== ''), + } + : {}), + ...(kafkaAuthMethodInput.value === kafkaAuthType.Ssl + ? { + certificate: kafkaSslCertificateInput.value, + key: kafkaSslKeyInput.value, + } + : {}), + verification_mode: kafkaVerificationModeInput.value, }, } : {}), - proxy_id: proxyIdValue, client_id: kafkaClientIdInput.value || undefined, @@ -626,8 +652,17 @@ export function useOutputForm(onSucess: () => void, output?: Output) { : {}), auth_type: kafkaAuthMethodInput.value, - ...(kafkaAuthUsernameInput.value ? { username: kafkaAuthUsernameInput.value } : {}), - ...(kafkaAuthPasswordInput.value ? { password: kafkaAuthPasswordInput.value } : {}), + ...(kafkaAuthMethodInput.value === kafkaAuthType.None + ? { connection_type: kafkaConnectionTypeInput.value } + : {}), + ...(kafkaAuthMethodInput.value === kafkaAuthType.Userpass && + kafkaAuthUsernameInput.value + ? { username: kafkaAuthUsernameInput.value } + : {}), + ...(kafkaAuthMethodInput.value === kafkaAuthType.Userpass && + kafkaAuthPasswordInput.value + ? { password: kafkaAuthPasswordInput.value } + : {}), ...(kafkaAuthMethodInput.value === kafkaAuthType.Userpass && kafkaSaslMechanismInput.value ? { sasl: { mechanism: kafkaSaslMechanismInput.value } } @@ -665,10 +700,7 @@ export function useOutputForm(onSucess: () => void, output?: Output) { broker_timeout: parseIntegerIfStringDefined( kafkaBrokerReachabilityTimeoutInput.value ), - broker_ack_reliability: kafkaBrokerAckReliabilityInput.value, - broker_buffer_size: parseIntegerIfStringDefined( - kafkaBrokerChannelBufferSizeInput.value - ), + required_acks: parseIntegerIfStringDefined(kafkaBrokerAckReliabilityInput.value), ...shipperParams, } as KafkaOutput; case outputType.Logstash: @@ -752,6 +784,7 @@ export function useOutputForm(onSucess: () => void, output?: Output) { compressionLevelInput.value, loadBalanceEnabledInput.value, typeInput.value, + kafkaSslCertificateAuthoritiesInput.value, nameInput.value, kafkaHostsInput.value, defaultOutputInput.value, @@ -760,12 +793,13 @@ export function useOutputForm(onSucess: () => void, output?: Output) { kafkaAuthMethodInput.value, kafkaSslCertificateInput.value, kafkaSslKeyInput.value, - kafkaSslCertificateAuthoritiesInput.value, + kafkaVerificationModeInput.value, kafkaClientIdInput.value, kafkaVersionInput.value, kafkaKeyInput.value, kafkaCompressionCodecInput.value, kafkaCompressionLevelInput.value, + kafkaConnectionTypeInput.value, kafkaAuthUsernameInput.value, kafkaAuthPasswordInput.value, kafkaSaslMechanismInput.value, @@ -779,7 +813,6 @@ export function useOutputForm(onSucess: () => void, output?: Output) { kafkaBrokerTimeoutInput.value, kafkaBrokerReachabilityTimeoutInput.value, kafkaBrokerAckReliabilityInput.value, - kafkaBrokerChannelBufferSizeInput.value, logstashHostsInput.value, sslCertificateInput.value, sslKeyInput.value, diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/cloud_formation_instructions.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/cloud_formation_instructions.tsx index 0edbe5316409b..83031548293f7 100644 --- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/cloud_formation_instructions.tsx +++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/cloud_formation_instructions.tsx @@ -10,26 +10,23 @@ import { EuiButton, EuiSpacer, EuiCallOut, EuiSkeletonText } from '@elastic/eui' import { FormattedMessage } from '@kbn/i18n-react'; import { i18n } from '@kbn/i18n'; -import type { PackagePolicy } from '../../../common'; - import { useCreateCloudFormationUrl } from '../../hooks'; import { CloudFormationGuide } from '../cloud_formation_guide'; +import type { CloudSecurityIntegration } from './types'; + interface Props { enrollmentAPIKey?: string; - cloudFormationTemplateUrl: string; - packagePolicy?: PackagePolicy; + cloudSecurityIntegration: CloudSecurityIntegration; } export const CloudFormationInstructions: React.FunctionComponent = ({ enrollmentAPIKey, - cloudFormationTemplateUrl, - packagePolicy, + cloudSecurityIntegration, }) => { const { isLoading, cloudFormationUrl, error, isError } = useCreateCloudFormationUrl({ enrollmentAPIKey, - cloudFormationTemplateUrl, - packagePolicy, + cloudFormationProps: cloudSecurityIntegration?.cloudFormationProps, }); if (error && isError) { @@ -45,7 +42,7 @@ export const CloudFormationInstructions: React.FunctionComponent = ({ { - if (!agentPolicy) { + const cloudSecurityPackagePolicy = useMemo(() => { + return getCloudSecurityPackagePolicyFromAgentPolicy(agentPolicy); + }, [agentPolicy]); + + const integrationVersion = cloudSecurityPackagePolicy?.package?.version; + + // Fetch the package info to get the CloudFormation template URL only + // if the package policy is a Cloud Security policy + const { data: packageInfoData, isLoading } = useGetPackageInfoByKeyQuery( + FLEET_CLOUD_SECURITY_POSTURE_PACKAGE, + integrationVersion, + { full: true }, + { enabled: Boolean(cloudSecurityPackagePolicy) } + ); + + const cloudSecurityIntegration: CloudSecurityIntegration | undefined = useMemo(() => { + if (!agentPolicy || !cloudSecurityPackagePolicy) { return undefined; } - const integrationType = getCloudSecurityIntegrationTypeFromPackagePolicy(agentPolicy); - const cloudformationUrl = getCloudFormationTemplateUrlFromAgentPolicy(agentPolicy); + const integrationType = cloudSecurityPackagePolicy.inputs?.find((input) => input.enabled) + ?.policy_template as CloudSecurityIntegrationType; + + if (!integrationType) return undefined; + + const cloudFormationTemplateFromAgentPolicy = + getCloudFormationTemplateUrlFromAgentPolicy(agentPolicy); + + // Use the latest CloudFormation template for the current version + // So it guarantee that the template version matches the integration version + // when the integration is upgraded. + // In case it can't find the template for the current version, + // it will fallback to the one from the agent policy. + const cloudFormationTemplateUrl = packageInfoData?.item + ? getCloudFormationTemplateUrlFromPackageInfo(packageInfoData.item, integrationType) + : cloudFormationTemplateFromAgentPolicy; + + const AWS_ACCOUNT_TYPE = 'aws.account_type'; + + const cloudFormationAwsAccountType: CloudSecurityIntegrationAwsAccountType | undefined = + cloudSecurityPackagePolicy?.inputs?.find((input) => input.enabled)?.streams?.[0]?.vars?.[ + AWS_ACCOUNT_TYPE + ]?.value; return { + isLoading, integrationType, - cloudformationUrl, + isCloudFormation: Boolean(cloudFormationTemplateFromAgentPolicy), + cloudFormationProps: { + awsAccountType: cloudFormationAwsAccountType, + templateUrl: cloudFormationTemplateUrl, + }, }; - }, [agentPolicy]); + }, [agentPolicy, packageInfoData?.item, isLoading, cloudSecurityPackagePolicy]); return { cloudSecurityIntegration }; } @@ -97,13 +147,10 @@ const isK8sPackage = (pkg: PackagePolicy) => { return K8S_PACKAGES.has(name); }; -const getCloudSecurityIntegrationTypeFromPackagePolicy = ( - agentPolicy: AgentPolicy -): CloudSecurityIntegrationType | undefined => { - const packagePolicy = agentPolicy?.package_policies?.find( +const getCloudSecurityPackagePolicyFromAgentPolicy = ( + agentPolicy?: AgentPolicy +): PackagePolicy | undefined => { + return agentPolicy?.package_policies?.find( (input) => input.package?.name === FLEET_CLOUD_SECURITY_POSTURE_PACKAGE ); - if (!packagePolicy) return undefined; - return packagePolicy?.inputs?.find((input) => input.enabled) - ?.policy_template as CloudSecurityIntegrationType; }; diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/instructions.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/instructions.tsx index b602b9fd8931d..d88c9cedb4bcd 100644 --- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/instructions.tsx +++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/instructions.tsx @@ -80,8 +80,8 @@ export const Instructions = (props: InstructionProps) => { (fleetStatus.missingRequirements ?? []).some((r) => r === FLEET_SERVER_PACKAGE)); useEffect(() => { - // If we have a cloudFormationTemplateUrl, we want to hide the selection type - if (props.cloudSecurityIntegration?.cloudformationUrl) { + // If we detect a CloudFormation integration, we want to hide the selection type + if (props.cloudSecurityIntegration?.isCloudFormation) { setSelectionType(undefined); } else if (!isIntegrationFlow && showAgentEnrollment) { setSelectionType('radio'); @@ -117,10 +117,7 @@ export const Instructions = (props: InstructionProps) => { {isFleetServerPolicySelected ? ( undefined} /> ) : ( - + )} ); diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx index 3977cdd5db576..a750fa48aae7f 100644 --- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx +++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/compute_steps.tsx @@ -200,7 +200,6 @@ export const ManagedSteps: React.FunctionComponent = ({ isK8s, cloudSecurityIntegration, installedPackagePolicy, - cloudFormationTemplateUrl, }) => { const kibanaVersion = useKibanaVersion(); const core = useStartServices(); @@ -247,14 +246,13 @@ export const ManagedSteps: React.FunctionComponent = ({ ); } - if (cloudFormationTemplateUrl) { + if (cloudSecurityIntegration?.isCloudFormation) { steps.push( InstallCloudFormationManagedAgentStep({ apiKeyData, selectedApiKeyId, enrollToken, - cloudFormationTemplateUrl, - agentPolicy, + cloudSecurityIntegration, }) ); } else { @@ -314,7 +312,6 @@ export const ManagedSteps: React.FunctionComponent = ({ link, agentDataConfirmed, installedPackagePolicy, - cloudFormationTemplateUrl, ]); return ; diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/install_cloud_formation_managed_agent_step.tsx b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/install_cloud_formation_managed_agent_step.tsx index 75fec5be125f5..7826d1648ae64 100644 --- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/install_cloud_formation_managed_agent_step.tsx +++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/steps/install_cloud_formation_managed_agent_step.tsx @@ -11,46 +11,38 @@ import { i18n } from '@kbn/i18n'; import type { EuiContainedStepProps } from '@elastic/eui/src/components/steps/steps'; -import type { AgentPolicy } from '../../../../common'; - import type { GetOneEnrollmentAPIKeyResponse } from '../../../../common/types/rest_spec/enrollment_api_key'; import { CloudFormationInstructions } from '../cloud_formation_instructions'; -import { FLEET_CLOUD_SECURITY_POSTURE_PACKAGE } from '../../../../common'; + +import type { CloudSecurityIntegration } from '../types'; export const InstallCloudFormationManagedAgentStep = ({ selectedApiKeyId, apiKeyData, enrollToken, isComplete, - cloudFormationTemplateUrl, - agentPolicy, + cloudSecurityIntegration, }: { selectedApiKeyId?: string; apiKeyData?: GetOneEnrollmentAPIKeyResponse | null; enrollToken?: string; isComplete?: boolean; - cloudFormationTemplateUrl: string; - agentPolicy?: AgentPolicy; + cloudSecurityIntegration?: CloudSecurityIntegration | undefined; }): EuiContainedStepProps => { const nonCompleteStatus = selectedApiKeyId ? undefined : 'disabled'; const status = isComplete ? 'complete' : nonCompleteStatus; - const cloudSecurityPackagePolicy = agentPolicy?.package_policies?.find( - (p) => p.package?.name === FLEET_CLOUD_SECURITY_POSTURE_PACKAGE - ); - return { status, title: i18n.translate('xpack.fleet.agentEnrollment.cloudFormation.stepEnrollAndRunAgentTitle', { defaultMessage: 'Install Elastic Agent on your cloud', }), children: - selectedApiKeyId && apiKeyData ? ( + selectedApiKeyId && apiKeyData && cloudSecurityIntegration ? ( ) : ( diff --git a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/types.ts b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/types.ts index 79c8029e4ec01..f1cd44ea5348b 100644 --- a/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/types.ts +++ b/x-pack/plugins/fleet/public/components/agent_enrollment_flyout/types.ts @@ -16,13 +16,21 @@ export type K8sMode = | 'IS_KUBERNETES_MULTIPAGE'; export type CloudSecurityIntegrationType = 'kspm' | 'vuln_mgmt' | 'cspm'; +export type CloudSecurityIntegrationAwsAccountType = 'single-account' | 'organization-account'; export type FlyoutMode = 'managed' | 'standalone'; export type SelectionType = 'tabs' | 'radio' | undefined; +export interface CloudFormationProps { + templateUrl: string | undefined; + awsAccountType: CloudSecurityIntegrationAwsAccountType | undefined; +} + export interface CloudSecurityIntegration { integrationType: CloudSecurityIntegrationType | undefined; - cloudformationUrl: string | undefined; + isLoading: boolean; + isCloudFormation: boolean; + cloudFormationProps?: CloudFormationProps; } export interface BaseProps { @@ -65,5 +73,4 @@ export interface InstructionProps extends BaseProps { setSelectedAPIKeyId: (key?: string) => void; fleetServerHosts: string[]; fleetProxy?: FleetProxy; - cloudFormationTemplateUrl?: string; } diff --git a/x-pack/plugins/fleet/public/hooks/use_create_cloud_formation_url.ts b/x-pack/plugins/fleet/public/hooks/use_create_cloud_formation_url.ts index a28b0f46adb41..45e5b259afd15 100644 --- a/x-pack/plugins/fleet/public/hooks/use_create_cloud_formation_url.ts +++ b/x-pack/plugins/fleet/public/hooks/use_create_cloud_formation_url.ts @@ -7,34 +7,27 @@ import { i18n } from '@kbn/i18n'; -import type { PackagePolicy, PackagePolicyInput } from '../../common'; +import type { + CloudFormationProps, + CloudSecurityIntegrationAwsAccountType, +} from '../components/agent_enrollment_flyout/types'; import { useKibanaVersion } from './use_kibana_version'; import { useGetSettings } from './use_request'; -type AwsAccountType = 'single_account' | 'organization_account'; - -const CLOUDBEAT_AWS = 'cloudbeat/cis_aws'; - -const getAwsAccountType = (input?: PackagePolicyInput): AwsAccountType | undefined => - input?.streams[0].vars?.['aws.account_type']?.value; +const CLOUD_FORMATION_DEFAULT_ACCOUNT_TYPE = 'single-account'; export const useCreateCloudFormationUrl = ({ enrollmentAPIKey, - cloudFormationTemplateUrl, - packagePolicy, + cloudFormationProps, }: { enrollmentAPIKey: string | undefined; - cloudFormationTemplateUrl: string; - packagePolicy?: PackagePolicy; + cloudFormationProps: CloudFormationProps | undefined; }) => { const { data, isLoading } = useGetSettings(); const kibanaVersion = useKibanaVersion(); - const awsInput = packagePolicy?.inputs?.find((input) => input.type === CLOUDBEAT_AWS); - const awsAccountType = getAwsAccountType(awsInput) || ''; - let isError = false; let error: string | undefined; @@ -56,13 +49,13 @@ export const useCreateCloudFormationUrl = ({ } const cloudFormationUrl = - enrollmentAPIKey && fleetServerHost && cloudFormationTemplateUrl + enrollmentAPIKey && fleetServerHost && cloudFormationProps?.templateUrl ? createCloudFormationUrl( - cloudFormationTemplateUrl, + cloudFormationProps?.templateUrl, enrollmentAPIKey, fleetServerHost, kibanaVersion, - awsAccountType + cloudFormationProps?.awsAccountType ) : undefined; @@ -79,7 +72,7 @@ const createCloudFormationUrl = ( enrollmentToken: string, fleetUrl: string, kibanaVersion: string, - awsAccountType: string + awsAccountType: CloudSecurityIntegrationAwsAccountType | undefined ) => { let cloudFormationUrl; @@ -89,8 +82,15 @@ const createCloudFormationUrl = ( .replace('KIBANA_VERSION', kibanaVersion); if (cloudFormationUrl.includes('ACCOUNT_TYPE')) { - cloudFormationUrl = cloudFormationUrl.replace('ACCOUNT_TYPE', awsAccountType); + cloudFormationUrl = cloudFormationUrl.replace( + 'ACCOUNT_TYPE', + getAwsAccountType(awsAccountType) + ); } return new URL(cloudFormationUrl).toString(); }; + +const getAwsAccountType = (awsAccountType: CloudSecurityIntegrationAwsAccountType | undefined) => { + return awsAccountType ? awsAccountType : CLOUD_FORMATION_DEFAULT_ACCOUNT_TYPE; +}; diff --git a/x-pack/plugins/fleet/public/hooks/use_input.ts b/x-pack/plugins/fleet/public/hooks/use_input.ts index a48e3075d7a42..dbc60eafda833 100644 --- a/x-pack/plugins/fleet/public/hooks/use_input.ts +++ b/x-pack/plugins/fleet/public/hooks/use_input.ts @@ -86,6 +86,16 @@ export function useInput( export function useRadioInput(defaultValue: string, disabled = false) { const [value, setValue] = useState(defaultValue); + const [hasChanged, setHasChanged] = useState(false); + + useEffect(() => { + if (hasChanged) { + return; + } + if (value !== defaultValue) { + setHasChanged(true); + } + }, [hasChanged, value, defaultValue]); const onChange = useCallback(setValue, [setValue]); @@ -97,6 +107,7 @@ export function useRadioInput(defaultValue: string, disabled = false) { }, setValue, value, + hasChanged, }; } @@ -137,11 +148,15 @@ export function useSwitchInput(defaultValue = false, disabled = false) { function useCustomInput( id: string, defaultValue: T, - validate?: (value: T) => Array<{ message: string; index?: number }> | undefined, + validate?: ( + value: T + ) => Array<{ message: string; index?: number; condition?: boolean }> | undefined, disabled = false ) { const [value, setValue] = useState(defaultValue); - const [errors, setErrors] = useState | undefined>(); + const [errors, setErrors] = useState< + Array<{ message: string; index?: number; condition?: boolean }> | undefined + >(); const [hasChanged, setHasChanged] = useState(false); useEffect(() => { @@ -237,7 +252,9 @@ type Topic = Array<{ export function useTopicsInput( id: string, defaultValue: Topic = [], - validate?: (value: Topic) => Array<{ message: string; index: number }> | undefined, + validate?: ( + value: Topic + ) => Array<{ message: string; index: number; condition?: boolean }> | undefined, disabled = false ) { return useCustomInput(id, defaultValue, validate, disabled); diff --git a/x-pack/plugins/fleet/public/hooks/use_request/epm.ts b/x-pack/plugins/fleet/public/hooks/use_request/epm.ts index cc381c20ecd97..df8ceb8a4c2e2 100644 --- a/x-pack/plugins/fleet/public/hooks/use_request/epm.ts +++ b/x-pack/plugins/fleet/public/hooks/use_request/epm.ts @@ -105,6 +105,13 @@ export const useGetPackageInfoByKeyQuery = ( ignoreUnverified?: boolean; prerelease?: boolean; full?: boolean; + }, + // Additional options for the useQuery hook + queryOptions: { + // If enabled is false, the query will not be fetched + enabled?: boolean; + } = { + enabled: true, } ) => { const confirmOpenUnverified = useConfirmOpenUnverified(); @@ -112,15 +119,18 @@ export const useGetPackageInfoByKeyQuery = ( options?.ignoreUnverified ); - const response = useQuery([pkgName, pkgVersion, options], () => - sendRequestForRq({ - path: epmRouteService.getInfoPath(pkgName, pkgVersion), - method: 'get', - query: { - ...options, - ...(ignoreUnverifiedQueryParam && { ignoreUnverified: ignoreUnverifiedQueryParam }), - }, - }) + const response = useQuery( + [pkgName, pkgVersion, options], + () => + sendRequestForRq({ + path: epmRouteService.getInfoPath(pkgName, pkgVersion), + method: 'get', + query: { + ...options, + ...(ignoreUnverifiedQueryParam && { ignoreUnverified: ignoreUnverifiedQueryParam }), + }, + }), + { enabled: queryOptions.enabled } ); const confirm = async () => { diff --git a/x-pack/plugins/fleet/public/services/get_cloud_formation_props_from_package_policy.test.ts b/x-pack/plugins/fleet/public/services/get_cloud_formation_props_from_package_policy.test.ts new file mode 100644 index 0000000000000..f84d5c839dd40 --- /dev/null +++ b/x-pack/plugins/fleet/public/services/get_cloud_formation_props_from_package_policy.test.ts @@ -0,0 +1,126 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import { getCloudFormationPropsFromPackagePolicy } from './get_cloud_formation_props_from_package_policy'; + +describe('getCloudFormationPropsFromPackagePolicy', () => { + test('returns empty CloudFormationProps when packagePolicy is undefined', () => { + const result = getCloudFormationPropsFromPackagePolicy(undefined); + expect(result).toEqual({ + templateUrl: undefined, + awsAccountType: undefined, + }); + }); + + test('returns empty CloudFormationProps when packagePolicy has no inputs', () => { + const packagePolicy = { otherProperty: 'value' }; + // @ts-expect-error + const result = getCloudFormationPropsFromPackagePolicy(packagePolicy); + expect(result).toEqual({ + templateUrl: undefined, + awsAccountType: undefined, + }); + }); + + test('returns empty CloudFormationProps when no enabled input has a cloudFormationTemplateUrl', () => { + const packagePolicy = { + inputs: [ + { enabled: false, config: { cloud_formation_template_url: { value: 'template1' } } }, + { enabled: false, config: { cloud_formation_template_url: { value: 'template2' } } }, + ], + }; + // @ts-expect-error + const result = getCloudFormationPropsFromPackagePolicy(packagePolicy); + expect(result).toEqual({ + templateUrl: undefined, + awsAccountType: undefined, + }); + }); + + test('returns the cloudFormationTemplateUrl and awsAccountType when found in the enabled input', () => { + const packagePolicy = { + inputs: [ + { + enabled: true, + config: { cloud_formation_template_url: { value: 'template1' } }, + streams: [ + { + vars: { + ['aws.account_type']: { value: 'aws_account_type_value' }, + }, + }, + ], + }, + { + enabled: false, + config: { cloud_formation_template_url: { value: 'template2' } }, + streams: [ + { + vars: { + ['aws.account_type']: { value: 'aws_account_type_value2' }, + }, + }, + ], + }, + ], + }; + // @ts-expect-error + const result = getCloudFormationPropsFromPackagePolicy(packagePolicy); + expect(result).toEqual({ + templateUrl: 'template1', + awsAccountType: 'aws_account_type_value', + }); + }); + + test('returns the first cloudFormationTemplateUrl and awsAccountType when multiple enabled inputs have them', () => { + const packagePolicy = { + inputs: [ + { + enabled: true, + config: { + cloud_formation_template_url: { value: 'template1' }, + }, + streams: [ + { + vars: { + ['aws.account_type']: { value: 'aws_account_type_value1' }, + }, + }, + { + vars: { + ['aws.account_type']: { value: 'aws_account_type_value2' }, + }, + }, + ], + }, + { + enabled: true, + config: { + cloud_formation_template_url: { value: 'template2' }, + }, + streams: [ + { + vars: { + ['aws.account_type']: { value: 'aws_account_type_value1' }, + }, + }, + { + vars: { + ['aws.account_type']: { value: 'aws_account_type_value2' }, + }, + }, + ], + }, + ], + }; + // @ts-expect-error + const result = getCloudFormationPropsFromPackagePolicy(packagePolicy); + expect(result).toEqual({ + templateUrl: 'template1', + awsAccountType: 'aws_account_type_value1', + }); + }); +}); diff --git a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.ts b/x-pack/plugins/fleet/public/services/get_cloud_formation_props_from_package_policy.ts similarity index 52% rename from x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.ts rename to x-pack/plugins/fleet/public/services/get_cloud_formation_props_from_package_policy.ts index 598e71709fdc7..b56659b21db99 100644 --- a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.ts +++ b/x-pack/plugins/fleet/public/services/get_cloud_formation_props_from_package_policy.ts @@ -5,15 +5,23 @@ * 2.0. */ +import type { + CloudFormationProps, + CloudSecurityIntegrationAwsAccountType, +} from '../components/agent_enrollment_flyout/types'; import type { PackagePolicy } from '../types'; +const AWS_ACCOUNT_TYPE = 'aws.account_type'; + /** * Get the cloud formation template url from a package policy * It looks for a config with a cloud_formation_template_url object present in * the enabled inputs of the package policy */ -export const getCloudFormationTemplateUrlFromPackagePolicy = (packagePolicy?: PackagePolicy) => { - const cloudFormationTemplateUrl = packagePolicy?.inputs?.reduce((accInput, input) => { +export const getCloudFormationPropsFromPackagePolicy = ( + packagePolicy?: PackagePolicy +): CloudFormationProps => { + const templateUrl = packagePolicy?.inputs?.reduce((accInput, input) => { if (accInput !== '') { return accInput; } @@ -23,5 +31,12 @@ export const getCloudFormationTemplateUrlFromPackagePolicy = (packagePolicy?: Pa return accInput; }, ''); - return cloudFormationTemplateUrl !== '' ? cloudFormationTemplateUrl : undefined; + const awsAccountType: CloudSecurityIntegrationAwsAccountType | undefined = + packagePolicy?.inputs?.find((input) => input.enabled)?.streams?.[0]?.vars?.[AWS_ACCOUNT_TYPE] + ?.value; + + return { + templateUrl: templateUrl !== '' ? templateUrl : undefined, + awsAccountType, + }; }; diff --git a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_info.test.ts b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_info.test.ts new file mode 100644 index 0000000000000..8ed2fb3ae389a --- /dev/null +++ b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_info.test.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 { getCloudFormationTemplateUrlFromPackageInfo } from './get_cloud_formation_template_url_from_package_info'; + +describe('getCloudFormationTemplateUrlFromPackageInfo', () => { + test('returns undefined when packageInfo is undefined', () => { + const result = getCloudFormationTemplateUrlFromPackageInfo(undefined, 'test'); + expect(result).toBeUndefined(); + }); + + test('returns undefined when packageInfo has no policy_templates', () => { + const packageInfo = { inputs: [] }; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromPackageInfo(packageInfo, 'test'); + expect(result).toBeUndefined(); + }); + + test('returns undefined when integrationType is not found in policy_templates', () => { + const packageInfo = { policy_templates: [{ name: 'template1' }, { name: 'template2' }] }; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromPackageInfo(packageInfo, 'nonExistentTemplate'); + expect(result).toBeUndefined(); + }); + + test('returns undefined when no input in the policy template has a cloudFormationTemplate', () => { + const packageInfo = { + policy_templates: [ + { + name: 'template1', + inputs: [ + { name: 'input1', vars: [] }, + { name: 'input2', vars: [{ name: 'var1', default: 'value1' }] }, + ], + }, + ], + }; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromPackageInfo(packageInfo, 'template1'); + expect(result).toBeUndefined(); + }); + + test('returns the cloudFormationTemplate from the policy template', () => { + const packageInfo = { + policy_templates: [ + { + name: 'template1', + inputs: [ + { name: 'input1', vars: [] }, + { + name: 'input2', + vars: [{ name: 'cloud_formation_template', default: 'cloud_formation_template_url' }], + }, + ], + }, + ], + }; + // @ts-expect-error + const result = getCloudFormationTemplateUrlFromPackageInfo(packageInfo, 'template1'); + expect(result).toBe('cloud_formation_template_url'); + }); +}); diff --git a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_info.ts b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_info.ts new file mode 100644 index 0000000000000..4f5381ccedb3f --- /dev/null +++ b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_info.ts @@ -0,0 +1,32 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { PackageInfo } from '../types'; + +/** + * Get the cloud formation template url from the PackageInfo + * It looks for a input var with a object containing cloud_formation_template_url present in + * the package_policies inputs of the given integration type + */ +export const getCloudFormationTemplateUrlFromPackageInfo = ( + packageInfo: PackageInfo | undefined, + integrationType: string +): string | undefined => { + if (!packageInfo?.policy_templates) return undefined; + + const policyTemplate = packageInfo.policy_templates.find((p) => p.name === integrationType); + if (!policyTemplate) return undefined; + + if ('inputs' in policyTemplate) { + const cloudFormationTemplate = policyTemplate.inputs?.reduce((acc, input): string => { + if (!input.vars) return acc; + const template = input.vars.find((v) => v.name === 'cloud_formation_template')?.default; + return template ? String(template) : acc; + }, ''); + return cloudFormationTemplate !== '' ? cloudFormationTemplate : undefined; + } +}; diff --git a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.test.ts b/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.test.ts deleted file mode 100644 index 523641b10eb1b..0000000000000 --- a/x-pack/plugins/fleet/public/services/get_cloud_formation_template_url_from_package_policy.test.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import { getCloudFormationTemplateUrlFromPackagePolicy } from './get_cloud_formation_template_url_from_package_policy'; - -describe('getCloudFormationTemplateUrlFromPackagePolicy', () => { - test('returns undefined when packagePolicy is undefined', () => { - const result = getCloudFormationTemplateUrlFromPackagePolicy(undefined); - expect(result).toBeUndefined(); - }); - - test('returns undefined when packagePolicy is defined but inputs are empty', () => { - const packagePolicy = { inputs: [] }; - // @ts-expect-error - const result = getCloudFormationTemplateUrlFromPackagePolicy(packagePolicy); - expect(result).toBeUndefined(); - }); - - test('returns undefined when no enabled input has a cloudFormationTemplateUrl', () => { - const packagePolicy = { - inputs: [ - { enabled: false, config: { cloud_formation_template_url: { value: 'template1' } } }, - { enabled: false, config: { cloud_formation_template_url: { value: 'template2' } } }, - ], - }; - // @ts-expect-error - const result = getCloudFormationTemplateUrlFromPackagePolicy(packagePolicy); - expect(result).toBeUndefined(); - }); - - test('returns the cloudFormationTemplateUrl of the first enabled input', () => { - const packagePolicy = { - inputs: [ - { enabled: false, config: { cloud_formation_template_url: { value: 'template1' } } }, - { enabled: true, config: { cloud_formation_template_url: { value: 'template2' } } }, - { enabled: true, config: { cloud_formation_template_url: { value: 'template3' } } }, - ], - }; - // @ts-expect-error - const result = getCloudFormationTemplateUrlFromPackagePolicy(packagePolicy); - expect(result).toBe('template2'); - }); - - test('returns the cloudFormationTemplateUrl of the first enabled input and ignores subsequent inputs', () => { - const packagePolicy = { - inputs: [ - { enabled: true, config: { cloud_formation_template_url: { value: 'template1' } } }, - { enabled: true, config: { cloud_formation_template_url: { value: 'template2' } } }, - { enabled: true, config: { cloud_formation_template_url: { value: 'template3' } } }, - ], - }; - // @ts-expect-error - const result = getCloudFormationTemplateUrlFromPackagePolicy(packagePolicy); - expect(result).toBe('template1'); - }); - - // Add more test cases as needed -}); diff --git a/x-pack/plugins/fleet/public/services/index.ts b/x-pack/plugins/fleet/public/services/index.ts index 1da10c7384cdc..44bf6b965742c 100644 --- a/x-pack/plugins/fleet/public/services/index.ts +++ b/x-pack/plugins/fleet/public/services/index.ts @@ -48,5 +48,6 @@ export { isPackageUpdatable } from './is_package_updatable'; export { pkgKeyFromPackageInfo } from './pkg_key_from_package_info'; export { createExtensionRegistrationCallback } from './ui_extensions'; export { incrementPolicyName } from './increment_policy_name'; -export { getCloudFormationTemplateUrlFromPackagePolicy } from './get_cloud_formation_template_url_from_package_policy'; +export { getCloudFormationPropsFromPackagePolicy } from './get_cloud_formation_props_from_package_policy'; export { getCloudFormationTemplateUrlFromAgentPolicy } from './get_cloud_formation_template_url_from_agent_policy'; +export { getCloudFormationTemplateUrlFromPackageInfo } from './get_cloud_formation_template_url_from_package_info'; diff --git a/x-pack/plugins/fleet/server/saved_objects/index.ts b/x-pack/plugins/fleet/server/saved_objects/index.ts index 43e0069d3be48..b7013bf43ff84 100644 --- a/x-pack/plugins/fleet/server/saved_objects/index.ts +++ b/x-pack/plugins/fleet/server/saved_objects/index.ts @@ -25,6 +25,8 @@ import { UNINSTALL_TOKENS_SAVED_OBJECT_TYPE, } from '../constants'; +import { migrateOutputEvictionsFromV8100, migrateOutputToV8100 } from './migrations/to_v8_10_0'; + import { migrateSyntheticsPackagePolicyToV8100 } from './migrations/synthetics/to_v8_10_0'; import { migratePackagePolicyEvictionsFromV8100 } from './migrations/security_solution/to_v8_10_0'; @@ -177,6 +179,7 @@ const getSavedObjectTypes = (): { [key: string]: SavedObjectsType } => ({ compression_level: { type: 'integer' }, client_id: { type: 'keyword' }, auth_type: { type: 'keyword' }, + connection_type: { type: 'keyword' }, username: { type: 'keyword' }, password: { type: 'text', index: false }, sasl: { @@ -229,6 +232,29 @@ const getSavedObjectTypes = (): { [key: string]: SavedObjectsType } => ({ broker_timeout: { type: 'integer' }, broker_ack_reliability: { type: 'text' }, broker_buffer_size: { type: 'integer' }, + required_acks: { type: 'integer' }, + channel_buffer_size: { type: 'integer' }, + }, + }, + modelVersions: { + '1': { + changes: [ + { + type: 'mappings_deprecation', + deprecatedMappings: [ + 'broker_ack_reliability', + 'broker_buffer_size', + 'channel_buffer_size', + ], + }, + { + type: 'data_backfill', + backfillFn: migrateOutputToV8100, + }, + ], + schemas: { + forwardCompatibility: migrateOutputEvictionsFromV8100, + }, }, }, migrations: { @@ -528,6 +554,24 @@ export function registerEncryptedSavedObjects( 'config_yaml', 'is_preconfigured', 'proxy_id', + 'version', + 'key', + 'compression', + 'compression_level', + 'client_id', + 'auth_type', + 'connection_type', + 'username', + 'sasl', + 'partition', + 'random', + 'round_robin', + 'hash', + 'topics', + 'headers', + 'timeout', + 'broker_timeout', + 'required_acks', ]), }); // Encrypted saved objects diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/to_v8_10_0.test.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/to_v8_10_0.test.ts new file mode 100644 index 0000000000000..92b8c2c2d34b6 --- /dev/null +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/to_v8_10_0.test.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 { SavedObjectModelTransformationContext } from '@kbn/core-saved-objects-server'; + +import { + migrateOutputToV8100 as migration, + migrateOutputEvictionsFromV8100 as eviction, +} from './to_v8_10_0'; + +describe('8.10.0 migration', () => { + describe('Migrate output to v8.10.0', () => { + const outputDoc = (connectionType = {}) => ({ + id: 'mock-saved-object-id', + attributes: { + id: 'id', + name: 'Test', + type: 'kafka' as const, + is_default: false, + is_default_monitoring: false, + hosts: ['localhost:9092'], + ca_sha256: 'sha', + ca_trusted_fingerprint: 'fingerprint', + version: '7.10.0', + key: 'key', + compression: 'gzip' as const, + compression_level: 4, + client_id: 'Elastic', + auth_type: 'none' as const, + ...connectionType, + topics: [{ topic: 'topic' }], + }, + type: 'nested', + }); + + it('adds connection type field to output and sets it to plaintext', () => { + const initialDoc = outputDoc({}); + + const migratedDoc = outputDoc({ + connection_type: 'plaintext', + }); + + expect(migration(initialDoc, {} as SavedObjectModelTransformationContext)).toEqual({ + attributes: migratedDoc.attributes, + }); + }); + + it('removes connection type field from output', () => { + const initialDoc = outputDoc({ + connection_type: 'plaintext', + }); + + const migratedDoc = outputDoc({}); + + expect(eviction(initialDoc.attributes)).toEqual(migratedDoc.attributes); + }); + }); +}); diff --git a/x-pack/plugins/fleet/server/saved_objects/migrations/to_v8_10_0.ts b/x-pack/plugins/fleet/server/saved_objects/migrations/to_v8_10_0.ts new file mode 100644 index 0000000000000..fc0ebda76086b --- /dev/null +++ b/x-pack/plugins/fleet/server/saved_objects/migrations/to_v8_10_0.ts @@ -0,0 +1,44 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + SavedObjectModelDataBackfillFn, + SavedObjectUnsanitizedDoc, +} from '@kbn/core-saved-objects-server'; + +import type { SavedObjectModelVersionForwardCompatibilityFn } from '@kbn/core-saved-objects-server'; + +import { omit } from 'lodash'; + +import type { Output } from '../../../common'; + +export const migrateOutputToV8100: SavedObjectModelDataBackfillFn = (outputDoc) => { + const updatedOutputDoc: SavedObjectUnsanitizedDoc = outputDoc; + + if (updatedOutputDoc.attributes.type === 'kafka') { + updatedOutputDoc.attributes.connection_type = 'plaintext'; + } + + return { + attributes: updatedOutputDoc.attributes, + }; +}; + +export const migrateOutputEvictionsFromV8100: SavedObjectModelVersionForwardCompatibilityFn = ( + unknownAttributes +) => { + const attributes = unknownAttributes as Output; + if (attributes.type !== 'kafka') { + return attributes; + } + + let updatedAttributes = attributes; + + updatedAttributes = omit(updatedAttributes, ['connection_type']); + + return updatedAttributes; +}; diff --git a/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts b/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts index 1da8187744091..d50e12541063a 100644 --- a/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts +++ b/x-pack/plugins/fleet/server/services/agent_policies/full_agent_policy.ts @@ -291,7 +291,6 @@ export function transformOutputToFullPolicyOutput( key, compression, compression_level, - auth_type, username, password, sasl, @@ -303,31 +302,69 @@ export function transformOutputToFullPolicyOutput( headers, timeout, broker_timeout, - broker_buffer_size, - broker_ack_reliability, + required_acks, } = output; - /* eslint-enable @typescript-eslint/naming-convention */ + const transformPartition = () => { + if (!partition) return {}; + switch (partition) { + case 'random': + return { + random: { + ...(random?.group_events + ? { group_events: random.group_events } + : { group_events: 1 }), + }, + }; + case 'round_robin': + return { + round_robin: { + ...(round_robin?.group_events + ? { group_events: round_robin.group_events } + : { group_events: 1 }), + }, + }; + case 'hash': + default: + return { hash: { ...(hash?.hash ? { hash: hash.hash } : { hash: '' }) } }; + } + }; + + /* eslint-enable @typescript-eslint/naming-convention */ kafkaData = { client_id, version, key, compression, compression_level, - auth_type, - username, - password, - sasl, - partition, - random, - round_robin, - hash, - topics, - headers, + ...(username ? { username } : {}), + ...(password ? { password } : {}), + ...(sasl ? { sasl } : {}), + partition: transformPartition(), + topics: (topics ?? []).map((topic) => { + const { topic: topicName, ...rest } = topic; + const whenKeys = Object.keys(rest); + + if (whenKeys.length === 0) { + return { topic: topicName }; + } + if (rest.when && rest.when.condition) { + const [keyName, value] = rest.when.condition.split(':'); + + return { + topic: topicName, + when: { + [rest.when.type as string]: { + [keyName.replace(/\s/g, '')]: value.replace(/\s/g, ''), + }, + }, + }; + } + }), + headers: (headers ?? []).filter((item) => item.key !== '' || item.value !== ''), timeout, broker_timeout, - broker_buffer_size, - broker_ack_reliability, + required_acks, }; } diff --git a/x-pack/plugins/fleet/server/services/output.test.ts b/x-pack/plugins/fleet/server/services/output.test.ts index 31efb22834cdb..12abc7c0bec70 100644 --- a/x-pack/plugins/fleet/server/services/output.test.ts +++ b/x-pack/plugins/fleet/server/services/output.test.ts @@ -916,9 +916,9 @@ describe('Output Service', () => { type: 'elasticsearch', hosts: ['http://test:4343'], auth_type: null, + connection_type: null, broker_timeout: null, - broker_ack_reliability: null, - broker_buffer_size: null, + required_acks: null, client_id: null, compression: null, compression_level: null, @@ -1033,13 +1033,14 @@ describe('Output Service', () => { ca_sha256: null, ca_trusted_fingerprint: null, auth_type: null, + connection_type: null, broker_timeout: null, - broker_ack_reliability: null, - broker_buffer_size: null, + required_acks: null, client_id: null, compression: null, compression_level: null, hash: null, + ssl: null, key: null, partition: null, password: null, @@ -1257,10 +1258,13 @@ describe('Output Service', () => { hosts: ['test:4343'], ca_sha256: null, ca_trusted_fingerprint: null, + password: null, + username: null, + ssl: null, + sasl: null, broker_timeout: 10, - broker_ack_reliability: 'Wait for local commit', - broker_buffer_size: 256, - client_id: 'Elastic Agent', + required_acks: 1, + client_id: 'Elastic', compression: 'gzip', compression_level: 4, partition: 'hash', @@ -1285,11 +1289,14 @@ describe('Output Service', () => { expect(soClient.update).toBeCalledWith(expect.anything(), expect.anything(), { hosts: ['test:4343'], broker_timeout: 10, - broker_ack_reliability: 'Wait for local commit', - broker_buffer_size: 256, + required_acks: 1, ca_sha256: null, ca_trusted_fingerprint: null, - client_id: 'Elastic Agent', + password: null, + username: null, + ssl: null, + sasl: null, + client_id: 'Elastic', compression: 'gzip', compression_level: 4, partition: 'hash', @@ -1310,25 +1317,28 @@ describe('Output Service', () => { await outputService.update(soClient, esClientMock, 'output-test', { type: 'kafka', - hosts: ['http://test:4343'], + hosts: ['test:4343'], is_default: true, }); expect(soClient.update).toBeCalledWith(expect.anything(), expect.anything(), { type: 'kafka', - hosts: ['http://test:4343'], + hosts: ['test:4343'], is_default: true, ca_sha256: null, ca_trusted_fingerprint: null, - client_id: 'Elastic Agent', + password: null, + username: null, + ssl: null, + sasl: null, + client_id: 'Elastic', compression: 'gzip', compression_level: 4, partition: 'hash', timeout: 30, version: '1.0.0', broker_timeout: 10, - broker_ack_reliability: 'Wait for local commit', - broker_buffer_size: 256, + required_acks: 1, }); expect(mockedAgentPolicyService.update).toBeCalledWith( expect.anything(), @@ -1354,7 +1364,7 @@ describe('Output Service', () => { 'output-test', { type: 'kafka', - hosts: ['http://test:4343'], + hosts: ['test:4343'], is_default: true, }, { @@ -1364,19 +1374,22 @@ describe('Output Service', () => { expect(soClient.update).toBeCalledWith(expect.anything(), expect.anything(), { type: 'kafka', - hosts: ['http://test:4343'], + hosts: ['test:4343'], is_default: true, ca_sha256: null, ca_trusted_fingerprint: null, - client_id: 'Elastic Agent', + password: null, + username: null, + ssl: null, + sasl: null, + client_id: 'Elastic', compression: 'gzip', compression_level: 4, partition: 'hash', timeout: 30, version: '1.0.0', broker_timeout: 10, - broker_ack_reliability: 'Wait for local commit', - broker_buffer_size: 256, + required_acks: 1, }); expect(mockedAgentPolicyService.update).toBeCalledWith( expect.anything(), @@ -1396,25 +1409,28 @@ describe('Output Service', () => { await outputService.update(soClient, esClientMock, 'output-test', { type: 'kafka', - hosts: ['http://test:4343'], + hosts: ['test:4343'], is_default: true, }); expect(soClient.update).toBeCalledWith(expect.anything(), expect.anything(), { type: 'kafka', - hosts: ['http://test:4343'], + hosts: ['test:4343'], is_default: true, ca_sha256: null, ca_trusted_fingerprint: null, - client_id: 'Elastic Agent', + password: null, + username: null, + ssl: null, + sasl: null, + client_id: 'Elastic', compression: 'gzip', compression_level: 4, partition: 'hash', timeout: 30, version: '1.0.0', broker_timeout: 10, - broker_ack_reliability: 'Wait for local commit', - broker_buffer_size: 256, + required_acks: 1, }); expect(mockedAgentPolicyService.update).toBeCalledWith( expect.anything(), @@ -1438,7 +1454,7 @@ describe('Output Service', () => { 'output-test', { type: 'kafka', - hosts: ['http://test:4343'], + hosts: ['test:4343'], is_default: true, }, { @@ -1448,19 +1464,22 @@ describe('Output Service', () => { expect(soClient.update).toBeCalledWith(expect.anything(), expect.anything(), { type: 'kafka', - hosts: ['http://test:4343'], + hosts: ['test:4343'], is_default: true, ca_sha256: null, ca_trusted_fingerprint: null, - client_id: 'Elastic Agent', + password: null, + username: null, + ssl: null, + sasl: null, + client_id: 'Elastic', compression: 'gzip', compression_level: 4, partition: 'hash', timeout: 30, version: '1.0.0', broker_timeout: 10, - broker_ack_reliability: 'Wait for local commit', - broker_buffer_size: 256, + required_acks: 1, }); expect(mockedAgentPolicyService.update).toBeCalledWith( expect.anything(), diff --git a/x-pack/plugins/fleet/server/services/output.ts b/x-pack/plugins/fleet/server/services/output.ts index d95771eb48238..2cf1764a78f59 100644 --- a/x-pack/plugins/fleet/server/services/output.ts +++ b/x-pack/plugins/fleet/server/services/output.ts @@ -493,7 +493,7 @@ class OutputService { data.compression_level = 4; } if (!output.client_id) { - data.client_id = 'Elastic Agent'; + data.client_id = 'Elastic'; } if (output.username && output.password && !output.sasl?.mechanism) { data.sasl = { @@ -519,11 +519,9 @@ class OutputService { if (!output.broker_timeout) { data.broker_timeout = 10; } - if (!output.broker_ack_reliability) { - data.broker_ack_reliability = kafkaAcknowledgeReliabilityLevel.Commit; - } - if (!output.broker_buffer_size) { - data.broker_buffer_size = 256; + if (output.required_acks === null || output.required_acks === undefined) { + // required_acks can be 0 + data.required_acks = kafkaAcknowledgeReliabilityLevel.Commit; } } @@ -712,6 +710,7 @@ class OutputService { target.key = null; target.compression = null; target.compression_level = null; + target.connection_type = null; target.client_id = null; target.auth_type = null; target.username = null; @@ -725,8 +724,8 @@ class OutputService { target.headers = null; target.timeout = null; target.broker_timeout = null; - target.broker_ack_reliability = null; - target.broker_buffer_size = null; + target.required_acks = null; + target.ssl = null; }; // If the output type changed @@ -766,7 +765,7 @@ class OutputService { updateData.compression_level = 4; } if (!data.client_id) { - updateData.client_id = 'Elastic Agent'; + updateData.client_id = 'Elastic'; } if (data.username && data.password && !data.sasl?.mechanism) { updateData.sasl = { @@ -792,11 +791,9 @@ class OutputService { if (!data.broker_timeout) { updateData.broker_timeout = 10; } - if (!data.broker_ack_reliability) { - updateData.broker_ack_reliability = kafkaAcknowledgeReliabilityLevel.Commit; - } - if (!data.broker_buffer_size) { - updateData.broker_buffer_size = 256; + if (updateData.required_acks === null || updateData.required_acks === undefined) { + // required_acks can be 0 + updateData.required_acks = kafkaAcknowledgeReliabilityLevel.Commit; } } } @@ -808,6 +805,21 @@ class OutputService { updateData.ssl = null; } + if (data.type === outputType.Kafka && updateData.type === outputType.Kafka) { + if (!data.password) { + updateData.password = null; + } + if (!data.username) { + updateData.username = null; + } + if (!data.ssl) { + updateData.ssl = null; + } + if (!data.sasl) { + updateData.sasl = null; + } + } + // ensure only default output exists if (data.is_default) { if (defaultDataOutputId && defaultDataOutputId !== id) { diff --git a/x-pack/plugins/fleet/server/types/models/output.test.ts b/x-pack/plugins/fleet/server/types/models/output.test.ts index 4441630653a99..06edd900fec2a 100644 --- a/x-pack/plugins/fleet/server/types/models/output.test.ts +++ b/x-pack/plugins/fleet/server/types/models/output.test.ts @@ -5,7 +5,7 @@ * 2.0. */ -import { validateLogstashHost } from './output'; +import { validateKafkaHost, validateLogstashHost } from './output'; describe('Output model', () => { describe('validateLogstashHost', () => { @@ -23,4 +23,22 @@ describe('Output model', () => { ); }); }); + + describe('validateKafkaHost', () => { + it('should support valid host', () => { + expect(validateKafkaHost('test.fr:5044')).toBeUndefined(); + }); + + it('should return an error for an invalid host', () => { + expect(validateKafkaHost('!@#%&!#!@')).toBe( + 'Invalid format. Expected "host:port" without protocol' + ); + }); + + it('should return an error for an invalid host with http scheme', () => { + expect(validateKafkaHost('https://test.fr:5044')).toBe( + 'Invalid format. Expected "host:port" without protocol' + ); + }); + }); }); diff --git a/x-pack/plugins/fleet/server/types/models/output.ts b/x-pack/plugins/fleet/server/types/models/output.ts index b18d2baa25103..845361116d732 100644 --- a/x-pack/plugins/fleet/server/types/models/output.ts +++ b/x-pack/plugins/fleet/server/types/models/output.ts @@ -8,12 +8,13 @@ import { schema } from '@kbn/config-schema'; import { - kafkaAcknowledgeReliabilityLevel, kafkaAuthType, kafkaCompressionType, + kafkaConnectionType, kafkaPartitionType, kafkaSaslMechanism, kafkaTopicWhenType, + kafkaVerificationModes, outputType, } from '../../../common/constants'; @@ -33,6 +34,21 @@ export function validateLogstashHost(val: string) { } } +export const validateKafkaHost = (input: string): string | undefined => { + const parts = input.split(':'); + + if (parts.length !== 2 || !parts[0] || parts[0].includes('://')) { + return 'Invalid format. Expected "host:port" without protocol'; + } + + const port = parseInt(parts[1], 10); + if (isNaN(port) || port < 1 || port > 65535) { + return 'Invalid port number. Expected a number between 1 and 65535'; + } + + return undefined; +}; + /** * Base schemas */ @@ -50,6 +66,14 @@ const BaseSchema = { certificate_authorities: schema.maybe(schema.arrayOf(schema.string())), certificate: schema.maybe(schema.string()), key: schema.maybe(schema.string()), + verification_mode: schema.maybe( + schema.oneOf([ + schema.literal(kafkaVerificationModes.Full), + schema.literal(kafkaVerificationModes.None), + schema.literal(kafkaVerificationModes.Certificate), + schema.literal(kafkaVerificationModes.Strict), + ]) + ), }) ), proxy_id: schema.nullable(schema.string()), @@ -121,15 +145,9 @@ const KafkaTopicsSchema = schema.arrayOf( schema.object({ type: schema.maybe( schema.oneOf([ - schema.literal(kafkaTopicWhenType.And), - schema.literal(kafkaTopicWhenType.Not), - schema.literal(kafkaTopicWhenType.Or), schema.literal(kafkaTopicWhenType.Equals), schema.literal(kafkaTopicWhenType.Contains), schema.literal(kafkaTopicWhenType.Regexp), - schema.literal(kafkaTopicWhenType.HasFields), - schema.literal(kafkaTopicWhenType.Network), - schema.literal(kafkaTopicWhenType.Range), ]) ), condition: schema.maybe(schema.string()), @@ -142,7 +160,7 @@ const KafkaTopicsSchema = schema.arrayOf( export const KafkaSchema = { ...BaseSchema, type: schema.literal(outputType.Kafka), - hosts: schema.arrayOf(schema.uri({ scheme: ['http', 'https'] }), { minSize: 1 }), + hosts: schema.arrayOf(schema.string({ validate: validateKafkaHost }), { minSize: 1 }), version: schema.maybe(schema.string()), key: schema.maybe(schema.string()), compression: schema.maybe( @@ -161,10 +179,20 @@ export const KafkaSchema = { ), client_id: schema.maybe(schema.string()), auth_type: schema.oneOf([ + schema.literal(kafkaAuthType.None), schema.literal(kafkaAuthType.Userpass), schema.literal(kafkaAuthType.Ssl), schema.literal(kafkaAuthType.Kerberos), ]), + connection_type: schema.conditional( + schema.siblingRef('auth_type'), + kafkaAuthType.None, + schema.oneOf([ + schema.literal(kafkaConnectionType.Plaintext), + schema.literal(kafkaConnectionType.Encryption), + ]), + schema.never() + ), username: schema.conditional( schema.siblingRef('auth_type'), kafkaAuthType.Userpass, @@ -206,13 +234,8 @@ export const KafkaSchema = { ), timeout: schema.maybe(schema.number()), broker_timeout: schema.maybe(schema.number()), - broker_buffer_size: schema.maybe(schema.number()), - broker_ack_reliability: schema.maybe( - schema.oneOf([ - schema.literal(kafkaAcknowledgeReliabilityLevel.Commit), - schema.literal(kafkaAcknowledgeReliabilityLevel.Replica), - schema.literal(kafkaAcknowledgeReliabilityLevel.DoNotWait), - ]) + required_acks: schema.maybe( + schema.oneOf([schema.literal(1), schema.literal(0), schema.literal(-1)]) ), }; @@ -220,9 +243,12 @@ const KafkaUpdateSchema = { ...UpdateSchema, ...KafkaSchema, type: schema.maybe(schema.literal(outputType.Kafka)), - hosts: schema.maybe(schema.arrayOf(schema.uri({ scheme: ['http', 'https'] }), { minSize: 1 })), + hosts: schema.maybe( + schema.arrayOf(schema.string({ validate: validateKafkaHost }), { minSize: 1 }) + ), auth_type: schema.maybe( schema.oneOf([ + schema.literal(kafkaAuthType.None), schema.literal(kafkaAuthType.Userpass), schema.literal(kafkaAuthType.Ssl), schema.literal(kafkaAuthType.Kerberos), diff --git a/x-pack/plugins/fleet/server/types/so_attributes.ts b/x-pack/plugins/fleet/server/types/so_attributes.ts index 13ccff751c38d..941f27cde7c4d 100644 --- a/x-pack/plugins/fleet/server/types/so_attributes.ts +++ b/x-pack/plugins/fleet/server/types/so_attributes.ts @@ -14,6 +14,7 @@ import type { OutputType, ShipperOutput, KafkaAcknowledgeReliabilityLevel, + KafkaConnectionTypeType, } from '../../common/types'; import type { AgentType, FleetServerAgentComponent } from '../../common/types/models'; @@ -159,6 +160,7 @@ export interface OutputSoKafkaAttributes extends OutputSoBaseAttributes { compression?: ValueOf; compression_level?: number; auth_type?: ValueOf; + connection_type?: ValueOf; username?: string; password?: string; sasl?: { @@ -188,8 +190,7 @@ export interface OutputSoKafkaAttributes extends OutputSoBaseAttributes { }>; timeout?: number; broker_timeout?: number; - broker_buffer_size?: number; - broker_ack_reliability?: ValueOf; + required_acks?: ValueOf; } export type OutputSOAttributes = diff --git a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/host/kpi_grid_config.ts b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/host/kpi_grid_config.ts index cc4f51c8f2d18..9dde33f39cbdf 100644 --- a/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/host/kpi_grid_config.ts +++ b/x-pack/plugins/infra/public/common/visualizations/lens/dashboards/host/kpi_grid_config.ts @@ -5,16 +5,24 @@ * 2.0. */ -import { TypedLensByValueInput } from '@kbn/lens-plugin/public'; import { i18n } from '@kbn/i18n'; -import { Layer } from '../../../../../hooks/use_lens_attributes'; +import type { TypedLensByValueInput } from '@kbn/lens-plugin/public'; +import type { Layer } from '../../../../../hooks/use_lens_attributes'; import { hostLensFormulas } from '../../../constants'; -import { FormulaConfig } from '../../../types'; import { TOOLTIP } from './translations'; -import { MetricLayerOptions } from '../../visualization_types/layers'; -export interface KPIChartProps - extends Pick { +import type { FormulaConfig } from '../../../types'; +import type { MetricLayerOptions } from '../../visualization_types'; + +export const KPI_CHART_HEIGHT = 150; +export const AVERAGE_SUBTITLE = i18n.translate( + 'xpack.infra.assetDetailsEmbeddable.overview.kpi.subtitle.average', + { + defaultMessage: 'Average', + } +); + +export interface KPIChartProps extends Pick { layers: Layer; toolTip: string; } @@ -22,7 +30,7 @@ export interface KPIChartProps export const KPI_CHARTS: KPIChartProps[] = [ { id: 'cpuUsage', - title: i18n.translate('xpack.infra.hostsViewPage.metricTrend.cpuUsage.title', { + title: i18n.translate('xpack.infra.assetDetailsEmbeddable.overview.kpi.cpuUsage.title', { defaultMessage: 'CPU Usage', }), layers: { @@ -45,9 +53,12 @@ export const KPI_CHARTS: KPIChartProps[] = [ }, { id: 'normalizedLoad1m', - title: i18n.translate('xpack.infra.hostsViewPage.metricTrend.normalizedLoad1m.title', { - defaultMessage: 'CPU Usage', - }), + title: i18n.translate( + 'xpack.infra.assetDetailsEmbeddable.overview.kpi.normalizedLoad1m.title', + { + defaultMessage: 'CPU Usage', + } + ), layers: { data: { ...hostLensFormulas.normalizedLoad1m, @@ -68,7 +79,7 @@ export const KPI_CHARTS: KPIChartProps[] = [ }, { id: 'memoryUsage', - title: i18n.translate('xpack.infra.hostsViewPage.metricTrend.memoryUsage.title', { + title: i18n.translate('xpack.infra.assetDetailsEmbeddable.overview.kpi.memoryUsage.title', { defaultMessage: 'CPU Usage', }), layers: { @@ -91,7 +102,7 @@ export const KPI_CHARTS: KPIChartProps[] = [ }, { id: 'diskSpaceUsage', - title: i18n.translate('xpack.infra.hostsViewPage.metricTrend.diskSpaceUsage.title', { + title: i18n.translate('xpack.infra.assetDetailsEmbeddable.overview.kpi.diskSpaceUsage.title', { defaultMessage: 'CPU Usage', }), layers: { diff --git a/x-pack/plugins/infra/public/components/asset_details/constants.ts b/x-pack/plugins/infra/public/components/asset_details/constants.ts new file mode 100644 index 0000000000000..546e2b9aad4d9 --- /dev/null +++ b/x-pack/plugins/infra/public/components/asset_details/constants.ts @@ -0,0 +1,8 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const METRIC_CHART_HEIGHT = 300; diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/kpi_grid.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/kpi_grid.tsx index b86201a29098c..c134f0de6bb7a 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/kpi_grid.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/kpi_grid.tsx @@ -4,21 +4,55 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React from 'react'; + +import React, { useMemo } from 'react'; import { EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import { Tile, type TileProps } from './tile'; -import { KPI_CHARTS } from '../../../../../common/visualizations/lens/dashboards/host/kpi_grid_config'; +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { TimeRange } from '@kbn/es-query'; +import { LensChart, TooltipContent } from '../../../../lens'; +import { buildCombinedHostsFilter } from '../../../../../utils/filters/build'; +import { + KPI_CHARTS, + KPI_CHART_HEIGHT, + AVERAGE_SUBTITLE, +} from '../../../../../common/visualizations/lens/dashboards/host/kpi_grid_config'; + +interface Props { + dataView?: DataView; + nodeName: string; + timeRange: TimeRange; +} + +export const KPIGrid = React.memo(({ nodeName, dataView, timeRange }: Props) => { + const filters = useMemo(() => { + return [ + buildCombinedHostsFilter({ + field: 'host.name', + values: [nodeName], + dataView, + }), + ]; + }, [dataView, nodeName]); -export const KPIGrid = React.memo(({ nodeName, dataView, timeRange: dateRange }: TileProps) => { return ( - <> - - {KPI_CHARTS.map((chartProp, index) => ( - - - - ))} - - + + {KPI_CHARTS.map(({ id, layers, title, toolTip }, index) => ( + + } + visualizationType="lnsMetric" + disableTriggers + hidePanelTitles + /> + + ))} + ); }); diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/tile.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/tile.tsx deleted file mode 100644 index 9907b81d64fc0..0000000000000 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/kpis/tile.tsx +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React, { useMemo } from 'react'; -import type { DataView } from '@kbn/data-views-plugin/public'; -import { i18n } from '@kbn/i18n'; -import { EuiIcon, EuiPanel, EuiFlexGroup, EuiFlexItem, EuiText, EuiToolTip } from '@elastic/eui'; -import styled from 'styled-components'; -import type { Action } from '@kbn/ui-actions-plugin/public'; -import { TimeRange } from '@kbn/es-query'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { LensWrapper, TooltipContent } from '../../../../lens'; -import type { KPIChartProps } from '../../../../../common/visualizations/lens/dashboards/host/kpi_grid_config'; -import { useLensAttributes } from '../../../../../hooks/use_lens_attributes'; -import { buildCombinedHostsFilter } from '../../../../../utils/filters/build'; - -const MIN_HEIGHT = 150; - -export interface TileProps { - timeRange: TimeRange; - dataView?: DataView; - nodeName: string; -} - -export const Tile = ({ - id, - layers, - title, - toolTip, - dataView, - nodeName, - timeRange, -}: KPIChartProps & TileProps) => { - const getSubtitle = () => - i18n.translate('xpack.infra.assetDetailsEmbeddable.overview.metricTrend.subtitle.average', { - defaultMessage: 'Average', - }); - - const { formula, attributes, getExtraActions, error } = useLensAttributes({ - dataView, - title, - layers: { ...layers, options: { ...layers.options, subtitle: getSubtitle() } }, - visualizationType: 'lnsMetric', - }); - - const filters = useMemo(() => { - return [ - buildCombinedHostsFilter({ - field: 'host.name', - values: [nodeName], - dataView, - }), - ]; - }, [dataView, nodeName]); - - const extraActions: Action[] = useMemo( - () => - getExtraActions({ - timeRange, - filters, - }), - [filters, getExtraActions, timeRange] - ); - - const loading = !attributes; - - return ( - - {error ? ( - - - - - - - - - - - ) : ( - } - anchorClassName="eui-fullWidth" - > - - - )} - - ); -}; - -const EuiPanelStyled = styled(EuiPanel)` - min-height: ${MIN_HEIGHT}px; - .echMetric { - border-radius: ${({ theme }) => theme.eui.euiBorderRadius}; - pointer-events: none; - } -`; diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metric_chart.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metric_chart.tsx deleted file mode 100644 index ad75734013a29..0000000000000 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metric_chart.tsx +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import React, { useMemo } from 'react'; -import { Action } from '@kbn/ui-actions-plugin/public'; -import { EuiIcon, EuiPanel, EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; -import { css } from '@emotion/react'; -import { TypedLensByValueInput } from '@kbn/lens-plugin/public'; -import type { DataView } from '@kbn/data-views-plugin/public'; -import type { TimeRange } from '@kbn/es-query'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { LensWrapper } from '../../../../lens/lens_wrapper'; -import { buildCombinedHostsFilter } from '../../../../../utils/filters/build'; -import { useLensAttributes, type Layer } from '../../../../../hooks/use_lens_attributes'; -import type { FormulaConfig, XYLayerOptions } from '../../../../../common/visualizations'; - -export interface MetricChartProps extends Pick { - title: string; - layers: Array>; - dataView?: DataView; - timeRange: TimeRange; - nodeName: string; -} - -const MIN_HEIGHT = 250; - -export const MetricChart = ({ - id, - title, - layers, - nodeName, - timeRange, - dataView, - overrides, -}: MetricChartProps) => { - const { euiTheme } = useEuiTheme(); - - const { attributes, getExtraActions, error } = useLensAttributes({ - dataView, - layers, - title, - visualizationType: 'lnsXY', - }); - - const filters = useMemo(() => { - return [ - buildCombinedHostsFilter({ - field: 'host.name', - values: [nodeName], - dataView, - }), - ]; - }, [dataView, nodeName]); - - const extraActions: Action[] = useMemo( - () => - getExtraActions({ - timeRange, - filters, - }), - [timeRange, filters, getExtraActions] - ); - - const loading = !attributes; - - return ( - - {error ? ( - - - - - - - - - - - ) : ( - - )} - - ); -}; diff --git a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metrics_grid.tsx b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metrics_grid.tsx index 531b5aa4a4191..be96fe575d2be 100644 --- a/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metrics_grid.tsx +++ b/x-pack/plugins/infra/public/components/asset_details/tabs/overview/metrics/metrics_grid.tsx @@ -4,18 +4,30 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React from 'react'; +import React, { useCallback } from 'react'; import { EuiFlexGrid, EuiFlexItem, EuiTitle, EuiSpacer, EuiFlexGroup } from '@elastic/eui'; import { i18n } from '@kbn/i18n'; import type { DataView } from '@kbn/data-views-plugin/public'; -import { TimeRange } from '@kbn/es-query'; +import type { TimeRange } from '@kbn/es-query'; import { FormattedMessage } from '@kbn/i18n-react'; -import { HostMetricsDocsLink } from '../../../../lens'; -import { MetricChart, type MetricChartProps } from './metric_chart'; -import { hostLensFormulas } from '../../../../../common/visualizations'; +import { buildCombinedHostsFilter } from '../../../../../utils/filters/build'; +import type { Layer } from '../../../../../hooks/use_lens_attributes'; +import { HostMetricsDocsLink, LensChart, type LensChartProps } from '../../../../lens'; +import { + type FormulaConfig, + hostLensFormulas, + type XYLayerOptions, +} from '../../../../../common/visualizations'; +import { METRIC_CHART_HEIGHT } from '../../../constants'; -const PERCENT_LEFT_AXIS: Pick['overrides'] = { +type DataViewOrigin = 'logs' | 'metrics'; +interface MetricChartConfig extends Pick { + layers: Array>; + toolTip: string; +} + +const PERCENT_LEFT_AXIS: Pick['overrides'] = { axisLeft: { domain: { min: 0, @@ -24,7 +36,7 @@ const PERCENT_LEFT_AXIS: Pick['overrides'] = { }, }; -const LEGEND_SETTINGS: Pick['overrides'] = { +const LEGEND_SETTINGS: Pick['overrides'] = { settings: { showLegend: true, legendPosition: 'bottom', @@ -33,8 +45,8 @@ const LEGEND_SETTINGS: Pick['overrides'] = { }; const CHARTS_IN_ORDER: Array< - Pick & { - dataViewType: 'logs' | 'metrics'; + Pick & { + dataViewOrigin: DataViewOrigin; } > = [ { @@ -49,7 +61,7 @@ const CHARTS_IN_ORDER: Array< layerType: 'data', }, ], - dataViewType: 'metrics', + dataViewOrigin: 'metrics', overrides: { axisLeft: PERCENT_LEFT_AXIS.axisLeft, }, @@ -65,7 +77,7 @@ const CHARTS_IN_ORDER: Array< layerType: 'data', }, ], - dataViewType: 'metrics', + dataViewOrigin: 'metrics', overrides: { axisLeft: PERCENT_LEFT_AXIS.axisLeft, }, @@ -96,7 +108,7 @@ const CHARTS_IN_ORDER: Array< layerType: 'referenceLine', }, ], - dataViewType: 'metrics', + dataViewOrigin: 'metrics', }, { id: 'logRate', @@ -109,7 +121,7 @@ const CHARTS_IN_ORDER: Array< layerType: 'data', }, ], - dataViewType: 'logs', + dataViewOrigin: 'logs', }, { id: 'diskSpaceUsageAvailable', @@ -152,7 +164,7 @@ const CHARTS_IN_ORDER: Array< axisLeft: PERCENT_LEFT_AXIS.axisLeft, settings: LEGEND_SETTINGS.settings, }, - dataViewType: 'metrics', + dataViewOrigin: 'metrics', }, { id: 'diskThroughputReadWrite', @@ -184,7 +196,7 @@ const CHARTS_IN_ORDER: Array< overrides: { settings: LEGEND_SETTINGS.settings, }, - dataViewType: 'metrics', + dataViewOrigin: 'metrics', }, { id: 'diskIOReadWrite', @@ -216,7 +228,7 @@ const CHARTS_IN_ORDER: Array< overrides: { settings: LEGEND_SETTINGS.settings, }, - dataViewType: 'metrics', + dataViewOrigin: 'metrics', }, { id: 'rxTx', @@ -248,7 +260,7 @@ const CHARTS_IN_ORDER: Array< overrides: { settings: LEGEND_SETTINGS.settings, }, - dataViewType: 'metrics', + dataViewOrigin: 'metrics', }, ]; @@ -259,8 +271,35 @@ export interface MetricsGridProps { logsDataView?: DataView; } +export interface MetricsGridProps { + nodeName: string; + timeRange: TimeRange; + metricsDataView?: DataView; + logsDataView?: DataView; +} + export const MetricsGrid = React.memo( ({ nodeName, metricsDataView, logsDataView, timeRange }: MetricsGridProps) => { + const getDataView = useCallback( + (dataViewOrigin: DataViewOrigin) => { + return dataViewOrigin === 'metrics' ? metricsDataView : logsDataView; + }, + [logsDataView, metricsDataView] + ); + + const getFilters = useCallback( + (dataViewOrigin: DataViewOrigin) => { + return [ + buildCombinedHostsFilter({ + field: 'host.name', + values: [nodeName], + dataView: getDataView(dataViewOrigin), + }), + ]; + }, + [getDataView, nodeName] + ); + return ( @@ -277,13 +316,20 @@ export const MetricsGrid = React.memo( - {CHARTS_IN_ORDER.map(({ dataViewType, ...chartProp }, index) => ( + {CHARTS_IN_ORDER.map(({ dataViewOrigin, id, layers, title, overrides }, index) => ( - ))} diff --git a/x-pack/plugins/infra/public/components/lens/chart_load_error.tsx b/x-pack/plugins/infra/public/components/lens/chart_load_error.tsx new file mode 100644 index 0000000000000..5ffdc573a2cd7 --- /dev/null +++ b/x-pack/plugins/infra/public/components/lens/chart_load_error.tsx @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; +import { EuiFlexGroup, EuiFlexItem, EuiIcon, EuiText } from '@elastic/eui'; +import { FormattedMessage } from '@kbn/i18n-react'; +import { css } from '@emotion/react'; + +export const ChartLoadError = () => { + return ( + + + + + + + + + + + ); +}; diff --git a/x-pack/plugins/infra/public/components/lens/chart_placeholder.tsx b/x-pack/plugins/infra/public/components/lens/chart_placeholder.tsx index 7bf35f0e0392a..2dfcbfa21c814 100644 --- a/x-pack/plugins/infra/public/components/lens/chart_placeholder.tsx +++ b/x-pack/plugins/infra/public/components/lens/chart_placeholder.tsx @@ -6,8 +6,7 @@ */ import React from 'react'; -import { EuiFlexGroup, EuiProgress, EuiFlexItem, EuiLoadingChart } from '@elastic/eui'; -import { useEuiTheme } from '@elastic/eui'; +import { EuiFlexGroup, EuiProgress, EuiFlexItem, EuiLoadingChart, useEuiTheme } from '@elastic/eui'; import { css } from '@emotion/react'; export const ChartLoadingProgress = ({ hasTopMargin = false }: { hasTopMargin?: boolean }) => { diff --git a/x-pack/plugins/infra/public/components/lens/index.tsx b/x-pack/plugins/infra/public/components/lens/index.tsx index 17a2f5b480442..93d050209a219 100644 --- a/x-pack/plugins/infra/public/components/lens/index.tsx +++ b/x-pack/plugins/infra/public/components/lens/index.tsx @@ -5,8 +5,7 @@ * 2.0. */ +export { LensChart, type LensChartProps } from './lens_chart'; export { ChartPlaceholder } from './chart_placeholder'; -export { LensWrapper } from './lens_wrapper'; - export { TooltipContent } from './metric_explanation/tooltip_content'; export { HostMetricsDocsLink } from './metric_explanation/host_metrics_docs_link'; diff --git a/x-pack/plugins/infra/public/components/lens/lens_chart.tsx b/x-pack/plugins/infra/public/components/lens/lens_chart.tsx new file mode 100644 index 0000000000000..2d4b599d56de2 --- /dev/null +++ b/x-pack/plugins/infra/public/components/lens/lens_chart.tsx @@ -0,0 +1,110 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import React, { CSSProperties, useMemo } from 'react'; +import { EuiPanel, EuiToolTip, type EuiPanelProps } from '@elastic/eui'; +import { Action } from '@kbn/ui-actions-plugin/public'; +import { css } from '@emotion/react'; +import { useLensAttributes, type UseLensAttributesParams } from '../../hooks/use_lens_attributes'; +import type { BaseChartProps } from './types'; +import type { TooltipContentProps } from './metric_explanation/tooltip_content'; +import { LensWrapper } from './lens_wrapper'; +import { ChartLoadError } from './chart_load_error'; + +const MIN_HEIGHT = 300; + +export type LensChartProps = UseLensAttributesParams & + BaseChartProps & + Pick & { + toolTip?: React.ReactElement; + }; + +export const LensChart = ({ + id, + borderRadius, + dateRange, + filters, + hidePanelTitles, + lastReloadRequestTime, + query, + onBrushEnd, + overrides, + toolTip, + disableTriggers = false, + height = MIN_HEIGHT, + loading = false, + ...lensAttributesParams +}: LensChartProps) => { + const { formula, attributes, getExtraActions, error } = useLensAttributes({ + ...lensAttributesParams, + }); + + const isLoading = loading || !attributes; + + const extraActions: Action[] = useMemo( + () => + getExtraActions({ + timeRange: dateRange, + query, + filters, + }), + [dateRange, filters, getExtraActions, query] + ); + + const sytle: CSSProperties = useMemo(() => ({ height }), [height]); + + const Lens = ( + + ); + + const getContent = () => { + if (!toolTip) { + return Lens; + } + + return ( + + {Lens} + + ); + }; + + return ( + + {error ? : getContent()} + + ); +}; diff --git a/x-pack/plugins/infra/public/components/lens/lens_wrapper.tsx b/x-pack/plugins/infra/public/components/lens/lens_wrapper.tsx index dc3c11dccacc0..f203c9c344797 100644 --- a/x-pack/plugins/infra/public/components/lens/lens_wrapper.tsx +++ b/x-pack/plugins/infra/public/components/lens/lens_wrapper.tsx @@ -9,7 +9,8 @@ import type { Action } from '@kbn/ui-actions-plugin/public'; import { ViewMode } from '@kbn/embeddable-plugin/public'; import type { TimeRange } from '@kbn/es-query'; import { TypedLensByValueInput } from '@kbn/lens-plugin/public'; -import { euiStyled } from '@kbn/kibana-react-plugin/common'; +import { css } from '@emotion/react'; +import { useEuiTheme } from '@elastic/eui'; import { useKibanaContextForPlugin } from '../../hooks/use_kibana'; import { ChartLoadingProgress, ChartPlaceholder } from './chart_placeholder'; import { parseDateRange } from '../../utils/datemath'; @@ -30,10 +31,11 @@ export const LensWrapper = ({ dateRange, filters, lastReloadRequestTime, - loading, + loading = false, query, ...props }: LensWrapperProps) => { + const { euiTheme } = useEuiTheme(); const [intersectionObserverEntry, setIntersectionObserverEntry] = useState(); const [embeddableLoaded, setEmbeddableLoaded] = useState(false); @@ -96,11 +98,25 @@ export const LensWrapper = ({ return { from, to }; }, [state.dateRange]); - const isLoading = loading || !state.attributes; return ( - +
<> {isLoading && !embeddableLoaded ? ( @@ -120,7 +136,7 @@ export const LensWrapper = ({ )} - +
); }; @@ -142,13 +158,3 @@ const EmbeddableComponentMemo = React.memo( return ; } ); - -const Container = euiStyled.div` - position: relative; - border-radius: ${({ theme }) => theme.eui.euiSizeS}; - overflow: hidden; - height: 100%; - .echLegend .echLegendList { - display: flex; - } -`; diff --git a/x-pack/plugins/infra/public/components/lens/metric_explanation/tooltip_content.tsx b/x-pack/plugins/infra/public/components/lens/metric_explanation/tooltip_content.tsx index fd46700130ee4..52459e70e2b05 100644 --- a/x-pack/plugins/infra/public/components/lens/metric_explanation/tooltip_content.tsx +++ b/x-pack/plugins/infra/public/components/lens/metric_explanation/tooltip_content.tsx @@ -11,14 +11,14 @@ import { css } from '@emotion/react'; import { FormattedMessage } from '@kbn/i18n-react'; import { HOST_METRICS_DOC_HREF } from '../../../common/visualizations/constants'; -interface Props extends Pick, 'style'> { +export interface TooltipContentProps extends Pick, 'style'> { description: string; formula?: string; showDocumentationLink?: boolean; } export const TooltipContent = React.memo( - ({ description, formula, showDocumentationLink = false, style }: Props) => { + ({ description, formula, showDocumentationLink = false, style }: TooltipContentProps) => { const onClick = (e: React.MouseEvent) => { e.stopPropagation(); }; diff --git a/x-pack/plugins/infra/public/components/lens/types.ts b/x-pack/plugins/infra/public/components/lens/types.ts new file mode 100644 index 0000000000000..8a4791de8cdf5 --- /dev/null +++ b/x-pack/plugins/infra/public/components/lens/types.ts @@ -0,0 +1,27 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { DataView } from '@kbn/data-views-plugin/public'; +import type { LensWrapperProps } from './lens_wrapper'; + +export type BaseChartProps = Pick< + LensWrapperProps, + | 'id' + | 'dateRange' + | 'disableTriggers' + | 'filters' + | 'hidePanelTitles' + | 'lastReloadRequestTime' + | 'loading' + | 'overrides' + | 'onBrushEnd' + | 'query' + | 'title' +> & { + dataView?: DataView; + height?: number; +}; diff --git a/x-pack/plugins/infra/public/hooks/use_lens_attributes.ts b/x-pack/plugins/infra/public/hooks/use_lens_attributes.ts index 721bf5669d203..6f3ae0cf37aff 100644 --- a/x-pack/plugins/infra/public/hooks/use_lens_attributes.ts +++ b/x-pack/plugins/infra/public/hooks/use_lens_attributes.ts @@ -68,7 +68,9 @@ interface UseLensAttributesMetricChartParams visualizationType: 'lnsMetric'; } -type UseLensAttributesParams = UseLensAttributesXYChartParams | UseLensAttributesMetricChartParams; +export type UseLensAttributesParams = + | UseLensAttributesXYChartParams + | UseLensAttributesMetricChartParams; export const useLensAttributes = ({ dataView, diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/chart/metric_chart_wrapper.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/chart/metric_chart_wrapper.tsx index 97be988142aa0..e78aae020b46b 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/chart/metric_chart_wrapper.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/chart/metric_chart_wrapper.tsx @@ -6,8 +6,8 @@ */ import React, { useEffect, useRef, CSSProperties } from 'react'; import { Chart, Metric, type MetricWNumber, type MetricWTrend } from '@elastic/charts'; -import { EuiPanel, EuiToolTip } from '@elastic/eui'; -import styled from 'styled-components'; +import { EuiPanel, EuiToolTip, useEuiTheme } from '@elastic/eui'; +import { css } from '@emotion/react'; import { ChartPlaceholder } from '../../../../../components/lens'; export interface Props extends Pick { @@ -16,11 +16,11 @@ export interface Props extends Pick { + const euiTheme = useEuiTheme(); const loadedOnce = useRef(false); useEffect(() => { @@ -42,7 +42,7 @@ export const MetricChartWrapper = React.memo( }; return ( - + {loading && !loadedOnce.current ? ( ) : ( @@ -52,19 +52,20 @@ export const MetricChartWrapper = React.memo( content={toolTip} anchorClassName="eui-fullWidth" > - + - + )} ); } ); - -const KPIChartStyled = styled(Chart)` - .echMetric { - border-radius: ${(p) => p.theme.eui.euiBorderRadius}; - pointer-events: none; - } -`; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/hosts_tile.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/hosts_tile.tsx index 0571733b80034..f38e6772a3c84 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/hosts_tile.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/hosts_tile.tsx @@ -6,7 +6,6 @@ */ import { i18n } from '@kbn/i18n'; import React from 'react'; -import { KPIChartProps } from '../../../../../common/visualizations/lens/dashboards/host/kpi_grid_config'; import { hostLensFormulas } from '../../../../../common/visualizations'; import { useHostCountContext } from '../../hooks/use_host_count'; import { useUnifiedSearchContext } from '../../hooks/use_unified_search'; @@ -16,21 +15,20 @@ import { type Props, MetricChartWrapper } from '../chart/metric_chart_wrapper'; import { TooltipContent } from '../../../../../components/lens'; const HOSTS_CHART: Omit = { - id: `metric-hostCount`, + id: 'hostsViewKPI-hostsCount', color: '#6DCCB1', - title: i18n.translate('xpack.infra.hostsViewPage.metricTrend.hostCount.title', { + title: i18n.translate('xpack.infra.hostsViewPage.kpi.hostCount.title', { defaultMessage: 'Hosts', }), - ['data-test-subj']: 'hostsViewKPI-hostsCount', }; -export const HostsTile = ({ style }: Pick) => { +export const HostsTile = ({ height }: { height: number }) => { const { data: hostCountData, isRequestRunning: hostCountLoading } = useHostCountContext(); const { searchCriteria } = useUnifiedSearchContext(); const getSubtitle = () => { return searchCriteria.limit < (hostCountData?.count.value ?? 0) - ? i18n.translate('xpack.infra.hostsViewPage.metricTrend.subtitle.hostCount.limit', { + ? i18n.translate('xpack.infra.hostsViewPage.kpi.subtitle.hostCount.limit', { defaultMessage: 'Limited to {limit}', values: { limit: searchCriteria.limit, @@ -42,7 +40,7 @@ export const HostsTile = ({ style }: Pick) => { return ( { return ( @@ -26,11 +24,11 @@ export const KPIGrid = () => { - + {KPI_CHARTS.map((chartProp, index) => ( - + ))} diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/tile.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/tile.tsx index 950e74478dd4b..7211c89ce9071 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/tile.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/kpis/tile.tsx @@ -4,53 +4,47 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React, { useMemo, useCallback } from 'react'; - +import React, { useMemo } from 'react'; import { i18n } from '@kbn/i18n'; -import { BrushTriggerEvent } from '@kbn/charts-plugin/public'; -import { EuiIcon, EuiPanel, EuiFlexGroup, EuiFlexItem, EuiText, EuiToolTip } from '@elastic/eui'; -import styled from 'styled-components'; -import { Action } from '@kbn/ui-actions-plugin/public'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { LensWrapper, TooltipContent } from '../../../../../components/lens'; -import { KPIChartProps } from '../../../../../common/visualizations/lens/dashboards/host/kpi_grid_config'; +import { LensChart, TooltipContent } from '../../../../../components/lens'; +import { + type KPIChartProps, + AVERAGE_SUBTITLE, +} from '../../../../../common/visualizations/lens/dashboards/host/kpi_grid_config'; import { buildCombinedHostsFilter } from '../../../../../utils/filters/build'; -import { useLensAttributes } from '../../../../../hooks/use_lens_attributes'; import { useMetricsDataViewContext } from '../../hooks/use_data_view'; import { useUnifiedSearchContext } from '../../hooks/use_unified_search'; import { useHostsViewContext } from '../../hooks/use_hosts_view'; import { useHostCountContext } from '../../hooks/use_host_count'; import { useAfterLoadedState } from '../../hooks/use_after_loaded_state'; -import { KPI_CHART_MIN_HEIGHT } from '../../constants'; -export const Tile = ({ id, title, layers, style, toolTip }: KPIChartProps) => { - const { searchCriteria, onSubmit } = useUnifiedSearchContext(); +export const Tile = ({ + id, + title, + layers, + toolTip, + height, +}: KPIChartProps & { height: number }) => { + const { searchCriteria } = useUnifiedSearchContext(); const { dataView } = useMetricsDataViewContext(); const { requestTs, hostNodes, loading: hostsLoading } = useHostsViewContext(); const { data: hostCountData, isRequestRunning: hostCountLoading } = useHostCountContext(); const shouldUseSearchCriteria = hostNodes.length === 0; + const loading = hostsLoading || hostCountLoading; + const getSubtitle = () => { return searchCriteria.limit < (hostCountData?.count.value ?? 0) - ? i18n.translate('xpack.infra.hostsViewPage.metricTrend.subtitle.average.limit', { + ? i18n.translate('xpack.infra.hostsViewPage.kpi.subtitle.average.limit', { defaultMessage: 'Average (of {limit} hosts)', values: { limit: searchCriteria.limit, }, }) - : i18n.translate('xpack.infra.hostsViewPage.metricTrend.subtitle.average', { - defaultMessage: 'Average', - }); + : AVERAGE_SUBTITLE; }; - const { formula, attributes, getExtraActions, error } = useLensAttributes({ - dataView, - title, - layers: { ...layers, options: { ...layers.options, subtitle: getSubtitle() } }, - visualizationType: 'lnsMetric', - }); - const filters = useMemo(() => { return shouldUseSearchCriteria ? searchCriteria.filters @@ -61,106 +55,33 @@ export const Tile = ({ id, title, layers, style, toolTip }: KPIChartProps) => { dataView, }), ]; - }, [shouldUseSearchCriteria, searchCriteria.filters, hostNodes, dataView]); - - const loading = hostsLoading || !attributes || hostCountLoading; + }, [dataView, hostNodes, searchCriteria.filters, shouldUseSearchCriteria]); - // prevents requestTs and serchCriteria states from reloading the chart - // we want it to reload only once the host count and table have finished loading + // prevents requestTs and searchCriteria state from reloading the chart + // we want it to reload only once the table has finished loading const { afterLoadedState } = useAfterLoadedState(loading, { - attributes, lastReloadRequestTime: requestTs, - ...searchCriteria, + dateRange: searchCriteria.dateRange, + query: shouldUseSearchCriteria ? searchCriteria.query : undefined, filters, }); - const extraActions: Action[] = useMemo( - () => - getExtraActions({ - timeRange: afterLoadedState.dateRange, - query: shouldUseSearchCriteria ? afterLoadedState.query : undefined, - filters, - }), - [ - afterLoadedState.dateRange, - afterLoadedState.query, - filters, - getExtraActions, - shouldUseSearchCriteria, - ] - ); - - const handleBrushEnd = useCallback( - ({ range }: BrushTriggerEvent['data']) => { - const [min, max] = range; - onSubmit({ - dateRange: { - from: new Date(min).toISOString(), - to: new Date(max).toISOString(), - mode: 'absolute', - }, - }); - }, - [onSubmit] - ); - return ( - - {error ? ( - - - - - - - - - - - ) : ( - } - anchorClassName="eui-fullWidth" - > -
- -
-
- )} -
+ } + visualizationType="lnsMetric" + disableTriggers + hidePanelTitles + /> ); }; - -const EuiPanelStyled = styled(EuiPanel)` - min-height: ${KPI_CHART_MIN_HEIGHT}px; - .echMetric { - border-radius: ${({ theme }) => theme.eui.euiBorderRadius}; - pointer-events: none; - } -`; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx index b31e5c1cb08d2..c0f05c55d1e9e 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/components/tabs/metrics/metric_chart.tsx @@ -4,59 +4,35 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ -import React, { CSSProperties, useCallback, useMemo } from 'react'; -import { Action } from '@kbn/ui-actions-plugin/public'; -import { BrushTriggerEvent } from '@kbn/charts-plugin/public'; -import { EuiIcon, EuiPanel, EuiFlexGroup, EuiFlexItem, EuiText, useEuiTheme } from '@elastic/eui'; -import { css } from '@emotion/react'; -import { TypedLensByValueInput } from '@kbn/lens-plugin/public'; -import { FormattedMessage } from '@kbn/i18n-react'; -import { LensWrapper } from '../../../../../../components/lens'; -import { useLensAttributes, Layer } from '../../../../../../hooks/use_lens_attributes'; +import React, { useMemo } from 'react'; +import type { TypedLensByValueInput } from '@kbn/lens-plugin/public'; +import { LensChart } from '../../../../../../components/lens'; +import type { Layer } from '../../../../../../hooks/use_lens_attributes'; import { useMetricsDataViewContext } from '../../../hooks/use_data_view'; import { useUnifiedSearchContext } from '../../../hooks/use_unified_search'; -import { FormulaConfig, XYLayerOptions } from '../../../../../../common/visualizations'; +import type { FormulaConfig, XYLayerOptions } from '../../../../../../common/visualizations'; import { useHostsViewContext } from '../../../hooks/use_hosts_view'; import { buildCombinedHostsFilter } from '../../../../../../utils/filters/build'; import { useHostsTableContext } from '../../../hooks/use_hosts_table'; import { useAfterLoadedState } from '../../../hooks/use_after_loaded_state'; -import { METRIC_CHART_MIN_HEIGHT } from '../../../constants'; +import { METRIC_CHART_HEIGHT } from '../../../constants'; export interface MetricChartProps extends Pick { title: string; layers: Array>; } -const lensStyle: CSSProperties = { - height: METRIC_CHART_MIN_HEIGHT, -}; - export const MetricChart = ({ id, title, layers, overrides }: MetricChartProps) => { - const { euiTheme } = useEuiTheme(); - const { searchCriteria, onSubmit } = useUnifiedSearchContext(); + const { searchCriteria } = useUnifiedSearchContext(); const { dataView } = useMetricsDataViewContext(); const { requestTs, loading } = useHostsViewContext(); const { currentPage } = useHostsTableContext(); const shouldUseSearchCriteria = currentPage.length === 0; - // prevents requestTs and serchCriteria states from reloading the chart - // we want it to reload only once the table has finished loading - const { afterLoadedState } = useAfterLoadedState(loading, { - lastReloadRequestTime: requestTs, - ...searchCriteria, - }); - - const { attributes, getExtraActions, error } = useLensAttributes({ - dataView, - layers, - title, - visualizationType: 'lnsXY', - }); - const filters = useMemo(() => { return shouldUseSearchCriteria - ? afterLoadedState.filters + ? searchCriteria.filters : [ buildCombinedHostsFilter({ field: 'host.name', @@ -64,85 +40,31 @@ export const MetricChart = ({ id, title, layers, overrides }: MetricChartProps) dataView, }), ]; - }, [afterLoadedState.filters, currentPage, dataView, shouldUseSearchCriteria]); - - const extraActions: Action[] = useMemo( - () => - getExtraActions({ - timeRange: afterLoadedState.dateRange, - query: shouldUseSearchCriteria ? afterLoadedState.query : undefined, - filters, - }), - [ - afterLoadedState.dateRange, - afterLoadedState.query, - filters, - getExtraActions, - shouldUseSearchCriteria, - ] - ); + }, [searchCriteria.filters, currentPage, dataView, shouldUseSearchCriteria]); - const handleBrushEnd = useCallback( - ({ range }: BrushTriggerEvent['data']) => { - const [min, max] = range; - onSubmit({ - dateRange: { - from: new Date(min).toISOString(), - to: new Date(max).toISOString(), - mode: 'absolute', - }, - }); - }, - [onSubmit] - ); + // prevents requestTs and searchCriteria state from reloading the chart + // we want it to reload only once the table has finished loading + const { afterLoadedState } = useAfterLoadedState(loading, { + lastReloadRequestTime: requestTs, + dateRange: searchCriteria.dateRange, + query: shouldUseSearchCriteria ? searchCriteria.query : undefined, + }); return ( - - {error ? ( - - - - - - - - - - - ) : ( - - )} - + dataView={dataView} + dateRange={afterLoadedState.dateRange} + height={METRIC_CHART_HEIGHT} + layers={layers} + lastReloadRequestTime={afterLoadedState.lastReloadRequestTime} + loading={loading} + filters={filters} + query={afterLoadedState.query} + title={title} + overrides={overrides} + visualizationType="lnsXY" + /> ); }; diff --git a/x-pack/plugins/infra/public/pages/metrics/hosts/constants.ts b/x-pack/plugins/infra/public/pages/metrics/hosts/constants.ts index 296d779e8a0fd..aace07448692e 100644 --- a/x-pack/plugins/infra/public/pages/metrics/hosts/constants.ts +++ b/x-pack/plugins/infra/public/pages/metrics/hosts/constants.ts @@ -15,8 +15,7 @@ export const DEFAULT_PAGE_SIZE = 10; export const LOCAL_STORAGE_HOST_LIMIT_KEY = 'hostsView:hostLimitSelection'; export const LOCAL_STORAGE_PAGE_SIZE_KEY = 'hostsView:pageSizeSelection'; -export const KPI_CHART_MIN_HEIGHT = 150; -export const METRIC_CHART_MIN_HEIGHT = 300; +export const METRIC_CHART_HEIGHT = 300; export const HOST_LIMIT_OPTIONS = [50, 100, 500] as const; export const HOST_METRICS_DOC_HREF = 'https://ela.st/docs-infra-host-metrics'; diff --git a/x-pack/plugins/lens/public/data_views_service/loader.test.ts b/x-pack/plugins/lens/public/data_views_service/loader.test.ts index e7e2bab166a70..f91d236986b11 100644 --- a/x-pack/plugins/lens/public/data_views_service/loader.test.ts +++ b/x-pack/plugins/lens/public/data_views_service/loader.test.ts @@ -159,6 +159,65 @@ describe('loader', () => { expect(cache.foo.getFieldByName('timestamp')!.meta).toEqual(true); }); + it('should move over any time series meta data', async () => { + const cache = await loadIndexPatterns({ + cache: {}, + patterns: ['foo'], + dataViews: { + get: jest.fn(async () => ({ + id: 'foo', + title: 'Foo index', + metaFields: ['timestamp'], + isPersisted: () => true, + toSpec: () => ({}), + typeMeta: {}, + fields: [ + { + name: 'timestamp', + displayName: 'timestampLabel', + type: 'date', + aggregatable: true, + searchable: true, + }, + { + name: 'bytes_counter', + displayName: 'bytes_counter', + type: 'number', + aggregatable: true, + searchable: true, + timeSeriesMetric: 'counter', + }, + { + name: 'bytes_gauge', + displayName: 'bytes_gauge', + type: 'number', + aggregatable: true, + searchable: true, + timeSeriesMetric: 'gauge', + }, + { + name: 'dimension', + displayName: 'dimension', + type: 'string', + aggregatable: true, + searchable: true, + timeSeriesDimension: true, + }, + ], + })), + getIdsWithTitle: jest.fn(async () => ({ + id: 'foo', + title: 'Foo index', + })), + create: jest.fn(), + } as unknown as Pick, + }); + + expect(cache.foo.getFieldByName('bytes_counter')!.timeSeriesMetric).toEqual('counter'); + expect(cache.foo.getFieldByName('bytes_gauge')!.timeSeriesMetric).toEqual('gauge'); + expect(cache.foo.getFieldByName('dimension')!.timeSeriesDimension).toEqual(true); + }); + it('should call the refresh callback when loading new indexpatterns', async () => { const onIndexPatternRefresh = jest.fn(); await loadIndexPatterns({ diff --git a/x-pack/plugins/lens/public/data_views_service/loader.ts b/x-pack/plugins/lens/public/data_views_service/loader.ts index f38a84cc60b48..784c97d832e34 100644 --- a/x-pack/plugins/lens/public/data_views_service/loader.ts +++ b/x-pack/plugins/lens/public/data_views_service/loader.ts @@ -29,6 +29,7 @@ export function convertDataViewIntoLensIndexPattern( dataView: DataView, restrictionRemapper: (name: string) => string = onRestrictionMapping ): IndexPattern { + const metaKeys = new Set(dataView.metaFields); const newFields = dataView.fields .filter(isFieldLensCompatible) .map((field): IndexPatternField => { @@ -40,13 +41,14 @@ export function convertDataViewIntoLensIndexPattern( aggregatable: field.aggregatable, filterable: field.filterable, searchable: field.searchable, - meta: dataView.metaFields.includes(field.name), + meta: metaKeys.has(field.name), esTypes: field.esTypes, scripted: field.scripted, isMapped: field.isMapped, customLabel: field.customLabel, runtimeField: field.runtimeField, runtime: Boolean(field.runtimeField), + timeSeriesDimension: field.timeSeriesDimension, timeSeriesMetric: field.timeSeriesMetric, timeSeriesRollup: field.isRolledUpField, partiallyApplicableFunctions: field.isRolledUpField diff --git a/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_input.test.tsx b/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_input.test.tsx index 1a22e34e0a3ec..d307e0eb094a2 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_input.test.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_input.test.tsx @@ -17,12 +17,15 @@ import { FieldBasedIndexPatternColumn, termsOperation, staticValueOperation, + minOperation, } from '../operations/definitions'; import { FieldInput, getErrorMessage } from './field_input'; -import { createMockedIndexPattern } from '../mocks'; +import { createMockedIndexPattern, createMockedIndexPatternWithAdditionalFields } from '../mocks'; import { getOperationSupportMatrix } from '.'; import { GenericIndexPatternColumn, FormBasedLayer, FormBasedPrivateState } from '../types'; import { ReferenceBasedIndexPatternColumn } from '../operations/definitions/column_types'; +import { FieldSelect } from './field_select'; +import { IndexPattern, VisualizationDimensionGroupConfig } from '../../../types'; jest.mock('../operations/layer_helpers', () => { const original = jest.requireActual('../operations/layer_helpers'); @@ -41,7 +44,7 @@ const defaultProps = { incompleteField: null, incompleteOperation: undefined, incompleteParams: {}, - dimensionGroups: [], + dimensionGroups: [] as VisualizationDimensionGroupConfig[], groupId: 'any', operationDefinitionMap: { terms: termsOperation, @@ -49,6 +52,7 @@ const defaultProps = { count: countOperation, differences: derivativeOperation, staticValue: staticValueOperation, + min: minOperation, } as unknown as Record, }; @@ -102,9 +106,12 @@ function getCountOperationColumn(): GenericIndexPatternColumn { operationType: 'count', }; } -function getLayer(col1: GenericIndexPatternColumn = getStringBasedOperationColumn()) { +function getLayer( + col1: GenericIndexPatternColumn = getStringBasedOperationColumn(), + indexPattern?: IndexPattern +) { return { - indexPatternId: '1', + indexPatternId: defaultProps.indexPattern.id, columnOrder: ['col1', 'col2'], columns: { col1, @@ -112,7 +119,11 @@ function getLayer(col1: GenericIndexPatternColumn = getStringBasedOperationColum }, }; } -function getDefaultOperationSupportMatrix(layer: FormBasedLayer, columnId: string) { +function getDefaultOperationSupportMatrix( + layer: FormBasedLayer, + columnId: string, + indexPattern?: IndexPattern +) { return getOperationSupportMatrix({ state: { layers: { layer1: layer }, @@ -121,7 +132,7 @@ function getDefaultOperationSupportMatrix(layer: FormBasedLayer, columnId: strin filterOperations: () => true, columnId, indexPatterns: { - [defaultProps.indexPattern.id]: defaultProps.indexPattern, + [defaultProps.indexPattern.id]: indexPattern ?? defaultProps.indexPattern, }, }); } @@ -421,6 +432,80 @@ describe('FieldInput', () => { expect(onDeleteColumn).toHaveBeenCalled(); expect(updateLayerSpy).not.toHaveBeenCalled(); }); + + describe('time series group', () => { + function getLayerWithTSDBMetric() { + const layer = getLayer(); + layer.columns.col2 = { + label: 'Min of TSDB counter', + dataType: 'number', + isBucketed: false, + sourceField: 'bytes_counter', + operationType: 'min', + }; + return layer; + } + it('should not render the time dimension category if it has tsdb metric column but the group is not a breakdown', () => { + const updateLayerSpy = jest.fn(); + const layer = getLayerWithTSDBMetric(); + const operationSupportMatrix = getDefaultOperationSupportMatrix(layer, 'col1'); + const instance = mount( + + ); + + expect(instance.find(FieldSelect).prop('showTimeSeriesDimensions')).toBeFalsy(); + }); + + it('should render the time dimension category if it has tsdb metric column and the group is a breakdown one', () => { + const updateLayerSpy = jest.fn(); + const layer = getLayerWithTSDBMetric(); + const operationSupportMatrix = getDefaultOperationSupportMatrix(layer, 'col1'); + const instance = mount( + + ); + + expect(instance.find(FieldSelect).prop('showTimeSeriesDimensions')).toBeTruthy(); + }); + }); }); describe('getErrorMessage', () => { diff --git a/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_input.tsx b/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_input.tsx index 462cd0b546f22..5120c89c37b30 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_input.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_input.tsx @@ -16,6 +16,7 @@ import type { GenericIndexPatternColumn, } from '../operations/definitions'; import type { FieldBasedIndexPatternColumn } from '../operations/definitions/column_types'; +import { shouldShowTimeSeriesOption } from '../pure_utils'; export function FieldInput({ layer, @@ -83,6 +84,12 @@ export function FieldInput({ }) ); }} + showTimeSeriesDimensions={shouldShowTimeSeriesOption( + layer, + indexPattern, + groupId, + dimensionGroups + )} />
); diff --git a/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_select.tsx b/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_select.tsx index cbfafbfbfd2c9..909bc64781399 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_select.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/field_select.tsx @@ -33,6 +33,7 @@ export interface FieldSelectProps extends EuiComboBoxProps { @@ -66,7 +68,15 @@ export function FieldSelect({ return fieldContainsData(fieldName, currentIndexPattern, hasFieldData); } - function fieldNamesToOptions(items: string[]) { + interface FieldOption { + label: string; + value: { type: 'field'; field: string; dataType: string | undefined; operationType: string }; + exists: boolean; + compatible: number; + 'data-test-subj': string; + } + + function fieldNamesToOptions(items: string[]): FieldOption[] { return items .filter((field) => currentIndexPattern.getFieldByName(field)?.displayName) .map((field) => { @@ -75,9 +85,9 @@ export function FieldSelect({ const exists = containsData(field); const fieldInstance = currentIndexPattern.getFieldByName(field); return { - label: currentIndexPattern.getFieldByName(field)?.displayName, + label: currentIndexPattern.getFieldByName(field)?.displayName ?? field, value: { - type: 'field', + type: 'field' as const, field, dataType: fieldInstance ? getFieldType(fieldInstance) : undefined, // Use the operation directly, or choose the first compatible operation. @@ -102,21 +112,47 @@ export function FieldSelect({ ); const [availableFields, emptyFields] = partition(nonMetaFields, containsData); - const constructFieldsOptions = (fieldsArr: string[], label: string) => + const constructFieldsOptions = ( + fieldsArr: string[], + label: string + ): { label: string; options: FieldOption[] } | false => fieldsArr.length > 0 && { label, options: fieldNamesToOptions(fieldsArr), }; - const availableFieldsOptions = constructFieldsOptions( + const isTimeSeriesFields = (field: string) => { + return ( + showTimeSeriesDimensions && currentIndexPattern.getFieldByName(field)?.timeSeriesDimension + ); + }; + + const [availableTimeSeriesFields, availableNonTimeseriesFields] = partition( availableFields, + isTimeSeriesFields + ); + const [emptyTimeSeriesFields, emptyNonTimeseriesFields] = partition( + emptyFields, + isTimeSeriesFields + ); + + const timeSeriesFieldsOptions = constructFieldsOptions( + // This group includes both available and empty fields + availableTimeSeriesFields.concat(emptyTimeSeriesFields), + i18n.translate('xpack.lens.indexPattern.timeSeriesFieldsLabel', { + defaultMessage: 'Time series dimensions', + }) + ); + + const availableFieldsOptions = constructFieldsOptions( + availableNonTimeseriesFields, i18n.translate('xpack.lens.indexPattern.availableFieldsLabel', { defaultMessage: 'Available fields', }) ); const emptyFieldsOptions = constructFieldsOptions( - emptyFields, + emptyNonTimeseriesFields, i18n.translate('xpack.lens.indexPattern.emptyFieldsLabel', { defaultMessage: 'Empty fields', }) @@ -131,17 +167,19 @@ export function FieldSelect({ return [ ...fieldNamesToOptions(specialFields), + timeSeriesFieldsOptions, availableFieldsOptions, emptyFieldsOptions, metaFieldsOptions, ].filter(Boolean); }, [ + operationByField, incompleteOperation, selectedOperationType, currentIndexPattern, - operationByField, hasFieldData, markAllFieldsCompatible, + showTimeSeriesDimensions, ]); return ( diff --git a/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/reference_editor.tsx b/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/reference_editor.tsx index 28810825dd7a0..66a01daae0581 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/reference_editor.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/dimension_panel/reference_editor.tsx @@ -317,6 +317,7 @@ export const ReferenceEditor = (props: ReferenceEditorProps) => { markAllFieldsCompatible={selectionStyle === 'field'} onDeleteColumn={onDeleteColumn} onChoose={onChooseField} + showTimeSeriesDimensions={false} /> ) : null} diff --git a/x-pack/plugins/lens/public/datasources/form_based/mocks.ts b/x-pack/plugins/lens/public/datasources/form_based/mocks.ts index c01495f1993e4..fcefa97ecd4b1 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/mocks.ts +++ b/x-pack/plugins/lens/public/datasources/form_based/mocks.ts @@ -216,3 +216,15 @@ export const createMockedIndexPatternWithoutType = ( getFieldByName: getFieldByNameFactory(filteredFields), }; }; + +export const createMockedIndexPatternWithAdditionalFields = ( + newFields: IndexPatternField[] +): IndexPattern => { + const { fields, ...otherIndexPatternProps } = createMockedIndexPattern(); + const completeFields = fields.concat(newFields); + return { + ...otherIndexPatternProps, + fields: completeFields, + getFieldByName: getFieldByNameFactory(completeFields), + }; +}; diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/field_inputs.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/field_inputs.tsx index 72941739b24ed..428747b6cda75 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/field_inputs.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/field_inputs.tsx @@ -30,6 +30,7 @@ export interface FieldInputsProps { invalidFields?: string[]; operationSupportMatrix: Pick; onChange: (newValues: string[]) => void; + showTimeSeriesDimensions: boolean; } interface WrappedValue { @@ -50,6 +51,7 @@ export function FieldInputs({ indexPattern, operationSupportMatrix, invalidFields, + showTimeSeriesDimensions, }: FieldInputsProps) { const onChangeWrapped = useCallback( (values: WrappedValue[]) => @@ -165,6 +167,7 @@ export function FieldInputs({ data-test-subj={ localValues.length !== 1 ? `indexPattern-dimension-field-${index}` : undefined } + showTimeSeriesDimensions={localValues.length < 2 && showTimeSeriesDimensions} /> ); diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/index.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/index.tsx index 504abd15955e0..4aafe38ea39ee 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/index.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/index.tsx @@ -53,6 +53,7 @@ import { supportedTypes, } from './constants'; import { IncludeExcludeRow } from './include_exclude_options'; +import { shouldShowTimeSeriesOption } from '../../../pure_utils'; export function supportsRarityRanking(field?: IndexPatternField) { // these es field types can't be sorted by rarity @@ -591,6 +592,12 @@ export const termsOperation: OperationDefinition< operationSupportMatrix={operationSupportMatrix} onChange={onFieldSelectChange} invalidFields={invalidFields} + showTimeSeriesDimensions={shouldShowTimeSeriesOption( + layer, + indexPattern, + groupId, + dimensionGroups + )} />
); diff --git a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/values_input.tsx b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/values_input.tsx index 33dd5b7206008..a776227986d68 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/values_input.tsx +++ b/x-pack/plugins/lens/public/datasources/form_based/operations/definitions/terms/values_input.tsx @@ -94,6 +94,7 @@ export const ValuesInput = ({ const inputNumber = Number(inputValue); setInputValue(String(Math.min(maxValue, Math.max(inputNumber, minValue)))); }} + data-test-subj={'indexPattern-terms-values'} />
); diff --git a/x-pack/plugins/lens/public/datasources/form_based/pure_utils.ts b/x-pack/plugins/lens/public/datasources/form_based/pure_utils.ts index b13fd50a45e73..256c1de51f832 100644 --- a/x-pack/plugins/lens/public/datasources/form_based/pure_utils.ts +++ b/x-pack/plugins/lens/public/datasources/form_based/pure_utils.ts @@ -5,7 +5,12 @@ * 2.0. */ -import type { DataType, IndexPattern, IndexPatternField } from '../../types'; +import type { + DataType, + IndexPattern, + IndexPatternField, + VisualizationDimensionGroupConfig, +} from '../../types'; import type { FormBasedLayer } from './types'; import type { BaseIndexPatternColumn, @@ -26,6 +31,28 @@ export function hasField(column: BaseIndexPatternColumn): column is FieldBasedIn return 'sourceField' in column; } +export function shouldShowTimeSeriesOption( + layer: FormBasedLayer, + indexPattern: IndexPattern, + groupId: string, + dimensionGroups: VisualizationDimensionGroupConfig[] +) { + return Boolean( + dimensionGroups.find(({ groupId: id }) => groupId === id)?.isBreakdownDimension && + containsColumnWithTimeSeriesMetric(layer, indexPattern) + ); +} + +function containsColumnWithTimeSeriesMetric( + layer: FormBasedLayer, + indexPattern: IndexPattern +): boolean { + return Object.values(layer.columns).some( + (column) => + hasField(column) && indexPattern.getFieldByName(column.sourceField)?.timeSeriesMetric + ); +} + export function getFieldType(field: IndexPatternField) { if (field.timeSeriesMetric) { return field.timeSeriesMetric; diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx index 18d0833ed4250..6514e13d65a11 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.test.tsx @@ -530,7 +530,9 @@ describe('workspace_panel', () => { const onEvent = expressionRendererMock.mock.calls[0][0].onEvent!; - const eventData = { myData: true, table: { rows: [], columns: [] }, column: 0 }; + const eventData = { + data: [{ table: { rows: [], columns: [] }, cells: [{ column: 0, row: 0 }] }], + }; onEvent({ name: 'multiFilter', data: eventData }); expect(uiActionsMock.getTrigger).toHaveBeenCalledWith(VIS_EVENT_TO_TRIGGER.multiFilter); diff --git a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx index 3f92236c99e5d..02db9e18919f7 100644 --- a/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx +++ b/x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx @@ -434,7 +434,7 @@ export const InnerWorkspacePanel = React.memo(function InnerWorkspacePanel({ plugins.uiActions.getTrigger(VIS_EVENT_TO_TRIGGER[event.name]).exec({ data: { ...event.data, - timeFieldName: inferTimeField(plugins.data.datatableUtilities, event.data), + timeFieldName: inferTimeField(plugins.data.datatableUtilities, event), }, }); } @@ -442,7 +442,7 @@ export const InnerWorkspacePanel = React.memo(function InnerWorkspacePanel({ plugins.uiActions.getTrigger(VIS_EVENT_TO_TRIGGER[event.name]).exec({ data: { ...event.data, - timeFieldName: inferTimeField(plugins.data.datatableUtilities, event.data), + timeFieldName: inferTimeField(plugins.data.datatableUtilities, event), }, }); } diff --git a/x-pack/plugins/lens/public/embeddable/embeddable.tsx b/x-pack/plugins/lens/public/embeddable/embeddable.tsx index 8741d73a4a7b4..67dea2f98231c 100644 --- a/x-pack/plugins/lens/public/embeddable/embeddable.tsx +++ b/x-pack/plugins/lens/public/embeddable/embeddable.tsx @@ -1227,45 +1227,35 @@ export class Embeddable if (!this.deps.getTrigger || this.input.disableTriggers) { return; } + + let eventHandler: + | LensBaseEmbeddableInput['onBrushEnd'] + | LensBaseEmbeddableInput['onFilter'] + | LensBaseEmbeddableInput['onTableRowClick']; + let shouldExecuteDefaultTriggers = true; + if (isLensBrushEvent(event)) { - let shouldExecuteDefaultTriggers = true; - if (this.input.onBrushEnd) { - this.input.onBrushEnd({ - ...event.data, - preventDefault: () => { - shouldExecuteDefaultTriggers = false; - }, - }); - } - if (shouldExecuteDefaultTriggers) { - this.deps.getTrigger(VIS_EVENT_TO_TRIGGER[event.name]).exec({ - data: { - ...event.data, - timeFieldName: - event.data.timeFieldName || - inferTimeField(this.deps.data.datatableUtilities, event.data), - }, - embeddable: this, - }); - } + eventHandler = this.input.onBrushEnd; + } else if (isLensFilterEvent(event) || isLensMultiFilterEvent(event)) { + eventHandler = this.input.onFilter; + } else if (isLensTableRowContextMenuClickEvent(event)) { + eventHandler = this.input.onTableRowClick; } - if (isLensFilterEvent(event) || isLensMultiFilterEvent(event)) { - let shouldExecuteDefaultTriggers = true; - if (this.input.onFilter) { - this.input.onFilter({ - ...event.data, - preventDefault: () => { - shouldExecuteDefaultTriggers = false; - }, - }); - } + + eventHandler?.({ + ...event.data, + preventDefault: () => { + shouldExecuteDefaultTriggers = false; + }, + }); + + if (isLensFilterEvent(event) || isLensMultiFilterEvent(event) || isLensBrushEvent(event)) { if (shouldExecuteDefaultTriggers) { this.deps.getTrigger(VIS_EVENT_TO_TRIGGER[event.name]).exec({ data: { ...event.data, timeFieldName: - event.data.timeFieldName || - inferTimeField(this.deps.data.datatableUtilities, event.data), + event.data.timeFieldName || inferTimeField(this.deps.data.datatableUtilities, event), }, embeddable: this, }); @@ -1273,15 +1263,6 @@ export class Embeddable } if (isLensTableRowContextMenuClickEvent(event)) { - let shouldExecuteDefaultTriggers = true; - if (this.input.onTableRowClick) { - this.input.onTableRowClick({ - ...event.data, - preventDefault: () => { - shouldExecuteDefaultTriggers = false; - }, - }); - } if (shouldExecuteDefaultTriggers) { this.deps.getTrigger(VIS_EVENT_TO_TRIGGER[event.name]).exec( { diff --git a/x-pack/plugins/lens/public/types.ts b/x-pack/plugins/lens/public/types.ts index 3b989366fa307..13651c3bc5e69 100644 --- a/x-pack/plugins/lens/public/types.ts +++ b/x-pack/plugins/lens/public/types.ts @@ -814,6 +814,7 @@ export type VisualizationDimensionGroupConfig = SharedDimensionProps & { supportStaticValue?: boolean; // used by text based datasource to restrict the field selection only to number fields for the metric dimensions isMetricDimension?: boolean; + isBreakdownDimension?: boolean; paramEditorCustomProps?: ParamEditorCustomProps; enableFormatSelector?: boolean; labels?: { buttonAriaLabel: string; buttonLabel: string }; @@ -1331,6 +1332,12 @@ export interface LensTableRowContextMenuEvent { data: RowClickContext['data']; } +export type TriggerEvent = + | BrushTriggerEvent + | ClickTriggerEvent + | MultiClickTriggerEvent + | LensTableRowContextMenuEvent; + export function isLensFilterEvent(event: ExpressionRendererEvent): event is ClickTriggerEvent { return event.name === 'filter'; } diff --git a/x-pack/plugins/lens/public/utils.test.ts b/x-pack/plugins/lens/public/utils.test.ts index 52e509557b2fc..e775059586aff 100644 --- a/x-pack/plugins/lens/public/utils.test.ts +++ b/x-pack/plugins/lens/public/utils.test.ts @@ -56,9 +56,12 @@ describe('utils', () => { test('infer time field for brush event', () => { expect( inferTimeField(datatableUtilities, { - table, - column: 0, - range: [1, 2], + name: 'brush', + data: { + table, + column: 0, + range: [1, 2], + }, }) ).toEqual('abc'); }); @@ -66,9 +69,12 @@ describe('utils', () => { test('do not return time field if time range is not bound', () => { expect( inferTimeField(datatableUtilities, { - table: tableWithoutAppliedTimeRange, - column: 0, - range: [1, 2], + name: 'brush', + data: { + table: tableWithoutAppliedTimeRange, + column: 0, + range: [1, 2], + }, }) ).toEqual(undefined); }); @@ -76,14 +82,17 @@ describe('utils', () => { test('infer time field for click event', () => { expect( inferTimeField(datatableUtilities, { - data: [ - { - table, - column: 0, - row: 0, - value: 1, - }, - ], + name: 'filter', + data: { + data: [ + { + table, + column: 0, + row: 0, + value: 1, + }, + ], + }, }) ).toEqual('abc'); }); @@ -91,15 +100,18 @@ describe('utils', () => { test('do not return time field for negated click event', () => { expect( inferTimeField(datatableUtilities, { - data: [ - { - table, - column: 0, - row: 0, - value: 1, - }, - ], - negate: true, + name: 'filter', + data: { + data: [ + { + table, + column: 0, + row: 0, + value: 1, + }, + ], + negate: true, + }, }) ).toEqual(undefined); }); @@ -107,14 +119,17 @@ describe('utils', () => { test('do not return time field for click event without bound time field', () => { expect( inferTimeField(datatableUtilities, { - data: [ - { - table: tableWithoutAppliedTimeRange, - column: 0, - row: 0, - value: 1, - }, - ], + name: 'filter', + data: { + data: [ + { + table: tableWithoutAppliedTimeRange, + column: 0, + row: 0, + value: 1, + }, + ], + }, }) ).toEqual(undefined); }); diff --git a/x-pack/plugins/lens/public/utils.ts b/x-pack/plugins/lens/public/utils.ts index 446d7aac37e66..b1deface2cd77 100644 --- a/x-pack/plugins/lens/public/utils.ts +++ b/x-pack/plugins/lens/public/utils.ts @@ -14,11 +14,6 @@ import type { TimefilterContract } from '@kbn/data-plugin/public'; import type { IUiSettingsClient, SavedObjectReference } from '@kbn/core/public'; import type { DataView, DataViewsContract } from '@kbn/data-views-plugin/public'; import type { DatatableUtilitiesService } from '@kbn/data-plugin/common'; -import { - BrushTriggerEvent, - ClickTriggerEvent, - MultiClickTriggerEvent, -} from '@kbn/charts-plugin/public'; import { emptyTitleText } from '@kbn/visualization-ui-components'; import { RequestAdapter } from '@kbn/inspector-plugin/common'; import { ISearchStart } from '@kbn/data-plugin/public'; @@ -34,6 +29,10 @@ import { DragDropOperation, isOperation, UserMessage, + TriggerEvent, + isLensBrushEvent, + isLensMultiFilterEvent, + isLensFilterEvent, } from './types'; import type { DatasourceStates, VisualizationState } from './state_management'; import type { IndexPatternServiceAPI } from './data_views_service/service'; @@ -214,17 +213,28 @@ export function getRemoveOperation( return layerCount === 1 ? 'clear' : 'remove'; } -export function inferTimeField( - datatableUtilities: DatatableUtilitiesService, - context: BrushTriggerEvent['data'] | ClickTriggerEvent['data'] | MultiClickTriggerEvent['data'] -) { - const tablesAndColumns = - 'table' in context - ? [{ table: context.table, column: context.column }] - : !context.negate - ? context.data - : // if it's a negated filter, never respect bound time field - []; +function getTablesAndColumnsFromContext(event: TriggerEvent) { + // if it's a negated filter, never respect bound time field + if ('negate' in event.data && event.data.negate) { + return []; + } + if (isLensBrushEvent(event)) { + return [{ table: event.data.table, column: event.data.column }]; + } + if (isLensMultiFilterEvent(event)) { + return event.data.data.map(({ table, cells }) => ({ + table, + column: cells[0].column, + })); + } + if (isLensFilterEvent(event)) { + return event.data.data; + } + return event.data; +} + +export function inferTimeField(datatableUtilities: DatatableUtilitiesService, event: TriggerEvent) { + const tablesAndColumns = getTablesAndColumnsFromContext(event); return !Array.isArray(tablesAndColumns) ? [tablesAndColumns] : tablesAndColumns diff --git a/x-pack/plugins/lens/public/visualizations/heatmap/visualization.test.ts b/x-pack/plugins/lens/public/visualizations/heatmap/visualization.test.ts index 596c334aeac9e..dc9202a4d7e92 100644 --- a/x-pack/plugins/lens/public/visualizations/heatmap/visualization.test.ts +++ b/x-pack/plugins/lens/public/visualizations/heatmap/visualization.test.ts @@ -150,6 +150,7 @@ describe('heatmap', () => { groupLabel: 'Vertical axis', accessors: [{ columnId: 'y-accessor' }], filterOperations: filterOperationsAxis, + isBreakdownDimension: true, supportsMoreColumns: false, requiredMinDimensionCount: 0, dataTestSubj: 'lnsHeatmap_yDimensionPanel', @@ -210,6 +211,7 @@ describe('heatmap', () => { accessors: [], filterOperations: filterOperationsAxis, supportsMoreColumns: true, + isBreakdownDimension: true, requiredMinDimensionCount: 0, dataTestSubj: 'lnsHeatmap_yDimensionPanel', }, @@ -267,6 +269,7 @@ describe('heatmap', () => { accessors: [{ columnId: 'y-accessor' }], filterOperations: filterOperationsAxis, supportsMoreColumns: false, + isBreakdownDimension: true, requiredMinDimensionCount: 0, dataTestSubj: 'lnsHeatmap_yDimensionPanel', }, diff --git a/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx b/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx index 654d69284718c..5d19c402a27e2 100644 --- a/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/heatmap/visualization.tsx @@ -197,6 +197,7 @@ export const getHeatmapVisualization = ({ filterOperations: filterOperationsAxis, supportsMoreColumns: !state.yAccessor, requiredMinDimensionCount: 0, + isBreakdownDimension: true, dataTestSubj: 'lnsHeatmap_yDimensionPanel', }, { diff --git a/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx b/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx index 0d000db6e5206..9f5f9755d1781 100644 --- a/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx +++ b/x-pack/plugins/lens/public/visualizations/xy/visualization.tsx @@ -461,6 +461,7 @@ export const getXyVisualization = ({ requiredMinDimensionCount: dataLayer.seriesType.includes('percentage') && hasOnlyOneAccessor ? 1 : 0, enableDimensionEditor: true, + isBreakdownDimension: true, }, ], }; diff --git a/x-pack/plugins/maps/public/connected_components/mb_map/transform_request.ts b/x-pack/plugins/maps/public/connected_components/mb_map/transform_request.ts index 47f14956d6dca..c30fc533a322f 100644 --- a/x-pack/plugins/maps/public/connected_components/mb_map/transform_request.ts +++ b/x-pack/plugins/maps/public/connected_components/mb_map/transform_request.ts @@ -5,7 +5,10 @@ * 2.0. */ -import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; +import { + ELASTIC_HTTP_VERSION_HEADER, + X_ELASTIC_INTERNAL_ORIGIN_REQUEST, +} from '@kbn/core-http-common'; import { FONTS_API_PATH, MVT_GETTILE_API_PATH, @@ -22,7 +25,10 @@ export function transformRequest(url: string, resourceType: string | undefined) return { url, method: 'GET' as 'GET', - headers: { [ELASTIC_HTTP_VERSION_HEADER]: '1' }, + headers: { + [ELASTIC_HTTP_VERSION_HEADER]: '1', + [X_ELASTIC_INTERNAL_ORIGIN_REQUEST]: 'kibana', + }, }; } @@ -30,7 +36,10 @@ export function transformRequest(url: string, resourceType: string | undefined) return { url, method: 'GET' as 'GET', - headers: { [ELASTIC_HTTP_VERSION_HEADER]: '1' }, + headers: { + [ELASTIC_HTTP_VERSION_HEADER]: '1', + [X_ELASTIC_INTERNAL_ORIGIN_REQUEST]: 'kibana', + }, }; } @@ -38,7 +47,10 @@ export function transformRequest(url: string, resourceType: string | undefined) return { url, method: 'GET' as 'GET', - headers: { [ELASTIC_HTTP_VERSION_HEADER]: '1' }, + headers: { + [ELASTIC_HTTP_VERSION_HEADER]: '1', + [X_ELASTIC_INTERNAL_ORIGIN_REQUEST]: 'kibana', + }, }; } diff --git a/x-pack/plugins/ml/public/application/capabilities/check_capabilities.ts b/x-pack/plugins/ml/public/application/capabilities/check_capabilities.ts index 72a6100c15a7c..c5325f4aa7614 100644 --- a/x-pack/plugins/ml/public/application/capabilities/check_capabilities.ts +++ b/x-pack/plugins/ml/public/application/capabilities/check_capabilities.ts @@ -24,7 +24,7 @@ import { type MlApiServices } from '../services/ml_api_service'; let _capabilities: MlCapabilities = getDefaultCapabilities(); -const CAPABILITIES_REFRESH_INTERVAL = 60000; +const CAPABILITIES_REFRESH_INTERVAL = 5 * 60 * 1000; // 5min; export class MlCapabilitiesService { private _isLoading$ = new BehaviorSubject(true); diff --git a/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx b/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx index e4b79eafb896d..6941e53cd68b2 100644 --- a/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx +++ b/x-pack/plugins/ml/public/application/management/jobs_list/components/jobs_list_page/jobs_list_page.tsx @@ -70,6 +70,11 @@ export const JobsListPage: FC<{ const I18nContext = coreStart.i18n.Context; const theme$ = coreStart.theme.theme$; + const mlServices = useMemo( + () => getMlGlobalServices(coreStart.http, usageCollection), + [coreStart.http, usageCollection] + ); + const check = async () => { try { await checkGetManagementMlJobsResolver(mlApiServices); @@ -122,7 +127,7 @@ export const JobsListPage: FC<{ usageCollection, fieldFormats, spacesApi, - mlServices: getMlGlobalServices(coreStart.http, usageCollection), + mlServices, }} > diff --git a/x-pack/plugins/ml/public/application/memory_usage/nodes_overview/allocated_models.tsx b/x-pack/plugins/ml/public/application/memory_usage/nodes_overview/allocated_models.tsx index 5cdc922824ae7..02738f3bebe51 100644 --- a/x-pack/plugins/ml/public/application/memory_usage/nodes_overview/allocated_models.tsx +++ b/x-pack/plugins/ml/public/application/memory_usage/nodes_overview/allocated_models.tsx @@ -122,13 +122,27 @@ export const AllocatedModels: FC = ({ }, }, { - field: 'node.throughput_last_minute', - name: i18n.translate( - 'xpack.ml.trainedModels.nodesList.modelsList.throughputLastMinuteHeader', - { - defaultMessage: 'Throughput', - } + name: ( + + + {i18n.translate( + 'xpack.ml.trainedModels.nodesList.modelsList.throughputLastMinuteHeader', + { + defaultMessage: 'Throughput', + } + )} + + + ), + field: 'node.throughput_last_minute', width: '100px', truncateText: false, 'data-test-subj': 'mlAllocatedModelsTableThroughput', diff --git a/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_active_alerts_badge.stories.tsx b/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_active_alerts_badge.stories.tsx index 08fa152301d43..3aed4658ab766 100644 --- a/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_active_alerts_badge.stories.tsx +++ b/x-pack/plugins/observability/public/components/slo/slo_status_badge/slo_active_alerts_badge.stories.tsx @@ -25,4 +25,4 @@ const Template: ComponentStory = (props: Props) => ( ); export const Default = Template.bind({}); -Default.args = { activeAlerts: { count: 2, ruleIds: ['rule-1', 'rule-2'] } }; +Default.args = { activeAlerts: { count: 2 } }; diff --git a/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts b/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts index 319f3e57a4a4c..580d72e550e6b 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_fetch_active_alerts.ts @@ -19,7 +19,6 @@ interface Params { export interface ActiveAlerts { count: number; - ruleIds: string[]; } type ActiveAlertsMap = Record; @@ -37,7 +36,6 @@ interface FindApiResponse { buckets: Array<{ key: string; doc_count: number; - perRuleId: { buckets: Array<{ key: string; doc_count: number }> }; }>; }; }; @@ -77,20 +75,22 @@ export function useFetchActiveAlerts({ sloIds = [] }: Params): UseFetchActiveAle }, }, ], + should: [ + { + terms: { + 'kibana.alert.rule.parameters.sloId': sloIds, + }, + }, + ], + minimum_should_match: 1, }, }, aggs: { perSloId: { terms: { + size: sloIds.length, field: 'kibana.alert.rule.parameters.sloId', }, - aggs: { - perRuleId: { - terms: { - field: 'kibana.alert.rule.uuid', - }, - }, - }, }, }, }), @@ -102,7 +102,6 @@ export function useFetchActiveAlerts({ sloIds = [] }: Params): UseFetchActiveAle ...acc, [bucket.key]: { count: bucket.doc_count ?? 0, - ruleIds: bucket.perRuleId.buckets.map((rule) => rule.key), } as ActiveAlerts, }), {} diff --git a/x-pack/plugins/observability/public/hooks/slo/use_fetch_index_pattern_fields.ts b/x-pack/plugins/observability/public/hooks/slo/use_fetch_index_pattern_fields.ts index bd83b069133c3..2f51e4d7faf26 100644 --- a/x-pack/plugins/observability/public/hooks/slo/use_fetch_index_pattern_fields.ts +++ b/x-pack/plugins/observability/public/hooks/slo/use_fetch_index_pattern_fields.ts @@ -18,6 +18,8 @@ export interface UseFetchIndexPatternFieldsResponse { export interface Field { name: string; type: string; + aggregatable: boolean; + searchable: boolean; } export function useFetchIndexPatternFields( diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/group_by_field_selector.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/group_by_field_selector.tsx new file mode 100644 index 0000000000000..0733e682e9ba7 --- /dev/null +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/group_by_field_selector.tsx @@ -0,0 +1,90 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + EuiComboBox, + EuiComboBoxOptionOption, + EuiFlexItem, + EuiFormRow, + EuiIconTip, +} from '@elastic/eui'; +import { i18n } from '@kbn/i18n'; +import { ALL_VALUE } from '@kbn/slo-schema'; +import React from 'react'; +import { Controller, useFormContext } from 'react-hook-form'; +import { useFetchIndexPatternFields } from '../../../../hooks/slo/use_fetch_index_pattern_fields'; +import { createOptionsFromFields } from '../../helpers/create_options'; +import { CreateSLOForm } from '../../types'; + +interface Props { + index?: string; +} +export function GroupByFieldSelector({ index }: Props) { + const { control, getFieldState } = useFormContext(); + const { isLoading, data: indexFields = [] } = useFetchIndexPatternFields(index); + const groupableFields = indexFields.filter((field) => field.aggregatable); + + const label = i18n.translate('xpack.observability.slo.sloEdit.groupBy.placeholder', { + defaultMessage: 'Select an optional field to partition by', + }); + + return ( + + + {i18n.translate('xpack.observability.slo.sloEdit.groupBy.label', { + defaultMessage: 'Partition by', + })}{' '} + + + } + isInvalid={getFieldState('groupBy').invalid} + > + ( + { + if (selected.length) { + return field.onChange(selected[0].value); + } + + field.onChange(ALL_VALUE); + }} + options={createOptionsFromFields(groupableFields)} + selectedOptions={ + !!index && + !!field.value && + groupableFields.some((groupableField) => groupableField.name === field.value) + ? [{ value: field.value, label: field.value }] + : [] + } + singleSelection + /> + )} + /> + + + ); +} diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx index c33f5646ff8d9..954b89991f528 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/common/query_builder.tsx @@ -36,7 +36,6 @@ export function QueryBuilder({ useKibana().services; const { control, getFieldState } = useFormContext(); - const { dataView } = useCreateDataView({ indexPatternString }); return ( diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx index c07ce5d132489..6d7ae6c012a2e 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_kql/custom_kql_indicator_type_form.tsx @@ -20,6 +20,7 @@ import { useFetchIndexPatternFields } from '../../../../hooks/slo/use_fetch_inde import { createOptionsFromFields } from '../../helpers/create_options'; import { CreateSLOForm } from '../../types'; import { DataPreviewChart } from '../common/data_preview_chart'; +import { GroupByFieldSelector } from '../common/group_by_field_selector'; import { QueryBuilder } from '../common/query_builder'; import { IndexSelection } from '../custom_common/index_selection'; @@ -81,7 +82,7 @@ export function CustomKqlIndicatorTypeForm() { ? [{ value: field.value, label: field.value }] : [] } - singleSelection={{ asPlainText: true }} + singleSelection /> )} /> @@ -175,6 +176,8 @@ export function CustomKqlIndicatorTypeForm() { /> + + ); diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/custom_metric_type_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/custom_metric_type_form.tsx index e9a96fbc0c929..25de4568dc06c 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/custom_metric_type_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/custom_metric/custom_metric_type_form.tsx @@ -27,15 +27,15 @@ import { DataPreviewChart } from '../common/data_preview_chart'; import { QueryBuilder } from '../common/query_builder'; import { IndexSelection } from '../custom_common/index_selection'; import { MetricIndicator } from './metric_indicator'; +import { GroupByFieldSelector } from '../common/group_by_field_selector'; export { NEW_CUSTOM_METRIC } from './metric_indicator'; export function CustomMetricIndicatorTypeForm() { const { control, watch, getFieldState } = useFormContext(); - const { isLoading, data: indexFields } = useFetchIndexPatternFields( - watch('indicator.params.index') - ); + const index = watch('indicator.params.index'); + const { isLoading, data: indexFields } = useFetchIndexPatternFields(index); const timestampFields = (indexFields ?? []).filter((field) => field.type === 'date'); return ( @@ -181,6 +181,8 @@ export function CustomMetricIndicatorTypeForm() { + + diff --git a/x-pack/plugins/observability/public/pages/slo_edit/components/histogram/histogram_indicator_type_form.tsx b/x-pack/plugins/observability/public/pages/slo_edit/components/histogram/histogram_indicator_type_form.tsx index 323cd48a67cc0..56a867ab2e332 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/components/histogram/histogram_indicator_type_form.tsx +++ b/x-pack/plugins/observability/public/pages/slo_edit/components/histogram/histogram_indicator_type_form.tsx @@ -27,6 +27,7 @@ import { DataPreviewChart } from '../common/data_preview_chart'; import { QueryBuilder } from '../common/query_builder'; import { IndexSelection } from '../custom_common/index_selection'; import { HistogramIndicator } from './histogram_indicator'; +import { GroupByFieldSelector } from '../common/group_by_field_selector'; export function HistogramIndicatorTypeForm() { const { control, watch, getFieldState } = useFormContext(); @@ -163,6 +164,9 @@ export function HistogramIndicatorTypeForm() { + + + diff --git a/x-pack/plugins/observability/public/pages/slo_edit/helpers/process_slo_form_values.ts b/x-pack/plugins/observability/public/pages/slo_edit/helpers/process_slo_form_values.ts index d87dd10450f3d..a4ecec640e2df 100644 --- a/x-pack/plugins/observability/public/pages/slo_edit/helpers/process_slo_form_values.ts +++ b/x-pack/plugins/observability/public/pages/slo_edit/helpers/process_slo_form_values.ts @@ -5,7 +5,7 @@ * 2.0. */ -import type { CreateSLOInput, SLOWithSummaryResponse, UpdateSLOInput } from '@kbn/slo-schema'; +import { CreateSLOInput, SLOWithSummaryResponse, UpdateSLOInput } from '@kbn/slo-schema'; import { toDuration } from '../../../utils/slo/duration'; import { CreateSLOForm } from '../types'; diff --git a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_badges.tsx b/x-pack/plugins/observability/public/pages/slos/components/badges/slo_badges.tsx index 93b4e2802bc1c..f9c7cc3faeeb8 100644 --- a/x-pack/plugins/observability/public/pages/slos/components/badges/slo_badges.tsx +++ b/x-pack/plugins/observability/public/pages/slos/components/badges/slo_badges.tsx @@ -29,7 +29,7 @@ export interface Props { export function SloBadges({ activeAlerts, isLoading, rules, slo, onClickRuleBadge }: Props) { return ( - + {isLoading ? ( <> - + - + slo.sloId); const sloList = await this.repository.findAllByIds(sloIds); - const list: SLOWithInstanceId[] = params.list.map(({ sloId, instanceId }) => ({ - sloId, - instanceId, - slo: sloList.find((slo) => slo.id === sloId)!, - })); + const list: SLOWithInstanceId[] = params.list + .filter(({ sloId }) => sloList.find((slo) => slo.id === sloId)) + .map(({ sloId, instanceId }) => ({ + sloId, + instanceId, + slo: sloList.find((slo) => slo.id === sloId)!, + })); const historicalSummary = await this.historicalSummaryClient.fetch(list); diff --git a/x-pack/plugins/observability/server/services/slo/slo_installer.ts b/x-pack/plugins/observability/server/services/slo/slo_installer.ts index b59612ca30253..d6e8b8295348f 100644 --- a/x-pack/plugins/observability/server/services/slo/slo_installer.ts +++ b/x-pack/plugins/observability/server/services/slo/slo_installer.ts @@ -37,7 +37,6 @@ export class DefaultSLOInstaller implements SLOInstaller { this.logger.error('Failed to install SLO common resources and summary transforms', { error, }); - throw error; } finally { this.isInstalling = false; clearTimeout(installTimeout); diff --git a/x-pack/plugins/observability/server/services/slo/summary_client.ts b/x-pack/plugins/observability/server/services/slo/summary_client.ts index b12a376be532a..3f799b2ca3473 100644 --- a/x-pack/plugins/observability/server/services/slo/summary_client.ts +++ b/x-pack/plugins/observability/server/services/slo/summary_client.ts @@ -20,8 +20,6 @@ import { DateRange, SLO, Summary } from '../../domain/models'; import { computeSLI, computeSummaryStatus, toErrorBudget } from '../../domain/services'; import { toDateRange } from '../../domain/services/date_range'; -// TODO: Change name of this service... -// It does compute a summary but from the rollup data. export interface SummaryClient { computeSummary(slo: SLO, instanceId?: string): Promise; } diff --git a/x-pack/plugins/observability/server/services/slo/summary_search_client.ts b/x-pack/plugins/observability/server/services/slo/summary_search_client.ts index c7d87ac8b322c..f2bfa1ed29df3 100644 --- a/x-pack/plugins/observability/server/services/slo/summary_search_client.ts +++ b/x-pack/plugins/observability/server/services/slo/summary_search_client.ts @@ -125,7 +125,7 @@ export class DefaultSummarySearchClient implements SummarySearchClient { page: pagination.page, results: finalResults.map((doc) => ({ id: doc._source!.slo.id, - instanceId: doc._source?.slo.instanceId ?? ALL_VALUE, + instanceId: doc._source!.slo.instanceId ?? ALL_VALUE, summary: { errorBudget: { initial: toHighPrecision(doc._source!.errorBudgetInitial), diff --git a/x-pack/plugins/security/common/index.ts b/x-pack/plugins/security/common/index.ts index f7ee13c610a45..c547833949ded 100644 --- a/x-pack/plugins/security/common/index.ts +++ b/x-pack/plugins/security/common/index.ts @@ -23,7 +23,6 @@ export type { UserProfileWithSecurity, UserProfileData, UserProfileLabels, - UserProfileAvatarData, UserProfileUserInfoWithSecurity, ApiKey, UserRealm, diff --git a/x-pack/plugins/security/common/model/index.ts b/x-pack/plugins/security/common/model/index.ts index 822d6036efc06..c8505a644503f 100644 --- a/x-pack/plugins/security/common/model/index.ts +++ b/x-pack/plugins/security/common/model/index.ts @@ -22,7 +22,6 @@ export type { UserProfileData, UserProfileLabels, UserProfileUserInfoWithSecurity, - UserProfileAvatarData, } from './user_profile'; export { getUserAvatarColor, diff --git a/x-pack/plugins/security/common/model/user_profile.ts b/x-pack/plugins/security/common/model/user_profile.ts index c4dd6addd51fc..152b0d0266bbe 100644 --- a/x-pack/plugins/security/common/model/user_profile.ts +++ b/x-pack/plugins/security/common/model/user_profile.ts @@ -7,6 +7,8 @@ import { VISUALIZATION_COLORS } from '@elastic/eui'; +import type { UserProfileAvatarData } from '@kbn/user-profile-components'; + import type { AuthenticatedUser } from './authenticated_user'; import { getUserDisplayName } from './user'; @@ -72,33 +74,6 @@ export type UserProfileData = Record; */ export type UserProfileLabels = Record; -/** - * Avatar stored in user profile. - */ -export interface UserProfileAvatarData { - /** - * Optional initials (two letters) of the user to use as avatar if avatar picture isn't specified. - */ - initials?: string; - /** - * Background color of the avatar when initials are used. - */ - color?: string; - /** - * Base64 data URL for the user avatar image. - */ - imageUrl?: string | null; -} - -export type DarkModeValue = '' | 'dark' | 'light'; - -/** - * User settings stored in the data object of the User Profile - */ -export interface UserSettingsData { - darkMode?: DarkModeValue; -} - /** * Extended user information returned in user profile (both basic and security related properties). */ diff --git a/x-pack/plugins/security/public/account_management/account_management_app.tsx b/x-pack/plugins/security/public/account_management/account_management_app.tsx index 29722c10ea84d..a5b98d66d46ff 100644 --- a/x-pack/plugins/security/public/account_management/account_management_app.tsx +++ b/x-pack/plugins/security/public/account_management/account_management_app.tsx @@ -21,8 +21,13 @@ import type { import { AppNavLinkStatus } from '@kbn/core/public'; import { i18n } from '@kbn/i18n'; import { I18nProvider } from '@kbn/i18n-react'; -import { KibanaContextProvider, KibanaThemeProvider } from '@kbn/kibana-react-plugin/public'; +import { + KibanaContextProvider, + KibanaThemeProvider, + toMountPoint, +} from '@kbn/kibana-react-plugin/public'; import { Router } from '@kbn/shared-ux-router'; +import { UserProfilesKibanaProvider } from '@kbn/user-profile-components'; import type { AuthenticationServiceSetup } from '../authentication'; import type { SecurityApiClients } from '../components'; @@ -96,7 +101,17 @@ export const Providers: FunctionComponent = ({ - {children} + + + {children} + + diff --git a/x-pack/plugins/security/public/account_management/index.ts b/x-pack/plugins/security/public/account_management/index.ts index eca7287537318..e1a4957aa71e7 100644 --- a/x-pack/plugins/security/public/account_management/index.ts +++ b/x-pack/plugins/security/public/account_management/index.ts @@ -11,5 +11,4 @@ export type { UserProfileBulkGetParams, UserProfileGetCurrentParams, UserProfileSuggestParams, - UpdateUserProfileHook, } from './user_profile'; diff --git a/x-pack/plugins/security/public/account_management/user_profile/index.ts b/x-pack/plugins/security/public/account_management/user_profile/index.ts index 93a1c7d04d315..ed34d7d4a4339 100644 --- a/x-pack/plugins/security/public/account_management/user_profile/index.ts +++ b/x-pack/plugins/security/public/account_management/user_profile/index.ts @@ -13,5 +13,3 @@ export type { UserProfileBulkGetParams, UserProfileSuggestParams, } from './user_profile_api_client'; - -export type { UpdateUserProfileHook } from './use_update_user_profile'; diff --git a/x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx b/x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx deleted file mode 100644 index 2dafa61496fe8..0000000000000 --- a/x-pack/plugins/security/public/account_management/user_profile/use_update_user_profile.tsx +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { EuiButton, EuiFlexGroup, EuiFlexItem } from '@elastic/eui'; -import React, { useCallback, useRef, useState } from 'react'; -import useObservable from 'react-use/lib/useObservable'; - -import type { NotificationsStart, ToastInput, ToastOptions } from '@kbn/core/public'; -import { i18n } from '@kbn/i18n'; -import { toMountPoint } from '@kbn/kibana-react-plugin/public'; - -import type { UserProfileData } from './user_profile'; -import type { UserProfileAPIClient } from './user_profile_api_client'; - -interface Deps { - apiClient: UserProfileAPIClient; - notifications: NotificationsStart; -} - -interface Props { - notificationSuccess?: { - /** Flag to indicate if a notification is shown after update. Default: `true` */ - enabled?: boolean; - /** Customize the title of the notification */ - title?: string; - /** Customize the "page reload needed" text of the notification */ - pageReloadText?: string; - }; - /** Predicate to indicate if the update requires a page reload */ - pageReloadChecker?: ( - previsous: UserProfileData | null | undefined, - next: UserProfileData - ) => boolean; -} - -export type UpdateUserProfileHook = (props?: Props) => { - /** Update the user profile */ - update: (data: UserProfileData) => void; - /** Handler to show a notification after the user profile has been updated */ - showSuccessNotification: (props: { isRefreshRequired: boolean }) => void; - /** Flag to indicate if currently updating */ - isLoading: boolean; - /** The current user profile data */ - userProfileData?: UserProfileData | null; -}; - -const i18nTexts = { - notificationSuccess: { - title: i18n.translate('xpack.security.accountManagement.userProfile.submitSuccessTitle', { - defaultMessage: 'Profile updated', - }), - pageReloadText: i18n.translate( - 'xpack.security.accountManagement.userProfile.requiresPageReloadToastDescription', - { - defaultMessage: 'One or more settings require you to reload the page to take effect.', - } - ), - }, -}; - -export const getUseUpdateUserProfile = ({ apiClient, notifications }: Deps) => { - const { userProfile$ } = apiClient; - - const useUpdateUserProfile = ({ notificationSuccess = {}, pageReloadChecker }: Props = {}) => { - const { - enabled: notificationSuccessEnabled = true, - title: notificationTitle = i18nTexts.notificationSuccess.title, - pageReloadText = i18nTexts.notificationSuccess.pageReloadText, - } = notificationSuccess; - const [isLoading, setIsLoading] = useState(false); - const userProfileData = useObservable(userProfile$); - // Keep a snapshot before updating the user profile so we can compare previous and updated values - const userProfileSnapshot = useRef(); - - const showSuccessNotification = useCallback( - ({ isRefreshRequired = false }: { isRefreshRequired?: boolean } = {}) => { - let successToastInput: ToastInput = { - title: notificationTitle, - }; - let successToastOptions: ToastOptions = {}; - - if (isRefreshRequired) { - successToastOptions = { - toastLifeTimeMs: 1000 * 60 * 5, - }; - - successToastInput = { - ...successToastInput, - text: toMountPoint( - - -

{pageReloadText}

- window.location.reload()} - data-test-subj="windowReloadButton" - > - {i18n.translate( - 'xpack.security.accountManagement.userProfile.requiresPageReloadToastButtonLabel', - { - defaultMessage: 'Reload page', - } - )} - -
-
- ), - }; - } - - notifications.toasts.addSuccess(successToastInput, successToastOptions); - }, - [notificationTitle, pageReloadText] - ); - - const onUserProfileUpdate = useCallback( - (updatedData: UserProfileData) => { - setIsLoading(false); - - if (notificationSuccessEnabled) { - const isRefreshRequired = pageReloadChecker?.(userProfileSnapshot.current, updatedData); - showSuccessNotification({ isRefreshRequired }); - } - }, - [notificationSuccessEnabled, showSuccessNotification, pageReloadChecker] - ); - - const update = useCallback( - (udpatedData: D) => { - userProfileSnapshot.current = userProfileData; - setIsLoading(true); - return apiClient.update(udpatedData).then(() => onUserProfileUpdate(udpatedData)); - }, - [onUserProfileUpdate, userProfileData] - ); - - return { - update, - showSuccessNotification, - userProfileData, - isLoading, - }; - }; - - return useUpdateUserProfile; -}; diff --git a/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx b/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx index 2632f73e99d07..a6227baee4061 100644 --- a/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx +++ b/x-pack/plugins/security/public/account_management/user_profile/user_profile.tsx @@ -39,7 +39,8 @@ import type { CoreStart, IUiSettingsClient } from '@kbn/core/public'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; import { useKibana } from '@kbn/kibana-react-plugin/public'; -import { UserAvatar } from '@kbn/user-profile-components'; +import type { DarkModeValue, UserProfileData } from '@kbn/user-profile-components'; +import { UserAvatar, useUpdateUserProfile } from '@kbn/user-profile-components'; import type { AuthenticatedUser } from '../../../common'; import { @@ -48,11 +49,6 @@ import { getUserAvatarColor, getUserAvatarInitials, } from '../../../common/model'; -import type { - DarkModeValue, - UserProfileAvatarData, - UserSettingsData, -} from '../../../common/model/user_profile'; import { useSecurityApiClients } from '../../components'; import { Breadcrumb } from '../../components/breadcrumb'; import { @@ -65,15 +61,8 @@ import { FormLabel } from '../../components/form_label'; import { FormRow, OptionalText } from '../../components/form_row'; import { ChangePasswordModal } from '../../management/users/edit_user/change_password_modal'; import { isUserReserved } from '../../management/users/user_utils'; -import { getUseUpdateUserProfile } from './use_update_user_profile'; import { createImageHandler, getRandomColor, IMAGE_FILE_TYPES, VALID_HEX_COLOR } from './utils'; -export interface UserProfileData { - avatar?: UserProfileAvatarData; - userSettings?: UserSettingsData; - [key: string]: unknown; -} - export interface UserProfileProps { user: AuthenticatedUser; data?: UserProfileData; @@ -833,12 +822,11 @@ export const UserProfile: FunctionComponent = ({ user, data }) export function useUserProfileForm({ user, data }: UserProfileProps) { const { services } = useKibana(); - const { userProfiles, users } = useSecurityApiClients(); + const { users } = useSecurityApiClients(); - const { update, showSuccessNotification } = getUseUpdateUserProfile({ - apiClient: userProfiles, - notifications: services.notifications, - })({ notificationSuccess: { enabled: false } }); + const { update, showSuccessNotification } = useUpdateUserProfile({ + notificationSuccess: { enabled: false }, + }); const [initialValues, resetInitialValues] = useState({ user: { diff --git a/x-pack/plugins/security/public/account_management/user_profile/user_profile_api_client.ts b/x-pack/plugins/security/public/account_management/user_profile/user_profile_api_client.ts index 4b992f616ca14..4760aa15ab0b3 100644 --- a/x-pack/plugins/security/public/account_management/user_profile/user_profile_api_client.ts +++ b/x-pack/plugins/security/public/account_management/user_profile/user_profile_api_client.ts @@ -10,9 +10,9 @@ import type { Observable } from 'rxjs'; import { BehaviorSubject, Subject } from 'rxjs'; import type { HttpStart } from '@kbn/core/public'; +import type { UserProfileData } from '@kbn/user-profile-components'; import type { GetUserProfileResponse, UserProfile } from '../../../common'; -import type { UserProfileData } from './user_profile'; /** * Parameters for the get user profile for the current user API. diff --git a/x-pack/plugins/security/public/index.ts b/x-pack/plugins/security/public/index.ts index b51bb3d25092e..209bc5ff576b6 100644 --- a/x-pack/plugins/security/public/index.ts +++ b/x-pack/plugins/security/public/index.ts @@ -24,7 +24,6 @@ export type { UserProfileBulkGetParams, UserProfileGetCurrentParams, UserProfileSuggestParams, - UpdateUserProfileHook, } from './account_management'; export type { AuthenticationServiceStart, AuthenticationServiceSetup } from './authentication'; diff --git a/x-pack/plugins/security/public/mocks.ts b/x-pack/plugins/security/public/mocks.ts index f0081307ef33f..8a9232869b430 100644 --- a/x-pack/plugins/security/public/mocks.ts +++ b/x-pack/plugins/security/public/mocks.ts @@ -32,9 +32,6 @@ function createStartMock() { userProfile$: of({}), }, uiApi: getUiApiMock.createStart(), - hooks: { - useUpdateUserProfile: jest.fn(), - }, }; } diff --git a/x-pack/plugins/security/public/nav_control/nav_control_component.tsx b/x-pack/plugins/security/public/nav_control/nav_control_component.tsx index 4a5e8ad545d64..13bcb3bcb4341 100644 --- a/x-pack/plugins/security/public/nav_control/nav_control_component.tsx +++ b/x-pack/plugins/security/public/nav_control/nav_control_component.tsx @@ -22,9 +22,8 @@ import type { Observable } from 'rxjs'; import { i18n } from '@kbn/i18n'; import { FormattedMessage } from '@kbn/i18n-react'; -import { UserAvatar } from '@kbn/user-profile-components'; +import { UserAvatar, type UserProfileAvatarData } from '@kbn/user-profile-components'; -import type { UserProfileAvatarData } from '../../common'; import { getUserDisplayName, isUserAnonymous } from '../../common/model'; import { useCurrentUser, useUserProfile } from '../components'; diff --git a/x-pack/plugins/security/public/plugin.test.tsx b/x-pack/plugins/security/public/plugin.test.tsx index 87ce15a19202d..fdab78a1f91d0 100644 --- a/x-pack/plugins/security/public/plugin.test.tsx +++ b/x-pack/plugins/security/public/plugin.test.tsx @@ -96,9 +96,6 @@ describe('Security Plugin', () => { "areAPIKeysEnabled": [Function], "getCurrentUser": [Function], }, - "hooks": Object { - "useUpdateUserProfile": [Function], - }, "navControlService": Object { "addUserMenuLinks": [Function], "getUserMenuLinks$": [Function], diff --git a/x-pack/plugins/security/public/plugin.tsx b/x-pack/plugins/security/public/plugin.tsx index e8c2c13ab0eb6..49c0a14e2fd9c 100644 --- a/x-pack/plugins/security/public/plugin.tsx +++ b/x-pack/plugins/security/public/plugin.tsx @@ -24,9 +24,7 @@ import type { SpacesPluginStart } from '@kbn/spaces-plugin/public'; import type { SecurityLicense } from '../common/licensing'; import { SecurityLicenseService } from '../common/licensing'; -import type { UpdateUserProfileHook } from './account_management'; import { accountManagementApp, UserProfileAPIClient } from './account_management'; -import { getUseUpdateUserProfile } from './account_management/user_profile/use_update_user_profile'; import { AnalyticsService } from './analytics'; import { AnonymousAccessService } from './anonymous_access'; import type { AuthenticationServiceSetup, AuthenticationServiceStart } from './authentication'; @@ -213,12 +211,6 @@ export class SecurityPlugin ), userProfile$: this.securityApiClients.userProfiles.userProfile$, }, - hooks: { - useUpdateUserProfile: getUseUpdateUserProfile({ - apiClient: this.securityApiClients.userProfiles, - notifications: core.notifications, - }), - }, }; } @@ -263,13 +255,6 @@ export interface SecurityPluginStart { 'getCurrent' | 'bulkGet' | 'suggest' | 'update' | 'userProfile$' >; - /** - * A set of hooks to work with Kibana user profiles - */ - hooks: { - useUpdateUserProfile: UpdateUserProfileHook; - }; - /** * Exposes UI components that will be loaded asynchronously. * @deprecated diff --git a/x-pack/plugins/security_solution/common/api/tags/create_tag/create_tag_route.ts b/x-pack/plugins/security_solution/common/api/tags/create_tag/create_tag_route.ts new file mode 100644 index 0000000000000..160ae43b9aa0f --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/tags/create_tag/create_tag_route.ts @@ -0,0 +1,15 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ +import * as rt from 'io-ts'; + +export const createTagRequest = rt.intersection([ + rt.type({ + name: rt.string, + description: rt.string, + }), + rt.partial({ color: rt.string }), +]); diff --git a/x-pack/plugins/security_solution/common/api/tags/get_dashboards_by_tags/get_dashboards_by_tags_route.ts b/x-pack/plugins/security_solution/common/api/tags/get_dashboards_by_tags/get_dashboards_by_tags_route.ts new file mode 100644 index 0000000000000..af2c89a967311 --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/tags/get_dashboards_by_tags/get_dashboards_by_tags_route.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. + */ + +import * as rt from 'io-ts'; + +export const getDashboardsRequest = rt.type({ tagIds: rt.array(rt.string) }); diff --git a/x-pack/plugins/security_solution/common/api/tags/get_tags_by_name/get_tags_by_name_route.ts b/x-pack/plugins/security_solution/common/api/tags/get_tags_by_name/get_tags_by_name_route.ts new file mode 100644 index 0000000000000..4ae16c320c02e --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/tags/get_tags_by_name/get_tags_by_name_route.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. + */ + +import * as rt from 'io-ts'; + +export const getTagsByNameRequest = rt.type({ name: rt.string }); diff --git a/x-pack/plugins/security_solution/common/api/tags/index.ts b/x-pack/plugins/security_solution/common/api/tags/index.ts new file mode 100644 index 0000000000000..3f48011365f42 --- /dev/null +++ b/x-pack/plugins/security_solution/common/api/tags/index.ts @@ -0,0 +1,10 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export * from './create_tag/create_tag_route'; +export * from './get_dashboards_by_tags/get_dashboards_by_tags_route'; +export * from './get_tags_by_name/get_tags_by_name_route'; diff --git a/x-pack/plugins/security_solution/cypress/README.md b/x-pack/plugins/security_solution/cypress/README.md index db67eac909b19..6b3b641e8e59c 100644 --- a/x-pack/plugins/security_solution/cypress/README.md +++ b/x-pack/plugins/security_solution/cypress/README.md @@ -2,17 +2,12 @@ The `security_solution/cypress` directory contains functional UI tests that execute using [Cypress](https://www.cypress.io/). -Currently with Cypress you can develop `functional` tests and coming soon `CCS` and `Upgrade` functional tests. +Currently with Cypress you can develop `functional` tests. If you are still having doubts, questions or queries, please feel free to ping our Cypress champions: - Functional Tests: - Gloria Hornero and Patryk Kopycinsky -- CCS Tests: - - Technical questions around the https://github.com/elastic/integration-test repo: - - Domenico Andreoli - - Doubts regarding testing CCS and Cypress best practices: - - Gloria Hornero ## Table of Contents @@ -51,246 +46,17 @@ Run the tests with the following yarn scripts: | Script Name | Description | | ----------- | ----------- | | cypress | Runs the default Cypress command | -| cypress:open | Opens the Cypress UI with all tests in the `e2e` directory. This also runs a local kibana and ES instance. The kibana instance will reload when you make code changes. This is the recommended way to debug and develop tests. | -| cypress:open:ccs | Opens the Cypress UI and runs all tests in the `ccs_e2e` directory | -| cypress:open:upgrade | Opens the Cypress UI and runs all tests in the `upgrade_e2e` directory | +| cypress:open | Opens the Cypress UI with all tests in the `e2e` directory. This also runs a local kibana and ES instance. The kibana instance will reload when you make code changes. This is the recommended way to debug and develop tests. |C | cypress:run | Runs all tests in the `e2e` directory excluding `investigations` and `explore` directories in headless mode | | cypress:run:cases | Runs all tests under `explore/cases` in the `e2e` directory related to the Cases area team in headless mode | | cypress:run:reporter | Runs all tests with the specified configuration in headless mode and produces a report using `cypress-multi-reporters` | | cypress:run:respops | Runs all tests related to the Response Ops area team, specifically tests in `detection_alerts`, `detection_rules`, and `exceptions` directories in headless mode | -| cypress:run:ccs | Runs all tests in the `ccs_e2e` directory in headless mode | -| cypress:run:upgrade | Runs all tests in the `upgrade_e2e` directory in headless mode | | cypress:investigations:run | Runs all tests in the `e2e/investigations` directory in headless mode | | cypress:explore:run | Runs all tests in the `e2e/explore` directory in headless mode | | junit:merge | Merges individual test reports into a single report and moves the report to the `junit` directory | Please note that all the headless mode commands do not open the Cypress UI and are typically used in CI/CD environments. The scripts that open the Cypress UI are useful for development and debugging. -### Execution modes - -There are currently four ways to run the tests, comprised of two execution modes and two target environments, which will be detailed below. - -#### Interactive mode - -When you run Cypress in interactive mode, an interactive runner is displayed that allows you to see commands as they execute while also viewing the application under test. For more information, please see [cypress documentation](https://docs.cypress.io/guides/core-concepts/test-runner.html#Overview). - -#### Headless mode - -A headless browser is a browser simulation program that does not have a user interface. These programs operate like any other browser, but do not display any UI. This is why meanwhile you are executing the tests on this mode you are not going to see the application under test. Just the output of the test is displayed on the terminal once the execution is finished. - -### Target environments - -#### FTR (CI) - -This is the configuration used by CI. It uses the FTR to spawn both a Kibana instance (http://localhost:5620) and an Elasticsearch instance (http://localhost:9220) with a preloaded minimum set of data (see preceding "Test data" section), and then executes cypress against this stack. You can find this configuration in `x-pack/test/security_solution_cypress` - -Tests run on buildkite PR pipeline is parallelized. It can be configured in [.buildkite/pipelines/pull_request/security_solution.yml](https://github.com/elastic/kibana/blob/main/.buildkite/pipelines/pull_request/security_solution.yml) with property `parallelism` - -```yml - ... - agents: - queue: n2-4-spot - depends_on: build - timeout_in_minutes: 120 - parallelism: 4 - ... -``` - -#### Custom Targets - -This configuration runs cypress tests against an arbitrary host. -**WARNING**: When using your own instances you need to take into account that if you already have data on it, the tests may fail, as well as, they can put your instances in an undesired state, since our tests uses es_archive to populate data. - -#### integration-test (CI) - -This configuration is driven by [elastic/integration-test](https://github.com/elastic/integration-test) which, as part of a bigger set of tests, provisions one VM with two instances configured in CCS mode and runs the [CCS Cypress test specs](./ccs_e2e). - -The two clusters are named `admin` and `data` and are reachable as follows: - -| | Elasticsearch | Kibana | -| ----- | ---------------------- | ---------------------- | -| admin | https://localhost:9200 | https://localhost:5601 | -| data | https://localhost:9210 | https://localhost:5602 | - -### Working with integration-test - -#### Initial setup and prerequisites - -The entry point is [integration-test/jenkins_test.sh](https://github.com/elastic/integration-test/blob/master/jenkins_test.sh), it essentially prepares the VMs and there runs tests. Some snapshots (`phase1` and `phase2`) are taken along the way so that it's possible to short cut the VM preparation when iterating over tests for development or debugging. - -The VMs are managed with Vagrant using the VirtualBox provider therefore you need to install both these tools. The host OS can be either Windows, Linux or MacOS. - -`jenkins_test.sh` assumes that a `kibana` folder is present alongside the `integration-test` where it's executed from. The `kibana` folder is used only for loading the test suites though, the actual packages for the VMs preparation are downloaded from elastic.co according to the `BUILD` environment variable or the branch which `jenkins_test.sh` is invoked from. It's your responsibility to checkout the matching branches in `kibana` and `integration-test` as needed. - -Read [integration-test#readme](https://github.com/elastic/integration-test#readme) for further details. - -#### Use cases - -There is no way to just set up the test environment without also executing tests at least once. On the other hand it's time consuming to go throught the whole CI procedure to just iterate over the tests therefore the following instructions support the two use cases: - -- reproduce e2e the CI execution locally, ie. for debugging a CI failure -- use the CI script to easily setup the environment for tests development/debugging - -The missing use case, application TDD, requires a different solution that runs from the checked out repositories instead of the pre-built packages and it's yet to be developed. - -#### Run the CI flow - -This is the CI flow narrowed down to the execution of CCS Cypress tests: - -```shell -cd integration-test -VMS=ubuntu16_tar_ccs_cypress ./jenkins_test.sh -``` - -It destroys and rebuilds the VM. There installs, provisions and starts the stack according to the configuration in [integration-test/provision/ubuntu16_tar_ccs_cypress.sh](https://github.com/elastic/integration-test/blob/master/provision/ubuntu16_tar_ccs_cypress.sh). - -The tests are executed using the FTR runner `SecuritySolutionCypressCcsTestRunner` defined in [x-pack/test/security_solution_cypress/runner.ts](../../../test/security_solution_cypress/runner.ts) as configured in [x-pack/test/security_solution_cypress/ccs_config.ts](../../../test/security_solution_cypress/ccs_config.ts). - -#### Re-run the tests - -After the first run it's possible to restore the VM at `phase2`, right before tests were executed, and run them again: - -```shell -cd integration-test -MODE=retest ./jenkins_test.sh -``` - -It remembers which VM the first round was executed on, you don't need to specify `VMS` any more. - -In case your tests are cleaning after themselves and therefore result idempotent, you can skip the restoration to `phase2` and directly run the Cypress command line. See [CCS Custom Target + Headless](#ccs-custom-target--headless) further below for details but ensure you'll define the `CYPRESS_*` following the correspondence: - -| Cypress command line | [integration-test/provision/ubuntu16_tar_ccs_cypress.sh](https://github.com/elastic/integration-test/blob/master/provision/ubuntu16_tar_ccs_cypress.sh) | -| ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -| CYPRESS_BASE_URL | TEST_KIBANA_URL | -| CYPRESS_ELASTICSEARCH_URL | TEST_ES_URL | -| CYPRESS_CCS_KIBANA_URL | TEST_KIBANA_URLDATA | -| CYPRESS_CCS_ELASTICSEARCH_URL | TEST_ES_URLDATA | -| CYPRESS_CCS_REMOTE_NAME | TEST_CCS_REMOTE_NAME | -| CYPRESS_ELASTICSEARCH_USERNAME | ELASTICSEARCH_USERNAME | -| CYPRESS_ELASTICSEARCH_PASSWORD | ELASTICSEARCH_PASSWORD | -| TEST_CA_CERT_PATH | integration-test/certs/ca/ca.crt | - -Note: `TEST_CA_CERT_PATH` above is truly without `CYPRESS_` prefix. - -### Test Execution: Examples - -#### FTR + Headless (Chrome) - -Since this is how tests are run on CI, this will likely be the configuration you want to reproduce failures locally, etc. - -```shell -# bootstrap kibana from the project root -yarn kbn bootstrap - -# build the plugins/assets that cypress will execute against -node scripts/build_kibana_platform_plugins - -# launch the cypress test runner -cd x-pack/plugins/security_solution -yarn cypress:run-as-ci -``` - -#### FTR + Headless (Firefox) - -Since this is how tests are run on CI, this will likely be the configuration you want to reproduce failures locally, etc. - -```shell -# bootstrap kibana from the project root -yarn kbn bootstrap - -# build the plugins/assets that cypress will execute against -node scripts/build_kibana_platform_plugins - -# launch the cypress test runner -cd x-pack/plugins/security_solution -yarn cypress:run-as-ci:firefox -``` - -#### FTR + Interactive - -This is the preferred mode for developing new tests. - -```shell -# bootstrap kibana from the project root -yarn kbn bootstrap - -# build the plugins/assets that cypress will execute against -node scripts/build_kibana_platform_plugins - -# launch the cypress test runner -cd x-pack/plugins/security_solution -yarn cypress:open-as-ci -``` - -Note that you can select the browser you want to use on the top right side of the interactive runner. - -#### Custom Target + Headless (Chrome) - -This mode may be useful for testing a release, e.g. spin up a build candidate -and point cypress at it to catch regressions. - -```shell -# bootstrap kibana from the project root -yarn kbn bootstrap - -# load auditbeat data needed for test execution (which FTR normally does for us) -cd x-pack/plugins/security_solution -node ../../../scripts/es_archiver load auditbeat --dir ../../test/security_solution_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http(s)://:@ --kibana-url http(s)://:@ - -# launch the cypress test runner with overridden environment variables -cd x-pack/plugins/security_solution -CYPRESS_BASE_URL=http(s)://:@ CYPRESS_ELASTICSEARCH_URL=http(s)://:@ CYPRESS_ELASTICSEARCH_USERNAME= CYPRESS_ELASTICSEARCH_PASSWORD= yarn cypress:run -``` - -#### Custom Target + Headless (Firefox) - -This mode may be useful for testing a release, e.g. spin up a build candidate -and point cypress at it to catch regressions. - -```shell -# bootstrap kibana from the project root -yarn kbn bootstrap - -# load auditbeat data needed for test execution (which FTR normally does for us) -cd x-pack/plugins/security_solution -node ../../../scripts/es_archiver load auditbeat --dir ../../test/security_solution_cypress/es_archives --config ../../../test/functional/config.base.js --es-url http(s)://:@ --kibana-url http(s)://:@ - -# launch the cypress test runner with overridden environment variables -cd x-pack/plugins/security_solution -CYPRESS_BASE_URL=http(s)://:@ CYPRESS_ELASTICSEARCH_URL=http(s)://:@ CYPRESS_ELASTICSEARCH_USERNAME= CYPRESS_ELASTICSEARCH_PASSWORD= yarn cypress:run:firefox -``` - -#### CCS Custom Target + Headless - -This test execution requires two clusters configured for CCS. See [Search across clusters](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-cross-cluster-search.html) for instructions on how to prepare such setup. - -The instructions below assume: - -- Search cluster is on server1 -- Remote cluster is on server2 -- Remote cluster is accessible from the search cluster with name `remote` -- Security and TLS are enabled - -```shell -# bootstrap Kibana from the project root -yarn kbn bootstrap - -# launch the Cypress test runner with overridden environment variables -cd x-pack/plugins/security_solution -CYPRESS_ELASTICSEARCH_USERNAME="user" \ -CYPRESS_ELASTICSEARCH_PASSWORD="pass" \ -CYPRESS_BASE_URL="https://user:pass@server1:5601" \ -CYPRESS_ELASTICSEARCH_URL="https://user:pass@server1:9200" \ -CYPRESS_CCS_KIBANA_URL="https://user:pass@server2:5601" \ -CYPRESS_CCS_ELASTICSEARCH_URL="https://user:pass@server2:9200" \ -CYPRESS_CCS_REMOTE_NAME="remote" \ -yarn cypress:run:ccs -``` - -Similar sequence, just ending with `yarn cypress:open:ccs`, can be used for interactive test running via Cypress UI. - -Appending `--browser firefox` to the `yarn cypress:run:ccs` command above will run the tests on Firefox instead of Chrome. - ## Debugging your test In order to be able to debug any Cypress test you need to open Cypress on visual mode. [Here](https://docs.cypress.io/guides/guides/debugging) @@ -302,10 +68,6 @@ If you are debugging a flaky test, a good tip is to insert a `cy.wait('); -``` - -They will use the `CYPRESS_CCS_*_URL` environment variables for accessing the remote cluster. Complex tests involving local and remote data can interleave them with `esArchiverLoad` and `esArchiverUnload` as needed. - -#### Remote indices queries - -Queries accessing remote indices follow the usual `:` notation but should not hard-code the remote name in the test itself. - -For such reason the environemnt variable `CYPRESS_CCS_REMOTE_NAME` is defined and, in the case of detection rules, used as shown below: - -```javascript -const ccsRemoteName: string = Cypress.env('CCS_REMOTE_NAME'); - -export const unmappedCCSRule: CustomRule = { - customQuery: '*:*', - index: [`${ccsRemoteName}:unmapped*`], - ... -}; - -``` - -Similar approach should be used in defining all index patterns, rules, and queries to be applied on remote data. - ## Development Best Practices Below you will a set of best practices that should be followed when writing Cypress tests. @@ -478,12 +202,6 @@ taken into consideration until another solution is implemented: Remember that minimizing the number of times the web page is loaded, we minimize as well the execution time. -### CCS test specific - -When testing CCS we want to put our focus in making sure that our `Source` instance is receiving properly the data that comes from the `Remote` instances, as well as the data is displayed as we expect on the `Source`. - -For that reason and in order to make our test more stable, use the API to execute all the actions needed before the assertions, and use Cypress to assert that the UI is displaying all the expected things. - ## Test Artifacts When Cypress tests are run headless on the command line, artifacts diff --git a/x-pack/plugins/security_solution/cypress/ccs_e2e/detection_alerts/alerts_details.cy.ts b/x-pack/plugins/security_solution/cypress/ccs_e2e/detection_alerts/alerts_details.cy.ts deleted file mode 100644 index 2865eb6e5ee9b..0000000000000 --- a/x-pack/plugins/security_solution/cypress/ccs_e2e/detection_alerts/alerts_details.cy.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { JSON_TEXT } from '../../screens/alerts_details'; - -import { expandFirstAlert, waitForAlerts } from '../../tasks/alerts'; -import { openJsonView } from '../../tasks/alerts_details'; -import { createRule } from '../../tasks/api_calls/rules'; -import { cleanKibana } from '../../tasks/common'; -import { login, visitWithoutDateRange } from '../../tasks/login'; - -import { getUnmappedCCSRule } from '../../objects/rule'; - -import { ALERTS_URL } from '../../urls/navigation'; - -describe('Alert details with unmapped fields', () => { - beforeEach(() => { - login(); - cleanKibana(); - cy.task('esArchiverCCSLoad', 'unmapped_fields'); - createRule(getUnmappedCCSRule()); - visitWithoutDateRange(ALERTS_URL); - waitForAlerts(); - expandFirstAlert(); - }); - - it('Displays the unmapped field on the JSON view', () => { - const expectedUnmappedValue = 'This is the unmapped field'; - - openJsonView(); - - cy.get(JSON_TEXT).then((x) => { - const parsed = JSON.parse(x.text()); - expect(parsed.fields.unmapped[0]).to.equal(expectedUnmappedValue); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/cypress/ccs_e2e/detection_rules/event_correlation_rule.cy.ts b/x-pack/plugins/security_solution/cypress/ccs_e2e/detection_rules/event_correlation_rule.cy.ts deleted file mode 100644 index ea2a1797fec5b..0000000000000 --- a/x-pack/plugins/security_solution/cypress/ccs_e2e/detection_rules/event_correlation_rule.cy.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { getCCSEqlRule } from '../../objects/rule'; - -import { ALERTS_COUNT, ALERT_DATA_GRID } from '../../screens/alerts'; - -import { - filterByCustomRules, - goToRuleDetails, - waitForRulesTableToBeLoaded, -} from '../../tasks/alerts_detection_rules'; -import { createRule } from '../../tasks/api_calls/rules'; -import { cleanKibana } from '../../tasks/common'; -import { waitForAlertsToPopulate, waitForTheRuleToBeExecuted } from '../../tasks/create_new_rule'; -import { login, visitWithoutDateRange } from '../../tasks/login'; - -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../urls/navigation'; - -describe('Detection rules', function () { - const expectedNumberOfAlerts = '1 alert'; - - beforeEach('Reset signals index', function () { - cleanKibana(); - }); - - it('EQL rule on remote indices generates alerts', function () { - cy.task('esArchiverCCSLoad', 'linux_process'); - const rule = getCCSEqlRule(); - login(); - createRule(rule); - visitWithoutDateRange(DETECTIONS_RULE_MANAGEMENT_URL); - waitForRulesTableToBeLoaded(); - filterByCustomRules(); - goToRuleDetails(); - waitForTheRuleToBeExecuted(); - waitForAlertsToPopulate(); - - cy.get(ALERTS_COUNT).should('have.text', expectedNumberOfAlerts); - cy.get(ALERT_DATA_GRID) - .invoke('text') - .then((text) => { - cy.log('ALERT_DATA_GRID', text); - expect(text).contains(rule.name); - expect(text).contains(rule.severity); - expect(text).contains(rule.risk_score); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/cypress/support/e2e.js b/x-pack/plugins/security_solution/cypress/support/e2e.js index 3984b4be49727..477c2606153b7 100644 --- a/x-pack/plugins/security_solution/cypress/support/e2e.js +++ b/x-pack/plugins/security_solution/cypress/support/e2e.js @@ -23,6 +23,9 @@ // Import commands.js using ES2015 syntax: import './commands'; import 'cypress-real-events/support'; +import registerCypressGrep from '@cypress/grep'; + +registerCypressGrep(); Cypress.on('uncaught:exception', () => { return false; diff --git a/x-pack/plugins/security_solution/cypress/upgrade_e2e/detections/detection_rules/custom_query_rule.cy.ts b/x-pack/plugins/security_solution/cypress/upgrade_e2e/detections/detection_rules/custom_query_rule.cy.ts deleted file mode 100644 index a9950f840fa72..0000000000000 --- a/x-pack/plugins/security_solution/cypress/upgrade_e2e/detections/detection_rules/custom_query_rule.cy.ts +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import semver from 'semver'; -import { - ALERT_GRID_CELL, - DESTINATION_IP, - HOST_NAME, - PROCESS_NAME_COLUMN, - PROCESS_NAME, - REASON, - RISK_SCORE, - RULE_NAME, - SEVERITY, - SOURCE_IP, - USER_NAME, -} from '../../../screens/alerts'; -import { SERVER_SIDE_EVENT_COUNT } from '../../../screens/alerts_detection_rules'; -import { - ADDITIONAL_LOOK_BACK_DETAILS, - ABOUT_DETAILS, - ABOUT_RULE_DESCRIPTION, - CUSTOM_QUERY_DETAILS, - DEFINITION_DETAILS, - INDEX_PATTERNS_DETAILS, - RISK_SCORE_DETAILS, - RULE_NAME_HEADER, - RULE_TYPE_DETAILS, - RUNS_EVERY_DETAILS, - SCHEDULE_DETAILS, - SEVERITY_DETAILS, - TIMELINE_TEMPLATE_DETAILS, -} from '../../../screens/rule_details'; - -import { getDetails } from '../../../tasks/rule_details'; -import { waitForPageToBeLoaded } from '../../../tasks/common'; -import { - waitForRulesTableToBeLoaded, - goToTheRuleDetailsOf, -} from '../../../tasks/alerts_detection_rules'; -import { login, visit } from '../../../tasks/login'; - -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation'; - -const EXPECTED_NUMBER_OF_ALERTS = '1'; - -const alert = { - rule: 'Custom query rule for upgrade', - severity: 'low', - riskScore: '7', - reason: - 'file event with process test, file The file to test, by Security Solution on security-solution.local created low alert Custom query rule for upgrade.', - reasonAlt: '—', - hostName: 'security-solution.local', - username: 'Security Solution', - processName: 'test', - fileName: 'The file to test', - sourceIp: '127.0.0.1', - destinationIp: '127.0.0.2', -}; - -const rule = { - customQuery: '*:*', - name: 'Custom query rule for upgrade', - description: 'My description', - index: ['auditbeat-custom*'], - severity: 'Low', - riskScore: '7', - timelineTemplate: 'none', - runsEvery: '24h', - lookBack: '49976h', - timeline: 'None', -}; - -describe('After an upgrade, the custom query rule', () => { - before(() => { - login(); - visit(DETECTIONS_RULE_MANAGEMENT_URL); - waitForRulesTableToBeLoaded(); - goToTheRuleDetailsOf(rule.name); - waitForPageToBeLoaded(); - // Possible bug on first attempt sometimes redirects page back to alerts - // Going to retry the block once - cy.url().then((url) => { - const currentUrl = url; - cy.log(`Current URL is : ${currentUrl}`); - if (!currentUrl.includes(DETECTIONS_RULE_MANAGEMENT_URL)) { - cy.log('Retrying not on correct page!'); - visit(DETECTIONS_RULE_MANAGEMENT_URL); - waitForRulesTableToBeLoaded(); - goToTheRuleDetailsOf(rule.name); - waitForPageToBeLoaded(); - } - }); - cy.url().should('include', DETECTIONS_RULE_MANAGEMENT_URL); - }); - - it('Has the expected alerts number', () => { - cy.get(SERVER_SIDE_EVENT_COUNT).contains(EXPECTED_NUMBER_OF_ALERTS); - }); - - it('Displays the rule details', () => { - cy.get(RULE_NAME_HEADER).should('contain', `${rule.name}`); - cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', rule.description); - cy.get(ABOUT_DETAILS).within(() => { - getDetails(SEVERITY_DETAILS).should('have.text', rule.severity); - getDetails(RISK_SCORE_DETAILS).should('have.text', rule.riskScore); - }); - cy.get(DEFINITION_DETAILS).within(() => { - getDetails(INDEX_PATTERNS_DETAILS).should('have.text', rule.index.join('')); - getDetails(CUSTOM_QUERY_DETAILS).should('have.text', rule.customQuery); - getDetails(RULE_TYPE_DETAILS).should('have.text', 'Query'); - getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', rule.timeline); - }); - cy.get(SCHEDULE_DETAILS).within(() => { - getDetails(RUNS_EVERY_DETAILS).should('have.text', rule.runsEvery); - getDetails(ADDITIONAL_LOOK_BACK_DETAILS).should('have.text', rule.lookBack); - }); - }); - - it('Displays the alert details at the tgrid', () => { - let expectedReason = alert.reason; - if (semver.lt(Cypress.env('ORIGINAL_VERSION'), '7.15.0')) { - expectedReason = alert.reasonAlt; - } - cy.get(ALERT_GRID_CELL).first().focus(); - cy.get(RULE_NAME).should('have.text', alert.rule); - cy.get(SEVERITY).should('have.text', alert.severity); - cy.get(RISK_SCORE).should('have.text', alert.riskScore); - cy.get(REASON).contains(expectedReason); - cy.get(HOST_NAME).should('have.text', alert.hostName); - cy.get(USER_NAME).should('have.text', alert.username); - cy.get(PROCESS_NAME_COLUMN).eq(0).scrollIntoView(); - cy.get(PROCESS_NAME).should('have.text', alert.processName); - cy.get(SOURCE_IP).should('have.text', alert.sourceIp); - cy.get(DESTINATION_IP).should('have.text', alert.destinationIp); - }); -}); diff --git a/x-pack/plugins/security_solution/cypress/upgrade_e2e/detections/detection_rules/threshold_rule.cy.ts b/x-pack/plugins/security_solution/cypress/upgrade_e2e/detections/detection_rules/threshold_rule.cy.ts deleted file mode 100644 index 78c34dfd43a7e..0000000000000 --- a/x-pack/plugins/security_solution/cypress/upgrade_e2e/detections/detection_rules/threshold_rule.cy.ts +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ -import semver from 'semver'; -import { REASON, RISK_SCORE, RULE_NAME, SEVERITY } from '../../../screens/alerts'; -import { SERVER_SIDE_EVENT_COUNT } from '../../../screens/alerts_detection_rules'; -import { - ADDITIONAL_LOOK_BACK_DETAILS, - ABOUT_DETAILS, - ABOUT_RULE_DESCRIPTION, - CUSTOM_QUERY_DETAILS, - DEFINITION_DETAILS, - INDEX_PATTERNS_DETAILS, - RISK_SCORE_DETAILS, - RULE_NAME_HEADER, - RULE_TYPE_DETAILS, - RUNS_EVERY_DETAILS, - SCHEDULE_DETAILS, - SEVERITY_DETAILS, - THRESHOLD_DETAILS, - TIMELINE_TEMPLATE_DETAILS, -} from '../../../screens/rule_details'; - -import { getDetails } from '../../../tasks/rule_details'; -import { expandFirstAlert } from '../../../tasks/alerts'; -import { waitForPageToBeLoaded } from '../../../tasks/common'; -import { - goToTheRuleDetailsOf, - waitForRulesTableToBeLoaded, -} from '../../../tasks/alerts_detection_rules'; -import { login, visit } from '../../../tasks/login'; - -import { DETECTIONS_RULE_MANAGEMENT_URL } from '../../../urls/navigation'; -import { - OVERVIEW_RISK_SCORE, - OVERVIEW_RULE, - OVERVIEW_SEVERITY, - OVERVIEW_STATUS, - OVERVIEW_RULE_TYPE, -} from '../../../screens/alerts_details'; - -const EXPECTED_NUMBER_OF_ALERTS = '1'; - -const alert = { - rule: 'Threshold rule', - severity: 'medium', - riskScore: '17', - reason: 'event created medium alert Threshold rule.', - reasonAlt: '—', - hostName: 'security-solution.local', - thresholdCount: '2', -}; - -const rule = { - customQuery: '*:*', - name: 'Threshold rule', - description: 'Threshold rule for testing upgrade', - index: ['auditbeat-threshold*'], - severity: 'Medium', - riskScore: '17', - timelineTemplate: 'none', - runsEvery: '24h', - lookBack: '49976h', - timeline: 'None', - ruleType: 'threshold', - thresholdField: 'host.name', - thresholdValue: '1', -}; - -describe('After an upgrade, the threshold rule', () => { - before(() => { - login(); - visit(DETECTIONS_RULE_MANAGEMENT_URL); - waitForRulesTableToBeLoaded(); - goToTheRuleDetailsOf(rule.name); - waitForPageToBeLoaded(); - }); - - it('Has the expected alerts number', () => { - cy.get(SERVER_SIDE_EVENT_COUNT).contains(EXPECTED_NUMBER_OF_ALERTS); - }); - - it('Displays the rule details', () => { - cy.get(RULE_NAME_HEADER).should('contain', rule.name); - cy.get(ABOUT_RULE_DESCRIPTION).should('have.text', rule.description); - cy.get(ABOUT_DETAILS).within(() => { - getDetails(SEVERITY_DETAILS).should('have.text', rule.severity); - getDetails(RISK_SCORE_DETAILS).should('have.text', rule.riskScore); - }); - cy.get(DEFINITION_DETAILS).within(() => { - getDetails(INDEX_PATTERNS_DETAILS).should('have.text', rule.index.join('')); - getDetails(CUSTOM_QUERY_DETAILS).should('have.text', rule.customQuery); - getDetails(RULE_TYPE_DETAILS).should('have.text', 'Threshold'); - getDetails(TIMELINE_TEMPLATE_DETAILS).should('have.text', rule.timeline); - getDetails(THRESHOLD_DETAILS).should( - 'have.text', - `Results aggregated by ${rule.thresholdField} >= ${rule.thresholdValue}` - ); - }); - cy.get(SCHEDULE_DETAILS).within(() => { - getDetails(RUNS_EVERY_DETAILS).should('have.text', rule.runsEvery); - getDetails(ADDITIONAL_LOOK_BACK_DETAILS).should('have.text', rule.lookBack); - }); - }); - - it('Displays the alert details in the TGrid', () => { - let expectedReason = alert.reason; - if (semver.lt(Cypress.env('ORIGINAL_VERSION'), '7.15.0')) { - expectedReason = alert.reasonAlt; - } - cy.scrollTo('bottom'); - cy.get(RULE_NAME).should('have.text', alert.rule); - cy.get(SEVERITY).should('have.text', alert.severity); - cy.get(RISK_SCORE).should('have.text', alert.riskScore); - cy.get(REASON).contains(expectedReason); - // TODO: Needs data-test-subj - // cy.get(HOST_NAME).should('have.text', alert.hostName); - }); - - it('Displays the Overview alert details in the alert flyout', () => { - expandFirstAlert(); - - cy.get(OVERVIEW_STATUS).should('have.text', 'open'); - cy.get(OVERVIEW_RULE).should('have.text', alert.rule); - cy.get(OVERVIEW_SEVERITY).contains(alert.severity, { matchCase: false }); - cy.get(OVERVIEW_RISK_SCORE).should('have.text', alert.riskScore); - // TODO: Find out what this is - // cy.get(OVERVIEW_HOST_NAME).should('have.text', alert.hostName); - // TODO: Needs data-test-subj - // cy.get(OVERVIEW_THRESHOLD_COUNT).should('have.text', alert.thresholdCount); - cy.get(OVERVIEW_RULE_TYPE).should('have.text', rule.ruleType); - // TODO: Needs data-test-subj - // cy.get(OVERVIEW_THRESHOLD_VALUE).should('have.text', rule.thresholdValue); - }); -}); diff --git a/x-pack/plugins/security_solution/cypress/upgrade_e2e/threat_hunting/cases/import_case.cy.ts b/x-pack/plugins/security_solution/cypress/upgrade_e2e/threat_hunting/cases/import_case.cy.ts deleted file mode 100644 index 4eecc36fe928a..0000000000000 --- a/x-pack/plugins/security_solution/cypress/upgrade_e2e/threat_hunting/cases/import_case.cy.ts +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { - ALL_CASES_CLOSED_CASES_STATS, - ALL_CASES_COMMENTS_COUNT, - ALL_CASES_IN_PROGRESS_CASES_STATS, - ALL_CASES_NAME, - ALL_CASES_NOT_PUSHED, - ALL_CASES_NUMBER_OF_ALERTS, - ALL_CASES_OPEN_CASES_STATS, - ALL_CASES_IN_PROGRESS_STATUS, -} from '../../../screens/all_cases'; -import { - CASES_TAGS, - CASE_CONNECTOR, - CASE_DETAILS_PAGE_TITLE, - CASE_DETAILS_USERNAMES, - CASE_EVENT_UPDATE, - CASE_IN_PROGRESS_STATUS, - CASE_SWITCH, - CASE_USER_ACTION, -} from '../../../screens/case_details'; -import { CASES_PAGE } from '../../../screens/kibana_navigation'; - -import { goToCaseDetails } from '../../../tasks/all_cases'; -import { deleteCase } from '../../../tasks/case_details'; -import { - navigateFromKibanaCollapsibleTo, - openKibanaNavigation, -} from '../../../tasks/kibana_navigation'; -import { login, visitWithoutDateRange } from '../../../tasks/login'; -import { importCase } from '../../../tasks/saved_objects'; - -import { KIBANA_SAVED_OBJECTS } from '../../../urls/navigation'; - -const CASE_NDJSON = '7_16_case.ndjson'; -const importedCase = { - title: '7.16 case to export', - user: 'glo', - initial: 'g', - reporter: 'glo@test.co', - tags: 'export case', - numberOfAlerts: '1', - numberOfComments: '2', - description: - "This is the description of the 7.16 case that I'm going to import in future versions.", - timeline: 'This is just a timeline', - status: 'In progress', - ruleName: 'This is a test', - participants: ['test', 'elastic'], - connector: 'Jira test', -}; -const updateStatusRegex = new RegExp( - `\\S${importedCase.user}marked case as${importedCase.status}\\S*\\s?(\\S*)?\\s?(\\S*)?` -); -const alertUpdateRegex = new RegExp( - `\\S${importedCase.user}added an alert from Unknown\\S*\\s?(\\S*)?\\s?(\\S*)?` -); -const incidentManagementSystemRegex = new RegExp( - `\\S${importedCase.participants[0]}selected ${importedCase.connector} as incident management system\\S*\\s?(\\S*)?\\s?(\\S*)?` -); -const DESCRIPTION = 0; -const TIMELINE = 1; -const LENS = 2; -const STATUS_UPDATE = 0; -const FIRST_ALERT_UPDATE = 1; -const SECOND_ALERT_UPDATE = 2; -const INCIDENT_MANAGEMENT_SYSTEM_UPDATE = 3; -const EXPECTED_NUMBER_OF_UPDATES = 4; -const REPORTER = 0; - -describe('Import case after upgrade', () => { - before(() => { - login(); - visitWithoutDateRange(KIBANA_SAVED_OBJECTS); - importCase(CASE_NDJSON); - openKibanaNavigation(); - navigateFromKibanaCollapsibleTo(CASES_PAGE); - }); - - after(() => { - deleteCase(); - }); - - it('Displays the correct number of opened cases on the cases page', () => { - const EXPECTED_NUMBER_OF_OPENED_CASES = '0'; - cy.get(ALL_CASES_OPEN_CASES_STATS).should('have.text', EXPECTED_NUMBER_OF_OPENED_CASES); - }); - - it('Displays the correct number of in progress cases on the cases page', () => { - const EXPECTED_NUMBER_OF_IN_PROGRESS_CASES = '1'; - cy.get(ALL_CASES_IN_PROGRESS_CASES_STATS).should( - 'have.text', - EXPECTED_NUMBER_OF_IN_PROGRESS_CASES - ); - }); - - it('Displays the correct number of closed cases on the cases page', () => { - const EXPECTED_NUMBER_OF_CLOSED_CASES = '0'; - cy.get(ALL_CASES_CLOSED_CASES_STATS).should('have.text', EXPECTED_NUMBER_OF_CLOSED_CASES); - }); - - it('Displays the correct case details on the cases page', () => { - cy.get(ALL_CASES_NAME).should('have.text', importedCase.title); - cy.get(ALL_CASES_NUMBER_OF_ALERTS).should('have.text', importedCase.numberOfAlerts); - cy.get(ALL_CASES_COMMENTS_COUNT).should('have.text', importedCase.numberOfComments); - cy.get(ALL_CASES_NOT_PUSHED).should('be.visible'); - cy.get(ALL_CASES_IN_PROGRESS_STATUS).should('be.visible'); - }); - - it('Displays the correct case details on the case details page', () => { - goToCaseDetails(); - - cy.get(CASE_DETAILS_PAGE_TITLE).should('have.text', importedCase.title); - cy.get(CASE_IN_PROGRESS_STATUS).should('exist'); - cy.get(CASE_SWITCH).should('have.attr', 'aria-checked', 'false'); - cy.get(CASE_USER_ACTION).eq(DESCRIPTION).should('have.text', importedCase.description); - cy.get(CASE_USER_ACTION).eq(TIMELINE).should('have.text', importedCase.timeline); - cy.get(CASE_USER_ACTION).eq(LENS).should('have.text', ''); - cy.get(CASE_EVENT_UPDATE).should('have.length', EXPECTED_NUMBER_OF_UPDATES); - cy.get(CASE_EVENT_UPDATE).eq(STATUS_UPDATE).invoke('text').should('match', updateStatusRegex); - cy.get(CASE_EVENT_UPDATE) - .eq(FIRST_ALERT_UPDATE) - .invoke('text') - .should('match', alertUpdateRegex); - cy.get(CASE_EVENT_UPDATE) - .eq(SECOND_ALERT_UPDATE) - .invoke('text') - .should('match', alertUpdateRegex); - cy.get(CASE_EVENT_UPDATE) - .eq(INCIDENT_MANAGEMENT_SYSTEM_UPDATE) - .invoke('text') - .should('match', incidentManagementSystemRegex); - // TODO: Needs data-test-subj - // cy.get(CASE_DETAILS_USERNAMES).should('have.length', EXPECTED_NUMBER_OF_PARTICIPANTS); - // TODO: Investigate why this changes, not reliable to verify - // cy.get(CASE_DETAILS_USERNAMES).eq(FIRST_PARTICIPANT).should('have.text', importedCase.user); - // cy.get(CASE_DETAILS_USERNAMES) - // .eq(SECOND_PARTICIPANT) - // .should('have.text', importedCase.participants[0]); - // cy.get(CASE_DETAILS_USERNAMES) - // .eq(THIRD_PARTICIPANT) - // .should('have.text', importedCase.participants[1]); - cy.get(CASE_DETAILS_USERNAMES).eq(REPORTER).should('have.text', importedCase.user); - cy.get(CASES_TAGS(importedCase.tags)).should('exist'); - cy.get(CASE_CONNECTOR).should('have.text', importedCase.connector); - }); -}); diff --git a/x-pack/plugins/security_solution/cypress/upgrade_e2e/threat_hunting/timeline/import_timeline.cy.ts b/x-pack/plugins/security_solution/cypress/upgrade_e2e/threat_hunting/timeline/import_timeline.cy.ts deleted file mode 100644 index 476ad34652a63..0000000000000 --- a/x-pack/plugins/security_solution/cypress/upgrade_e2e/threat_hunting/timeline/import_timeline.cy.ts +++ /dev/null @@ -1,201 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import semver from 'semver'; -import { - CORRELATION_EVENT_TABLE_CELL, - DATA_PROVIDERS, - DATE_PICKER_END, - DATE_PICKER_START, - DESTINATION_IP_KPI, - GRAPH_TAB_BUTTON, - HOST_KPI, - QUERY_TAB_BUTTON, - NOTE_DESCRIPTION, - NOTE_PREVIEW, - NOTES_TAB_BUTTON, - PINNED_TAB_BUTTON, - PROCESS_KPI, - QUERY_EVENT_TABLE_CELL, - SOURCE_IP_KPI, - TIMELINE_CORRELATION_TAB, - TIMELINE_CORRELATION_INPUT, - TIMELINE_DESCRIPTION, - TIMELINE_QUERY, - TIMELINE_TITLE, - USER_KPI, -} from '../../../screens/timeline'; -import { - NOTE, - TIMELINES_USERNAME, - TIMELINE_NAME, - TIMELINES_DESCRIPTION, - TIMELINES_NOTES_COUNT, - TIMELINES_PINNED_EVENT_COUNT, -} from '../../../screens/timelines'; - -import { login, visitWithoutDateRange } from '../../../tasks/login'; -import { - closeTimeline, - deleteTimeline, - goToCorrelationTab, - goToNotesTab, - setKibanaTimezoneToUTC, -} from '../../../tasks/timeline'; -import { expandNotes, importTimeline, openTimeline } from '../../../tasks/timelines'; - -import { TIMELINES_URL } from '../../../urls/navigation'; - -const timeline = '7_15_timeline.ndjson'; -const username = 'elastic'; - -const timelineDetails = { - dateStart: 'Oct 10, 2020 @ 22:00:00.000', - dateEnd: 'Oct 11, 2030 @ 15:13:15.851', - queryTab: 'Query4', - queryTabAlt: 'Query2', - correlationTab: 'Correlation', - analyzerTab: 'Analyzer', - notesTab: 'Notes2', - pinnedTab: 'Pinned1', -}; - -const detectionAlert = { - message: '—', - eventCategory: 'file', - eventAction: 'initial_scan', - hostName: 'security-solution.local', - sourceIp: '127.0.0.1', - destinationIp: '127.0.0.2', - userName: 'Security Solution', -}; - -const event = { - timestamp: 'Nov 4, 2021 @ 10:09:29.438', - message: '—', - eventCategory: 'file', - eventAction: 'initial_scan', - hostName: 'security-solution.local', - sourceIp: '127.0.0.1', - destinationIp: '127.0.0.2', - userName: 'Security Solution', -}; - -describe('Import timeline after upgrade', () => { - before(() => { - login(); - visitWithoutDateRange(TIMELINES_URL); - importTimeline(timeline); - setKibanaTimezoneToUTC(); - }); - - after(() => { - closeTimeline(); - deleteTimeline(); - }); - - it('Displays the correct timeline details on the timelines page', () => { - cy.readFile(`cypress/fixtures/${timeline}`).then((file) => { - const timelineJson = JSON.parse(file); - const regex = new RegExp( - `\\S${timelineJson.globalNotes[0].createdBy}added a note\\S*\\s?(\\S*)?\\s?(\\S*)?${timelineJson.globalNotes[0].createdBy} added a note${timelineJson.globalNotes[0].note}` - ); - - cy.get(TIMELINE_NAME).should('have.text', timelineJson.title); - cy.get(TIMELINES_DESCRIPTION).should('have.text', timelineJson.description); - cy.get(TIMELINES_USERNAME).should('have.text', username); - cy.get(TIMELINES_NOTES_COUNT).should('have.text', timelineJson.globalNotes.length.toString()); - cy.get(TIMELINES_PINNED_EVENT_COUNT).should( - 'have.text', - timelineJson.pinnedEventIds.length.toString() - ); - - expandNotes(); - - cy.get(NOTE).invoke('text').should('match', regex); - }); - }); - - it('Displays the correct timeline details inside the query tab', () => { - let expectedQueryTab = timelineDetails.queryTab; - if (semver.lt(Cypress.env('ORIGINAL_VERSION'), '7.10.0')) { - expectedQueryTab = timelineDetails.queryTabAlt; - } - - openTimeline(); - - cy.readFile(`cypress/fixtures/${timeline}`).then((file) => { - const timelineJson = JSON.parse(file); - - cy.get(TIMELINE_TITLE).should('have.text', timelineJson.title); - cy.get(TIMELINE_DESCRIPTION).should('have.text', timelineJson.description); - cy.get(DATA_PROVIDERS).should('have.length', timelineJson.dataProviders.length.toString()); - cy.get(DATA_PROVIDERS) - .invoke('text') - .then((value) => { - expect(value.replace(/"/g, '')).to.eq(timelineJson.dataProviders[0].name); - }); - cy.get(PROCESS_KPI).should('contain', '0'); - cy.get(USER_KPI).should('contain', '0'); - cy.get(HOST_KPI).should('contain', '1'); - cy.get(SOURCE_IP_KPI).should('contain', '1'); - cy.get(DESTINATION_IP_KPI).should('contain', '1'); - cy.get(DATE_PICKER_START).should('contain', timelineDetails.dateStart); - cy.get(DATE_PICKER_END).should('contain', timelineDetails.dateEnd); - cy.get(TIMELINE_QUERY).should( - 'have.text', - timelineJson.kqlQuery.filterQuery.kuery.expression - ); - cy.get(QUERY_TAB_BUTTON).should('have.text', expectedQueryTab); - cy.get(TIMELINE_CORRELATION_TAB).should('have.text', timelineDetails.correlationTab); - cy.get(GRAPH_TAB_BUTTON).should('have.text', timelineDetails.analyzerTab).and('be.disabled'); - cy.get(NOTES_TAB_BUTTON).should('have.text', timelineDetails.notesTab); - cy.get(PINNED_TAB_BUTTON).should('have.text', timelineDetails.pinnedTab); - - cy.get(QUERY_EVENT_TABLE_CELL).eq(1).should('contain', detectionAlert.message); - cy.get(QUERY_EVENT_TABLE_CELL).eq(2).should('contain', detectionAlert.eventCategory); - cy.get(QUERY_EVENT_TABLE_CELL).eq(3).should('contain', detectionAlert.eventAction); - cy.get(QUERY_EVENT_TABLE_CELL).eq(4).should('contain', detectionAlert.hostName); - cy.get(QUERY_EVENT_TABLE_CELL).eq(5).should('contain', detectionAlert.sourceIp); - cy.get(QUERY_EVENT_TABLE_CELL).eq(6).should('contain', detectionAlert.destinationIp); - cy.get(QUERY_EVENT_TABLE_CELL).eq(7).should('contain', detectionAlert.userName); - - cy.get(QUERY_EVENT_TABLE_CELL).eq(8).should('contain', event.timestamp); - cy.get(QUERY_EVENT_TABLE_CELL).eq(9).should('contain', event.message); - cy.get(QUERY_EVENT_TABLE_CELL).eq(10).should('contain', event.eventCategory); - cy.get(QUERY_EVENT_TABLE_CELL).eq(11).should('contain', event.eventAction); - cy.get(QUERY_EVENT_TABLE_CELL).eq(12).should('contain', event.hostName); - cy.get(QUERY_EVENT_TABLE_CELL).eq(13).should('contain', event.sourceIp); - cy.get(QUERY_EVENT_TABLE_CELL).eq(14).should('contain', event.destinationIp); - cy.get(QUERY_EVENT_TABLE_CELL).eq(15).should('contain', event.userName); - }); - }); - - it('Displays the correct timeline details inside the correlation tab', () => { - goToCorrelationTab(); - - cy.get(TIMELINE_CORRELATION_INPUT).should('be.empty'); - cy.get(CORRELATION_EVENT_TABLE_CELL).should('not.exist'); - }); - - it('Displays the correct timeline details inside the notes tab', () => { - goToNotesTab(); - - cy.readFile(`cypress/fixtures/${timeline}`).then((file) => { - const timelineJson = JSON.parse(file); - const descriptionRegex = new RegExp( - `\\S${username}added description\\S*\\s?(\\S*)?\\s?(\\S*)?${timelineJson.description}` - ); - const noteRegex = new RegExp( - `\\S${timelineJson.globalNotes[0].createdBy}added a note\\S*\\s?(\\S*)?\\s?(\\S*)?${timelineJson.globalNotes[0].createdBy} added a note${timelineJson.globalNotes[0].note}` - ); - - cy.get(NOTE_DESCRIPTION).invoke('text').should('match', descriptionRegex); - cy.get(NOTE_PREVIEW).last().invoke('text').should('match', noteRegex); - }); - }); -}); diff --git a/x-pack/plugins/security_solution/package.json b/x-pack/plugins/security_solution/package.json index a564416154176..19c02e030d391 100644 --- a/x-pack/plugins/security_solution/package.json +++ b/x-pack/plugins/security_solution/package.json @@ -8,23 +8,19 @@ "extract-mitre-attacks": "node scripts/extract_tactics_techniques_mitre.js && node ../../../scripts/eslint ./public/detections/mitre/mitre_tactics_techniques.ts --fix", "build-beat-doc": "node scripts/beat_docs/build.js && node ../../../scripts/eslint ../timelines/server/utils/beat_schema/fields.ts --fix", "cypress": "../../../node_modules/.bin/cypress", + "cypress:burn": "yarn cypress:run:reporter --env burn=2 --concurrency=1 --headed", + "cypress:changed-specs-only": "yarn cypress:run:reporter --changed-specs-only --env burn=2", "cypress:open": "TZ=UTC node ./scripts/start_cypress_parallel open --spec './cypress/e2e/**/*.cy.ts' --config-file ./cypress/cypress.config.ts --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config", - "cypress:open:ccs": "yarn cypress:open --config specPattern=./cypress/ccs_e2e/**/*.cy.ts", - "cypress:open:upgrade": "yarn cypress:open --config specPattern=./cypress/upgrade_e2e/**/*.cy.ts", - "cypress:run": "yarn cypress:run:reporter --browser chrome --spec './cypress/e2e/{,!(investigations,explore)/**/}*.cy.ts'; status=$?; yarn junit:merge && exit $status", - "cypress:run:cases": "yarn cypress:run:reporter --browser chrome --spec './cypress/e2e/explore/cases/*.cy.ts' --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config; status=$?; yarn junit:merge && exit $status", - "cypress:run:firefox": "yarn cypress:run:reporter --browser firefox --spec './cypress/e2e/**/*.cy.ts'; status=$?; yarn junit:merge && exit $status", - "cypress:run:reporter": "TZ=UTC node ./scripts/start_cypress_parallel run --config-file ./cypress/cypress_ci.config.ts --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config --reporter ../../../node_modules/cypress-multi-reporters --reporter-options configFile=./cypress/reporter_config.json", - "cypress:run:respops": "yarn cypress:run:reporter --browser chrome --spec './cypress/e2e/(detection_alerts|detection_rules|exceptions)/*.cy.ts' --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config; status=$?; yarn junit:merge && exit $status", - "cypress:run:ccs": "yarn cypress:run:reporter --browser chrome --config specPattern=./cypress/ccs_e2e/**/*.cy.ts; status=$?; yarn junit:merge && exit $status", - "cypress:run-as-ci:firefox": "node --max-old-space-size=2048 ../../../scripts/functional_tests --config ../../test/security_solution_cypress/config.firefox.ts", - "cypress:run:upgrade": "yarn cypress:run:reporter --browser chrome --config specPattern=./cypress/upgrade_e2e/**/*.cy.ts", + "cypress:run": "yarn cypress:run:reporter --spec './cypress/e2e/{,!(investigations,explore)/**/}*.cy.ts'; status=$?; yarn junit:merge && exit $status", + "cypress:run:cases": "yarn cypress:run:reporter --spec './cypress/e2e/explore/cases/*.cy.ts' --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config; status=$?; yarn junit:merge && exit $status", + "cypress:run:reporter": "TZ=UTC node ./scripts/start_cypress_parallel run --browser chrome --config-file ./cypress/cypress_ci.config.ts --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config --reporter ../../../node_modules/cypress-multi-reporters --reporter-options configFile=./cypress/reporter_config.json", + "cypress:run:respops": "yarn cypress:run:reporter --spec './cypress/e2e/(detection_alerts|detection_rules|exceptions)/*.cy.ts' --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config; status=$?; yarn junit:merge && exit $status", "cypress:dw:open": "node ./scripts/start_cypress_parallel open --config-file ./public/management/cypress.config.ts ts --ftr-config-file ../../../../../../x-pack/test/defend_workflows_cypress/cli_config", "cypress:dw:run": "node ./scripts/start_cypress_parallel run --config-file ./public/management/cypress.config.ts --ftr-config-file ../../../../../../x-pack/test/defend_workflows_cypress/cli_config --reporter ../../../node_modules/cypress-multi-reporters --reporter-options configFile=./cypress/reporter_config.json; status=$?; yarn junit:merge && exit $status", "cypress:dw:endpoint:run": "node ./scripts/start_cypress_parallel run --config-file ./public/management/cypress_endpoint.config.ts --ftr-config-file ../../../../../../x-pack/test/defend_workflows_cypress/endpoint_config --reporter ../../../node_modules/cypress-multi-reporters --reporter-options configFile=./cypress/reporter_config.json --concurrency 1; status=$?; yarn junit:merge && exit $status", "cypress:dw:endpoint:open": "node ./scripts/start_cypress_parallel open --config-file ./public/management/cypress_endpoint.config.ts ts --ftr-config-file ../../../../../../x-pack/test/defend_workflows_cypress/endpoint_config", - "cypress:investigations:run": "yarn cypress:run:reporter --browser chrome --spec './cypress/e2e/investigations/**/*.cy.ts' --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config; status=$?; yarn junit:merge && exit $status", - "cypress:explore:run": "yarn cypress:run:reporter --browser chrome --spec './cypress/e2e/explore/**/*.cy.ts' --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config; status=$?; yarn junit:merge && exit $status", + "cypress:investigations:run": "yarn cypress:run:reporter --spec './cypress/e2e/investigations/**/*.cy.ts' --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config; status=$?; yarn junit:merge && exit $status", + "cypress:explore:run": "yarn cypress:run:reporter --spec './cypress/e2e/explore/**/*.cy.ts' --ftr-config-file ../../../../../../x-pack/test/security_solution_cypress/cli_config; status=$?; yarn junit:merge && exit $status", "junit:merge": "../../../node_modules/.bin/mochawesome-merge ../../../target/kibana-security-solution/cypress/results/mochawesome*.json > ../../../target/kibana-security-solution/cypress/results/output.json && ../../../node_modules/.bin/marge ../../../target/kibana-security-solution/cypress/results/output.json --reportDir ../../../target/kibana-security-solution/cypress/results && yarn junit:transform && mkdir -p ../../../target/junit && cp ../../../target/kibana-security-solution/cypress/results/*.xml ../../../target/junit/", "test:generate": "node scripts/endpoint/resolver_generator", "mappings:generate": "node scripts/mappings/mappings_generator", diff --git a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.tsx b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.tsx index eadf94552794e..943bf4dab0d80 100644 --- a/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.tsx +++ b/x-pack/plugins/security_solution/public/common/components/visualization_actions/lens_embeddable.tsx @@ -187,7 +187,7 @@ const LensEmbeddableComponent: React.FC = ({ const onFilterCallback = useCallback( async (e: ClickTriggerEvent['data'] | MultiClickTriggerEvent['data']) => { - if (!Array.isArray(e.data) || preferredSeriesType !== 'area') { + if (!isClickTriggerEvent(e) || preferredSeriesType !== 'area') { return; } // Update timerange when clicking on a dot in an area chart @@ -301,4 +301,10 @@ const LensEmbeddableComponent: React.FC = ({ ); }; +const isClickTriggerEvent = ( + e: ClickTriggerEvent['data'] | MultiClickTriggerEvent['data'] +): e is ClickTriggerEvent['data'] => { + return Array.isArray(e.data) && 'column' in e.data[0]; +}; + export const LensEmbeddable = React.memo(LensEmbeddableComponent); diff --git a/x-pack/plugins/security_solution/public/common/containers/source/index.test.tsx b/x-pack/plugins/security_solution/public/common/containers/source/index.test.tsx index 84c94f81d026f..c5251dba05744 100644 --- a/x-pack/plugins/security_solution/public/common/containers/source/index.test.tsx +++ b/x-pack/plugins/security_solution/public/common/containers/source/index.test.tsx @@ -67,6 +67,7 @@ describe('source/index.tsx', () => { }); }, getFieldsForWildcard: async () => Promise.resolve(), + getExistingIndices: async (indices: string[]) => Promise.resolve(indices), }, search: { search: jest.fn().mockReturnValue({ diff --git a/x-pack/plugins/security_solution/public/common/containers/sourcerer/get_sourcerer_data_view.test.ts b/x-pack/plugins/security_solution/public/common/containers/sourcerer/get_sourcerer_data_view.test.ts new file mode 100644 index 0000000000000..cc4921380fac8 --- /dev/null +++ b/x-pack/plugins/security_solution/public/common/containers/sourcerer/get_sourcerer_data_view.test.ts @@ -0,0 +1,56 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { getSourcererDataView } from './get_sourcerer_data_view'; +import type { DataViewsService } from '@kbn/data-views-plugin/common'; + +const dataViewId = 'test-id'; +const dataViewsService = { + get: jest.fn().mockResolvedValue({ + toSpec: jest.fn().mockReturnValue({ + id: 'test-id', + fields: {}, + runtimeFieldMap: {}, + }), + getIndexPattern: jest.fn().mockReturnValue('test-pattern'), + fields: {}, + }), + getExistingIndices: jest.fn().mockResolvedValue(['test-pattern']), +} as unknown as jest.Mocked; +describe('getSourcererDataView', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + // Tests that the function returns a SourcererDataView object with the expected properties + it('should return a SourcererDataView object with the expected properties', async () => { + const result = await getSourcererDataView(dataViewId, dataViewsService); + expect(result).toEqual({ + loading: false, + id: 'test-id', + title: 'test-pattern', + indexFields: {}, + fields: {}, + patternList: ['test-pattern'], + dataView: { + id: 'test-id', + fields: {}, + runtimeFieldMap: {}, + }, + browserFields: {}, + runtimeMappings: {}, + }); + }); + it('should call dataViewsService.get with the correct arguments', async () => { + await getSourcererDataView(dataViewId, dataViewsService); + expect(dataViewsService.get).toHaveBeenCalledWith(dataViewId, true, false); + }); + + it('should call dataViewsService.getExistingIndices with the correct arguments', async () => { + await getSourcererDataView(dataViewId, dataViewsService); + expect(dataViewsService.getExistingIndices).toHaveBeenCalledWith(['test-pattern']); + }); +}); diff --git a/x-pack/plugins/security_solution/public/common/containers/sourcerer/get_sourcerer_data_view.ts b/x-pack/plugins/security_solution/public/common/containers/sourcerer/get_sourcerer_data_view.ts index 7f40819bfb41d..a3cc1a8041b4c 100644 --- a/x-pack/plugins/security_solution/public/common/containers/sourcerer/get_sourcerer_data_view.ts +++ b/x-pack/plugins/security_solution/public/common/containers/sourcerer/get_sourcerer_data_view.ts @@ -18,30 +18,7 @@ export const getSourcererDataView = async ( const dataView = await dataViewsService.get(dataViewId, true, refreshFields); const dataViewData = dataView.toSpec(); const defaultPatternsList = ensurePatternFormat(dataView.getIndexPattern().split(',')); - - // typeguard used to assert that pattern is a string, otherwise - // typescript expects patternList to be (string | null)[] - // but we want it to always be string[] - const filterTypeGuard = (str: unknown): str is string => str != null; - const patternList = await Promise.all( - defaultPatternsList.map(async (pattern) => { - try { - await dataViewsService.getFieldsForWildcard({ - type: dataViewData.type, - rollupIndex: dataViewData?.typeMeta?.params?.rollup_index, - allowNoIndex: false, - pattern, - }); - return pattern; - } catch { - return null; - } - }) - ) - .then((allPatterns) => - allPatterns.filter((pattern): pattern is string => filterTypeGuard(pattern)) - ) - .catch(() => defaultPatternsList); + const patternList = await dataViewsService.getExistingIndices(defaultPatternsList); return { loading: false, diff --git a/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.tsx b/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.tsx index cf00693623c43..d3007d0d6346a 100644 --- a/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.tsx +++ b/x-pack/plugins/security_solution/public/timelines/components/flyout/pane/index.tsx @@ -46,8 +46,9 @@ const FlyoutPaneComponent: React.FC = ({ data-test-subj="timeline-flyout" css={css` min-width: 150px; - height: calc(100% - 96px); - top: 96px; + height: 100%; + top: 0; + left: 0; background: ${useEuiBackgroundColor('plain')}; position: fixed; width: 100%; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/use_sub_action.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/use_sub_action.tsx new file mode 100644 index 0000000000000..44f9099a5b816 --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/use_sub_action.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; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { executeAction } from '@kbn/triggers-actions-ui-plugin/public'; +import { useQuery } from '@tanstack/react-query'; +import { useKibana } from '../../../../../common/lib/kibana/kibana_react'; + +export interface UseSubActionParams

{ + connectorId: string; + subAction: string; + subActionParams?: P; + disabled?: boolean; +} + +export const useSubAction = ({ + connectorId, + subAction, + subActionParams, + disabled = false, + ...rest +}: UseSubActionParams

) => { + const { http } = useKibana().services; + + return useQuery({ + queryKey: ['useSubAction', connectorId, subAction, subActionParams], + queryFn: ({ signal }) => + executeAction({ + id: connectorId, + params: { + subAction, + subActionParams, + }, + http, + signal, + }), + enabled: !disabled && !!connectorId && !!subAction, + ...rest, + }); +}; diff --git a/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/use_sub_action_mutation.tsx b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/use_sub_action_mutation.tsx new file mode 100644 index 0000000000000..78c48ccca1491 --- /dev/null +++ b/x-pack/plugins/security_solution/public/timelines/components/side_panel/event_details/flyout/use_sub_action_mutation.tsx @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { executeAction } from '@kbn/triggers-actions-ui-plugin/public'; +import { useMutation } from '@tanstack/react-query'; +import { useKibana } from '../../../../../common/lib/kibana/kibana_react'; + +export interface UseSubActionParams

{ + connectorId: string; + subAction: string; + subActionParams?: P; + disabled?: boolean; +} + +export const useSubActionMutation = ({ + connectorId, + subAction, + subActionParams, + disabled = false, +}: UseSubActionParams

) => { + const { http } = useKibana().services; + + return useMutation({ + mutationFn: () => + executeAction({ + id: connectorId, + params: { + subAction, + subActionParams, + }, + http, + }), + }); +}; diff --git a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts index 351b38f91f47e..cf2f3897bd5ab 100644 --- a/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts +++ b/x-pack/plugins/security_solution/scripts/run_cypress/parallel.ts @@ -13,6 +13,9 @@ import pMap from 'p-map'; import { ToolingLog } from '@kbn/tooling-log'; import { withProcRunner } from '@kbn/dev-proc-runner'; import cypress from 'cypress'; +import { findChangedFiles } from 'find-cypress-specs'; +import minimatch from 'minimatch'; +import path from 'path'; import { EsVersion, @@ -68,13 +71,39 @@ const retrieveIntegrations = ( export const cli = () => { run( async () => { - const { argv } = yargs(process.argv.slice(2)); + const { argv } = yargs(process.argv.slice(2)).coerce('env', (arg: string) => + arg.split(',').reduce((acc, curr) => { + const [key, value] = curr.split('='); + if (key === 'burn') { + acc[key] = parseInt(value, 10); + } else { + acc[key] = value; + } + return acc; + }, {} as Record) + ); const isOpen = argv._[0] === 'open'; const cypressConfigFilePath = require.resolve(`../../${argv.configFile}`) as string; const cypressConfigFile = await import(require.resolve(`../../${argv.configFile}`)); const spec: string | undefined = argv?.spec as string; - const files = retrieveIntegrations(spec ? [spec] : cypressConfigFile?.e2e?.specPattern); + let files = retrieveIntegrations(spec ? [spec] : cypressConfigFile?.e2e?.specPattern); + + if (argv.changedSpecsOnly) { + const basePath = process.cwd().split('kibana/')[1]; + files = findChangedFiles('main', false) + .filter( + minimatch.filter(path.join(basePath, cypressConfigFile?.e2e?.specPattern), { + matchBase: true, + }) + ) + .map((filePath: string) => filePath.replace(basePath, '.')); + + if (!files?.length) { + // eslint-disable-next-line no-process-exit + return process.exit(0); + } + } if (!files?.length) { throw new Error('No files found'); @@ -323,8 +352,8 @@ ${JSON.stringify(config.getAll(), null, 2)} type: 'elasticsearch' | 'kibana' | 'fleetserver', withAuth: boolean = false ): string => { - const getKeyPath = (path: string = ''): string => { - return `servers.${type}${path ? `.${path}` : ''}`; + const getKeyPath = (keyPath: string = ''): string => { + return `servers.${type}${keyPath ? `.${keyPath}` : ''}`; }; if (!config.get(getKeyPath())) { @@ -361,7 +390,7 @@ ${JSON.stringify(config.getAll(), null, 2)} ...ftrEnv, // NOTE: - // ELASTICSEARCH_URL needs to be crated here with auth because SIEM cypress setup depends on it. At some + // ELASTICSEARCH_URL needs to be created here with auth because SIEM cypress setup depends on it. At some // points we should probably try to refactor that code to use `ELASTICSEARCH_URL_WITH_AUTH` instead ELASTICSEARCH_URL: ftrEnv.ELASTICSEARCH_URL ?? createUrlFromFtrConfig('elasticsearch', true), @@ -377,6 +406,8 @@ ${JSON.stringify(config.getAll(), null, 2)} KIBANA_URL_WITH_AUTH: createUrlFromFtrConfig('kibana', true), KIBANA_USERNAME: config.get('servers.kibana.username'), KIBANA_PASSWORD: config.get('servers.kibana.password'), + + ...argv.env, }; log.info(` @@ -407,6 +438,7 @@ ${JSON.stringify(cyCustomEnv, null, 2)} configFile: cypressConfigFilePath, reporter: argv.reporter as string, reporterOptions: argv.reporterOptions, + headed: argv.headed as boolean, config: { e2e: { baseUrl, diff --git a/x-pack/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts b/x-pack/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts index 7e0f8bfdaa4ce..356e4c1996e24 100644 --- a/x-pack/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts +++ b/x-pack/plugins/security_solution/server/lib/dashboards/routes/get_dashboards_by_tags.ts @@ -6,7 +6,6 @@ */ import type { Logger } from '@kbn/core/server'; import { i18n } from '@kbn/i18n'; -import { schema } from '@kbn/config-schema'; import type { DashboardAttributes } from '@kbn/dashboard-plugin/common'; import { transformError } from '@kbn/securitysolution-es-utils'; @@ -15,10 +14,8 @@ import type { SetupPlugins } from '../../../plugin'; import type { SecuritySolutionPluginRouter } from '../../../types'; import { buildSiemResponse } from '../../detection_engine/routes/utils'; import { buildFrameworkRequest } from '../../timeline/utils/common'; - -const getDashboardsParamsSchema = schema.object({ - tagIds: schema.arrayOf(schema.string()), -}); +import { getDashboardsRequest } from '../../../../common/api/tags'; +import { buildRouteValidationWithExcess } from '../../../utils/build_validation/route_validation'; export const getDashboardsByTagsRoute = ( router: SecuritySolutionPluginRouter, @@ -28,7 +25,7 @@ export const getDashboardsByTagsRoute = ( router.post( { path: INTERNAL_DASHBOARDS_URL, - validate: { body: getDashboardsParamsSchema }, + validate: { body: buildRouteValidationWithExcess(getDashboardsRequest) }, options: { tags: ['access:securitySolution'], }, diff --git a/x-pack/plugins/security_solution/server/lib/tags/routes/create_tag.ts b/x-pack/plugins/security_solution/server/lib/tags/routes/create_tag.ts index 4eaed27813214..6ddc14d64d53f 100644 --- a/x-pack/plugins/security_solution/server/lib/tags/routes/create_tag.ts +++ b/x-pack/plugins/security_solution/server/lib/tags/routes/create_tag.ts @@ -6,22 +6,17 @@ */ import type { Logger } from '@kbn/core/server'; import { i18n } from '@kbn/i18n'; -import { schema } from '@kbn/config-schema'; import { transformError } from '@kbn/securitysolution-es-utils'; +import { createTagRequest } from '../../../../common/api/tags'; import { INTERNAL_TAGS_URL } from '../../../../common/constants'; import type { SetupPlugins } from '../../../plugin'; import type { SecuritySolutionPluginRouter } from '../../../types'; +import { buildRouteValidationWithExcess } from '../../../utils/build_validation/route_validation'; import { buildSiemResponse } from '../../detection_engine/routes/utils'; import { buildFrameworkRequest } from '../../timeline/utils/common'; import { createTag } from '../saved_objects'; -const createTagBodySchema = schema.object({ - name: schema.string(), - description: schema.string(), - color: schema.maybe(schema.string()), -}); - export const createTagRoute = ( router: SecuritySolutionPluginRouter, logger: Logger, @@ -30,7 +25,7 @@ export const createTagRoute = ( router.put( { path: INTERNAL_TAGS_URL, - validate: { body: createTagBodySchema }, + validate: { body: buildRouteValidationWithExcess(createTagRequest) }, options: { tags: ['access:securitySolution'], }, diff --git a/x-pack/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts b/x-pack/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts index 05d20d90e09b2..a88578365f037 100644 --- a/x-pack/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts +++ b/x-pack/plugins/security_solution/server/lib/tags/routes/get_tags_by_name.ts @@ -6,20 +6,17 @@ */ import type { Logger } from '@kbn/core/server'; import { i18n } from '@kbn/i18n'; -import { schema } from '@kbn/config-schema'; import { transformError } from '@kbn/securitysolution-es-utils'; +import { getTagsByNameRequest } from '../../../../common/api/tags'; import { INTERNAL_TAGS_URL } from '../../../../common/constants'; import type { SetupPlugins } from '../../../plugin'; import type { SecuritySolutionPluginRouter } from '../../../types'; +import { buildRouteValidationWithExcess } from '../../../utils/build_validation/route_validation'; import { buildSiemResponse } from '../../detection_engine/routes/utils'; import { buildFrameworkRequest } from '../../timeline/utils/common'; import { findTagsByName } from '../saved_objects'; -const getTagsParamsSchema = schema.object({ - name: schema.string(), -}); - export const getTagsByNameRoute = ( router: SecuritySolutionPluginRouter, logger: Logger, @@ -28,7 +25,7 @@ export const getTagsByNameRoute = ( router.get( { path: INTERNAL_TAGS_URL, - validate: { query: getTagsParamsSchema }, + validate: { query: buildRouteValidationWithExcess(getTagsByNameRequest) }, options: { tags: ['access:securitySolution'], }, diff --git a/x-pack/plugins/stack_connectors/common/sentinelone/constants.ts b/x-pack/plugins/stack_connectors/common/sentinelone/constants.ts new file mode 100644 index 0000000000000..a77e070a71056 --- /dev/null +++ b/x-pack/plugins/stack_connectors/common/sentinelone/constants.ts @@ -0,0 +1,21 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +export const SENTINELONE_TITLE = 'Sentinel One'; +export const SENTINELONE_CONNECTOR_ID = '.sentinelone'; +export const API_MAX_RESULTS = 1000; + +export enum SUB_ACTION { + KILL_PROCESS = 'killProcess', + EXECUTE_SCRIPT = 'executeScript', + GET_AGENTS = 'getAgents', + ISOLATE_AGENT = 'isolateAgent', + RELEASE_AGENT = 'releaseAgent', + GET_REMOTE_SCRIPTS = 'getRemoteScripts', + GET_REMOTE_SCRIPT_STATUS = 'getRemoteScriptStatus', + GET_REMOTE_SCRIPT_RESULTS = 'getRemoteScriptResults', +} diff --git a/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts b/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts new file mode 100644 index 0000000000000..f475a9e6a83f6 --- /dev/null +++ b/x-pack/plugins/stack_connectors/common/sentinelone/schema.ts @@ -0,0 +1,495 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +/* eslint-disable @typescript-eslint/naming-convention */ + +import { schema } from '@kbn/config-schema'; +import { SUB_ACTION } from './constants'; + +// Connector schema +export const SentinelOneConfigSchema = schema.object({ url: schema.string() }); +export const SentinelOneSecretsSchema = schema.object({ + token: schema.string(), +}); + +export const SentinelOneBaseApiResponseSchema = schema.object({}, { unknowns: 'allow' }); + +export const SentinelOneGetAgentsResponseSchema = schema.object({ + pagination: schema.object({ + totalItems: schema.number(), + nextCursor: schema.nullable(schema.string()), + }), + errors: schema.nullable(schema.arrayOf(schema.string())), + data: schema.arrayOf( + schema.object({ + modelName: schema.string(), + firewallEnabled: schema.boolean(), + totalMemory: schema.number(), + osName: schema.string(), + cloudProviders: schema.recordOf(schema.string(), schema.any()), + siteName: schema.string(), + cpuId: schema.string(), + isPendingUninstall: schema.boolean(), + isUpToDate: schema.boolean(), + osArch: schema.string(), + accountId: schema.string(), + locationEnabled: schema.boolean(), + consoleMigrationStatus: schema.string(), + scanFinishedAt: schema.nullable(schema.string()), + operationalStateExpiration: schema.nullable(schema.string()), + agentVersion: schema.string(), + isActive: schema.boolean(), + locationType: schema.string(), + activeThreats: schema.number(), + inRemoteShellSession: schema.boolean(), + allowRemoteShell: schema.boolean(), + serialNumber: schema.nullable(schema.string()), + updatedAt: schema.string(), + lastActiveDate: schema.string(), + firstFullModeTime: schema.nullable(schema.string()), + operationalState: schema.string(), + externalId: schema.string(), + mitigationModeSuspicious: schema.string(), + licenseKey: schema.string(), + cpuCount: schema.number(), + mitigationMode: schema.string(), + networkStatus: schema.string(), + installerType: schema.string(), + uuid: schema.string(), + detectionState: schema.nullable(schema.string()), + infected: schema.boolean(), + registeredAt: schema.string(), + lastIpToMgmt: schema.string(), + storageName: schema.nullable(schema.string()), + osUsername: schema.string(), + groupIp: schema.string(), + createdAt: schema.string(), + remoteProfilingState: schema.string(), + groupUpdatedAt: schema.nullable(schema.string()), + scanAbortedAt: schema.nullable(schema.string()), + isUninstalled: schema.boolean(), + networkQuarantineEnabled: schema.boolean(), + tags: schema.object({ + sentinelone: schema.arrayOf( + schema.object({ + assignedBy: schema.string(), + assignedAt: schema.string(), + assignedById: schema.string(), + key: schema.string(), + value: schema.string(), + id: schema.string(), + }) + ), + }), + externalIp: schema.string(), + siteId: schema.string(), + machineType: schema.string(), + domain: schema.string(), + scanStatus: schema.string(), + osStartTime: schema.string(), + accountName: schema.string(), + lastLoggedInUserName: schema.string(), + showAlertIcon: schema.boolean(), + rangerStatus: schema.string(), + groupName: schema.string(), + threatRebootRequired: schema.boolean(), + remoteProfilingStateExpiration: schema.nullable(schema.string()), + policyUpdatedAt: schema.nullable(schema.string()), + activeDirectory: schema.object({ + userPrincipalName: schema.nullable(schema.string()), + lastUserDistinguishedName: schema.nullable(schema.string()), + computerMemberOf: schema.arrayOf(schema.object({ type: schema.string() })), + lastUserMemberOf: schema.arrayOf(schema.object({ type: schema.string() })), + mail: schema.nullable(schema.string()), + computerDistinguishedName: schema.nullable(schema.string()), + }), + isDecommissioned: schema.boolean(), + rangerVersion: schema.string(), + userActionsNeeded: schema.arrayOf( + schema.object({ + type: schema.string(), + example: schema.string(), + enum: schema.arrayOf(schema.string()), + }) + ), + locations: schema.nullable( + schema.arrayOf( + schema.object({ name: schema.string(), scope: schema.string(), id: schema.string() }) + ) + ), + id: schema.string(), + coreCount: schema.number(), + osRevision: schema.string(), + osType: schema.string(), + groupId: schema.string(), + computerName: schema.string(), + scanStartedAt: schema.string(), + encryptedApplications: schema.boolean(), + storageType: schema.nullable(schema.string()), + networkInterfaces: schema.arrayOf( + schema.object({ + gatewayMacAddress: schema.nullable(schema.string()), + inet6: schema.arrayOf(schema.string()), + name: schema.string(), + inet: schema.arrayOf(schema.string()), + physical: schema.string(), + gatewayIp: schema.nullable(schema.string()), + id: schema.string(), + }) + ), + fullDiskScanLastUpdatedAt: schema.string(), + appsVulnerabilityStatus: schema.string(), + }) + ), +}); + +export const SentinelOneIsolateAgentResponseSchema = schema.object({ + errors: schema.nullable(schema.arrayOf(schema.string())), + data: schema.object({ + affected: schema.number(), + }), +}); + +export const SentinelOneGetRemoteScriptsParamsSchema = schema.object({ + query: schema.nullable(schema.string()), + osTypes: schema.nullable(schema.arrayOf(schema.string())), +}); + +export const SentinelOneGetRemoteScriptsResponseSchema = schema.object({ + errors: schema.nullable(schema.arrayOf(schema.string())), + pagination: schema.object({ + nextCursor: schema.nullable(schema.string()), + totalItems: schema.number(), + }), + data: schema.arrayOf( + schema.object({ + id: schema.string(), + updater: schema.nullable(schema.string()), + isAvailableForLite: schema.boolean(), + isAvailableForArs: schema.boolean(), + fileSize: schema.number(), + mgmtId: schema.number(), + scopeLevel: schema.string(), + shortFileName: schema.string(), + scriptName: schema.string(), + creator: schema.string(), + package: schema.nullable( + schema.object({ + id: schema.string(), + bucketName: schema.string(), + endpointExpiration: schema.string(), + fileName: schema.string(), + endpointExpirationSeconds: schema.nullable(schema.number()), + fileSize: schema.number(), + signatureType: schema.string(), + signature: schema.string(), + }) + ), + bucketName: schema.string(), + inputRequired: schema.boolean(), + fileName: schema.string(), + supportedDestinations: schema.nullable(schema.arrayOf(schema.string())), + scopeName: schema.nullable(schema.string()), + signatureType: schema.string(), + outputFilePaths: schema.nullable(schema.arrayOf(schema.string())), + scriptDescription: schema.nullable(schema.string()), + createdByUserId: schema.string(), + scopeId: schema.string(), + updatedAt: schema.string(), + scriptType: schema.string(), + scopePath: schema.string(), + creatorId: schema.string(), + osTypes: schema.arrayOf(schema.string()), + scriptRuntimeTimeoutSeconds: schema.number(), + version: schema.string(), + updaterId: schema.nullable(schema.string()), + createdAt: schema.string(), + inputExample: schema.nullable(schema.string()), + inputInstructions: schema.nullable(schema.string()), + signature: schema.string(), + createdByUser: schema.string(), + requiresApproval: schema.maybe(schema.boolean()), + }) + ), +}); + +export const SentinelOneExecuteScriptParamsSchema = schema.object({ + computerName: schema.maybe(schema.string()), + script: schema.object({ + scriptId: schema.string(), + scriptName: schema.maybe(schema.string()), + apiKey: schema.maybe(schema.string()), + outputDirectory: schema.maybe(schema.string()), + requiresApproval: schema.maybe(schema.boolean()), + taskDescription: schema.maybe(schema.string()), + singularityxdrUrl: schema.maybe(schema.string()), + inputParams: schema.maybe(schema.string()), + singularityxdrKeyword: schema.maybe(schema.string()), + scriptRuntimeTimeoutSeconds: schema.maybe(schema.number()), + passwordFromScope: schema.maybe( + schema.object({ + scopeLevel: schema.maybe(schema.string()), + scopeId: schema.maybe(schema.string()), + }) + ), + password: schema.maybe(schema.string()), + }), +}); + +export const SentinelOneGetRemoteScriptStatusParamsSchema = schema.object( + { + parentTaskId: schema.string(), + }, + { unknowns: 'allow' } +); + +export const SentinelOneGetRemoteScriptStatusResponseSchema = schema.object({ + pagination: schema.object({ + totalItems: schema.number(), + nextCursor: schema.nullable(schema.string()), + }), + errors: schema.arrayOf(schema.object({ type: schema.string() })), + data: schema.arrayOf( + schema.object({ + agentIsDecommissioned: schema.boolean(), + agentComputerName: schema.string(), + status: schema.string(), + groupName: schema.string(), + initiatedById: schema.string(), + parentTaskId: schema.string(), + updatedAt: schema.string(), + createdAt: schema.string(), + agentIsActive: schema.boolean(), + agentOsType: schema.string(), + agentMachineType: schema.string(), + id: schema.string(), + siteName: schema.string(), + detailedStatus: schema.string(), + siteId: schema.string(), + scriptResultsSignature: schema.nullable(schema.string()), + initiatedBy: schema.string(), + accountName: schema.string(), + groupId: schema.string(), + statusDescription: schema.object({ + readOnly: schema.boolean(), + description: schema.string(), + }), + agentUuid: schema.string(), + accountId: schema.string(), + type: schema.string(), + scriptResultsPath: schema.string(), + scriptResultsBucket: schema.string(), + description: schema.string(), + agentId: schema.string(), + }) + ), +}); + +export const SentinelOneBaseFilterSchema = schema.object({ + K8SNodeName__contains: schema.nullable(schema.string()), + coreCount__lt: schema.nullable(schema.string()), + rangerStatuses: schema.nullable(schema.string()), + adUserQuery__contains: schema.nullable(schema.string()), + rangerVersionsNin: schema.nullable(schema.string()), + rangerStatusesNin: schema.nullable(schema.string()), + coreCount__gte: schema.nullable(schema.string()), + threatCreatedAt__gte: schema.nullable(schema.string()), + decommissionedAt__lte: schema.nullable(schema.string()), + operationalStatesNin: schema.nullable(schema.string()), + appsVulnerabilityStatusesNin: schema.nullable(schema.string()), + mitigationMode: schema.nullable(schema.string()), + createdAt__gte: schema.nullable(schema.string()), + gatewayIp: schema.nullable(schema.string()), + cloudImage__contains: schema.nullable(schema.string()), + registeredAt__between: schema.nullable(schema.string()), + threatMitigationStatus: schema.nullable(schema.string()), + installerTypesNin: schema.nullable(schema.string()), + appsVulnerabilityStatuses: schema.nullable(schema.string()), + threatResolved: schema.nullable(schema.string()), + mitigationModeSuspicious: schema.nullable(schema.string()), + isUpToDate: schema.nullable(schema.string()), + adComputerQuery__contains: schema.nullable(schema.string()), + updatedAt__gte: schema.nullable(schema.string()), + azureResourceGroup__contains: schema.nullable(schema.string()), + scanStatus: schema.nullable(schema.string()), + threatContentHash: schema.nullable(schema.string()), + osTypesNin: schema.nullable(schema.string()), + threatRebootRequired: schema.nullable(schema.string()), + totalMemory__between: schema.nullable(schema.string()), + firewallEnabled: schema.nullable(schema.string()), + gcpServiceAccount__contains: schema.nullable(schema.string()), + updatedAt__gt: schema.nullable(schema.string()), + remoteProfilingStates: schema.nullable(schema.string()), + filteredGroupIds: schema.nullable(schema.string()), + agentVersions: schema.nullable(schema.string()), + activeThreats: schema.nullable(schema.string()), + machineTypesNin: schema.nullable(schema.string()), + lastActiveDate__gt: schema.nullable(schema.string()), + awsSubnetIds__contains: schema.nullable(schema.string()), + installerTypes: schema.nullable(schema.string()), + registeredAt__gte: schema.nullable(schema.string()), + migrationStatus: schema.nullable(schema.string()), + cloudTags__contains: schema.nullable(schema.string()), + totalMemory__gte: schema.nullable(schema.string()), + decommissionedAt__lt: schema.nullable(schema.string()), + threatCreatedAt__lt: schema.nullable(schema.string()), + updatedAt__lte: schema.nullable(schema.string()), + osArch: schema.nullable(schema.string()), + registeredAt__gt: schema.nullable(schema.string()), + registeredAt__lt: schema.nullable(schema.string()), + siteIds: schema.nullable(schema.string()), + networkInterfaceInet__contains: schema.nullable(schema.string()), + groupIds: schema.nullable(schema.string()), + uuids: schema.nullable(schema.string()), + accountIds: schema.nullable(schema.string()), + scanStatusesNin: schema.nullable(schema.string()), + cpuCount__lte: schema.nullable(schema.string()), + locationIds: schema.nullable(schema.string()), + awsSecurityGroups__contains: schema.nullable(schema.string()), + networkStatusesNin: schema.nullable(schema.string()), + activeThreats__gt: schema.nullable(schema.string()), + infected: schema.nullable(schema.string()), + osVersion__contains: schema.nullable(schema.string()), + machineTypes: schema.nullable(schema.string()), + agentPodName__contains: schema.nullable(schema.string()), + computerName__like: schema.nullable(schema.string()), + threatCreatedAt__gt: schema.nullable(schema.string()), + consoleMigrationStatusesNin: schema.nullable(schema.string()), + computerName: schema.nullable(schema.string()), + decommissionedAt__between: schema.nullable(schema.string()), + cloudInstanceId__contains: schema.nullable(schema.string()), + createdAt__lte: schema.nullable(schema.string()), + coreCount__between: schema.nullable(schema.string()), + totalMemory__lte: schema.nullable(schema.string()), + remoteProfilingStatesNin: schema.nullable(schema.string()), + adComputerMember__contains: schema.nullable(schema.string()), + threatCreatedAt__between: schema.nullable(schema.string()), + totalMemory__gt: schema.nullable(schema.string()), + ids: schema.nullable(schema.string()), + agentVersionsNin: schema.nullable(schema.string()), + updatedAt__between: schema.nullable(schema.string()), + locationEnabled: schema.nullable(schema.string()), + locationIdsNin: schema.nullable(schema.string()), + osTypes: schema.nullable(schema.string()), + encryptedApplications: schema.nullable(schema.string()), + filterId: schema.nullable(schema.string()), + decommissionedAt__gt: schema.nullable(schema.string()), + adUserMember__contains: schema.nullable(schema.string()), + uuid: schema.nullable(schema.string()), + coreCount__lte: schema.nullable(schema.string()), + coreCount__gt: schema.nullable(schema.string()), + cloudNetwork__contains: schema.nullable(schema.string()), + clusterName__contains: schema.nullable(schema.string()), + cpuCount__gte: schema.nullable(schema.string()), + query: schema.nullable(schema.string()), + lastActiveDate__between: schema.nullable(schema.string()), + rangerStatus: schema.nullable(schema.string()), + domains: schema.nullable(schema.string()), + cloudProvider: schema.nullable(schema.string()), + lastActiveDate__lt: schema.nullable(schema.string()), + scanStatuses: schema.nullable(schema.string()), + hasLocalConfiguration: schema.nullable(schema.string()), + networkStatuses: schema.nullable(schema.string()), + isPendingUninstall: schema.nullable(schema.string()), + createdAt__gt: schema.nullable(schema.string()), + cpuCount__lt: schema.nullable(schema.string()), + consoleMigrationStatuses: schema.nullable(schema.string()), + adQuery: schema.nullable(schema.string()), + updatedAt__lt: schema.nullable(schema.string()), + createdAt__lt: schema.nullable(schema.string()), + adComputerName__contains: schema.nullable(schema.string()), + cloudInstanceSize__contains: schema.nullable(schema.string()), + registeredAt__lte: schema.nullable(schema.string()), + networkQuarantineEnabled: schema.nullable(schema.string()), + cloudAccount__contains: schema.nullable(schema.string()), + cloudLocation__contains: schema.nullable(schema.string()), + rangerVersions: schema.nullable(schema.string()), + networkInterfaceGatewayMacAddress__contains: schema.nullable(schema.string()), + uuid__contains: schema.nullable(schema.string()), + agentNamespace__contains: schema.nullable(schema.string()), + K8SNodeLabels__contains: schema.nullable(schema.string()), + adQuery__contains: schema.nullable(schema.string()), + K8SType__contains: schema.nullable(schema.string()), + countsFor: schema.nullable(schema.string()), + totalMemory__lt: schema.nullable(schema.string()), + externalId__contains: schema.nullable(schema.string()), + filteredSiteIds: schema.nullable(schema.string()), + decommissionedAt__gte: schema.nullable(schema.string()), + cpuCount__gt: schema.nullable(schema.string()), + threatHidden: schema.nullable(schema.string()), + isUninstalled: schema.nullable(schema.string()), + computerName__contains: schema.nullable(schema.string()), + lastActiveDate__lte: schema.nullable(schema.string()), + adUserName__contains: schema.nullable(schema.string()), + isActive: schema.nullable(schema.string()), + userActionsNeeded: schema.nullable(schema.string()), + threatCreatedAt__lte: schema.nullable(schema.string()), + domainsNin: schema.nullable(schema.string()), + operationalStates: schema.nullable(schema.string()), + externalIp__contains: schema.nullable(schema.string()), + isDecommissioned: schema.nullable(schema.string()), + networkInterfacePhysical__contains: schema.nullable(schema.string()), + lastActiveDate__gte: schema.nullable(schema.string()), + createdAt__between: schema.nullable(schema.string()), + cpuCount__between: schema.nullable(schema.string()), + lastLoggedInUserName__contains: schema.nullable(schema.string()), + awsRole__contains: schema.nullable(schema.string()), + K8SVersion__contains: schema.nullable(schema.string()), +}); + +export const SentinelOneKillProcessParamsSchema = SentinelOneBaseFilterSchema.extends({ + processName: schema.string(), +}); + +export const SentinelOneIsolateAgentParamsSchema = SentinelOneBaseFilterSchema; + +export const SentinelOneGetAgentsParamsSchema = SentinelOneBaseFilterSchema; + +export const SentinelOneGetRemoteScriptsStatusParams = schema.object({ + parentTaskId: schema.string(), +}); + +export const SentinelOneExecuteScriptResponseSchema = schema.object({ + errors: schema.nullable(schema.arrayOf(schema.object({}, { unknowns: 'allow' }))), + data: schema.nullable( + schema.object({ + pendingExecutionId: schema.nullable(schema.string()), + affected: schema.nullable(schema.number()), + parentTaskId: schema.nullable(schema.string()), + pending: schema.nullable(schema.boolean()), + }) + ), +}); + +export const SentinelOneKillProcessResponseSchema = SentinelOneExecuteScriptResponseSchema; + +export const SentinelOneKillProcessSchema = schema.object({ + subAction: schema.literal(SUB_ACTION.KILL_PROCESS), + subActionParams: SentinelOneKillProcessParamsSchema, +}); + +export const SentinelOneIsolateAgentSchema = schema.object({ + subAction: schema.literal(SUB_ACTION.ISOLATE_AGENT), + subActionParams: SentinelOneIsolateAgentParamsSchema, +}); + +export const SentinelOneReleaseAgentSchema = schema.object({ + subAction: schema.literal(SUB_ACTION.RELEASE_AGENT), + subActionParams: SentinelOneIsolateAgentParamsSchema, +}); + +export const SentinelOneExecuteScriptSchema = schema.object({ + subAction: schema.literal(SUB_ACTION.EXECUTE_SCRIPT), + subActionParams: SentinelOneExecuteScriptParamsSchema, +}); + +export const SentinelOneActionParamsSchema = schema.oneOf([ + SentinelOneKillProcessSchema, + SentinelOneIsolateAgentSchema, + SentinelOneReleaseAgentSchema, + SentinelOneExecuteScriptSchema, +]); diff --git a/x-pack/plugins/stack_connectors/common/sentinelone/types.ts b/x-pack/plugins/stack_connectors/common/sentinelone/types.ts new file mode 100644 index 0000000000000..ab50e316d03f7 --- /dev/null +++ b/x-pack/plugins/stack_connectors/common/sentinelone/types.ts @@ -0,0 +1,50 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { TypeOf } from '@kbn/config-schema'; +import { + SentinelOneBaseApiResponseSchema, + SentinelOneConfigSchema, + SentinelOneExecuteScriptParamsSchema, + SentinelOneGetAgentsParamsSchema, + SentinelOneGetAgentsResponseSchema, + SentinelOneGetRemoteScriptsParamsSchema, + SentinelOneGetRemoteScriptsResponseSchema, + SentinelOneGetRemoteScriptsStatusParams, + SentinelOneIsolateAgentParamsSchema, + SentinelOneKillProcessParamsSchema, + SentinelOneSecretsSchema, + SentinelOneActionParamsSchema, +} from './schema'; + +export type SentinelOneConfig = TypeOf; +export type SentinelOneSecrets = TypeOf; + +export type SentinelOneBaseApiResponse = TypeOf; + +export type SentinelOneGetAgentsParams = TypeOf; +export type SentinelOneGetAgentsResponse = TypeOf; + +export type SentinelOneKillProcessParams = TypeOf; + +export type SentinelOneExecuteScriptParams = TypeOf; + +export type SentinelOneGetRemoteScriptStatusParams = TypeOf< + typeof SentinelOneGetRemoteScriptsStatusParams +>; + +export type SentinelOneGetRemoteScriptsParams = TypeOf< + typeof SentinelOneGetRemoteScriptsParamsSchema +>; + +export type SentinelOneGetRemoteScriptsResponse = TypeOf< + typeof SentinelOneGetRemoteScriptsResponseSchema +>; + +export type SentinelOneIsolateAgentParams = TypeOf; + +export type SentinelOneActionParams = TypeOf; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/index.ts b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/index.ts new file mode 100644 index 0000000000000..7bb5159f87525 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/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 { getConnectorType as getSentinelOneConnectorType } from './sentinelone'; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/logo.tsx b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/logo.tsx new file mode 100644 index 0000000000000..656e75d07d67c --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/logo.tsx @@ -0,0 +1,84 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +const Logo = () => ( + + + + + + + + + + + + + + + + + + + + +); + +// eslint-disable-next-line import/no-default-export +export { Logo as default }; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/sentinelone.ts b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/sentinelone.ts new file mode 100644 index 0000000000000..469613621bf05 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/sentinelone.ts @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { lazy } from 'react'; +import { i18n } from '@kbn/i18n'; +import type { + ActionTypeModel as ConnectorTypeModel, + GenericValidationResult, +} from '@kbn/triggers-actions-ui-plugin/public'; +import { + SENTINELONE_CONNECTOR_ID, + SENTINELONE_TITLE, + SUB_ACTION, +} from '../../../common/sentinelone/constants'; +import type { + SentinelOneConfig, + SentinelOneSecrets, + SentinelOneActionParams, +} from '../../../common/sentinelone/types'; + +interface ValidationErrors { + subAction: string[]; +} + +export function getConnectorType(): ConnectorTypeModel< + SentinelOneConfig, + SentinelOneSecrets, + SentinelOneActionParams +> { + return { + id: SENTINELONE_CONNECTOR_ID, + actionTypeTitle: SENTINELONE_TITLE, + iconClass: lazy(() => import('./logo')), + selectMessage: i18n.translate( + 'xpack.stackConnectors.security.sentinelone.config.selectMessageText', + { + defaultMessage: 'Execute SentinelOne scripts', + } + ), + validateParams: async ( + actionParams: SentinelOneActionParams + ): Promise> => { + const translations = await import('./translations'); + const errors: ValidationErrors = { + subAction: [], + }; + const { subAction } = actionParams; + + // The internal "subAction" param should always be valid, ensure it is only if "subActionParams" are valid + if (!subAction) { + errors.subAction.push(translations.ACTION_REQUIRED); + } else if (!(subAction in SUB_ACTION)) { + errors.subAction.push(translations.INVALID_ACTION); + } + return { errors }; + }, + actionConnectorFields: lazy(() => import('./sentinelone_connector')), + actionParamsFields: lazy(() => import('./sentinelone_params')), + }; +} diff --git a/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/sentinelone_connector.tsx b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/sentinelone_connector.tsx new file mode 100644 index 0000000000000..785dc5d05832d --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/sentinelone_connector.tsx @@ -0,0 +1,47 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React from 'react'; + +import { + ActionConnectorFieldsProps, + ConfigFieldSchema, + SecretsFieldSchema, + SimpleConnectorForm, +} from '@kbn/triggers-actions-ui-plugin/public'; +import * as i18n from './translations'; + +const configFormSchema: ConfigFieldSchema[] = [ + { + id: 'url', + label: i18n.URL_LABEL, + isUrlField: true, + }, +]; + +const secretsFormSchema: SecretsFieldSchema[] = [ + { + id: 'token', + label: i18n.TOKEN_LABEL, + isPasswordField: true, + }, +]; + +const SentinelOneActionConnectorFields: React.FunctionComponent = ({ + readOnly, + isEdit, +}) => ( + +); + +// eslint-disable-next-line import/no-default-export +export { SentinelOneActionConnectorFields as default }; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/sentinelone_params.tsx b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/sentinelone_params.tsx new file mode 100644 index 0000000000000..f74e1c897b97b --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/sentinelone_params.tsx @@ -0,0 +1,333 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import React, { useCallback, useEffect, useMemo, useState, ReactNode } from 'react'; +import { reduce } from 'lodash'; +import { + EuiButtonIcon, + EuiComboBox, + EuiFieldText, + EuiFlexGroup, + EuiFlexItem, + EuiFormRow, + EuiInMemoryTable, + EuiSuperSelect, +} from '@elastic/eui'; +import { + ActionConnectorMode, + ActionParamsProps, + TextAreaWithMessageVariables, +} from '@kbn/triggers-actions-ui-plugin/public'; +import { useSubAction, useKibana } from '@kbn/triggers-actions-ui-plugin/public'; +import { EuiBasicTableColumn, EuiSearchBarProps, EuiLink } from '@elastic/eui'; +import { SUB_ACTION } from '../../../common/sentinelone/constants'; +import type { + SentinelOneGetAgentsParams, + SentinelOneGetAgentsResponse, + SentinelOneGetRemoteScriptsParams, + SentinelOneGetRemoteScriptsResponse, + SentinelOneActionParams, +} from '../../../common/sentinelone/types'; +import type { SentinelOneExecuteSubActionParams } from './types'; +import * as i18n from './translations'; + +type ScriptOption = SentinelOneGetRemoteScriptsResponse['data'][0]; + +const SentinelOneParamsFields: React.FunctionComponent< + ActionParamsProps +> = ({ actionConnector, actionParams, editAction, index, executionMode, errors, ...rest }) => { + const { toasts } = useKibana().notifications; + const { subAction, subActionParams } = actionParams; + const [selectedScript, setSelectedScript] = useState(); + + const [selectedAgent, setSelectedAgent] = useState>(() => { + if (subActionParams?.computerName) { + return [{ label: subActionParams?.computerName }]; + } + return []; + }); + const [connectorId] = useState(actionConnector?.id); + + const isTest = useMemo(() => executionMode === ActionConnectorMode.Test, [executionMode]); + + const editSubActionParams = useCallback( + (params: Partial) => { + editAction('subActionParams', { ...subActionParams, ...params }, index); + }, + [editAction, index, subActionParams] + ); + + const { + response: { data: agents } = {}, + isLoading: isLoadingAgents, + error: agentsError, + } = useSubAction({ + connectorId, + subAction: SUB_ACTION.GET_AGENTS, + disabled: isTest, + }); + + const agentOptions = useMemo( + () => + reduce( + agents, + (acc, item) => { + acc.push({ + label: item.computerName, + }); + return acc; + }, + [] as Array<{ label: string }> + ), + [agents] + ); + + const { + response: { data: remoteScripts } = {}, + isLoading: isLoadingScripts, + error: scriptsError, + } = useSubAction({ + connectorId, + subAction: SUB_ACTION.GET_REMOTE_SCRIPTS, + }); + + useEffect(() => { + if (agentsError) { + toasts.danger({ title: i18n.AGENTS_ERROR, body: agentsError.message }); + } + if (scriptsError) { + toasts.danger({ title: i18n.REMOTE_SCRIPTS_ERROR, body: scriptsError.message }); + } + }, [toasts, scriptsError, agentsError]); + + const pagination = { + initialPageSize: 10, + pageSizeOptions: [10, 20, 50], + }; + + const search: EuiSearchBarProps = { + defaultQuery: 'scriptType:action', + box: { + incremental: true, + }, + filters: [ + { + type: 'field_value_selection', + field: 'scriptType', + name: i18n.SCRIPT_TYPE_FILTER_LABEL, + multiSelect: true, + options: [ + { + value: 'action', + }, + { value: 'dataCollection' }, + ], + }, + { + type: 'field_value_selection', + field: 'osTypes', + name: i18n.OS_TYPES_FILTER_LABEL, + multiSelect: true, + options: [ + { + value: 'Windows', + }, + { + value: 'macos', + }, + { + value: 'linux', + }, + ], + }, + ], + }; + + const [itemIdToExpandedRowMap, setItemIdToExpandedRowMap] = useState>( + {} + ); + + const toggleDetails = (script: ScriptOption) => { + const itemIdToExpandedRowMapValues = { ...itemIdToExpandedRowMap }; + + if (script.id) { + if (itemIdToExpandedRowMapValues[script.id]) { + delete itemIdToExpandedRowMapValues[script.id]; + } else { + itemIdToExpandedRowMapValues[script.id] = <>More details true; + } + } + setItemIdToExpandedRowMap(itemIdToExpandedRowMapValues); + }; + + const columns: Array> = [ + { + field: 'scriptName', + name: 'Script name', + }, + { + field: 'scriptType', + name: 'Script type', + }, + { + field: 'osTypes', + name: 'OS types', + }, + { + actions: [ + { + name: 'Choose', + description: 'Choose this script', + isPrimary: true, + onClick: (item) => { + setSelectedScript(item); + editSubActionParams({ + script: { + scriptId: item.id, + scriptRuntimeTimeoutSeconds: 3600, + taskDescription: item.scriptName, + requiresApproval: item.requiresApproval ?? false, + }, + }); + }, + }, + ], + }, + { + align: 'right', + width: '40px', + isExpander: true, + render: (script: ScriptOption) => { + const itemIdToExpandedRowMapValues = { ...itemIdToExpandedRowMap }; + + return ( + toggleDetails(script)} + aria-label={itemIdToExpandedRowMapValues[script.id] ? 'Collapse' : 'Expand'} + iconType={itemIdToExpandedRowMapValues[script.id] ? 'arrowDown' : 'arrowRight'} + /> + ); + }, + }, + ]; + + const actionTypeOptions = [ + { + value: SUB_ACTION.KILL_PROCESS, + inputDisplay: i18n.KILL_PROCESS_ACTION_LABEL, + }, + { + value: SUB_ACTION.ISOLATE_AGENT, + inputDisplay: i18n.ISOLATE_AGENT_ACTION_LABEL, + }, + { + value: SUB_ACTION.RELEASE_AGENT, + inputDisplay: i18n.RELEASE_AGENT_ACTION_LABEL, + }, + ]; + + const handleEditSubAction = useCallback( + (payload) => { + if (subAction !== payload) { + editSubActionParams({}); + editAction('subAction', payload, index); + } + }, + [editAction, editSubActionParams, index, subAction] + ); + + return ( + + {isTest && ( + + + { + setSelectedAgent(item); + editSubActionParams({ computerName: item[0].label }); + }} + isDisabled={isLoadingAgents} + /> + + + )} + + + + + + {subAction === SUB_ACTION.EXECUTE_SCRIPT && ( + <> + + setSelectedScript(undefined)}> + {i18n.CHANGE_ACTION_LABEL} + + ) : null + } + > + {selectedScript?.scriptName ? ( + + ) : ( + + items={remoteScripts ?? []} + itemId="scriptId" + loading={isLoadingScripts} + columns={columns} + search={search} + pagination={pagination} + sorting + hasActions + itemIdToExpandedRowMap={itemIdToExpandedRowMap} + /> + )} + + + + <> + {selectedScript && ( + + + + )} + + + )} + + ); +}; + +// eslint-disable-next-line import/no-default-export +export { SentinelOneParamsFields as default }; diff --git a/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/translations.ts b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/translations.ts new file mode 100644 index 0000000000000..a5b9a274857c3 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/translations.ts @@ -0,0 +1,270 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license 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 { API_MAX_RESULTS } from '../../../common/sentinelone/constants'; + +// config form +export const URL_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.config.urlTextFieldLabel', + { + defaultMessage: 'SentinelOne tenant URL', + } +); + +export const TOKEN_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.config.tokenTextFieldLabel', + { + defaultMessage: 'API token', + } +); + +// params form +export const ASC = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.storyFieldLabel', + { + defaultMessage: 'SentinelOne Script', + } +); + +export const SCRIPT_TYPE_FILTER_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.scriptTypeFilterLabel', + { + defaultMessage: 'Script type', + } +); + +export const OS_TYPES_FILTER_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.osTypesFilterLabel', + { + defaultMessage: 'OS', + } +); + +export const STORY_ARIA_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.storyFieldAriaLabel', + { + defaultMessage: 'Select a SentinelOne script', + } +); + +export const KILL_PROCESS_ACTION_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.killProcessActionLabel', + { + defaultMessage: 'Kill process', + } +); + +export const ISOLATE_AGENT_ACTION_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.isolateAgentActionLabel', + { + defaultMessage: 'Isolate agent', + } +); + +export const RELEASE_AGENT_ACTION_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.releaseAgentActionLabel', + { + defaultMessage: 'Release agent', + } +); + +export const AGENTS_FIELD_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.agentsFieldLabel', + { + defaultMessage: 'SentinelOne agent', + } +); + +export const AGENTS_FIELD_PLACEHOLDER = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.agentsFieldPlaceholder', + { + defaultMessage: 'Select a single agent', + } +); + +export const ACTION_TYPE_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.actionTypeFieldLabel', + { + defaultMessage: 'Action Type', + } +); + +export const COMMAND_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.commandFieldLabel', + { + defaultMessage: 'Command', + } +); + +export const CHANGE_ACTION_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.changeActionButton', + { + defaultMessage: 'Change action', + } +); + +export const WEBHOOK_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.webhookFieldLabel', + { + defaultMessage: 'SentinelOne Webhook action', + } +); +export const WEBHOOK_HELP = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.webhookHelp', + { + defaultMessage: 'The data entry action in the story', + } +); +export const WEBHOOK_PLACEHOLDER = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.webhookPlaceholder', + { + defaultMessage: 'Select a webhook action', + } +); +export const WEBHOOK_DISABLED_PLACEHOLDER = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.webhookDisabledPlaceholder', + { + defaultMessage: 'Select a story first', + } +); +export const WEBHOOK_ARIA_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.webhookFieldAriaLabel', + { + defaultMessage: 'Select a SentinelOne webhook action', + } +); + +export const WEBHOOK_URL_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.webhookUrlFieldLabel', + { + defaultMessage: 'Webhook URL', + } +); +export const WEBHOOK_URL_FALLBACK_TITLE = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.webhookUrlFallbackTitle', + { + defaultMessage: 'SentinelOne API results limit reached', + } +); +export const WEBHOOK_URL_FALLBACK_TEXT = (entity: 'Story' | 'Webhook') => + i18n.translate('xpack.stackConnectors.security.sentinelone.params.webhookUrlFallbackText', { + values: { entity, limit: API_MAX_RESULTS }, + defaultMessage: `Not possible to retrieve more than {limit} results from the SentinelOne {entity} API. If your {entity} does not appear in the list, please fill the Webhook URL below`, + }); +export const WEBHOOK_URL_HELP = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.webhookUrlHelp', + { + defaultMessage: 'The Story and Webhook selectors will be ignored if the Webhook URL is defined', + } +); +export const WEBHOOK_URL_PLACEHOLDER = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.webhookUrlPlaceholder', + { + defaultMessage: 'Paste the Webhook URL here', + } +); +export const DISABLED_BY_WEBHOOK_URL_PLACEHOLDER = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.disabledByWebhookUrlPlaceholder', + { + defaultMessage: 'Remove the Webhook URL to use this selector', + } +); + +export const BODY_LABEL = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.bodyFieldLabel', + { + defaultMessage: 'Body', + } +); +export const AGENTS_ERROR = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.componentError.storiesRequestFailed', + { + defaultMessage: 'Error retrieving agent from SentinelOne', + } +); + +export const REMOTE_SCRIPTS_ERROR = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.componentError.remoteScriptsRequestFailed', + { + defaultMessage: 'Error retrieving remote scripts from SentinelOne', + } +); + +export const WEBHOOKS_ERROR = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.componentError.webhooksRequestFailed', + { + defaultMessage: 'Error retrieving webhook actions from SentinelOne', + } +); + +export const STORY_NOT_FOUND_WARNING = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.componentWarning.storyNotFound', + { + defaultMessage: 'Cannot find the saved story. Please select a valid story from the selector', + } +); +export const WEBHOOK_NOT_FOUND_WARNING = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.componentWarning.webhookNotFound', + { + defaultMessage: + 'Cannot find the saved webhook. Please select a valid webhook from the selector', + } +); + +export const ACTION_REQUIRED = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.error.requiredActionText', + { + defaultMessage: 'Action is required.', + } +); + +export const INVALID_ACTION = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.error.invalidActionText', + { + defaultMessage: 'Invalid action name.', + } +); + +export const BODY_REQUIRED = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.error.requiredBodyText', + { + defaultMessage: 'Body is required.', + } +); + +export const BODY_INVALID = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.error.invalidBodyText', + { + defaultMessage: 'Body does not have a valid JSON format.', + } +); + +export const STORY_REQUIRED = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.error.requiredStoryText', + { + defaultMessage: 'Story is required.', + } +); +export const WEBHOOK_REQUIRED = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.error.requiredWebhookText', + { + defaultMessage: 'Webhook is required.', + } +); +export const WEBHOOK_PATH_REQUIRED = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.error.requiredWebhookPathText', + { + defaultMessage: 'Webhook action path is missing.', + } +); +export const WEBHOOK_SECRET_REQUIRED = i18n.translate( + 'xpack.stackConnectors.security.sentinelone.params.error.requiredWebhookSecretText', + { + defaultMessage: 'Webhook action secret is missing.', + } +); diff --git a/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/types.ts b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/types.ts new file mode 100644 index 0000000000000..ac97bdaf224f4 --- /dev/null +++ b/x-pack/plugins/stack_connectors/public/connector_types/sentinelone/types.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { + SentinelOneKillProcessParams, + SentinelOneExecuteScriptParams, + SentinelOneIsolateAgentParams, +} from '../../../common/sentinelone/types'; +import type { SUB_ACTION } from '../../../common/sentinelone/constants'; + +export type SentinelOneExecuteSubActionParams = + | SentinelOneKillProcessParams + | SentinelOneExecuteScriptParams + | SentinelOneIsolateAgentParams; + +export interface SentinelOneExecuteActionParams { + subAction: SUB_ACTION; + subActionParams: SentinelOneExecuteSubActionParams; +} diff --git a/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/index.ts b/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/index.ts new file mode 100644 index 0000000000000..1ce534079e829 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/index.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { + SubActionConnectorType, + ValidatorType, +} from '@kbn/actions-plugin/server/sub_action_framework/types'; +import { SecurityConnectorFeatureId } from '@kbn/actions-plugin/common'; +import { urlAllowListValidator } from '@kbn/actions-plugin/server'; +import { SENTINELONE_CONNECTOR_ID, SENTINELONE_TITLE } from '../../../common/sentinelone/constants'; +import { + SentinelOneConfigSchema, + SentinelOneSecretsSchema, +} from '../../../common/sentinelone/schema'; +import { SentinelOneConfig, SentinelOneSecrets } from '../../../common/sentinelone/types'; +import { SentinelOneConnector } from './sentinelone'; +import { renderParameterTemplates } from './render'; + +export const getSentinelOneConnectorType = (): SubActionConnectorType< + SentinelOneConfig, + SentinelOneSecrets +> => ({ + id: SENTINELONE_CONNECTOR_ID, + name: SENTINELONE_TITLE, + Service: SentinelOneConnector, + schema: { + config: SentinelOneConfigSchema, + secrets: SentinelOneSecretsSchema, + }, + validators: [{ type: ValidatorType.CONFIG, validator: urlAllowListValidator('url') }], + supportedFeatureIds: [SecurityConnectorFeatureId], + minimumLicenseRequired: 'enterprise' as const, + renderParameterTemplates, +}); diff --git a/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/render.ts b/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/render.ts new file mode 100644 index 0000000000000..9d852510ea7b7 --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/render.ts @@ -0,0 +1,79 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { set } from '@kbn/safer-lodash-set/fp'; +import type { EcsSecurityExtension as Ecs } from '@kbn/securitysolution-ecs'; +import { ExecutorParams } from '@kbn/actions-plugin/server/sub_action_framework/types'; +import { SUB_ACTION } from '../../../common/sentinelone/constants'; + +interface Context { + alerts: Ecs[]; +} + +export const renderParameterTemplates = ( + params: ExecutorParams, + variables: Record +) => { + const context = variables?.context as Context; + if (params?.subAction === SUB_ACTION.KILL_PROCESS) { + return { + subAction: SUB_ACTION.KILL_PROCESS, + subActionParams: { + processName: context.alerts[0].process?.name, + computerName: context.alerts[0].host?.name, + }, + }; + } + + if (params?.subAction === SUB_ACTION.ISOLATE_AGENT) { + return { + subAction: SUB_ACTION.ISOLATE_AGENT, + subActionParams: { + computerName: context.alerts[0].host?.name, + }, + }; + } + + if (params?.subAction === SUB_ACTION.RELEASE_AGENT) { + return { + subAction: SUB_ACTION.RELEASE_AGENT, + subActionParams: { + computerName: context.alerts[0].host?.name, + }, + }; + } + + if (params?.subAction === SUB_ACTION.EXECUTE_SCRIPT) { + return { + subAction: SUB_ACTION.EXECUTE_SCRIPT, + subActionParams: { + computerName: context.alerts[0].host?.name, + ...params.subActionParams, + }, + }; + } + + let body: string; + try { + let bodyObject; + const alerts = context.alerts; + if (alerts) { + // Remove the "kibana" entry from all alerts to reduce weight, the same data can be found in other parts of the alert object. + bodyObject = set( + 'context.alerts', + alerts.map(({ kibana, ...alert }) => alert), + variables + ); + } else { + bodyObject = variables; + } + body = JSON.stringify(bodyObject); + } catch (err) { + body = JSON.stringify({ error: { message: err.message } }); + } + return set('subActionParams.body', body, params); +}; diff --git a/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts b/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts new file mode 100644 index 0000000000000..d27f7dcc5588b --- /dev/null +++ b/x-pack/plugins/stack_connectors/server/connector_types/sentinelone/sentinelone.ts @@ -0,0 +1,276 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { ServiceParams, SubActionConnector } from '@kbn/actions-plugin/server'; +import type { AxiosError } from 'axios'; +import { SubActionRequestParams } from '@kbn/actions-plugin/server/sub_action_framework/types'; +import type { + SentinelOneConfig, + SentinelOneSecrets, + SentinelOneGetAgentsResponse, + SentinelOneGetAgentsParams, + SentinelOneGetRemoteScriptStatusParams, + SentinelOneBaseApiResponse, + SentinelOneGetRemoteScriptsParams, + SentinelOneGetRemoteScriptsResponse, + SentinelOneIsolateAgentParams, + SentinelOneKillProcessParams, + SentinelOneExecuteScriptParams, +} from '../../../common/sentinelone/types'; +import { + SentinelOneKillProcessResponseSchema, + SentinelOneExecuteScriptParamsSchema, + SentinelOneGetRemoteScriptsParamsSchema, + SentinelOneGetRemoteScriptsResponseSchema, + SentinelOneGetAgentsResponseSchema, + SentinelOneIsolateAgentResponseSchema, + SentinelOneIsolateAgentParamsSchema, + SentinelOneGetRemoteScriptStatusParamsSchema, + SentinelOneGetRemoteScriptStatusResponseSchema, + SentinelOneGetAgentsParamsSchema, + SentinelOneExecuteScriptResponseSchema, +} from '../../../common/sentinelone/schema'; +import { SUB_ACTION } from '../../../common/sentinelone/constants'; + +export const API_MAX_RESULTS = 1000; +export const API_PATH = '/web/api/v2.1'; + +export class SentinelOneConnector extends SubActionConnector< + SentinelOneConfig, + SentinelOneSecrets +> { + private urls: { + agents: string; + isolateAgent: string; + releaseAgent: string; + remoteScripts: string; + remoteScriptStatus: string; + remoteScriptsExecute: string; + }; + + constructor(params: ServiceParams) { + super(params); + + this.urls = { + isolateAgent: `${this.config.url}${API_PATH}/agents/actions/disconnect`, + releaseAgent: `${this.config.url}${API_PATH}/agents/actions/connect`, + remoteScripts: `${this.config.url}${API_PATH}/remote-scripts`, + remoteScriptStatus: `${this.config.url}${API_PATH}/remote-scripts/status`, + remoteScriptsExecute: `${this.config.url}${API_PATH}/remote-scripts/execute`, + agents: `${this.config.url}${API_PATH}/agents`, + }; + + this.registerSubActions(); + } + + private registerSubActions() { + this.registerSubAction({ + name: SUB_ACTION.GET_REMOTE_SCRIPTS, + method: 'getRemoteScripts', + schema: SentinelOneGetRemoteScriptsParamsSchema, + }); + + this.registerSubAction({ + name: SUB_ACTION.GET_REMOTE_SCRIPT_STATUS, + method: 'getRemoteScriptStatus', + schema: SentinelOneGetRemoteScriptStatusParamsSchema, + }); + + this.registerSubAction({ + name: SUB_ACTION.GET_AGENTS, + method: 'getAgents', + schema: SentinelOneGetAgentsParamsSchema, + }); + + this.registerSubAction({ + name: SUB_ACTION.ISOLATE_AGENT, + method: 'isolateAgent', + schema: SentinelOneIsolateAgentParamsSchema, + }); + + this.registerSubAction({ + name: SUB_ACTION.RELEASE_AGENT, + method: 'releaseAgent', + schema: SentinelOneIsolateAgentParamsSchema, + }); + + this.registerSubAction({ + name: SUB_ACTION.KILL_PROCESS, + method: 'killProcess', + schema: SentinelOneKillProcessResponseSchema, + }); + + this.registerSubAction({ + name: SUB_ACTION.EXECUTE_SCRIPT, + method: 'executeScript', + schema: SentinelOneExecuteScriptParamsSchema, + }); + } + + public async executeScript(payload: SentinelOneExecuteScriptParams) { + return this.sentinelOneApiRequest({ + url: this.urls.remoteScriptsExecute, + method: 'post', + data: { + data: { + outputDestination: 'SentinelCloud', + ...payload.script, + }, + filter: { + computerName: payload.computerName, + }, + }, + responseSchema: SentinelOneExecuteScriptResponseSchema, + }); + } + + public async killProcess({ processName, ...payload }: SentinelOneKillProcessParams) { + const agentData = await this.getAgents(payload); + + const agentId = agentData.data[0]?.id; + + if (!agentId) { + throw new Error(`No agent found for filter ${JSON.stringify(payload)}`); + } + + const terminateScriptResponse = await this.getRemoteScripts({ + query: 'terminate', + osTypes: [agentData?.data[0]?.osType], + }); + + if (!processName) { + throw new Error('No process name provided'); + } + + return this.sentinelOneApiRequest({ + url: this.urls.remoteScriptsExecute, + method: 'post', + data: { + data: { + outputDestination: 'SentinelCloud', + scriptId: terminateScriptResponse.data[0].id, + scriptRuntimeTimeoutSeconds: terminateScriptResponse.data[0].scriptRuntimeTimeoutSeconds, + taskDescription: terminateScriptResponse.data[0].scriptName, + inputParams: `--terminate --processes ${processName}`, + }, + filter: { + ids: agentId, + }, + }, + responseSchema: SentinelOneKillProcessResponseSchema, + }); + } + + public async isolateAgent(payload: SentinelOneIsolateAgentParams) { + const response = await this.getAgents(payload); + + if (response.data.length === 0) { + throw new Error('No agents found'); + } + + if (response.data[0].networkStatus === 'disconnected') { + throw new Error('Agent already isolated'); + } + + const agentId = response.data[0].id; + + return this.sentinelOneApiRequest({ + url: this.urls.isolateAgent, + method: 'post', + data: { + filter: { + ids: agentId, + }, + }, + responseSchema: SentinelOneIsolateAgentResponseSchema, + }); + } + + public async releaseAgent(payload: SentinelOneIsolateAgentParams) { + const response = await this.getAgents(payload); + + if (response.data.length === 0) { + throw new Error('No agents found'); + } + + if (response.data[0].networkStatus !== 'disconnected') { + throw new Error('Agent not isolated'); + } + + const agentId = response.data[0].id; + + return this.sentinelOneApiRequest({ + url: this.urls.releaseAgent, + method: 'post', + data: { + filter: { + ids: agentId, + }, + }, + responseSchema: SentinelOneIsolateAgentResponseSchema, + }); + } + + public async getAgents( + payload: SentinelOneGetAgentsParams + ): Promise { + return this.sentinelOneApiRequest({ + url: this.urls.agents, + params: { + ...payload, + }, + responseSchema: SentinelOneGetAgentsResponseSchema, + }); + } + + public async getRemoteScriptStatus(payload: SentinelOneGetRemoteScriptStatusParams) { + return this.sentinelOneApiRequest({ + url: this.urls.remoteScriptStatus, + params: { + parent_task_id: payload.parentTaskId, + }, + responseSchema: SentinelOneGetRemoteScriptStatusResponseSchema, + }); + } + + private async sentinelOneApiRequest( + req: SubActionRequestParams + ): Promise { + const response = await this.request({ + ...req, + params: { + ...req.params, + APIToken: this.secrets.token, + }, + }); + + return response.data; + } + + protected getResponseErrorMessage(error: AxiosError): string { + if (!error.response?.status) { + return 'Unknown API Error'; + } + if (error.response.status === 401) { + return 'Unauthorized API Error'; + } + return `API Error: ${error.response?.statusText}`; + } + + public async getRemoteScripts( + payload: SentinelOneGetRemoteScriptsParams + ): Promise { + return this.sentinelOneApiRequest({ + url: this.urls.remoteScripts, + params: { + limit: API_MAX_RESULTS, + ...payload, + }, + responseSchema: SentinelOneGetRemoteScriptsResponseSchema, + }); + } +} diff --git a/x-pack/plugins/stack_connectors/tsconfig.json b/x-pack/plugins/stack_connectors/tsconfig.json index 7cc6696f04368..f18dfaea77cca 100644 --- a/x-pack/plugins/stack_connectors/tsconfig.json +++ b/x-pack/plugins/stack_connectors/tsconfig.json @@ -33,6 +33,7 @@ "@kbn/core-saved-objects-common", "@kbn/core-http-browser-mocks", "@kbn/core-saved-objects-api-server-mocks", + "@kbn/securitysolution-ecs", ], "exclude": [ "target/**/*", diff --git a/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts b/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts index 16d63c60c4e1b..770fb102c5369 100644 --- a/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts +++ b/x-pack/plugins/synthetics/server/routes/monitor_cruds/get_monitor.ts @@ -59,7 +59,7 @@ export const getSyntheticsMonitorRoute: SyntheticsRestApiRouteFactory = () => ({ const encryptedSavedObjectsClient = encryptedSavedObjects.getClient(); - return getSyntheticsMonitor({ + return await getSyntheticsMonitor({ monitorId, encryptedSavedObjectsClient, savedObjectsClient, diff --git a/x-pack/plugins/task_manager/server/queries/oldest_idle_action_task.ts b/x-pack/plugins/task_manager/server/queries/oldest_idle_action_task.ts index 49e7bc1e8d9e3..69947cb08fc8d 100644 --- a/x-pack/plugins/task_manager/server/queries/oldest_idle_action_task.ts +++ b/x-pack/plugins/task_manager/server/queries/oldest_idle_action_task.ts @@ -44,6 +44,7 @@ export const getOldestIdleActionTask = async ( 'actions:.jira', 'actions:.resilient', 'actions:.teams', + 'actions:.sentinelone', ], }, }, diff --git a/x-pack/plugins/task_manager/server/saved_objects/index.ts b/x-pack/plugins/task_manager/server/saved_objects/index.ts index 53d09d4baf131..0bb12906708de 100644 --- a/x-pack/plugins/task_manager/server/saved_objects/index.ts +++ b/x-pack/plugins/task_manager/server/saved_objects/index.ts @@ -50,6 +50,7 @@ export function setupSavedObjects( 'actions:.jira', 'actions:.resilient', 'actions:.teams', + 'actions:.sentinelone', ], }, }, diff --git a/x-pack/plugins/translations/translations/fr-FR.json b/x-pack/plugins/translations/translations/fr-FR.json index fafb56aed9727..f70caee66aec9 100644 --- a/x-pack/plugins/translations/translations/fr-FR.json +++ b/x-pack/plugins/translations/translations/fr-FR.json @@ -18661,8 +18661,8 @@ "xpack.infra.homePage.toolbar.showingLastOneMinuteDataText": "Dernières {duration} de données pour l'heure sélectionnée", "xpack.infra.hostsViewPage.errorOnCreateOrLoadDataview": "Une erreur s’est produite lors de la création d’une vue de données : {metricAlias}. Essayez de recharger la page.", "xpack.infra.hostsViewPage.landing.calloutRoleClarificationWithDocsLink": "Un rôle avec accès aux paramètres avancés dans Kibana sera nécessaire. {docsLink}", - "xpack.infra.hostsViewPage.metricTrend.subtitle.average.limit": "Moyenne (de {limit} hôtes)", - "xpack.infra.hostsViewPage.metricTrend.subtitle.hostCount.limit": "Limité à {limit}", + "xpack.infra.hostsViewPage.kpi.subtitle.average.limit": "Moyenne (de {limit} hôtes)", + "xpack.infra.hostsViewPage.kpi.subtitle.hostCount.limit": "Limité à {limit}", "xpack.infra.hostsViewPage.table.selectedHostsButton": "Sélection effectuée de {selectedHostsCount} {selectedHostsCount, plural, =1 {hôte} one {hôtes} many {hôtes} other {hôtes}}", "xpack.infra.hostsViewPage.table.tooltip.documentationLabel": "Pour en savoir plus, consultez {documentation}", "xpack.infra.inventoryTimeline.header": "Moyenne {metricLabel}", @@ -18801,6 +18801,11 @@ "xpack.infra.assetDetailsEmbeddable.description": "Ajoutez une vue de détails de ressource.", "xpack.infra.assetDetailsEmbeddable.displayName": "Détails de ressource", "xpack.infra.assetDetailsEmbeddable.title": "Détails de ressource", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.cpuUsage.title": "Utilisation CPU", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.diskSpaceUsage.title": "Utilisation de l’espace disque", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.memoryUsage.title": "Utilisation mémoire", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.normalizedLoad1m.title": "Charge normalisée", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.subtitle.average": "Moyenne", "xpack.infra.bottomDrawer.kubernetesDashboardsLink": "Tableaux de bord Kubernetes", "xpack.infra.chartSection.missingMetricDataBody": "Les données de ce graphique sont manquantes.", "xpack.infra.chartSection.missingMetricDataText": "Données manquantes", @@ -18885,6 +18890,7 @@ "xpack.infra.hostsViewPage.errorOnCreateOrLoadDataviewTitle": "Erreur lors de la création d'un Data View", "xpack.infra.hostsViewPage.hostLimit": "Limite de l'hôte", "xpack.infra.hostsViewPage.hostLimit.tooltip": "Pour garantir des performances de recherche plus rapides, le nombre d'hôtes retournés est limité.", + "xpack.infra.hostsViewPage.kpi.hostCount.title": "Hôtes", "xpack.infra.hostsViewPage.landing.calloutReachOutToYourKibanaAdministrator": "Votre rôle d'utilisateur ne dispose pas des privilèges suffisants pour activer cette fonctionnalité - veuillez \n contacter votre administrateur Kibana et lui demander de visiter cette page pour activer la fonctionnalité.", "xpack.infra.hostsViewPage.landing.enableHostsView": "Activer la vue des hôtes", "xpack.infra.hostsViewPage.landing.introMessage": "Bienvenue sur la fonctionnalité \"Hôtes\", désormais disponible en version bêta. Avec ce puissant outil, \n vous pouvez facilement voir et analyser vos hôtes et identifier tout problème afin de les corriger rapidement. \n Obtenez une vue détaillée des indicateurs pour vos hôtes afin de savoir lesquels déclenchent le plus d’alertes, et filtrez \n les hôtes que vous voulez analyser à l'aide de tout filtre KQL ainsi que de répartitions simples comme le fournisseur cloud et \n le système d'exploitation.", @@ -18901,12 +18907,6 @@ "xpack.infra.hostsViewPage.metrics.tooltip.normalizedLoad1m": "Moyenne de la charge sur 1 minute normalisée par le nombre de cœurs de processeur. ", "xpack.infra.hostsViewPage.metrics.tooltip.rx": "Nombre d'octets qui ont été reçus par seconde sur les interfaces publiques des hôtes.", "xpack.infra.hostsViewPage.metrics.tooltip.tx": "Nombre d'octets envoyés par seconde sur les interfaces publiques des hôtes.", - "xpack.infra.hostsViewPage.metricTrend.cpuUsage.title": "Utilisation CPU", - "xpack.infra.hostsViewPage.metricTrend.diskSpaceUsage.title": "Utilisation de l’espace disque", - "xpack.infra.hostsViewPage.metricTrend.hostCount.title": "Hôtes", - "xpack.infra.hostsViewPage.metricTrend.memoryUsage.title": "Utilisation mémoire", - "xpack.infra.hostsViewPage.metricTrend.normalizedLoad1m.title": "Charge normalisée", - "xpack.infra.hostsViewPage.metricTrend.subtitle.average": "Moyenne", "xpack.infra.hostsViewPage.table.addFilter": "Ajouter un filtre", "xpack.infra.hostsViewPage.table.cpuUsageColumnHeader": "Utilisation CPU (moy.)", "xpack.infra.hostsViewPage.table.diskSpaceUsageColumnHeader": "Utilisation de l’espace disque (moy.)", @@ -29231,10 +29231,7 @@ "xpack.security.accountManagement.userProfile.passwordLabel": "Mot de passe", "xpack.security.accountManagement.userProfile.prepopulatedImageUrlPromptText": "Sélectionner ou glisser-déposer une image de remplacement", "xpack.security.accountManagement.userProfile.randomizeButton": "Randomiser", - "xpack.security.accountManagement.userProfile.requiresPageReloadToastButtonLabel": "Actualiser la page", - "xpack.security.accountManagement.userProfile.requiresPageReloadToastDescription": "Un ou plusieurs paramètres nécessitent d’actualiser la page pour pouvoir prendre effet.", "xpack.security.accountManagement.userProfile.submitErrorTitle": "Impossible de mettre à jour le profil", - "xpack.security.accountManagement.userProfile.submitSuccessTitle": "Profil mis à jour", "xpack.security.accountManagement.userProfile.themeFormGroupDescription": "Sélectionnez l'apparence de votre interface.", "xpack.security.accountManagement.userProfile.title": "Profil", "xpack.security.accountManagement.userProfile.usernameHelpText": "Le nom de l'utilisateur ne peut pas être modifié après la création du compte.", diff --git a/x-pack/plugins/translations/translations/ja-JP.json b/x-pack/plugins/translations/translations/ja-JP.json index 66ea13be17908..ca71e8c833cb5 100644 --- a/x-pack/plugins/translations/translations/ja-JP.json +++ b/x-pack/plugins/translations/translations/ja-JP.json @@ -18675,8 +18675,8 @@ "xpack.infra.homePage.toolbar.showingLastOneMinuteDataText": "指定期間のデータの最後の{duration}", "xpack.infra.hostsViewPage.errorOnCreateOrLoadDataview": "データビューの作成中にエラーが発生しました:{metricAlias}。ページを再読み込みしてください。", "xpack.infra.hostsViewPage.landing.calloutRoleClarificationWithDocsLink": "Kibanaの高度な設定にアクセスできるロールが必要です。{docsLink}", - "xpack.infra.hostsViewPage.metricTrend.subtitle.average.limit": "({limit}ホストの)平均", - "xpack.infra.hostsViewPage.metricTrend.subtitle.hostCount.limit": "{limit}に制限", + "xpack.infra.hostsViewPage.kpi.subtitle.average.limit": "({limit}ホストの)平均", + "xpack.infra.hostsViewPage.kpi.subtitle.hostCount.limit": "{limit}に制限", "xpack.infra.hostsViewPage.table.selectedHostsButton": "{selectedHostsCount}件の{selectedHostsCount, plural, =1 {ホスト} other {ホスト}}が選択済み", "xpack.infra.hostsViewPage.table.tooltip.documentationLabel": "詳細については、{documentation}を参照してください。", "xpack.infra.inventoryTimeline.header": "平均{metricLabel}", @@ -18815,6 +18815,11 @@ "xpack.infra.assetDetailsEmbeddable.description": "アセット詳細ビューを追加します。", "xpack.infra.assetDetailsEmbeddable.displayName": "アセット詳細", "xpack.infra.assetDetailsEmbeddable.title": "アセット詳細", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.cpuUsage.title": "CPU使用状況", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.diskSpaceUsage.title": "ディスク容量使用状況", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.memoryUsage.title": "メモリー使用状況", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.normalizedLoad1m.title": "正規化された負荷", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.subtitle.average": "平均", "xpack.infra.bottomDrawer.kubernetesDashboardsLink": "Kubernetesダッシュボード", "xpack.infra.chartSection.missingMetricDataBody": "このチャートはデータが欠けています。", "xpack.infra.chartSection.missingMetricDataText": "データが欠けています", @@ -18899,6 +18904,7 @@ "xpack.infra.hostsViewPage.errorOnCreateOrLoadDataviewTitle": "データビューの作成エラー", "xpack.infra.hostsViewPage.hostLimit": "ホスト制限", "xpack.infra.hostsViewPage.hostLimit.tooltip": "クエリパフォーマンスを確実に高めるために、返されるホスト数には制限があります", + "xpack.infra.hostsViewPage.kpi.hostCount.title": "ホスト", "xpack.infra.hostsViewPage.landing.calloutReachOutToYourKibanaAdministrator": "ユーザーロールには、この機能を有効にするための十分な権限がありません。 \n この機能を有効にするために、Kibana管理者に連絡して、このページにアクセスするように依頼してください。", "xpack.infra.hostsViewPage.landing.enableHostsView": "ホストビューを有効化", "xpack.infra.hostsViewPage.landing.introMessage": "「ホスト」機能へようこそ!ベータ版でご利用いただけるようになりました。この強力なツールを使用すると、\n ホストを簡単に表示、分析し、あらゆる問題を特定して、迅速に対処できます。\n ホストのメトリックを詳細に表示し、どのメトリックが最も多くのアラートをトリガーしているかを確認し、 \n 任意のKQLフィルターを使用して分析したいホストや、クラウドプロバイダーやオペレーティングシステムといった簡単な内訳をフィルターできます \n 。", @@ -18915,12 +18921,6 @@ "xpack.infra.hostsViewPage.metrics.tooltip.normalizedLoad1m": "CPUコア数で正規化した1分間の負荷平均。", "xpack.infra.hostsViewPage.metrics.tooltip.rx": "ホストのパブリックインターフェースで1秒間に受信したバイト数。", "xpack.infra.hostsViewPage.metrics.tooltip.tx": "ホストのパブリックインターフェースで1秒間に送信したバイト数。", - "xpack.infra.hostsViewPage.metricTrend.cpuUsage.title": "CPU使用状況", - "xpack.infra.hostsViewPage.metricTrend.diskSpaceUsage.title": "ディスク容量使用状況", - "xpack.infra.hostsViewPage.metricTrend.hostCount.title": "ホスト", - "xpack.infra.hostsViewPage.metricTrend.memoryUsage.title": "メモリー使用状況", - "xpack.infra.hostsViewPage.metricTrend.normalizedLoad1m.title": "正規化された負荷", - "xpack.infra.hostsViewPage.metricTrend.subtitle.average": "平均", "xpack.infra.hostsViewPage.table.addFilter": "フィルターを追加します", "xpack.infra.hostsViewPage.table.cpuUsageColumnHeader": "CPU使用状況(平均)", "xpack.infra.hostsViewPage.table.diskSpaceUsageColumnHeader": "ディスク容量使用状況(平均)", @@ -29230,10 +29230,7 @@ "xpack.security.accountManagement.userProfile.passwordLabel": "パスワード", "xpack.security.accountManagement.userProfile.prepopulatedImageUrlPromptText": "置換画像を選択するかドラッグアンドドロップします", "xpack.security.accountManagement.userProfile.randomizeButton": "ランダム化", - "xpack.security.accountManagement.userProfile.requiresPageReloadToastButtonLabel": "ページを再読み込み", - "xpack.security.accountManagement.userProfile.requiresPageReloadToastDescription": "設定を有効にするためにページの再読み込みが必要です。", "xpack.security.accountManagement.userProfile.submitErrorTitle": "プロファイルを更新できませんでした", - "xpack.security.accountManagement.userProfile.submitSuccessTitle": "プロファイルが更新されました", "xpack.security.accountManagement.userProfile.themeFormGroupDescription": "インターフェースの表示を選択します。", "xpack.security.accountManagement.userProfile.title": "プロフィール", "xpack.security.accountManagement.userProfile.usernameHelpText": "アカウントの作成後は、ユーザー名を変更できません。", diff --git a/x-pack/plugins/translations/translations/zh-CN.json b/x-pack/plugins/translations/translations/zh-CN.json index 7b86064bc4322..ef71636689383 100644 --- a/x-pack/plugins/translations/translations/zh-CN.json +++ b/x-pack/plugins/translations/translations/zh-CN.json @@ -18675,8 +18675,8 @@ "xpack.infra.homePage.toolbar.showingLastOneMinuteDataText": "选定时间过去 {duration}的数据", "xpack.infra.hostsViewPage.errorOnCreateOrLoadDataview": "尝试创建以下数据视图时出错:{metricAlias}。尝试重新加载该页面。", "xpack.infra.hostsViewPage.landing.calloutRoleClarificationWithDocsLink": "他们将需要有权访问 Kibana 中的高级设置的角色。{docsLink}", - "xpack.infra.hostsViewPage.metricTrend.subtitle.average.limit": "平均值(属于 {limit} 台主机)", - "xpack.infra.hostsViewPage.metricTrend.subtitle.hostCount.limit": "限定为 {limit}", + "xpack.infra.hostsViewPage.kpi.subtitle.average.limit": "平均值(属于 {limit} 台主机)", + "xpack.infra.hostsViewPage.kpi.subtitle.hostCount.limit": "限定为 {limit}", "xpack.infra.hostsViewPage.table.selectedHostsButton": "已选定 {selectedHostsCount} 个{selectedHostsCount, plural, =1 {主机} other {主机}}", "xpack.infra.hostsViewPage.table.tooltip.documentationLabel": "请参阅 {documentation} 了解更多信息", "xpack.infra.inventoryTimeline.header": "平均值 {metricLabel}", @@ -18815,6 +18815,11 @@ "xpack.infra.assetDetailsEmbeddable.description": "添加资产详情视图。", "xpack.infra.assetDetailsEmbeddable.displayName": "资产详情", "xpack.infra.assetDetailsEmbeddable.title": "资产详情", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.cpuUsage.title": "CPU 使用率", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.diskSpaceUsage.title": "磁盘空间使用率", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.memoryUsage.title": "内存利用率", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.normalizedLoad1m.title": "标准化负载", + "xpack.infra.assetDetailsEmbeddable.overview.kpi.subtitle.average": "平均值", "xpack.infra.bottomDrawer.kubernetesDashboardsLink": "Kubernetes 仪表板", "xpack.infra.chartSection.missingMetricDataBody": "此图表的数据缺失。", "xpack.infra.chartSection.missingMetricDataText": "缺失数据", @@ -18899,6 +18904,7 @@ "xpack.infra.hostsViewPage.errorOnCreateOrLoadDataviewTitle": "创建数据视图时出错", "xpack.infra.hostsViewPage.hostLimit": "主机限制", "xpack.infra.hostsViewPage.hostLimit.tooltip": "为确保更快的查询性能,对返回的主机数量实施了限制", + "xpack.infra.hostsViewPage.kpi.hostCount.title": "主机", "xpack.infra.hostsViewPage.landing.calloutReachOutToYourKibanaAdministrator": "您的用户角色权限不足,无法启用此功能 - 请 \n 联系您的 Kibana 管理员,要求他们访问此页面以启用该功能。", "xpack.infra.hostsViewPage.landing.enableHostsView": "启用主机视图", "xpack.infra.hostsViewPage.landing.introMessage": "欢迎使用“主机”功能,该功能现在为公测版!使用这个强大的工具,\n 您可以轻松查看并分析主机,并确定任何问题以便快速予以解决。\n 获取您主机的详细指标视图,了解哪些指标触发了大多数告警, \n 并使用任何 KQL 筛选以及云提供商和操作系统等常见细目筛选 \n 您要分析的主机。", @@ -18915,12 +18921,6 @@ "xpack.infra.hostsViewPage.metrics.tooltip.normalizedLoad1m": "1 分钟负载平均值,按 CPU 核心数进行标准化。", "xpack.infra.hostsViewPage.metrics.tooltip.rx": "主机的公共接口上每秒接收的字节数。", "xpack.infra.hostsViewPage.metrics.tooltip.tx": "主机的公共接口上每秒发送的字节数。", - "xpack.infra.hostsViewPage.metricTrend.cpuUsage.title": "CPU 使用率", - "xpack.infra.hostsViewPage.metricTrend.diskSpaceUsage.title": "磁盘空间使用率", - "xpack.infra.hostsViewPage.metricTrend.hostCount.title": "主机", - "xpack.infra.hostsViewPage.metricTrend.memoryUsage.title": "内存利用率", - "xpack.infra.hostsViewPage.metricTrend.normalizedLoad1m.title": "标准化负载", - "xpack.infra.hostsViewPage.metricTrend.subtitle.average": "平均值", "xpack.infra.hostsViewPage.table.addFilter": "添加筛选", "xpack.infra.hostsViewPage.table.cpuUsageColumnHeader": "CPU 使用率(平均值)", "xpack.infra.hostsViewPage.table.diskSpaceUsageColumnHeader": "磁盘空间使用率(平均值)", @@ -29226,10 +29226,7 @@ "xpack.security.accountManagement.userProfile.passwordLabel": "密码", "xpack.security.accountManagement.userProfile.prepopulatedImageUrlPromptText": "选择或拖放替换图像", "xpack.security.accountManagement.userProfile.randomizeButton": "随机化", - "xpack.security.accountManagement.userProfile.requiresPageReloadToastButtonLabel": "重新加载页面", - "xpack.security.accountManagement.userProfile.requiresPageReloadToastDescription": "一个或多个设置需要您重新加载页面才能生效。", "xpack.security.accountManagement.userProfile.submitErrorTitle": "无法更新配置文件", - "xpack.security.accountManagement.userProfile.submitSuccessTitle": "配置文件已更新", "xpack.security.accountManagement.userProfile.themeFormGroupDescription": "选择您界面的外观。", "xpack.security.accountManagement.userProfile.title": "配置文件", "xpack.security.accountManagement.userProfile.usernameHelpText": "创建帐户后无法更改用户名。", diff --git a/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.tsx b/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.tsx index 3bb65037d5c93..346dce44af60b 100644 --- a/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.tsx +++ b/x-pack/plugins/triggers_actions_ui/public/application/components/text_area_with_message_variables.tsx @@ -20,6 +20,7 @@ interface Props { isDisabled?: boolean; editAction: (property: string, value: any, index: number) => void; label: string; + helpText?: string; errors?: string[]; } @@ -32,6 +33,7 @@ export const TextAreaWithMessageVariables: React.FunctionComponent = ({ editAction, label, errors, + helpText, }) => { const [currentTextElement, setCurrentTextElement] = useState(null); @@ -64,6 +66,7 @@ export const TextAreaWithMessageVariables: React.FunctionComponent = ({ paramsProperty={paramsProperty} /> } + helpText={helpText} > { actions: { - selectTab: (tab: 'edit' | 'simulate') => void; - clickSubmitButton: () => void; - clickSimulateButton: () => void; + selectTab: (tab: 'edit' | 'simulate') => Promise; + clickSubmitButton: () => Promise; + clickSimulateButton: () => Promise; }; } export const setup = async (httpSetup: HttpSetup): Promise => { const initTestBed = registerTestBed(WithAppDependencies(WatchEditPage, httpSetup), testBedConfig); const testBed = await initTestBed(); + const { find, component } = testBed; /** * User Actions */ - const selectTab = (tab: 'edit' | 'simulate') => { + const selectTab = async (tab: 'edit' | 'simulate') => { const tabs = ['edit', 'simulate']; - testBed.find('tab').at(tabs.indexOf(tab)).simulate('click'); + await act(async () => { + find('tab').at(tabs.indexOf(tab)).simulate('click'); + }); + + component.update(); }; - const clickSubmitButton = () => { - testBed.find('saveWatchButton').simulate('click'); + const clickSubmitButton = async () => { + await act(async () => { + testBed.find('saveWatchButton').simulate('click'); + }); + + component.update(); }; - const clickSimulateButton = () => { - testBed.find('simulateWatchButton').simulate('click'); + const clickSimulateButton = async () => { + await act(async () => { + testBed.find('simulateWatchButton').simulate('click'); + }); + + component.update(); }; return { diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts b/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts index d2bb49a861167..b64ea8b003843 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts +++ b/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_create_threshold_page.helpers.ts @@ -5,6 +5,8 @@ * 2.0. */ +import { act } from 'react-dom/test-utils'; + import { registerTestBed, TestBed, AsyncTestBedConfig } from '@kbn/test-jest-helpers'; import { HttpSetup } from '@kbn/core/public'; @@ -24,39 +26,56 @@ const testBedConfig: AsyncTestBedConfig = { export interface WatchCreateThresholdTestBed extends TestBed { actions: { - clickSubmitButton: () => void; - clickAddActionButton: () => void; + clickSubmitButton: () => Promise; + clickAddActionButton: () => Promise; clickActionLink: ( actionType: 'logging' | 'email' | 'webhook' | 'index' | 'slack' | 'jira' | 'pagerduty' - ) => void; - clickSimulateButton: () => void; + ) => Promise; + clickSimulateButton: () => Promise; }; } export const setup = async (httpSetup: HttpSetup): Promise => { const initTestBed = registerTestBed(WithAppDependencies(WatchEditPage, httpSetup), testBedConfig); const testBed = await initTestBed(); + const { find, component } = testBed; /** * User Actions */ - const clickSubmitButton = () => { - testBed.find('saveWatchButton').simulate('click'); + const clickSubmitButton = async () => { + await act(async () => { + find('saveWatchButton').simulate('click'); + }); + + component.update(); }; - const clickAddActionButton = () => { - testBed.find('addWatchActionButton').simulate('click'); + const clickAddActionButton = async () => { + await act(async () => { + find('addWatchActionButton').simulate('click'); + }); + + component.update(); }; - const clickSimulateButton = () => { - testBed.find('simulateActionButton').simulate('click'); + const clickSimulateButton = async () => { + await act(async () => { + find('simulateActionButton').simulate('click'); + }); + + component.update(); }; - const clickActionLink = ( + const clickActionLink = async ( actionType: 'logging' | 'email' | 'webhook' | 'index' | 'slack' | 'jira' | 'pagerduty' ) => { - testBed.find(`${actionType}ActionButton`).simulate('click'); + await act(async () => { + find(`${actionType}ActionButton`).simulate('click'); + }); + + component.update(); }; return { diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts b/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts index 20f8389c0fec7..8e528af2b3366 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts +++ b/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_edit_page.helpers.ts @@ -4,6 +4,7 @@ * 2.0; you may not use this file except in compliance with the Elastic License * 2.0. */ +import { act } from 'react-dom/test-utils'; import { registerTestBed, TestBed, AsyncTestBedConfig } from '@kbn/test-jest-helpers'; import { HttpSetup } from '@kbn/core/public'; @@ -25,7 +26,7 @@ const testBedConfig: AsyncTestBedConfig = { export interface WatchEditTestBed extends TestBed { actions: { - clickSubmitButton: () => void; + clickSubmitButton: () => Promise; }; } @@ -37,8 +38,12 @@ export const setup = async (httpSetup: HttpSetup): Promise => * User Actions */ - const clickSubmitButton = () => { - testBed.find('saveWatchButton').simulate('click'); + const clickSubmitButton = async () => { + await act(async () => { + testBed.find('saveWatchButton').simulate('click'); + }); + + testBed.component.update(); }; return { diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts b/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts index 3361619ee9dbb..cd4fd2ab2cfba 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts +++ b/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_list_page.helpers.ts @@ -27,9 +27,9 @@ const testBedConfig: AsyncTestBedConfig = { export interface WatchListTestBed extends TestBed { actions: { - selectWatchAt: (index: number) => void; - clickWatchActionAt: (index: number, action: 'delete' | 'edit') => void; - searchWatches: (term: string) => void; + selectWatchAt: (index: number) => Promise; + clickWatchActionAt: (index: number, action: 'delete' | 'edit') => Promise; + searchWatches: (term: string) => Promise; advanceTimeToTableRefresh: () => Promise; }; } @@ -42,11 +42,15 @@ export const setup = async (httpSetup: HttpSetup): Promise => * User Actions */ - const selectWatchAt = (index: number) => { + const selectWatchAt = async (index: number) => { const { rows } = testBed.table.getMetaData('watchesTable'); const row = rows[index]; const checkBox = row.reactWrapper.find('input').hostNodes(); - checkBox.simulate('change', { target: { checked: true } }); + + await act(async () => { + checkBox.simulate('change', { target: { checked: true } }); + }); + testBed.component.update(); }; const clickWatchActionAt = async (index: number, action: 'delete' | 'edit') => { @@ -58,18 +62,21 @@ export const setup = async (httpSetup: HttpSetup): Promise => await act(async () => { button.simulate('click'); - component.update(); }); + component.update(); }; - const searchWatches = (term: string) => { + const searchWatches = async (term: string) => { const { find, component } = testBed; const searchInput = find('watchesTableContainer').find('.euiFieldSearch'); // Enter input into the search box // @ts-ignore searchInput.instance().value = term; - searchInput.simulate('keyup', { key: 'Enter', keyCode: 13, which: 13 }); + + await act(async () => { + searchInput.simulate('keyup', { key: 'Enter', keyCode: 13, which: 13 }); + }); component.update(); }; diff --git a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts b/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts index 601857ca941f0..7c6da257b1700 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts +++ b/x-pack/plugins/watcher/__jest__/client_integration/helpers/watch_status_page.helpers.ts @@ -32,11 +32,11 @@ const testBedConfig: AsyncTestBedConfig = { export interface WatchStatusTestBed extends TestBed { actions: { - selectTab: (tab: 'execution history' | 'action statuses') => void; - clickToggleActivationButton: () => void; - clickAcknowledgeButton: (index: number) => void; - clickDeleteWatchButton: () => void; - clickWatchExecutionAt: (index: number, tableCellText: string) => void; + selectTab: (tab: 'execution history' | 'action statuses') => Promise; + clickToggleActivationButton: () => Promise; + clickAcknowledgeButton: (index: number) => Promise; + clickDeleteWatchButton: () => Promise; + clickWatchExecutionAt: (index: number, tableCellText: string) => Promise; }; } @@ -51,10 +51,14 @@ export const setup = async (httpSetup: HttpSetup): Promise = * User Actions */ - const selectTab = (tab: 'execution history' | 'action statuses') => { + const selectTab = async (tab: 'execution history' | 'action statuses') => { + const { component, find } = testBed; const tabs = ['execution history', 'action statuses']; - testBed.find('tab').at(tabs.indexOf(tab)).simulate('click'); + await act(async () => { + find('tab').at(tabs.indexOf(tab)).simulate('click'); + }); + component.update(); }; const clickToggleActivationButton = async () => { @@ -63,8 +67,8 @@ export const setup = async (httpSetup: HttpSetup): Promise = await act(async () => { button.simulate('click'); - component.update(); }); + component.update(); }; const clickAcknowledgeButton = async (index: number) => { @@ -76,8 +80,8 @@ export const setup = async (httpSetup: HttpSetup): Promise = await act(async () => { button.simulate('click'); - component.update(); }); + component.update(); }; const clickDeleteWatchButton = async () => { @@ -86,8 +90,8 @@ export const setup = async (httpSetup: HttpSetup): Promise = await act(async () => { button.simulate('click'); - component.update(); }); + component.update(); }; const clickWatchExecutionAt = async (index: number, tableCellText: string) => { diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_create_json_page.test.ts b/x-pack/plugins/watcher/__jest__/client_integration/watch_create_json_page.test.tsx similarity index 88% rename from x-pack/plugins/watcher/__jest__/client_integration/watch_create_json_page.test.ts rename to x-pack/plugins/watcher/__jest__/client_integration/watch_create_json_page.test.tsx index f79a72b456afb..f6231ab328d25 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/watch_create_json_page.test.ts +++ b/x-pack/plugins/watcher/__jest__/client_integration/watch_create_json_page.test.tsx @@ -5,6 +5,7 @@ * 2.0. */ +import React from 'react'; import { act } from 'react-dom/test-utils'; import { getExecuteDetails } from '../../__fixtures__'; @@ -16,12 +17,29 @@ import { WATCH } from './helpers/jest_constants'; const { setup } = pageHelpers.watchCreateJsonPage; +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + // Mocking CodeEditor, which uses React Monaco under the hood + CodeEditor: (props: any) => ( + { + props.onChange(e.jsonContent); + }} + /> + ), + }; +}); + describe(' create route', () => { const { httpSetup, httpRequestsMockHelpers } = setupEnvironment(); let testBed: WatchCreateJsonTestBed; beforeAll(() => { - jest.useFakeTimers({ legacyFakeTimers: true }); + jest.useFakeTimers(); }); afterAll(() => { @@ -30,7 +48,10 @@ describe(' create route', () => { describe('on component mount', () => { beforeEach(async () => { - testBed = await setup(httpSetup); + await act(async () => { + testBed = await setup(httpSetup); + }); + testBed.component.update(); }); @@ -47,13 +68,13 @@ describe(' create route', () => { expect(find('tab').map((t) => t.text())).toEqual(['Edit', 'Simulate']); }); - test('should navigate to the "Simulate" tab', () => { + test('should navigate to the "Simulate" tab', async () => { const { exists, actions } = testBed; expect(exists('jsonWatchForm')).toBe(true); expect(exists('jsonWatchSimulateForm')).toBe(false); - actions.selectTab('simulate'); + await actions.selectTab('simulate'); expect(exists('jsonWatchForm')).toBe(false); expect(exists('jsonWatchSimulateForm')).toBe(true); @@ -62,19 +83,19 @@ describe(' create route', () => { describe('create', () => { describe('form validation', () => { - test('should not allow empty ID field', () => { + test('should not allow empty ID field', async () => { const { form, actions } = testBed; form.setInputValue('idInput', ''); - actions.clickSubmitButton(); + await actions.clickSubmitButton(); expect(form.getErrorsMessages()).toContain('ID is required'); }); - test('should not allow invalid characters for ID field', () => { + test('should not allow invalid characters for ID field', async () => { const { form, actions } = testBed; form.setInputValue('idInput', 'invalid$id*field/'); - actions.clickSubmitButton(); + await actions.clickSubmitButton(); expect(form.getErrorsMessages()).toContain( 'ID can only contain letters, underscores, dashes, periods and numbers.' @@ -90,9 +111,7 @@ describe(' create route', () => { form.setInputValue('nameInput', watch.name); form.setInputValue('idInput', watch.id); - await act(async () => { - actions.clickSubmitButton(); - }); + await actions.clickSubmitButton(); const DEFAULT_LOGGING_ACTION_ID = 'logging_1'; const DEFAULT_LOGGING_ACTION_TYPE = 'logging'; @@ -125,7 +144,7 @@ describe(' create route', () => { }); test('should surface the API errors from the "save" HTTP request', async () => { - const { form, actions, component, exists, find } = testBed; + const { form, actions, exists, find } = testBed; const { watch } = WATCH; form.setInputValue('nameInput', watch.name); @@ -140,10 +159,7 @@ describe(' create route', () => { httpRequestsMockHelpers.setSaveWatchResponse(watch.id, undefined, error); - await act(async () => { - actions.clickSubmitButton(); - }); - component.update(); + await actions.clickSubmitButton(); expect(exists('sectionError')).toBe(true); expect(find('sectionError').text()).toContain(error.message); @@ -152,12 +168,13 @@ describe(' create route', () => { }); describe('simulate', () => { - beforeEach(() => { + beforeEach(async () => { const { actions, form } = testBed; // Set watch id (required field) and switch to simulate tab form.setInputValue('idInput', WATCH.watch.id); - actions.selectTab('simulate'); + + await actions.selectTab('simulate'); }); describe('form payload & API errors', () => { @@ -167,9 +184,7 @@ describe(' create route', () => { watch: { id, type }, } = WATCH; - await act(async () => { - actions.clickSimulateButton(); - }); + await actions.clickSimulateButton(); const actionModes = Object.keys(defaultWatch.actions).reduce( (actionAccum: any, action) => { @@ -202,7 +217,7 @@ describe(' create route', () => { }); test('should execute a watch with a valid payload', async () => { - const { actions, form, find, exists, component } = testBed; + const { actions, form, find, exists } = testBed; const { watch: { id, type }, } = WATCH; @@ -228,10 +243,7 @@ describe(' create route', () => { }, }); - await act(async () => { - actions.clickSimulateButton(); - }); - component.update(); + await actions.clickSimulateButton(); const actionModes = Object.keys(defaultWatch.actions).reduce( (actionAccum: any, action) => { @@ -303,7 +315,7 @@ describe(' create route', () => { conditionMet ? 'when the condition is met' : 'when the condition is not met', () => { beforeEach(async () => { - const { actions, component, form } = testBed; + const { actions, form } = testBed; form.setInputValue('actionModesSelect', actionMode); httpRequestsMockHelpers.setLoadExecutionResultResponse({ @@ -335,10 +347,7 @@ describe(' create route', () => { }, }); - await act(async () => { - actions.clickSimulateButton(); - }); - component.update(); + await actions.clickSimulateButton(); }); test('should set the correct condition met status', () => { diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx b/x-pack/plugins/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx index d7df7efd7be12..8260bd75ebb04 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx +++ b/x-pack/plugins/watcher/__jest__/client_integration/watch_create_threshold_page.test.tsx @@ -23,16 +23,6 @@ const MATCH_INDICES = ['index1']; const ES_FIELDS = [{ name: '@timestamp', type: 'date' }]; -// Since watchID's are dynamically created, we have to mock -// the function that generates them in order to be able to match -// against it. -jest.mock('uuid', () => ({ - v4: () => { - // eslint-disable-next-line @typescript-eslint/no-var-requires - return require('./helpers/jest_constants').WATCH_ID; - }, -})); - const SETTINGS = { action_types: { email: { enabled: true }, @@ -55,6 +45,37 @@ const WATCH_VISUALIZE_DATA = { }, }; +// Since watchID's are dynamically created, we have to mock +// the function that generates them in order to be able to match +// against it. +jest.mock('uuid', () => ({ + v4: () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + return require('./helpers/jest_constants').WATCH_ID; + }, + v1: () => { + // eslint-disable-next-line @typescript-eslint/no-var-requires + return require('./helpers/jest_constants').WATCH_ID; + }, +})); + +jest.mock('@kbn/kibana-react-plugin/public', () => { + const original = jest.requireActual('@kbn/kibana-react-plugin/public'); + return { + ...original, + // Mocking CodeEditor, which uses React Monaco under the hood + CodeEditor: (props: any) => ( + { + props.onChange(e.jsonContent); + }} + /> + ), + }; +}); + jest.mock('@elastic/eui', () => { const original = jest.requireActual('@elastic/eui'); @@ -82,22 +103,27 @@ describe(' create route', () => { let testBed: WatchCreateThresholdTestBed; beforeAll(() => { - jest.useFakeTimers({ legacyFakeTimers: true }); + jest.useFakeTimers(); }); afterAll(() => { jest.useRealTimers(); }); - describe('on component mount', () => { - beforeEach(async () => { - await act(async () => { - testBed = await setup(httpSetup); - }); + httpRequestsMockHelpers.setLoadMatchingIndicesResponse({ indices: MATCH_INDICES }); + httpRequestsMockHelpers.setLoadEsFieldsResponse({ fields: ES_FIELDS }); + httpRequestsMockHelpers.setLoadSettingsResponse(SETTINGS); + httpRequestsMockHelpers.setLoadWatchVisualizeResponse(WATCH_VISUALIZE_DATA); - testBed.component.update(); + beforeEach(async () => { + await act(async () => { + testBed = await setup(httpSetup); }); + testBed.component.update(); + }); + + describe('on component mount', () => { test('should set the correct page title', () => { const { find } = testBed; @@ -105,13 +131,6 @@ describe(' create route', () => { }); describe('create', () => { - beforeEach(async () => { - httpRequestsMockHelpers.setLoadMatchingIndicesResponse({ indices: MATCH_INDICES }); - httpRequestsMockHelpers.setLoadEsFieldsResponse({ fields: ES_FIELDS }); - httpRequestsMockHelpers.setLoadSettingsResponse(SETTINGS); - httpRequestsMockHelpers.setLoadWatchVisualizeResponse(WATCH_VISUALIZE_DATA); - }); - describe('form validation', () => { test('should not allow empty name field', () => { const { form } = testBed; @@ -216,14 +235,21 @@ describe(' create route', () => { describe('actions', () => { beforeEach(async () => { + await act(async () => { + testBed = await setup(httpSetup); + }); + const { form, find, component } = testBed; + component.update(); + // Set up valid fields needed for actions component to render await act(async () => { form.setInputValue('nameInput', WATCH_NAME); find('indicesComboBox').simulate('change', [{ label: 'index1', value: 'index1' }]); form.setInputValue('watchTimeFieldSelect', WATCH_TIME_FIELD); }); + component.update(); }); @@ -232,8 +258,8 @@ describe(' create route', () => { const LOGGING_MESSAGE = 'test log message'; - actions.clickAddActionButton(); - actions.clickActionLink('logging'); + await actions.clickAddActionButton(); + await actions.clickActionLink('logging'); expect(exists('watchActionAccordion')).toBe(true); @@ -246,9 +272,7 @@ describe(' create route', () => { // Next, provide valid field and verify form.setInputValue('loggingTextInput', LOGGING_MESSAGE); - await act(async () => { - actions.clickSimulateButton(); - }); + await actions.clickSimulateButton(); const thresholdWatch = { id: WATCH_ID, @@ -300,17 +324,15 @@ describe(' create route', () => { test('should simulate an index action', async () => { const { form, actions, exists } = testBed; - actions.clickAddActionButton(); - actions.clickActionLink('index'); + await actions.clickAddActionButton(); + await actions.clickActionLink('index'); expect(exists('watchActionAccordion')).toBe(true); // Verify an empty index is allowed form.setInputValue('indexInput', ''); - await act(async () => { - actions.clickSimulateButton(); - }); + await actions.clickSimulateButton(); const thresholdWatch = { id: WATCH_ID, @@ -363,16 +385,14 @@ describe(' create route', () => { const SLACK_MESSAGE = 'test slack message'; - actions.clickAddActionButton(); - actions.clickActionLink('slack'); + await actions.clickAddActionButton(); + await actions.clickActionLink('slack'); expect(exists('watchActionAccordion')).toBe(true); form.setInputValue('slackMessageTextarea', SLACK_MESSAGE); - await act(async () => { - actions.clickSimulateButton(); - }); + await actions.clickSimulateButton(); const thresholdWatch = { id: WATCH_ID, @@ -430,8 +450,8 @@ describe(' create route', () => { const EMAIL_SUBJECT = 'test email subject'; const EMAIL_BODY = 'this is a test email body'; - actions.clickAddActionButton(); - actions.clickActionLink('email'); + await actions.clickAddActionButton(); + await actions.clickActionLink('email'); expect(exists('watchActionAccordion')).toBe(true); @@ -442,9 +462,7 @@ describe(' create route', () => { form.setInputValue('emailSubjectInput', EMAIL_SUBJECT); form.setInputValue('emailBodyInput', EMAIL_BODY); - await act(async () => { - actions.clickSimulateButton(); - }); + await actions.clickSimulateButton(); const thresholdWatch = { id: WATCH_ID, @@ -510,8 +528,8 @@ describe(' create route', () => { const USERNAME = 'test_user'; const PASSWORD = 'test_password'; - actions.clickAddActionButton(); - actions.clickActionLink('webhook'); + await actions.clickAddActionButton(); + await actions.clickActionLink('webhook'); expect(exists('watchActionAccordion')).toBe(true); @@ -534,9 +552,7 @@ describe(' create route', () => { form.setInputValue('webhookUsernameInput', USERNAME); form.setInputValue('webhookPasswordInput', PASSWORD); - await act(async () => { - actions.clickSimulateButton(); - }); + await actions.clickSimulateButton(); const thresholdWatch = { id: WATCH_ID, @@ -600,14 +616,18 @@ describe(' create route', () => { const ISSUE_TYPE = 'Bug'; const SUMMARY = 'test Jira summary'; - actions.clickAddActionButton(); - actions.clickActionLink('jira'); + await actions.clickAddActionButton(); + await actions.clickActionLink('jira'); expect(exists('watchActionAccordion')).toBe(true); - // First, provide invalid fields and verify - form.setInputValue('jiraProjectKeyInput', ''); + // Set issue type value and clear it to trigger required error message + form.setInputValue('jiraIssueTypeInput', 'myissue'); form.setInputValue('jiraIssueTypeInput', ''); + // Set project type value and clear it to trigger required error message + form.setInputValue('jiraProjectKeyInput', 'my key'); + form.setInputValue('jiraProjectKeyInput', ''); + // Clear default summary to trigger required error message form.setInputValue('jiraSummaryInput', ''); expect(form.getErrorsMessages()).toEqual([ @@ -622,9 +642,7 @@ describe(' create route', () => { form.setInputValue('jiraIssueTypeInput', ISSUE_TYPE); form.setInputValue('jiraSummaryInput', SUMMARY); - await act(async () => { - actions.clickSimulateButton(); - }); + await actions.clickSimulateButton(); const thresholdWatch = { id: WATCH_ID, @@ -688,8 +706,8 @@ describe(' create route', () => { const DESCRIPTION = 'test pagerduty description'; - actions.clickAddActionButton(); - actions.clickActionLink('pagerduty'); + await actions.clickAddActionButton(); + await actions.clickActionLink('pagerduty'); expect(exists('watchActionAccordion')).toBe(true); @@ -702,9 +720,7 @@ describe(' create route', () => { // Next, provide valid fields and verify form.setInputValue('pagerdutyDescriptionInput', DESCRIPTION); - await act(async () => { - actions.clickSimulateButton(); - }); + await actions.clickSimulateButton(); const thresholdWatch = { id: WATCH_ID, @@ -757,7 +773,6 @@ describe(' create route', () => { describe('watch visualize data payload', () => { test('should send the correct payload', async () => { const { form, find, component } = testBed; - // Set up required fields await act(async () => { form.setInputValue('nameInput', WATCH_NAME); @@ -807,9 +822,7 @@ describe(' create route', () => { }); component.update(); - await act(async () => { - actions.clickSubmitButton(); - }); + await actions.clickSubmitButton(); expect(httpSetup.put).toHaveBeenLastCalledWith( `${API_BASE_PATH}/watch/${WATCH_ID}`, diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_edit_page.test.tsx b/x-pack/plugins/watcher/__jest__/client_integration/watch_edit_page.test.tsx index ba38fbd5b3cc7..b00f9916970b9 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/watch_edit_page.test.tsx +++ b/x-pack/plugins/watcher/__jest__/client_integration/watch_edit_page.test.tsx @@ -39,7 +39,7 @@ describe('', () => { let testBed: WatchEditTestBed; beforeAll(() => { - jest.useFakeTimers({ legacyFakeTimers: true }); + jest.useFakeTimers(); }); afterAll(() => { @@ -50,7 +50,10 @@ describe('', () => { beforeEach(async () => { httpRequestsMockHelpers.setLoadWatchResponse(WATCH_ID, WATCH); - testBed = await setup(httpSetup); + await act(async () => { + testBed = await setup(httpSetup); + }); + testBed.component.update(); }); @@ -82,9 +85,7 @@ describe('', () => { form.setInputValue('nameInput', EDITED_WATCH_NAME); - await act(async () => { - actions.clickSubmitButton(); - }); + await actions.clickSubmitButton(); const DEFAULT_LOGGING_ACTION_ID = 'logging_1'; const DEFAULT_LOGGING_ACTION_TYPE = 'logging'; @@ -137,7 +138,10 @@ describe('', () => { beforeEach(async () => { httpRequestsMockHelpers.setLoadWatchResponse(WATCH_ID, { watch }); - testBed = await setup(httpSetup); + await act(async () => { + testBed = await setup(httpSetup); + }); + testBed.component.update(); }); @@ -162,9 +166,7 @@ describe('', () => { form.setInputValue('nameInput', EDITED_WATCH_NAME); - await act(async () => { - actions.clickSubmitButton(); - }); + await actions.clickSubmitButton(); const { id, diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_list_page.test.ts b/x-pack/plugins/watcher/__jest__/client_integration/watch_list_page.test.ts index c9116f45c9314..8eacd4841c666 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/watch_list_page.test.ts +++ b/x-pack/plugins/watcher/__jest__/client_integration/watch_list_page.test.ts @@ -18,7 +18,7 @@ describe('', () => { let testBed: WatchListTestBed; beforeAll(() => { - jest.useFakeTimers({ legacyFakeTimers: true }); + jest.useFakeTimers(); }); afterAll(() => { @@ -79,7 +79,7 @@ describe('', () => { test('should show error callout if search is invalid', async () => { const { exists, actions } = testBed; - actions.searchWatches('or'); + await actions.searchWatches('or'); expect(exists('watcherListSearchError')).toBe(true); }); @@ -87,7 +87,7 @@ describe('', () => { test('should retain the search query', async () => { const { table, actions } = testBed; - actions.searchWatches(watch1.name); + await actions.searchWatches(watch1.name); const { tableCellsValues } = table.getMetaData('watchesTable'); diff --git a/x-pack/plugins/watcher/__jest__/client_integration/watch_status_page.test.ts b/x-pack/plugins/watcher/__jest__/client_integration/watch_status_page.test.ts index 20b503d82ad1d..d40015776065f 100644 --- a/x-pack/plugins/watcher/__jest__/client_integration/watch_status_page.test.ts +++ b/x-pack/plugins/watcher/__jest__/client_integration/watch_status_page.test.ts @@ -45,7 +45,7 @@ describe('', () => { let testBed: WatchStatusTestBed; beforeAll(() => { - jest.useFakeTimers({ legacyFakeTimers: true }); + jest.useFakeTimers(); }); afterAll(() => { @@ -57,7 +57,9 @@ describe('', () => { httpRequestsMockHelpers.setLoadWatchResponse(WATCH_ID, { watch }); httpRequestsMockHelpers.setLoadWatchHistoryResponse(WATCH_ID, watchHistoryItems); - testBed = await setup(httpSetup); + await act(async () => { + testBed = await setup(httpSetup); + }); testBed.component.update(); }); @@ -75,13 +77,13 @@ describe('', () => { expect(find('tab').map((t) => t.text())).toEqual(['Execution history', 'Action statuses']); }); - test('should navigate to the "Action statuses" tab', () => { + test('should navigate to the "Action statuses" tab', async () => { const { exists, actions } = testBed; expect(exists('watchHistorySection')).toBe(true); expect(exists('watchDetailSection')).toBe(false); - actions.selectTab('action statuses'); + await actions.selectTab('action statuses'); expect(exists('watchHistorySection')).toBe(false); expect(exists('watchDetailSection')).toBe(true); @@ -222,10 +224,10 @@ describe('', () => { }); describe('action statuses', () => { - beforeEach(() => { + beforeEach(async () => { const { actions } = testBed; - actions.selectTab('action statuses'); + await actions.selectTab('action statuses'); }); test('should list the watch actions in a table', () => { diff --git a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/install_resources.ts b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/install_resources.ts index b6c86b49c7fba..e80a8f94d93b6 100644 --- a/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/install_resources.ts +++ b/x-pack/test/alerting_api_integration/spaces_only/tests/alerting/group4/alerts_as_data/install_resources.ts @@ -163,6 +163,7 @@ export default function createAlertsAsDataInstallResourcesTest({ getService }: F rollover_alias: '.alerts-test.patternfiring.alerts-default', }, mapping: { + ignore_malformed: 'true', total_fields: { limit: '2500', }, @@ -196,6 +197,7 @@ export default function createAlertsAsDataInstallResourcesTest({ getService }: F }); expect(contextIndex[indexName].settings?.index?.mapping).to.eql({ + ignore_malformed: 'true', total_fields: { limit: '2500', }, diff --git a/x-pack/test/api_integration/apis/maps/fonts_api.js b/x-pack/test/api_integration/apis/maps/fonts_api.js index c8c636e8f6ddc..ae4891c4d7b95 100644 --- a/x-pack/test/api_integration/apis/maps/fonts_api.js +++ b/x-pack/test/api_integration/apis/maps/fonts_api.js @@ -6,7 +6,10 @@ */ import expect from '@kbn/expect'; -import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; +import { + ELASTIC_HTTP_VERSION_HEADER, + X_ELASTIC_INTERNAL_ORIGIN_REQUEST, +} from '@kbn/core-http-common'; import path from 'path'; import { copyFile, rm } from 'fs/promises'; @@ -38,6 +41,7 @@ export default function ({ getService }) { const resp = await supertest .get(`/internal/maps/fonts/Open%20Sans%20Regular,Arial%20Unicode%20MS%20Regular/0-255`) .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .expect(200); expect(resp.body.length).to.be(74696); @@ -49,6 +53,7 @@ export default function ({ getService }) { `/internal/maps/fonts/Open%20Sans%20Regular,Arial%20Unicode%20MS%20Regular/noGonaFindMe` ) .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .expect(404); }); @@ -56,6 +61,7 @@ export default function ({ getService }) { await supertest .get(`/internal/maps/fonts/open_sans/..%2f0-255`) .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .expect(404); }); @@ -63,6 +69,7 @@ export default function ({ getService }) { await supertest .get(`/internal/maps/fonts/open_sans/.%2f..%2f0-255`) .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .expect(404); }); }); diff --git a/x-pack/test/api_integration/apis/maps/get_grid_tile.js b/x-pack/test/api_integration/apis/maps/get_grid_tile.js index 5b44b43e50e43..2a627e3793ee2 100644 --- a/x-pack/test/api_integration/apis/maps/get_grid_tile.js +++ b/x-pack/test/api_integration/apis/maps/get_grid_tile.js @@ -9,7 +9,10 @@ import { VectorTile } from '@mapbox/vector-tile'; import Protobuf from 'pbf'; import expect from '@kbn/expect'; import { getTileUrlParams } from '@kbn/maps-vector-tile-utils'; -import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; +import { + ELASTIC_HTTP_VERSION_HEADER, + X_ELASTIC_INTERNAL_ORIGIN_REQUEST, +} from '@kbn/core-http-common'; function findFeature(layer, callbackFn) { for (let i = 0; i < layer.length; i++) { @@ -75,6 +78,7 @@ export default function ({ getService }) { .get('/internal/maps/mvt/getGridTile/3/2/3.pbf?' + getTileUrlParams(defaultParams)) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(200); @@ -89,6 +93,7 @@ export default function ({ getService }) { .get('/internal/maps/mvt/getGridTile/3/2/3.pbf?' + getTileUrlParams(defaultParams)) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(200); @@ -120,6 +125,7 @@ export default function ({ getService }) { .get('/internal/maps/mvt/getGridTile/3/2/3.pbf?' + tileUrlParams) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(200); @@ -151,6 +157,7 @@ export default function ({ getService }) { .get('/internal/maps/mvt/getGridTile/3/2/3.pbf?' + tileUrlParams) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(200); @@ -189,6 +196,7 @@ export default function ({ getService }) { .get('/internal/maps/mvt/getGridTile/3/2/3.pbf?' + tileUrlParams) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(200); @@ -230,6 +238,7 @@ export default function ({ getService }) { .get('/internal/maps/mvt/getGridTile/3/2/3.pbf?' + tileUrlParams) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(200); @@ -258,6 +267,7 @@ export default function ({ getService }) { .get('/internal/maps/mvt/getGridTile/3/2/3.pbf?' + getTileUrlParams(defaultParams)) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(200); @@ -304,6 +314,7 @@ export default function ({ getService }) { .get('/internal/maps/mvt/getGridTile/3/2/3.pbf?' + tileUrlParams) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(404); }); diff --git a/x-pack/test/api_integration/apis/maps/get_tile.js b/x-pack/test/api_integration/apis/maps/get_tile.js index 8b466fe1554b5..4246141dd7c61 100644 --- a/x-pack/test/api_integration/apis/maps/get_tile.js +++ b/x-pack/test/api_integration/apis/maps/get_tile.js @@ -8,7 +8,10 @@ import { VectorTile } from '@mapbox/vector-tile'; import Protobuf from 'pbf'; import expect from '@kbn/expect'; -import { ELASTIC_HTTP_VERSION_HEADER } from '@kbn/core-http-common'; +import { + ELASTIC_HTTP_VERSION_HEADER, + X_ELASTIC_INTERNAL_ORIGIN_REQUEST, +} from '@kbn/core-http-common'; import { getTileUrlParams } from '@kbn/maps-vector-tile-utils'; function findFeature(layer, callbackFn) { @@ -75,6 +78,7 @@ export default function ({ getService }) { .get(`/internal/maps/mvt/getTile/2/1/1.pbf?${getTileUrlParams(defaultParams)}`) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(200); @@ -138,6 +142,7 @@ export default function ({ getService }) { .get(`/internal/maps/mvt/getTile/2/1/1.pbf?${tileUrlParams}`) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(200); @@ -182,6 +187,7 @@ export default function ({ getService }) { .get(`/internal/maps/mvt/getTile/2/1/1.pbf?${tileUrlParams}`) .set('kbn-xsrf', 'kibana') .set(ELASTIC_HTTP_VERSION_HEADER, '1') + .set(X_ELASTIC_INTERNAL_ORIGIN_REQUEST, 'kibana') .responseType('blob') .expect(404); }); diff --git a/x-pack/test/api_integration/apis/metrics_ui/log_entry_highlights.ts b/x-pack/test/api_integration/apis/metrics_ui/log_entry_highlights.ts index fd87af88ebc8b..f1be3edf0f4ac 100644 --- a/x-pack/test/api_integration/apis/metrics_ui/log_entry_highlights.ts +++ b/x-pack/test/api_integration/apis/metrics_ui/log_entry_highlights.ts @@ -45,7 +45,8 @@ export default function ({ getService }: FtrProviderContext) { after(() => esArchiver.unload('x-pack/test/functional/es_archives/infra/simple_logs')); describe('/log_entries/highlights', () => { - describe('with the default source', () => { + // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/163486 + describe.skip('with the default source', () => { before(() => kibanaServer.savedObjects.cleanStandardList()); after(() => kibanaServer.savedObjects.cleanStandardList()); diff --git a/x-pack/test/cases_api_integration/common/lib/api/user_profiles.ts b/x-pack/test/cases_api_integration/common/lib/api/user_profiles.ts index 25c7f7a7a9ba4..bc78feab4070c 100644 --- a/x-pack/test/cases_api_integration/common/lib/api/user_profiles.ts +++ b/x-pack/test/cases_api_integration/common/lib/api/user_profiles.ts @@ -10,8 +10,11 @@ import { parse as parseCookie, Cookie } from 'tough-cookie'; import { INTERNAL_SUGGEST_USER_PROFILES_URL } from '@kbn/cases-plugin/common/constants'; import { UserProfileService } from '@kbn/cases-plugin/server/services'; -import { UserProfileAvatarData } from '@kbn/security-plugin/common'; -import { UserProfile, UserProfileWithAvatar } from '@kbn/user-profile-components'; +import type { + UserProfile, + UserProfileAvatarData, + UserProfileWithAvatar, +} from '@kbn/user-profile-components'; import { SuggestUserProfilesRequest } from '@kbn/cases-plugin/common/types/api'; import { superUser } from '../authentication/users'; import { User } from '../authentication/types'; diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/double.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/double.ts index 05d821b5932fb..39a878a82f896 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/double.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/group7/exception_operators_data_types/double.ts @@ -33,8 +33,7 @@ export default ({ getService }: FtrProviderContext) => { const log = getService('log'); const es = getService('es'); - // Failing: See https://github.com/elastic/kibana/issues/155122 - describe.skip('Rule exception operators for data type double', () => { + describe('Rule exception operators for data type double', () => { before(async () => { await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/double'); await esArchiver.load('x-pack/test/functional/es_archives/rule_exceptions/double_as_string'); @@ -490,7 +489,6 @@ export default ({ getService }: FtrProviderContext) => { expect(hits).to.eql([]); }); }); - describe('working against string values in the data set', () => { it('will return 3 results if we have a list that includes 1 double', async () => { await importFile(supertest, log, 'double', ['1.0'], 'list_items.txt'); @@ -509,7 +507,7 @@ export default ({ getService }: FtrProviderContext) => { ], ]); await waitForRuleSuccess({ supertest, log, id }); - await waitForSignalsToBePresent(supertest, log, 1, [id]); + await waitForSignalsToBePresent(supertest, log, 3, [id]); const signalsOpen = await getSignalsById(supertest, log, id); const hits = signalsOpen.hits.hits.map((hit) => hit._source?.double).sort(); expect(hits).to.eql(['1.1', '1.2', '1.3']); diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/machine_learning.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/machine_learning.ts index be0d4876b59af..9450c32210009 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/machine_learning.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/machine_learning.ts @@ -66,8 +66,7 @@ export default ({ getService }: FtrProviderContext) => { rule_id: 'ml-rule-id', }; - // FLAKY: https://github.com/elastic/kibana/issues/145776 - describe.skip('Machine learning type rules', () => { + describe('Machine learning type rules', () => { before(async () => { // Order is critical here: auditbeat data must be loaded before attempting to start the ML job, // as the job looks for certain indices on start diff --git a/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/non_ecs_fields.ts b/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/non_ecs_fields.ts index 32ae758b20807..f315dfabb4d86 100644 --- a/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/non_ecs_fields.ts +++ b/x-pack/test/detection_engine_api_integration/security_and_spaces/rule_execution_logic/non_ecs_fields.ts @@ -56,7 +56,6 @@ export default ({ getService }: FtrProviderContext) => { }; }; - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/154277 describe('Non ECS fields in alert document source', () => { before(async () => { await esArchiver.load( @@ -259,6 +258,7 @@ export default ({ getService }: FtrProviderContext) => { // we don't validate it because geo_point is very complex type with many various representations: array, different object, string with few valid patterns // more on geo_point type https://www.elastic.co/guide/en/elasticsearch/reference/current/geo-point.html + // since .alerts-* indices allow _ignore_malformed option, alert will be indexed for this document it('should fail creating alert when ECS field mapping is geo_point', async () => { const document = { client: { @@ -269,12 +269,11 @@ export default ({ getService }: FtrProviderContext) => { }, }; - const { errors } = await indexAndCreatePreviewAlert(document); + const { errors, alertSource } = await indexAndCreatePreviewAlert(document); - expect(errors[0]).toContain('Bulk Indexing of signals failed'); - expect(errors[0]).toContain( - 'failed to parse field [client.geo.location] of type [geo_point]' - ); + expect(errors).toEqual([]); + + expect(alertSource).toHaveProperty('client.geo.location', 'test test'); }); it('should strip invalid boolean values and left valid ones', async () => { diff --git a/x-pack/test/detection_engine_api_integration/utils/machine_learning_setup.ts b/x-pack/test/detection_engine_api_integration/utils/machine_learning_setup.ts index 84eeeea137cb0..47b870496642b 100644 --- a/x-pack/test/detection_engine_api_integration/utils/machine_learning_setup.ts +++ b/x-pack/test/detection_engine_api_integration/utils/machine_learning_setup.ts @@ -6,6 +6,7 @@ */ import type SuperTest from 'supertest'; +import { getCommonRequestHeader } from '../../functional/services/ml/common_api'; export const executeSetupModuleRequest = async ({ module, @@ -18,7 +19,7 @@ export const executeSetupModuleRequest = async ({ }) => { const { body } = await supertest .post(`/internal/ml/modules/setup/${module}`) - .set('kbn-xsrf', 'true') + .set(getCommonRequestHeader('1')) .send({ prefix: '', groups: ['auditbeat'], @@ -42,8 +43,8 @@ export const forceStartDatafeeds = async ({ supertest: SuperTest.SuperTest; }) => { const { body } = await supertest - .post(`/supertest/ml/jobs/force_start_datafeeds`) - .set('kbn-xsrf', 'true') + .post(`/internal/ml/jobs/force_start_datafeeds`) + .set(getCommonRequestHeader('1')) .send({ datafeedIds: [`datafeed-${jobId}`], start: new Date().getUTCMilliseconds(), diff --git a/x-pack/test/fleet_api_integration/apis/outputs/crud.ts b/x-pack/test/fleet_api_integration/apis/outputs/crud.ts index c870e4bca0ab1..3cc860433eb69 100644 --- a/x-pack/test/fleet_api_integration/apis/outputs/crud.ts +++ b/x-pack/test/fleet_api_integration/apis/outputs/crud.ts @@ -197,7 +197,7 @@ export default function (providerContext: FtrProviderContext) { .send({ name: 'My Kafka Output', type: 'kafka', - hosts: ['https://test.fr'], + hosts: ['test.fr:2000'], auth_type: 'user_pass', username: 'user', password: 'pass', @@ -565,7 +565,7 @@ export default function (providerContext: FtrProviderContext) { .send({ name: 'My Kafka Output', type: 'kafka', - hosts: ['https://test.fr'], + hosts: ['test.fr:2000'], auth_type: 'user_pass', username: 'user', password: 'pass', @@ -579,15 +579,14 @@ export default function (providerContext: FtrProviderContext) { is_default_monitoring: false, name: 'My Kafka Output', type: 'kafka', - hosts: ['https://test.fr'], + hosts: ['test.fr:2000'], auth_type: 'user_pass', username: 'user', password: 'pass', topics: [{ topic: 'topic1' }], broker_timeout: 10, - broker_ack_reliability: 'Wait for local commit', - broker_buffer_size: 256, - client_id: 'Elastic Agent', + required_acks: 1, + client_id: 'Elastic', compression: 'gzip', compression_level: 4, sasl: { @@ -606,7 +605,7 @@ export default function (providerContext: FtrProviderContext) { .send({ name: 'Default Kafka Output', type: 'kafka', - hosts: ['https://test.fr'], + hosts: ['test.fr:2000'], auth_type: 'user_pass', username: 'user', password: 'pass', @@ -619,7 +618,7 @@ export default function (providerContext: FtrProviderContext) { expect(itemWithoutId).to.eql({ name: 'Default Kafka Output', type: 'kafka', - hosts: ['https://test.fr'], + hosts: ['test.fr:2000'], auth_type: 'user_pass', username: 'user', password: 'pass', @@ -627,9 +626,8 @@ export default function (providerContext: FtrProviderContext) { is_default: true, is_default_monitoring: false, broker_timeout: 10, - broker_ack_reliability: 'Wait for local commit', - broker_buffer_size: 256, - client_id: 'Elastic Agent', + required_acks: 1, + client_id: 'Elastic', compression: 'gzip', compression_level: 4, sasl: { @@ -847,7 +845,7 @@ export default function (providerContext: FtrProviderContext) { .send({ name: 'Kafka Output', type: 'kafka', - hosts: ['https://test.fr'], + hosts: ['test.fr:2000'], auth_type: 'user_pass', username: 'user', password: 'pass', @@ -960,7 +958,7 @@ export default function (providerContext: FtrProviderContext) { const kafkaOutputPayload = { name: 'Output to delete test', type: 'kafka', - hosts: ['https://test.fr'], + hosts: ['test.fr:2000'], auth_type: 'user_pass', username: 'user', password: 'pass', diff --git a/x-pack/test/functional/apps/infra/hosts_view.ts b/x-pack/test/functional/apps/infra/hosts_view.ts index f5dc470587c37..11d0a9675573b 100644 --- a/x-pack/test/functional/apps/infra/hosts_view.ts +++ b/x-pack/test/functional/apps/infra/hosts_view.ts @@ -155,8 +155,15 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { return !!currentUrl.match(path); }); - // Failing: See https://github.com/elastic/kibana/issues/162672 - describe.skip('Hosts View', function () { + const waitForPageToLoad = async () => + await retry.waitFor( + 'wait for table and KPI charts to load', + async () => + (await pageObjects.infraHostsView.isHostTableLoading()) && + (await pageObjects.infraHostsView.isKPIChartsLoaded()) + ); + + describe('Hosts View', function () { before(async () => { await Promise.all([ esArchiver.load('x-pack/test/functional/es_archives/infra/alerts'), @@ -247,189 +254,243 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); - describe('#Single host Flyout', () => { + describe('#Single Host Flyout', () => { before(async () => { await setHostViewEnabled(true); await pageObjects.common.navigateToApp(HOSTS_VIEW_PATH); await pageObjects.header.waitUntilLoadingHasFinished(); - await pageObjects.timePicker.setAbsoluteRange( - START_HOST_PROCESSES_DATE.format(timepickerFormat), - END_HOST_PROCESSES_DATE.format(timepickerFormat) - ); - await pageObjects.infraHostsView.clickTableOpenFlyoutButton(); }); - after(async () => { - await retry.try(async () => { - await pageObjects.infraHostsView.clickCloseFlyoutButton(); + describe('Tabs', () => { + before(async () => { + await pageObjects.timePicker.setAbsoluteRange( + START_HOST_PROCESSES_DATE.format(timepickerFormat), + END_HOST_PROCESSES_DATE.format(timepickerFormat) + ); + + await waitForPageToLoad(); + + await pageObjects.infraHostsView.clickTableOpenFlyoutButton(); }); - }); - describe('Overview Tab', () => { - before(async () => { - await pageObjects.infraHostsView.clickOverviewFlyoutTab(); + after(async () => { + await retry.try(async () => { + await pageObjects.infraHostsView.clickCloseFlyoutButton(); + }); }); - [ - { metric: 'cpuUsage', value: '13.9%' }, - { metric: 'normalizedLoad1m', value: '18.8%' }, - { metric: 'memoryUsage', value: '94.9%' }, - { metric: 'diskSpaceUsage', value: 'N/A' }, - ].forEach(({ metric, value }) => { - it(`${metric} tile should show ${value}`, async () => { - await retry.try(async () => { - const tileValue = await pageObjects.infraHostsView.getAssetDetailsKPITileValue( - metric - ); - expect(tileValue).to.eql(value); + describe('Overview Tab', () => { + before(async () => { + await pageObjects.infraHostsView.clickOverviewFlyoutTab(); + }); + + [ + { metric: 'cpuUsage', value: '13.9%' }, + { metric: 'normalizedLoad1m', value: '18.8%' }, + { metric: 'memoryUsage', value: '94.9%' }, + { metric: 'diskSpaceUsage', value: 'N/A' }, + ].forEach(({ metric, value }) => { + it(`${metric} tile should show ${value}`, async () => { + await retry.try(async () => { + const tileValue = await pageObjects.infraHostsView.getAssetDetailsKPITileValue( + metric + ); + expect(tileValue).to.eql(value); + }); }); }); - }); - it('should render 8 charts in the Metrics section', async () => { - const hosts = await pageObjects.infraHostsView.getAssetDetailsMetricsCharts(); - expect(hosts.length).to.equal(8); - }); + it('should render 8 charts in the Metrics section', async () => { + const hosts = await pageObjects.infraHostsView.getAssetDetailsMetricsCharts(); + expect(hosts.length).to.equal(8); + }); - it('should navigate to metadata tab', async () => { - await pageObjects.infraHostsView.clickShowAllMetadataOverviewTab(); - await pageObjects.header.waitUntilLoadingHasFinished(); - await pageObjects.infraHostsView.metadataTableExist(); - await pageObjects.infraHostsView.clickOverviewFlyoutTab(); - }); + it('should navigate to metadata tab', async () => { + await pageObjects.infraHostsView.clickShowAllMetadataOverviewTab(); + await pageObjects.header.waitUntilLoadingHasFinished(); + await pageObjects.infraHostsView.metadataTableExist(); + await pageObjects.infraHostsView.clickOverviewFlyoutTab(); + }); - it('should show alerts', async () => { - await pageObjects.header.waitUntilLoadingHasFinished(); - await pageObjects.infraHostsView.overviewAlertsTitleExist(); - }); + it('should show alerts', async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + await pageObjects.infraHostsView.overviewAlertsTitleExist(); + }); - it('should open alerts flyout', async () => { - await pageObjects.header.waitUntilLoadingHasFinished(); - await pageObjects.infraHostsView.clickOverviewOpenAlertsFlyout(); - // There are 2 flyouts open (asset details and alerts) - // so we need a stricter selector - // to be sure that we are closing the alerts flyout - const closeAlertFlyout = await find.byCssSelector( - '[aria-labelledby="flyoutRuleAddTitle"] > [data-test-subj="euiFlyoutCloseButton"]' - ); - await closeAlertFlyout.click(); - }); + it('should open alerts flyout', async () => { + await pageObjects.header.waitUntilLoadingHasFinished(); + await pageObjects.infraHostsView.clickOverviewOpenAlertsFlyout(); + // There are 2 flyouts open (asset details and alerts) + // so we need a stricter selector + // to be sure that we are closing the alerts flyout + const closeAlertFlyout = await find.byCssSelector( + '[aria-labelledby="flyoutRuleAddTitle"] > [data-test-subj="euiFlyoutCloseButton"]' + ); + await closeAlertFlyout.click(); + }); - it('should navigate to alerts', async () => { - await pageObjects.infraHostsView.clickOverviewLinkToAlerts(); - await pageObjects.header.waitUntilLoadingHasFinished(); - const url = parse(await browser.getCurrentUrl()); + it('should navigate to alerts', async () => { + await pageObjects.infraHostsView.clickOverviewLinkToAlerts(); + await pageObjects.header.waitUntilLoadingHasFinished(); + const url = parse(await browser.getCurrentUrl()); - const query = decodeURIComponent(url.query ?? ''); + const query = decodeURIComponent(url.query ?? ''); - const alertsQuery = - "_a=(kuery:'host.name:\"Jennys-MBP.fritz.box\"',rangeFrom:'2023-03-28T18:20:00.000Z',rangeTo:'2023-03-28T18:21:00.000Z',status:all)"; + const alertsQuery = + "_a=(kuery:'host.name:\"Jennys-MBP.fritz.box\"',rangeFrom:'2023-03-28T18:20:00.000Z',rangeTo:'2023-03-28T18:21:00.000Z',status:all)"; - expect(url.pathname).to.eql('/app/observability/alerts'); - expect(query).to.contain(alertsQuery); + expect(url.pathname).to.eql('/app/observability/alerts'); + expect(query).to.contain(alertsQuery); - await returnTo(HOSTS_VIEW_PATH); + await returnTo(HOSTS_VIEW_PATH); + }); }); - }); - describe('Metadata Tab', () => { - before(async () => { - await pageObjects.infraHostsView.clickMetadataFlyoutTab(); - }); + describe('Metadata Tab', () => { + before(async () => { + await pageObjects.infraHostsView.clickMetadataFlyoutTab(); + }); - it('should render metadata tab, add and remove filter', async () => { - await pageObjects.infraHostsView.metadataTableExist(); + it('should render metadata tab, add and remove filter', async () => { + await pageObjects.infraHostsView.metadataTableExist(); - // Add Pin - await pageObjects.infraHostsView.clickAddMetadataPin(); - expect(await pageObjects.infraHostsView.getRemovePinExist()).to.be(true); + // Add Pin + await pageObjects.infraHostsView.clickAddMetadataPin(); + expect(await pageObjects.infraHostsView.getRemovePinExist()).to.be(true); - // Persist pin after refresh - await browser.refresh(); - await retry.try(async () => { - await pageObjects.infraHome.waitForLoading(); - const removePinExist = await pageObjects.infraHostsView.getRemovePinExist(); - expect(removePinExist).to.be(true); - }); + // Persist pin after refresh + await browser.refresh(); + await retry.try(async () => { + await pageObjects.infraHome.waitForLoading(); + const removePinExist = await pageObjects.infraHostsView.getRemovePinExist(); + expect(removePinExist).to.be(true); + }); - // Remove Pin - await pageObjects.infraHostsView.clickRemoveMetadataPin(); - expect(await pageObjects.infraHostsView.getRemovePinExist()).to.be(false); + // Remove Pin + await pageObjects.infraHostsView.clickRemoveMetadataPin(); + expect(await pageObjects.infraHostsView.getRemovePinExist()).to.be(false); + + await pageObjects.infraHostsView.clickAddMetadataFilter(); + await pageObjects.header.waitUntilLoadingHasFinished(); + + // Add Filter + const addedFilter = await pageObjects.infraHostsView.getAppliedFilter(); + expect(addedFilter).to.contain('host.architecture: arm64'); + const removeFilterExists = await pageObjects.infraHostsView.getRemoveFilterExist(); + expect(removeFilterExists).to.be(true); + + // Remove filter + await pageObjects.infraHostsView.clickRemoveMetadataFilter(); + await pageObjects.header.waitUntilLoadingHasFinished(); + const removeFilterShouldNotExist = + await pageObjects.infraHostsView.getRemoveFilterExist(); + expect(removeFilterShouldNotExist).to.be(false); + }); - await pageObjects.infraHostsView.clickAddMetadataFilter(); - await pageObjects.header.waitUntilLoadingHasFinished(); + it('should render metadata tab, pin and unpin table row', async () => { + // Add Pin + await pageObjects.infraHostsView.clickAddMetadataPin(); + expect(await pageObjects.infraHostsView.getRemovePinExist()).to.be(true); - // Add Filter - const addedFilter = await pageObjects.infraHostsView.getAppliedFilter(); - expect(addedFilter).to.contain('host.architecture: arm64'); - const removeFilterExists = await pageObjects.infraHostsView.getRemoveFilterExist(); - expect(removeFilterExists).to.be(true); + // Persist pin after refresh + await browser.refresh(); + await retry.try(async () => { + await pageObjects.infraHome.waitForLoading(); + const removePinExist = await pageObjects.infraHostsView.getRemovePinExist(); + expect(removePinExist).to.be(true); + }); - // Remove filter - await pageObjects.infraHostsView.clickRemoveMetadataFilter(); - await pageObjects.header.waitUntilLoadingHasFinished(); - const removeFilterShouldNotExist = - await pageObjects.infraHostsView.getRemoveFilterExist(); - expect(removeFilterShouldNotExist).to.be(false); + // Remove Pin + await pageObjects.infraHostsView.clickRemoveMetadataPin(); + expect(await pageObjects.infraHostsView.getRemovePinExist()).to.be(false); + }); }); - it('should render metadata tab, pin and unpin table row', async () => { - // Add Pin - await pageObjects.infraHostsView.clickAddMetadataPin(); - expect(await pageObjects.infraHostsView.getRemovePinExist()).to.be(true); - - // Persist pin after refresh - await browser.refresh(); - await retry.try(async () => { - await pageObjects.infraHome.waitForLoading(); - const removePinExist = await pageObjects.infraHostsView.getRemovePinExist(); - expect(removePinExist).to.be(true); + describe('Processes Tab', () => { + before(async () => { + await pageObjects.infraHostsView.clickProcessesFlyoutTab(); + }); + it('should render processes tab and with Total Value summary', async () => { + const processesTotalValue = + await pageObjects.infraHostsView.getProcessesTabContentTotalValue(); + const processValue = await processesTotalValue.getVisibleText(); + expect(processValue).to.eql('313'); }); - // Remove Pin - await pageObjects.infraHostsView.clickRemoveMetadataPin(); - expect(await pageObjects.infraHostsView.getRemovePinExist()).to.be(false); + it('should expand processes table row', async () => { + await pageObjects.infraHostsView.getProcessesTable(); + await pageObjects.infraHostsView.getProcessesTableBody(); + await pageObjects.infraHostsView.clickProcessesTableExpandButton(); + }); }); - }); - describe('Processes Tab', () => { - before(async () => { - await pageObjects.infraHostsView.clickProcessesFlyoutTab(); - }); - it('should render processes tab and with Total Value summary', async () => { - const processesTotalValue = - await pageObjects.infraHostsView.getProcessesTabContentTotalValue(); - const processValue = await processesTotalValue.getVisibleText(); - expect(processValue).to.eql('313'); + describe('Logs Tab', () => { + before(async () => { + await pageObjects.infraHostsView.clickLogsFlyoutTab(); + }); + it('should render logs tab', async () => { + await testSubjects.existOrFail('infraAssetDetailsLogsTabContent'); + }); }); - it('should expand processes table row', async () => { - await pageObjects.infraHostsView.getProcessesTable(); - await pageObjects.infraHostsView.getProcessesTableBody(); - await pageObjects.infraHostsView.clickProcessesTableExpandButton(); + describe('Flyout links', () => { + it('should navigate to APM services after click', async () => { + await pageObjects.infraHostsView.clickFlyoutApmServicesLink(); + const url = parse(await browser.getCurrentUrl()); + const query = decodeURIComponent(url.query ?? ''); + const kuery = 'kuery=host.hostname:"Jennys-MBP.fritz.box"'; + + expect(url.pathname).to.eql('/app/apm/services'); + expect(query).to.contain(kuery); + + await returnTo(HOSTS_VIEW_PATH); + }); }); }); - describe('Logs Tab', () => { + describe('Host with alerts', () => { before(async () => { - await pageObjects.infraHostsView.clickLogsFlyoutTab(); + await pageObjects.timePicker.setAbsoluteRange( + START_DATE.format(timepickerFormat), + END_DATE.format(timepickerFormat) + ); + await pageObjects.infraHostsView.clickHostCheckbox('demo-stack-mysql-01', '-'); + await pageObjects.infraHostsView.clickSelectedHostsButton(); + await pageObjects.infraHostsView.clickSelectedHostsAddFilterButton(); + + await waitForPageToLoad(); + + await pageObjects.infraHostsView.clickTableOpenFlyoutButton(); }); - it('should render logs tab', async () => { - await testSubjects.existOrFail('infraAssetDetailsLogsTabContent'); + + after(async () => { + await retry.try(async () => { + await pageObjects.infraHostsView.clickCloseFlyoutButton(); + }); }); - }); - describe('Flyout links', () => { - it('should navigate to APM services after click', async () => { - await pageObjects.infraHostsView.clickFlyoutApmServicesLink(); - const url = parse(await browser.getCurrentUrl()); - const query = decodeURIComponent(url.query ?? ''); - const kuery = 'kuery=host.hostname:"Jennys-MBP.fritz.box"'; + it('should render alerts count for a host inside a flyout', async () => { + await pageObjects.infraHostsView.clickOverviewFlyoutTab(); - expect(url.pathname).to.eql('/app/apm/services'); - expect(query).to.contain(kuery); + retry.tryForTime(30 * 1000, async () => { + await observability.components.alertSummaryWidget.getFullSizeComponentSelectorOrFail(); + }); - await returnTo(HOSTS_VIEW_PATH); + const activeAlertsCount = + await observability.components.alertSummaryWidget.getActiveAlertCount(); + const totalAlertsCount = + await observability.components.alertSummaryWidget.getTotalAlertCount(); + + expect(activeAlertsCount.trim()).to.equal('2'); + expect(totalAlertsCount.trim()).to.equal('3'); + }); + + it('should render "N/A" when processes summary is not available in flyout', async () => { + await pageObjects.infraHostsView.clickProcessesFlyoutTab(); + const processesTotalValue = + await pageObjects.infraHostsView.getProcessesTabContentTotalValue(); + const processValue = await processesTotalValue.getVisibleText(); + expect(processValue).to.eql('N/A'); }); }); }); @@ -444,12 +505,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { END_DATE.format(timepickerFormat) ); - await retry.waitFor( - 'wait for table and KPI charts to load', - async () => - (await pageObjects.infraHostsView.isHostTableLoading()) && - (await pageObjects.infraHostsView.isKPIChartsLoaded()) - ); + await waitForPageToLoad(); }); it('should render the correct page title', async () => { @@ -509,37 +565,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { }); }); - it('should render alerts count for a host inside a flyout', async () => { - await pageObjects.infraHostsView.clickHostCheckbox('demo-stack-mysql-01', '-'); - await pageObjects.infraHostsView.clickSelectedHostsButton(); - await pageObjects.infraHostsView.clickSelectedHostsAddFilterButton(); - await pageObjects.infraHostsView.clickTableOpenFlyoutButton(); - - const activeAlertsCount = await pageObjects.infraHostsView.getActiveAlertsCountText(); - const totalAlertsCount = await pageObjects.infraHostsView.getTotalAlertsCountText(); - - expect(activeAlertsCount).to.equal('2 '); - expect(totalAlertsCount).to.equal('3'); - - const deleteFilterButton = await find.byCssSelector( - `[title="Delete host.name: demo-stack-mysql-01"]` - ); - await deleteFilterButton.click(); - - await pageObjects.infraHostsView.clickCloseFlyoutButton(); - }); - - it('should render "N/A" when processes summary is not available in flyout', async () => { - await pageObjects.infraHostsView.clickTableOpenFlyoutButton(); - await pageObjects.infraHostsView.clickProcessesFlyoutTab(); - const processesTotalValue = - await pageObjects.infraHostsView.getProcessesTabContentTotalValue(); - const processValue = await processesTotalValue.getVisibleText(); - expect(processValue).to.eql('N/A'); - await pageObjects.infraHostsView.clickCloseFlyoutButton(); - }); - - describe('KPI tiles', () => { + describe('KPIs', () => { [ { metric: 'hostsCount', value: '6' }, { metric: 'cpuUsage', value: '0.8%' }, @@ -673,12 +699,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => { before(async () => { await browser.scrollTop(); await pageObjects.infraHostsView.submitQuery(query); - await retry.waitFor( - 'wait for table and KPI charts to load', - async () => - (await pageObjects.infraHostsView.isHostTableLoading()) && - (await pageObjects.infraHostsView.isKPIChartsLoaded()) - ); + await await waitForPageToLoad(); }); after(async () => { diff --git a/x-pack/test/functional/apps/lens/group3/terms.ts b/x-pack/test/functional/apps/lens/group3/terms.ts index 3b93c39eb7a6b..f93df80d52589 100644 --- a/x-pack/test/functional/apps/lens/group3/terms.ts +++ b/x-pack/test/functional/apps/lens/group3/terms.ts @@ -6,6 +6,7 @@ */ import expect from '@kbn/expect'; +import moment from 'moment'; import { FtrProviderContext } from '../../../ftr_provider_context'; export default function ({ getService, getPageObjects }: FtrProviderContext) { @@ -15,6 +16,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const comboBox = getService('comboBox'); const find = getService('find'); const retry = getService('retry'); + const es = getService('es'); + const indexPatterns = getService('indexPatterns'); + const log = getService('log'); describe('lens terms', () => { describe('lens multi terms suite', () => { @@ -127,11 +131,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.try(async () => { // Can not use testSubjects because data-test-subj is placed range input and number input - const percentileInput = await find.byCssSelector( - `input[data-test-subj="lns-indexPattern-percentile-input"][type='number']` + const percentileInput = await PageObjects.lens.getNumericFieldReady( + 'lns-indexPattern-percentile-input' ); - await percentileInput.click(); - await percentileInput.clearValue(); await percentileInput.type('60'); const percentileValue = await percentileInput.getAttribute('value'); @@ -152,5 +154,150 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { expect(data!.bars![0].bars[0].y).to.eql(19265); }); }); + + describe('Enable Other group', () => { + const esIndexPrefix = 'terms-empty-string-index'; + before(async () => { + log.info(`Creating index ${esIndexPrefix} with mappings`); + await es.indices.create({ + index: esIndexPrefix, + mappings: { + properties: { + '@timestamp': { + type: 'date', + }, + a: { + type: 'keyword', + }, + b: { + type: 'keyword', + }, + }, + }, + }); + + log.info(`Adding 100 documents to ${esIndexPrefix} at Sep 20, 2015 @ 06:31:44.000`); + const timestamp = moment + .utc('Sep 20, 2015 @ 06:31:44.000', 'MMM D, YYYY [@] HH:mm:ss.SSS') + .format(); + + await es.bulk({ + index: esIndexPrefix, + body: Array<{ + a: string; + b: string; + '@timestamp': string; + }>(100) + .fill({ a: '', b: '', '@timestamp': timestamp }) + .map((template, i) => { + return { + ...template, + a: i > 50 ? `${(i % 5) + 1}` : '', // generate 5 values for the index + empty string + b: i < 50 ? `${(i % 5) + 1}` : '', // generate 5 values for the index + empty string + }; + }) + .map((d) => `{"index": {}}\n${JSON.stringify(d)}\n`), + }); + + log.info(`Creating dataView ${esIndexPrefix}`); + await indexPatterns.create( + { + title: esIndexPrefix, + timeFieldName: '@timestamp', + }, + { override: true } + ); + }); + + after(async () => { + await es.indices.delete({ + index: esIndexPrefix, + }); + }); + it('should work with empty string values as buckets', async () => { + await PageObjects.visualize.navigateToNewVisualization(); + await PageObjects.visualize.clickVisType('lens'); + await elasticChart.setNewChartUiDebugFlag(true); + await PageObjects.lens.goToTimeRange(); + await PageObjects.lens.switchDataPanelIndexPattern(esIndexPrefix); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'count', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'a', + }); + + await PageObjects.lens.waitForVisualization('xyVisChart'); + const data = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + const seriesBar = data!.bars![0].bars; + expect(seriesBar[0].x).to.eql('(empty)'); + expect(seriesBar[seriesBar.length - 1].x).to.eql('Other'); + }); + + it('should work with empty string as breakdown', async () => { + await PageObjects.lens.removeDimension('lnsXY_xDimensionPanel'); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', + operation: 'terms', + field: 'a', + }); + + await PageObjects.lens.waitForVisualization('xyVisChart'); + const data = await PageObjects.lens.getCurrentChartDebugState('xyVisChart'); + expect(data!.bars![0].name).to.eql('(empty)'); + expect(data!.bars![data!.bars!.length - 1].name).to.eql('Other'); + }); + + it('should work with nested empty string values', async () => { + await PageObjects.lens.switchToVisualization('lnsDatatable'); + + await PageObjects.lens.removeLayer(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsDatatable_rows > lns-empty-dimension', + operation: 'terms', + field: 'a', + keepOpen: true, + }); + await PageObjects.lens.setTermsNumberOfValues(4); + await PageObjects.lens.closeDimensionEditor(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsDatatable_rows > lns-empty-dimension', + operation: 'terms', + field: 'b', + keepOpen: true, + }); + await PageObjects.lens.setTermsNumberOfValues(1); + await PageObjects.lens.closeDimensionEditor(); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsDatatable_metrics > lns-empty-dimension', + operation: 'count', + }); + await PageObjects.lens.waitForVisualization(); + await PageObjects.common.sleep(20000); + // a empty value + expect(await PageObjects.lens.getDatatableCellText(1, 0)).to.eql('(empty)'); + // b Other value + expect(await PageObjects.lens.getDatatableCellText(1, 1)).to.eql('Other'); + // a Other value + expect(await PageObjects.lens.getDatatableCellText(5, 0)).to.eql('Other'); + // b empty value + expect(await PageObjects.lens.getDatatableCellText(5, 1)).to.eql('(empty)'); + }); + }); }); } diff --git a/x-pack/test/functional/apps/lens/group4/dashboard.ts b/x-pack/test/functional/apps/lens/group4/dashboard.ts index daa8a750ad1c8..e94f935323235 100644 --- a/x-pack/test/functional/apps/lens/group4/dashboard.ts +++ b/x-pack/test/functional/apps/lens/group4/dashboard.ts @@ -107,9 +107,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { await retry.try(async () => { // show the tooltip actions await rightClickInChart(30, 5); // hardcoded position of bar, depends heavy on data and charts implementation - await (await find.byCssSelector('.echTooltipActions__action')).click(); + await (await find.allByCssSelector('.echTooltipActions__action'))[1].click(); const hasIpFilter = await filterBar.hasFilter('ip', '97.220.3.248'); expect(hasIpFilter).to.be(true); + await rightClickInChart(35, 5); // hardcoded position of bar, depends heavy on data and charts implementation + await (await find.allByCssSelector('.echTooltipActions__action'))[0].click(); + const time = await PageObjects.timePicker.getTimeConfig(); + expect(time.start).to.equal('Sep 21, 2015 @ 09:00:00.000'); + expect(time.end).to.equal('Sep 21, 2015 @ 12:00:00.000'); }); }); diff --git a/x-pack/test/functional/apps/lens/group4/tsdb.ts b/x-pack/test/functional/apps/lens/group4/tsdb.ts index 7f6045b6f7cf4..3200c7a073dc4 100644 --- a/x-pack/test/functional/apps/lens/group4/tsdb.ts +++ b/x-pack/test/functional/apps/lens/group4/tsdb.ts @@ -248,6 +248,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { const elasticChart = getService('elasticChart'); const indexPatterns = getService('indexPatterns'); const esArchiver = getService('esArchiver'); + const comboBox = getService('comboBox'); const createDocs = async ( esIndex: string, @@ -545,6 +546,49 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) { }); } } + + describe('show time series dimension groups within breakdown', () => { + it('should show the time series dimension group on field picker when configuring a breakdown', async () => { + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + field: '@timestamp', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'min', + field: 'bytes_counter', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_splitDimensionPanel > lns-empty-dimension', + operation: 'terms', + keepOpen: true, + }); + + const list = await comboBox.getOptionsList('indexPattern-dimension-field'); + expect(list).to.contain('Time series dimensions'); + await PageObjects.lens.closeDimensionEditor(); + }); + + it("should not show the time series dimension group on field picker if it's not a breakdown", async () => { + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_yDimensionPanel > lns-empty-dimension', + operation: 'min', + field: 'bytes_counter', + }); + + await PageObjects.lens.configureDimension({ + dimension: 'lnsXY_xDimensionPanel > lns-empty-dimension', + operation: 'date_histogram', + keepOpen: true, + }); + const list = await comboBox.getOptionsList('indexPattern-dimension-field'); + expect(list).to.not.contain('Time series dimensions'); + await PageObjects.lens.closeDimensionEditor(); + }); + }); }); describe('Scenarios with changing stream type', () => { diff --git a/x-pack/test/functional/page_objects/infra_hosts_view.ts b/x-pack/test/functional/page_objects/infra_hosts_view.ts index b56b57843cd3b..6bad2bf1630e5 100644 --- a/x-pack/test/functional/page_objects/infra_hosts_view.ts +++ b/x-pack/test/functional/page_objects/infra_hosts_view.ts @@ -206,7 +206,7 @@ export function InfraHostsViewProvider({ getService }: FtrProviderContext) { // Flyout Tabs async getAssetDetailsKPITileValue(type: string) { const container = await testSubjects.find('assetDetailsKPIGrid'); - const element = await container.findByTestSubject(`assetDetailsKPI-${type}`); + const element = await container.findByTestSubject(`infraAssetDetailsKPI${type}`); const div = await element.findByClassName('echMetricText__value'); return div.getAttribute('title'); }, @@ -215,21 +215,9 @@ export function InfraHostsViewProvider({ getService }: FtrProviderContext) { return testSubjects.exists('assetDetailsAlertsTitle'); }, - async getActiveAlertsCountText() { - const container = await testSubjects.find('activeAlertCount'); - const containerText = await container.getVisibleText(); - return containerText; - }, - - async getTotalAlertsCountText() { - const container = await testSubjects.find('totalAlertCount'); - const containerText = await container.getVisibleText(); - return containerText; - }, - async getAssetDetailsMetricsCharts() { const container = await testSubjects.find('assetDetailsMetricsChartGrid'); - return container.findAllByCssSelector('[data-test-subj*="assetDetailsMetricsChart"]'); + return container.findAllByCssSelector('[data-test-subj*="infraAssetDetailsMetricsChart"]'); }, getMetadataTab() { diff --git a/x-pack/test/functional/page_objects/lens_page.ts b/x-pack/test/functional/page_objects/lens_page.ts index 7f95964e0e5d4..a46d90eb915e0 100644 --- a/x-pack/test/functional/page_objects/lens_page.ts +++ b/x-pack/test/functional/page_objects/lens_page.ts @@ -689,6 +689,20 @@ export function LensPageProvider({ getService, getPageObjects }: FtrProviderCont await this.selectOptionFromComboBox(`indexPattern-dimension-field-${lastIndex}`, field); }); }, + async getNumericFieldReady(testSubj: string) { + const numericInput = await find.byCssSelector( + `input[data-test-subj=${testSubj}][type='number']` + ); + await numericInput.click(); + await numericInput.clearValue(); + return numericInput; + }, + + async setTermsNumberOfValues(value: number) { + const valuesInput = await this.getNumericFieldReady('indexPattern-terms-values'); + await valuesInput.type(`${value}`); + await PageObjects.common.sleep(500); + }, async checkTermsAreNotAvailableToAgg(fields: string[]) { const lastIndex = ( diff --git a/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts b/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts index ab4ed59336826..b44f62e71b9a0 100644 --- a/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts +++ b/x-pack/test/functional_with_es_ssl/apps/cases/group1/view_case.ts @@ -724,6 +724,16 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { await cases.api.deleteAllCases(); }); + it('initially renders user actions list correctly', async () => { + expect(testSubjects.missingOrFail('cases-show-more-user-actions')); + + const userActionsLists = await find.allByCssSelector( + '[data-test-subj="user-actions-list"]' + ); + + expect(userActionsLists).length(1); + }); + it('shows more actions on button click', async () => { await cases.api.generateUserActions({ caseId: createdCase.id, @@ -731,6 +741,8 @@ export default ({ getPageObject, getService }: FtrProviderContext) => { totalUpdates: 4, }); + expect(testSubjects.missingOrFail('user-actions-loading')); + await header.waitUntilLoadingHasFinished(); await testSubjects.click('case-refresh'); diff --git a/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts b/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts index 588ff9125a21b..e73bb06f0203a 100644 --- a/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts +++ b/x-pack/test/security_api_integration/tests/kerberos/kerberos_login.ts @@ -431,8 +431,7 @@ export default function ({ getService }: FtrProviderContext) { }); }); - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/163456 - describe.skip('API access with missing access token document or expired refresh token.', () => { + describe('API access with missing access token document or expired refresh token.', () => { let sessionCookie: Cookie; beforeEach(async () => { @@ -447,6 +446,9 @@ export default function ({ getService }: FtrProviderContext) { sessionCookie = parseCookie(cookies[0])!; checkCookieIsSet(sessionCookie); + // Let's make sure that created tokens are available for search. + await getService('es').indices.refresh({ index: '.security-tokens' }); + // Let's delete tokens from `.security-tokens` index directly to simulate the case when // Elasticsearch automatically removes access/refresh token document from the index after // some period of time. diff --git a/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts b/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts index f1aef15c081f2..9ecdbd311a109 100644 --- a/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts +++ b/x-pack/test/security_api_integration/tests/oidc/authorization_code_flow/oidc_auth.ts @@ -621,6 +621,9 @@ export default function ({ getService }: FtrProviderContext) { }); it('should properly set cookie and start new OIDC handshake', async function () { + // Let's make sure that created tokens are available for search. + await getService('es').indices.refresh({ index: '.security-tokens' }); + // Let's delete tokens from `.security-tokens` index directly to simulate the case when // Elasticsearch automatically removes access/refresh token document from the index // after some period of time. diff --git a/x-pack/test/security_api_integration/tests/saml/saml_login.ts b/x-pack/test/security_api_integration/tests/saml/saml_login.ts index fbb7aa25fa162..8358f24c5d028 100644 --- a/x-pack/test/security_api_integration/tests/saml/saml_login.ts +++ b/x-pack/test/security_api_integration/tests/saml/saml_login.ts @@ -593,8 +593,7 @@ export default function ({ getService }: FtrProviderContext) { }); }); - // FAILING ES PROMOTION: https://github.com/elastic/kibana/issues/163455 - describe.skip('API access with missing access token document.', () => { + describe('API access with missing access token document.', () => { let sessionCookie: Cookie; beforeEach(async () => { @@ -615,6 +614,9 @@ export default function ({ getService }: FtrProviderContext) { sessionCookie = parseCookie(samlAuthenticationResponse.headers['set-cookie'][0])!; + // Let's make sure that created tokens are available for search. + await getService('es').indices.refresh({ index: '.security-tokens' }); + // Let's delete tokens from `.security` index directly to simulate the case when // Elasticsearch automatically removes access/refresh token document from the index // after some period of time. @@ -700,6 +702,9 @@ export default function ({ getService }: FtrProviderContext) { [ 'when access token document is missing', async () => { + // Let's make sure that created tokens are available for search. + await getService('es').indices.refresh({ index: '.security-tokens' }); + const esResponse = await getService('es').deleteByQuery({ index: '.security-tokens', body: { query: { match: { doc_type: 'token' } } }, diff --git a/x-pack/test/security_api_integration/tests/token/session.ts b/x-pack/test/security_api_integration/tests/token/session.ts index f42d9cc93585f..3e8d44ce247cc 100644 --- a/x-pack/test/security_api_integration/tests/token/session.ts +++ b/x-pack/test/security_api_integration/tests/token/session.ts @@ -189,6 +189,9 @@ export default function ({ getService }: FtrProviderContext) { beforeEach(async () => (sessionCookie = await createSessionCookie())); it('should clear cookie and redirect to login', async function () { + // Let's make sure that created tokens are available for search. + await getService('es').indices.refresh({ index: '.security-tokens' }); + // Let's delete tokens from `.security` index directly to simulate the case when // Elasticsearch automatically removes access/refresh token document from the index // after some period of time. diff --git a/x-pack/test/security_solution_cypress/ccs_config.ts b/x-pack/test/security_solution_cypress/ccs_config.ts deleted file mode 100644 index 8e679c071ac0f..0000000000000 --- a/x-pack/test/security_solution_cypress/ccs_config.ts +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrConfigProviderContext } from '@kbn/test'; - -import { SecuritySolutionCypressCcsTestRunner } from './runner'; - -export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const securitySolutionCypressConfig = await readConfigFile(require.resolve('./config.ts')); - return { - ...securitySolutionCypressConfig.getAll(), - - testRunner: SecuritySolutionCypressCcsTestRunner, - }; -} diff --git a/x-pack/test/security_solution_cypress/config.firefox.ts b/x-pack/test/security_solution_cypress/config.firefox.ts deleted file mode 100644 index d7047c043443d..0000000000000 --- a/x-pack/test/security_solution_cypress/config.firefox.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrConfigProviderContext } from '@kbn/test'; -import { CA_CERT_PATH } from '@kbn/dev-utils'; -import { SecuritySolutionConfigurableCypressTestRunner } from './runner'; - -export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const kibanaCommonTestsConfig = await readConfigFile( - require.resolve('../../../test/common/config.js') - ); - const xpackFunctionalTestsConfig = await readConfigFile( - require.resolve('../functional/config.base.js') - ); - - return { - ...kibanaCommonTestsConfig.getAll(), - - browser: { - type: 'firefox', - acceptInsecureCerts: true, - }, - - esTestCluster: { - ...xpackFunctionalTestsConfig.get('esTestCluster'), - serverArgs: [ - ...xpackFunctionalTestsConfig.get('esTestCluster.serverArgs'), - // define custom es server here - // API Keys is enabled at the top level - 'xpack.security.enabled=true', - ], - }, - - kbnTestServer: { - ...xpackFunctionalTestsConfig.get('kbnTestServer'), - serverArgs: [ - ...xpackFunctionalTestsConfig.get('kbnTestServer.serverArgs'), - '--csp.strict=false', - // define custom kibana server args here - `--elasticsearch.ssl.certificateAuthorities=${CA_CERT_PATH}`, - ], - }, - - testRunner: SecuritySolutionConfigurableCypressTestRunner, - }; -} diff --git a/x-pack/test/security_solution_cypress/runner.ts b/x-pack/test/security_solution_cypress/runner.ts index 3a82fc8e14a62..9514e63a12634 100644 --- a/x-pack/test/security_solution_cypress/runner.ts +++ b/x-pack/test/security_solution_cypress/runner.ts @@ -5,12 +5,8 @@ * 2.0. */ -import { resolve } from 'path'; import Url from 'url'; -import { withProcRunner } from '@kbn/dev-proc-runner'; -import semver from 'semver'; - import { FtrProviderContext } from '../common/ftr_provider_context'; export type { FtrProviderContext } from '../common/ftr_provider_context'; @@ -36,58 +32,3 @@ export async function SecuritySolutionConfigurableCypressTestRunner({ ELASTICSEARCH_PASSWORD: config.get('servers.elasticsearch.password'), }; } - -export async function SecuritySolutionCypressCcsTestRunner({ getService }: FtrProviderContext) { - const log = getService('log'); - - await withProcRunner(log, async (procs) => { - await procs.run('cypress', { - cmd: 'yarn', - args: ['cypress:run:ccs'], - cwd: resolve(__dirname, '../../plugins/security_solution'), - env: { - FORCE_COLOR: '1', - CYPRESS_BASE_URL: process.env.TEST_KIBANA_URL, - CYPRESS_ELASTICSEARCH_URL: process.env.TEST_ES_URL, - CYPRESS_ELASTICSEARCH_USERNAME: process.env.ELASTICSEARCH_USERNAME, - CYPRESS_ELASTICSEARCH_PASSWORD: process.env.ELASTICSEARCH_PASSWORD, - CYPRESS_CCS_KIBANA_URL: process.env.TEST_KIBANA_URLDATA, - CYPRESS_CCS_ELASTICSEARCH_URL: process.env.TEST_ES_URLDATA, - CYPRESS_CCS_REMOTE_NAME: process.env.TEST_CCS_REMOTE_NAME, - ...process.env, - }, - wait: true, - }); - }); -} - -export async function SecuritySolutionCypressUpgradeCliTestRunner({ - getService, -}: FtrProviderContext) { - const log = getService('log'); - let command = ''; - - if (semver.gt(process.env.ORIGINAL_VERSION!, '7.10.0')) { - command = 'cypress:run:upgrade'; - } else { - command = 'cypress:run:upgrade:old'; - } - - await withProcRunner(log, async (procs) => { - await procs.run('cypress', { - cmd: 'yarn', - args: [command], - cwd: resolve(__dirname, '../../plugins/security_solution'), - env: { - FORCE_COLOR: '1', - CYPRESS_BASE_URL: process.env.TEST_KIBANA_URL, - CYPRESS_ELASTICSEARCH_URL: process.env.TEST_ES_URL, - CYPRESS_ELASTICSEARCH_USERNAME: process.env.TEST_ES_USER, - CYPRESS_ELASTICSEARCH_PASSWORD: process.env.TEST_ES_PASS, - CYPRESS_ORIGINAL_VERSION: process.env.ORIGINAL_VERSION, - ...process.env, - }, - wait: true, - }); - }); -} diff --git a/x-pack/test/security_solution_cypress/upgrade_config.ts b/x-pack/test/security_solution_cypress/upgrade_config.ts deleted file mode 100644 index 221cf7b30e061..0000000000000 --- a/x-pack/test/security_solution_cypress/upgrade_config.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the Elastic License - * 2.0; you may not use this file except in compliance with the Elastic License - * 2.0. - */ - -import { FtrConfigProviderContext } from '@kbn/test'; - -import { SecuritySolutionCypressUpgradeCliTestRunner } from './runner'; - -export default async function ({ readConfigFile }: FtrConfigProviderContext) { - const kibanaCommonTestsConfig = await readConfigFile( - require.resolve('../../../test/common/config.js') - ); - - return { - ...kibanaCommonTestsConfig.getAll(), - testRunner: SecuritySolutionCypressUpgradeCliTestRunner, - }; -} diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/cases/find_cases.ts b/x-pack/test_serverless/api_integration/test_suites/observability/cases/find_cases.ts new file mode 100644 index 0000000000000..6f88c0ded2fdd --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/observability/cases/find_cases.ts @@ -0,0 +1,57 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { + findCases, + createCase, + deleteAllCaseItems, + postCaseReq, + findCasesResp, +} from './helpers/api'; + +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + const es = getService('es'); + + describe('find_cases', () => { + afterEach(async () => { + await deleteAllCaseItems(es); + }); + + it('should return empty response', async () => { + const cases = await findCases({ supertest }); + expect(cases).to.eql(findCasesResp); + }); + + it('should return cases', async () => { + const a = await createCase(supertest, postCaseReq); + const b = await createCase(supertest, postCaseReq); + const c = await createCase(supertest, postCaseReq); + + const cases = await findCases({ supertest }); + + expect(cases).to.eql({ + ...findCasesResp, + total: 3, + cases: [a, b, c], + count_open_cases: 3, + }); + }); + + it('returns empty response when trying to find cases with owner as cases', async () => { + const cases = await findCases({ supertest, query: { owner: 'cases' } }); + expect(cases).to.eql(findCasesResp); + }); + + it('returns empty response when trying to find cases with owner as securitySolution', async () => { + const cases = await findCases({ supertest, query: { owner: 'securitySolution' } }); + expect(cases).to.eql(findCasesResp); + }); + }); +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/cases/get_case.ts b/x-pack/test_serverless/api_integration/test_suites/observability/cases/get_case.ts new file mode 100644 index 0000000000000..fffc529d2df30 --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/observability/cases/get_case.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; + +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { + getCase, + createCase, + deleteCasesByESQuery, + getPostCaseRequest, + postCaseResp, +} from './helpers/api'; +import { removeServerGeneratedPropertiesFromCase } from './helpers/omit'; + +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + const es = getService('es'); + + describe('get_case', () => { + afterEach(async () => { + await deleteCasesByESQuery(es); + }); + + it('should return a case', async () => { + const postedCase = await createCase(supertest, getPostCaseRequest()); + const theCase = await getCase({ supertest, caseId: postedCase.id, includeComments: true }); + + const data = removeServerGeneratedPropertiesFromCase(theCase); + expect(data).to.eql(postCaseResp()); + expect(data.comments?.length).to.eql(0); + }); + }); +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/api.ts b/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/api.ts new file mode 100644 index 0000000000000..5f196ef3e3372 --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/api.ts @@ -0,0 +1,247 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Client } from '@elastic/elasticsearch'; +import type SuperTest from 'supertest'; +import { ALERTING_CASES_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server/src/saved_objects_index_pattern'; +import { CASES_URL } from '@kbn/cases-plugin/common'; +import { Case, CaseSeverity, CaseStatuses } from '@kbn/cases-plugin/common/types/domain'; +import type { CasePostRequest } from '@kbn/cases-plugin/common/types/api'; +import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain'; +import { CasesFindResponse } from '@kbn/cases-plugin/common/types/api'; + +export interface User { + username: string; + password: string; + description?: string; + roles: string[]; +} + +export const superUser: User = { + username: 'superuser', + password: 'superuser', + roles: ['superuser'], +}; + +export const setupAuth = ({ + apiCall, + headers, + auth, +}: { + apiCall: SuperTest.Test; + headers: Record; + auth?: { user: User; space: string | null } | null; +}): SuperTest.Test => { + if (!Object.hasOwn(headers, 'Cookie') && auth != null) { + return apiCall.auth(auth.user.username, auth.user.password); + } + + return apiCall; +}; + +export const getSpaceUrlPrefix = (spaceId: string | undefined | null) => { + return spaceId && spaceId !== 'default' ? `/s/${spaceId}` : ``; +}; + +export const deleteAllCaseItems = async (es: Client) => { + await Promise.all([ + deleteCasesByESQuery(es), + deleteCasesUserActions(es), + deleteComments(es), + deleteConfiguration(es), + deleteMappings(es), + ]); +}; + +export const deleteCasesUserActions = async (es: Client): Promise => { + await es.deleteByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + q: 'type:cases-user-actions', + wait_for_completion: true, + refresh: true, + body: {}, + conflicts: 'proceed', + }); +}; + +export const deleteCasesByESQuery = async (es: Client): Promise => { + await es.deleteByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + q: 'type:cases', + wait_for_completion: true, + refresh: true, + body: {}, + conflicts: 'proceed', + }); +}; + +export const deleteComments = async (es: Client): Promise => { + await es.deleteByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + q: 'type:cases-comments', + wait_for_completion: true, + refresh: true, + body: {}, + conflicts: 'proceed', + }); +}; + +export const deleteConfiguration = async (es: Client): Promise => { + await es.deleteByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + q: 'type:cases-configure', + wait_for_completion: true, + refresh: true, + body: {}, + conflicts: 'proceed', + }); +}; + +export const deleteMappings = async (es: Client): Promise => { + await es.deleteByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + q: 'type:cases-connector-mappings', + wait_for_completion: true, + refresh: true, + body: {}, + conflicts: 'proceed', + }); +}; + +export const defaultUser = { email: null, full_name: null, username: 'elastic' }; +/** + * A null filled user will occur when the security plugin is disabled + */ +export const nullUser = { email: null, full_name: null, username: null }; + +export const postCaseReq: CasePostRequest = { + description: 'This is a brand new case of a bad meanie defacing data', + title: 'Super Bad Observability Issue', + tags: ['defacement'], + severity: CaseSeverity.LOW, + connector: { + id: 'none', + name: 'none', + type: ConnectorTypes.none, + fields: null, + }, + settings: { + syncAlerts: true, + }, + owner: 'observability', + assignees: [], +}; + +/** + * Return a request for creating a case. + */ +export const getPostCaseRequest = (req?: Partial): CasePostRequest => ({ + ...postCaseReq, + ...req, +}); + +export const postCaseResp = ( + id?: string | null, + req: CasePostRequest = postCaseReq +): Partial => ({ + ...req, + ...(id != null ? { id } : {}), + comments: [], + duration: null, + severity: req.severity ?? CaseSeverity.LOW, + totalAlerts: 0, + totalComment: 0, + closed_by: null, + created_by: defaultUser, + external_service: null, + status: CaseStatuses.open, + updated_by: null, + category: null, +}); + +const findCommon = { + page: 1, + per_page: 20, + total: 0, + count_open_cases: 0, + count_closed_cases: 0, + count_in_progress_cases: 0, +}; + +export const findCasesResp: CasesFindResponse = { + ...findCommon, + cases: [], +}; + +export const createCase = async ( + supertest: SuperTest.SuperTest, + params: CasePostRequest, + expectedHttpCode: number = 200, + auth: { user: User; space: string | null } | null = { user: superUser, space: null }, + headers: Record = {} +): Promise => { + const apiCall = supertest.post(`${CASES_URL}`); + + setupAuth({ apiCall, headers, auth }); + + const response = await apiCall + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .set(headers) + .send(params) + .expect(expectedHttpCode); + + return response.body; +}; + +export const findCases = async ({ + supertest, + query = {}, + expectedHttpCode = 200, + auth = { user: superUser, space: null }, +}: { + supertest: SuperTest.SuperTest; + query?: Record; + expectedHttpCode?: number; + auth?: { user: User; space: string | null }; +}): Promise => { + const { body: res } = await supertest + .get(`${getSpaceUrlPrefix(auth.space)}${CASES_URL}/_find`) + .auth(auth.user.username, auth.user.password) + .query({ sortOrder: 'asc', ...query }) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .send() + .expect(expectedHttpCode); + + return res; +}; + +export const getCase = async ({ + supertest, + caseId, + includeComments = false, + expectedHttpCode = 200, + auth = { user: superUser, space: null }, +}: { + supertest: SuperTest.SuperTest; + caseId: string; + includeComments?: boolean; + expectedHttpCode?: number; + auth?: { user: User; space: string | null }; +}): Promise => { + const { body: theCase } = await supertest + .get( + `${getSpaceUrlPrefix(auth?.space)}${CASES_URL}/${caseId}?includeComments=${includeComments}` + ) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .auth(auth.user.username, auth.user.password) + .expect(expectedHttpCode); + + return theCase; +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/omit.ts b/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/omit.ts new file mode 100644 index 0000000000000..b25506bfaebea --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/observability/cases/helpers/omit.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Case, Attachment } from '@kbn/cases-plugin/common/types/domain'; +import { omit } from 'lodash'; + +interface CommonSavedObjectAttributes { + id?: string | null; + created_at?: string | null; + updated_at?: string | null; + version?: string | null; + [key: string]: unknown; +} + +const savedObjectCommonAttributes = ['created_at', 'updated_at', 'version', 'id']; + +export const removeServerGeneratedPropertiesFromObject = ( + object: T, + keys: K[] +): Omit => { + return omit(object, keys); +}; +export const removeServerGeneratedPropertiesFromSavedObject = < + T extends CommonSavedObjectAttributes +>( + attributes: T, + keys: Array = [] +): Omit => { + return removeServerGeneratedPropertiesFromObject(attributes, [ + ...savedObjectCommonAttributes, + ...keys, + ]); +}; + +export const removeServerGeneratedPropertiesFromCase = (theCase: Case): Partial => { + return removeServerGeneratedPropertiesFromSavedObject(theCase, ['closed_at']); +}; + +export const removeServerGeneratedPropertiesFromComments = ( + comments: Attachment[] | undefined +): Array> | undefined => { + return comments?.map((comment) => { + return removeServerGeneratedPropertiesFromSavedObject(comment, []); + }); +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/cases/post_case.ts b/x-pack/test_serverless/api_integration/test_suites/observability/cases/post_case.ts new file mode 100644 index 0000000000000..2bb37149c007f --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/observability/cases/post_case.ts @@ -0,0 +1,64 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain'; + +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { deleteCasesByESQuery, createCase, getPostCaseRequest } from './helpers/api'; + +export default ({ getService }: FtrProviderContext): void => { + const es = getService('es'); + const supertest = getService('supertest'); + + describe('post_case', () => { + afterEach(async () => { + await deleteCasesByESQuery(es); + }); + + it('should create a case', async () => { + expect( + await createCase( + supertest, + getPostCaseRequest({ + connector: { + id: '123', + name: 'Jira', + type: ConnectorTypes.jira, + fields: { issueType: 'Task', priority: 'High', parent: null }, + }, + }), + 200 + ) + ); + }); + + it('should throw 403 when create a case with securitySolution as owner', async () => { + expect( + await createCase( + supertest, + getPostCaseRequest({ + owner: 'securitySolution', + }), + 403 + ) + ); + }); + + it('should throw 403 when create a case with cases as owner', async () => { + expect( + await createCase( + supertest, + getPostCaseRequest({ + owner: 'cases', + }), + 403 + ) + ); + }); + }); +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/observability/index.ts b/x-pack/test_serverless/api_integration/test_suites/observability/index.ts index b235be792ed42..443c9366d751b 100644 --- a/x-pack/test_serverless/api_integration/test_suites/observability/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/observability/index.ts @@ -17,5 +17,8 @@ export default function ({ loadTestFile }: FtrProviderContext) { loadTestFile(require.resolve('./threshold_rule/documents_count_fired')); loadTestFile(require.resolve('./threshold_rule/custom_eq_avg_bytes_fired')); loadTestFile(require.resolve('./threshold_rule/group_by_fired')); + loadTestFile(require.resolve('./cases/post_case')); + loadTestFile(require.resolve('./cases/find_cases')); + loadTestFile(require.resolve('./cases/get_case')); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/search/cases/find_cases.ts b/x-pack/test_serverless/api_integration/test_suites/search/cases/find_cases.ts new file mode 100644 index 0000000000000..b847833b30b46 --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/search/cases/find_cases.ts @@ -0,0 +1,23 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CASES_URL } from '@kbn/cases-plugin/common/constants'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + + describe('find_cases', () => { + it('403 when calling find cases API', async () => { + await supertest + .get(`${CASES_URL}/_find`) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .expect(403); + }); + }); +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/search/cases/post_case.ts b/x-pack/test_serverless/api_integration/test_suites/search/cases/post_case.ts new file mode 100644 index 0000000000000..4391fa29e0831 --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/search/cases/post_case.ts @@ -0,0 +1,43 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { CASES_URL } from '@kbn/cases-plugin/common/constants'; +import { CaseSeverity } from '@kbn/cases-plugin/common/types/domain'; +import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain'; + +import { FtrProviderContext } from '../../../ftr_provider_context'; + +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + + describe('post_case', () => { + it('403 when trying to create case', async () => { + await supertest + .post(CASES_URL) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .send({ + description: 'This is a brand new case of a bad meanie defacing data', + title: 'Super Bad Observability Issue', + tags: ['defacement'], + severity: CaseSeverity.LOW, + connector: { + id: 'none', + name: 'none', + type: ConnectorTypes.none, + fields: null, + }, + settings: { + syncAlerts: true, + }, + owner: 'cases', + assignees: [], + }) + .expect(403); + }); + }); +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/search/index.ts b/x-pack/test_serverless/api_integration/test_suites/search/index.ts index 20c04f741b1ac..13ddf80d5a950 100644 --- a/x-pack/test_serverless/api_integration/test_suites/search/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/search/index.ts @@ -10,5 +10,7 @@ import { FtrProviderContext } from '../../ftr_provider_context'; export default function ({ loadTestFile }: FtrProviderContext) { describe('serverless search API', function () { loadTestFile(require.resolve('./snapshot_telemetry')); + loadTestFile(require.resolve('./cases/post_case')); + loadTestFile(require.resolve('./cases/find_cases')); }); } diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cases/find_cases.ts b/x-pack/test_serverless/api_integration/test_suites/security/cases/find_cases.ts new file mode 100644 index 0000000000000..07283119aea2f --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/security/cases/find_cases.ts @@ -0,0 +1,60 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +import { + findCases, + createCase, + deleteAllCaseItems, + findCasesResp, + postCaseReq, +} from './helpers/api'; + +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + const es = getService('es'); + + describe('find_cases', () => { + describe('basic tests', () => { + afterEach(async () => { + await deleteAllCaseItems(es); + }); + + it('should return empty response', async () => { + const cases = await findCases({ supertest }); + expect(cases).to.eql(findCasesResp); + }); + + it('should return cases', async () => { + const a = await createCase(supertest, postCaseReq); + const b = await createCase(supertest, postCaseReq); + const c = await createCase(supertest, postCaseReq); + + const cases = await findCases({ supertest }); + + expect(cases).to.eql({ + ...findCasesResp, + total: 3, + cases: [a, b, c], + count_open_cases: 3, + }); + }); + + it('returns empty response when trying to find cases with owner as cases', async () => { + const cases = await findCases({ supertest, query: { owner: 'cases' } }); + expect(cases).to.eql(findCasesResp); + }); + + it('returns empty response when trying to find cases with owner as observability', async () => { + const cases = await findCases({ supertest, query: { owner: 'observability' } }); + expect(cases).to.eql(findCasesResp); + }); + }); + }); +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cases/get_case.ts b/x-pack/test_serverless/api_integration/test_suites/security/cases/get_case.ts new file mode 100644 index 0000000000000..c8dd9ec867514 --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/security/cases/get_case.ts @@ -0,0 +1,38 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { FtrProviderContext } from '../../../ftr_provider_context'; + +import { + getCase, + createCase, + deleteCasesByESQuery, + getPostCaseRequest, + postCaseResp, +} from './helpers/api'; +import { removeServerGeneratedPropertiesFromCase } from './helpers/omit'; + +export default ({ getService }: FtrProviderContext): void => { + const supertest = getService('supertest'); + const es = getService('es'); + + describe('get_case', () => { + afterEach(async () => { + await deleteCasesByESQuery(es); + }); + + it('should return a case', async () => { + const postedCase = await createCase(supertest, getPostCaseRequest()); + const theCase = await getCase({ supertest, caseId: postedCase.id, includeComments: true }); + + const data = removeServerGeneratedPropertiesFromCase(theCase); + expect(data).to.eql(postCaseResp()); + expect(data.comments?.length).to.eql(0); + }); + }); +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/api.ts b/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/api.ts new file mode 100644 index 0000000000000..afba9c46c67c2 --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/api.ts @@ -0,0 +1,247 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import type { Client } from '@elastic/elasticsearch'; +import type SuperTest from 'supertest'; +import { ALERTING_CASES_SAVED_OBJECT_INDEX } from '@kbn/core-saved-objects-server/src/saved_objects_index_pattern'; +import { CASES_URL } from '@kbn/cases-plugin/common'; +import { Case, CaseSeverity, CaseStatuses } from '@kbn/cases-plugin/common/types/domain'; +import type { CasePostRequest } from '@kbn/cases-plugin/common/types/api'; +import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain'; +import { CasesFindResponse } from '@kbn/cases-plugin/common/types/api'; + +export interface User { + username: string; + password: string; + description?: string; + roles: string[]; +} + +export const superUser: User = { + username: 'superuser', + password: 'superuser', + roles: ['superuser'], +}; + +export const setupAuth = ({ + apiCall, + headers, + auth, +}: { + apiCall: SuperTest.Test; + headers: Record; + auth?: { user: User; space: string | null } | null; +}): SuperTest.Test => { + if (!Object.hasOwn(headers, 'Cookie') && auth != null) { + return apiCall.auth(auth.user.username, auth.user.password); + } + + return apiCall; +}; + +export const getSpaceUrlPrefix = (spaceId: string | undefined | null) => { + return spaceId && spaceId !== 'default' ? `/s/${spaceId}` : ``; +}; + +export const deleteAllCaseItems = async (es: Client) => { + await Promise.all([ + deleteCasesByESQuery(es), + deleteCasesUserActions(es), + deleteComments(es), + deleteConfiguration(es), + deleteMappings(es), + ]); +}; + +export const deleteCasesUserActions = async (es: Client): Promise => { + await es.deleteByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + q: 'type:cases-user-actions', + wait_for_completion: true, + refresh: true, + body: {}, + conflicts: 'proceed', + }); +}; + +export const deleteCasesByESQuery = async (es: Client): Promise => { + await es.deleteByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + q: 'type:cases', + wait_for_completion: true, + refresh: true, + body: {}, + conflicts: 'proceed', + }); +}; + +export const deleteComments = async (es: Client): Promise => { + await es.deleteByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + q: 'type:cases-comments', + wait_for_completion: true, + refresh: true, + body: {}, + conflicts: 'proceed', + }); +}; + +export const deleteConfiguration = async (es: Client): Promise => { + await es.deleteByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + q: 'type:cases-configure', + wait_for_completion: true, + refresh: true, + body: {}, + conflicts: 'proceed', + }); +}; + +export const deleteMappings = async (es: Client): Promise => { + await es.deleteByQuery({ + index: ALERTING_CASES_SAVED_OBJECT_INDEX, + q: 'type:cases-connector-mappings', + wait_for_completion: true, + refresh: true, + body: {}, + conflicts: 'proceed', + }); +}; + +export const defaultUser = { email: null, full_name: null, username: 'elastic' }; +/** + * A null filled user will occur when the security plugin is disabled + */ +export const nullUser = { email: null, full_name: null, username: null }; + +export const postCaseReq: CasePostRequest = { + description: 'This is a brand new case of a bad meanie defacing data', + title: 'Super Bad Observability Issue', + tags: ['defacement'], + severity: CaseSeverity.LOW, + connector: { + id: 'none', + name: 'none', + type: ConnectorTypes.none, + fields: null, + }, + settings: { + syncAlerts: true, + }, + owner: 'securitySolution', + assignees: [], +}; + +/** + * Return a request for creating a case. + */ +export const getPostCaseRequest = (req?: Partial): CasePostRequest => ({ + ...postCaseReq, + ...req, +}); + +export const postCaseResp = ( + id?: string | null, + req: CasePostRequest = postCaseReq +): Partial => ({ + ...req, + ...(id != null ? { id } : {}), + comments: [], + duration: null, + severity: req.severity ?? CaseSeverity.LOW, + totalAlerts: 0, + totalComment: 0, + closed_by: null, + created_by: defaultUser, + external_service: null, + status: CaseStatuses.open, + updated_by: null, + category: null, +}); + +const findCommon = { + page: 1, + per_page: 20, + total: 0, + count_open_cases: 0, + count_closed_cases: 0, + count_in_progress_cases: 0, +}; + +export const findCasesResp: CasesFindResponse = { + ...findCommon, + cases: [], +}; + +export const createCase = async ( + supertest: SuperTest.SuperTest, + params: CasePostRequest, + expectedHttpCode: number = 200, + auth: { user: User; space: string | null } | null = { user: superUser, space: null }, + headers: Record = {} +): Promise => { + const apiCall = supertest.post(`${CASES_URL}`); + + setupAuth({ apiCall, headers, auth }); + + const { body: theCase } = await apiCall + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .set(headers) + .send(params) + .expect(expectedHttpCode); + + return theCase; +}; + +export const findCases = async ({ + supertest, + query = {}, + expectedHttpCode = 200, + auth = { user: superUser, space: null }, +}: { + supertest: SuperTest.SuperTest; + query?: Record; + expectedHttpCode?: number; + auth?: { user: User; space: string | null }; +}): Promise => { + const { body: res } = await supertest + .get(`${getSpaceUrlPrefix(auth.space)}${CASES_URL}/_find`) + .auth(auth.user.username, auth.user.password) + .query({ sortOrder: 'asc', ...query }) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .send() + .expect(expectedHttpCode); + + return res; +}; + +export const getCase = async ({ + supertest, + caseId, + includeComments = false, + expectedHttpCode = 200, + auth = { user: superUser, space: null }, +}: { + supertest: SuperTest.SuperTest; + caseId: string; + includeComments?: boolean; + expectedHttpCode?: number; + auth?: { user: User; space: string | null }; +}): Promise => { + const { body: theCase } = await supertest + .get( + `${getSpaceUrlPrefix(auth?.space)}${CASES_URL}/${caseId}?includeComments=${includeComments}` + ) + .set('kbn-xsrf', 'foo') + .set('x-elastic-internal-origin', 'foo') + .auth(auth.user.username, auth.user.password) + .expect(expectedHttpCode); + + return theCase; +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/omit.ts b/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/omit.ts new file mode 100644 index 0000000000000..b25506bfaebea --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/security/cases/helpers/omit.ts @@ -0,0 +1,49 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import { Case, Attachment } from '@kbn/cases-plugin/common/types/domain'; +import { omit } from 'lodash'; + +interface CommonSavedObjectAttributes { + id?: string | null; + created_at?: string | null; + updated_at?: string | null; + version?: string | null; + [key: string]: unknown; +} + +const savedObjectCommonAttributes = ['created_at', 'updated_at', 'version', 'id']; + +export const removeServerGeneratedPropertiesFromObject = ( + object: T, + keys: K[] +): Omit => { + return omit(object, keys); +}; +export const removeServerGeneratedPropertiesFromSavedObject = < + T extends CommonSavedObjectAttributes +>( + attributes: T, + keys: Array = [] +): Omit => { + return removeServerGeneratedPropertiesFromObject(attributes, [ + ...savedObjectCommonAttributes, + ...keys, + ]); +}; + +export const removeServerGeneratedPropertiesFromCase = (theCase: Case): Partial => { + return removeServerGeneratedPropertiesFromSavedObject(theCase, ['closed_at']); +}; + +export const removeServerGeneratedPropertiesFromComments = ( + comments: Attachment[] | undefined +): Array> | undefined => { + return comments?.map((comment) => { + return removeServerGeneratedPropertiesFromSavedObject(comment, []); + }); +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/security/cases/post_case.ts b/x-pack/test_serverless/api_integration/test_suites/security/cases/post_case.ts new file mode 100644 index 0000000000000..1d49545c3d53a --- /dev/null +++ b/x-pack/test_serverless/api_integration/test_suites/security/cases/post_case.ts @@ -0,0 +1,77 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the Elastic License + * 2.0; you may not use this file except in compliance with the Elastic License + * 2.0. + */ + +import expect from '@kbn/expect'; +import { ConnectorTypes } from '@kbn/cases-plugin/common/types/domain'; + +import { FtrProviderContext } from '../../../ftr_provider_context'; +import { deleteCasesByESQuery, createCase, getPostCaseRequest, postCaseResp } from './helpers/api'; +import { removeServerGeneratedPropertiesFromCase } from './helpers/omit'; + +export default ({ getService }: FtrProviderContext): void => { + const es = getService('es'); + const supertest = getService('supertest'); + + describe('post_case', () => { + afterEach(async () => { + await deleteCasesByESQuery(es); + }); + + it('should create a case', async () => { + const postedCase = await createCase( + supertest, + getPostCaseRequest({ + connector: { + id: '123', + name: 'Jira', + type: ConnectorTypes.jira, + fields: { issueType: 'Task', priority: 'High', parent: null }, + }, + }) + ); + const data = removeServerGeneratedPropertiesFromCase(postedCase); + + expect(data).to.eql( + postCaseResp( + null, + getPostCaseRequest({ + connector: { + id: '123', + name: 'Jira', + type: ConnectorTypes.jira, + fields: { issueType: 'Task', priority: 'High', parent: null }, + }, + }) + ) + ); + }); + + it('should throw 403 when trying to create a case with observability as owner', async () => { + expect( + await createCase( + supertest, + getPostCaseRequest({ + owner: 'observability', + }), + 403 + ) + ); + }); + + it('should throw 403 when trying to create a case with cases as owner', async () => { + expect( + await createCase( + supertest, + getPostCaseRequest({ + owner: 'cases', + }), + 403 + ) + ); + }); + }); +}; diff --git a/x-pack/test_serverless/api_integration/test_suites/security/index.ts b/x-pack/test_serverless/api_integration/test_suites/security/index.ts index a57d4446e4b9b..294f4b32af5e6 100644 --- a/x-pack/test_serverless/api_integration/test_suites/security/index.ts +++ b/x-pack/test_serverless/api_integration/test_suites/security/index.ts @@ -11,5 +11,8 @@ export default function ({ loadTestFile }: FtrProviderContext) { describe('serverless security API', function () { loadTestFile(require.resolve('./fleet')); loadTestFile(require.resolve('./snapshot_telemetry')); + loadTestFile(require.resolve('./cases/post_case')); + loadTestFile(require.resolve('./cases/find_cases')); + loadTestFile(require.resolve('./cases/get_case')); }); } diff --git a/x-pack/test_serverless/functional/test_suites/observability/navigation.ts b/x-pack/test_serverless/functional/test_suites/observability/navigation.ts index 6c90a2a410b61..2054e8eb011f6 100644 --- a/x-pack/test_serverless/functional/test_suites/observability/navigation.ts +++ b/x-pack/test_serverless/functional/test_suites/observability/navigation.ts @@ -86,5 +86,22 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { await expect(await browser.getCurrentUrl()).contain('/app/discover#/p/log-explorer'); }); + + it('shows cases in sidebar navigation', async () => { + await svlCommonNavigation.expectExists(); + + await svlCommonNavigation.sidenav.expectLinkExists({ + deepLinkId: 'observability-overview:cases', + }); + }); + + it('navigates to cases app', async () => { + await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'observability-overview:cases' }); + + await svlCommonNavigation.sidenav.expectLinkActive({ + deepLinkId: 'observability-overview:cases', + }); + expect(await browser.getCurrentUrl()).contain('/app/observability/cases'); + }); }); } diff --git a/x-pack/test_serverless/functional/test_suites/search/navigation.ts b/x-pack/test_serverless/functional/test_suites/search/navigation.ts index edf4c41274403..ba19e7b756073 100644 --- a/x-pack/test_serverless/functional/test_suites/search/navigation.ts +++ b/x-pack/test_serverless/functional/test_suites/search/navigation.ts @@ -74,5 +74,18 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { await expect(await browser.getCurrentUrl()).contain('/app/discover'); }); + + it('does not show cases in sidebar navigation', async () => { + await svlSearchLandingPage.assertSvlSearchSideNavExists(); + + expect(await testSubjects.missingOrFail('cases')); + }); + + it('does not navigate to cases app', async () => { + await svlCommonNavigation.sidenav.clickLink({ deepLinkId: 'discover' }); + + expect(await browser.getCurrentUrl()).not.contain('/app/management/cases'); + await testSubjects.missingOrFail('cases-all-title'); + }); }); } diff --git a/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts b/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts index 1ea8ed53c0ca4..695336b7734fb 100644 --- a/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts +++ b/x-pack/test_serverless/functional/test_suites/security/ftr/navigation.ts @@ -43,5 +43,19 @@ export default function ({ getPageObject, getService }: FtrProviderContext) { await expect(await browser.getCurrentUrl()).contain('app/security/dashboards'); }); + + it('shows cases in sidebar navigation', async () => { + await svlSecLandingPage.assertSvlSecSideNavExists(); + await svlCommonNavigation.expectExists(); + + expect(await testSubjects.existOrFail('solutionSideNavItemLink-cases')); + }); + + it('navigates to cases app', async () => { + await testSubjects.click('solutionSideNavItemLink-cases'); + + expect(await browser.getCurrentUrl()).contain('/app/security/cases'); + await testSubjects.existOrFail('cases-all-title'); + }); }); } diff --git a/x-pack/test_serverless/tsconfig.json b/x-pack/test_serverless/tsconfig.json index 8c431b2537986..eb69a37884039 100644 --- a/x-pack/test_serverless/tsconfig.json +++ b/x-pack/test_serverless/tsconfig.json @@ -46,5 +46,6 @@ "@kbn/test-subj-selector", "@kbn/core-http-common", "@kbn/data-views-plugin", + "@kbn/core-saved-objects-server", ] } diff --git a/yarn.lock b/yarn.lock index 952c808afb066..39981aa19923e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,21 @@ # yarn lockfile v1 +"@actions/core@^1.10.0": + version "1.10.0" + resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.10.0.tgz#44551c3c71163949a2f06e94d9ca2157a0cfac4f" + integrity sha512-2aZDDa3zrrZbP5ZYg159sNoLRb61nQ7awl5pSvIq5Qpj81vwDzdMRKzkWJGJuwVvWpvZKx7vspJALyvaaIQyug== + dependencies: + "@actions/http-client" "^2.0.1" + uuid "^8.3.2" + +"@actions/http-client@^2.0.1": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.1.0.tgz#b6d8c3934727d6a50d10d19f00a711a964599a9f" + integrity sha512-BonhODnXr3amchh4qkmjPMUO8mFi/zLaaCeCAJZqch8iQqyDnVIkySjB38VHAC8IJ+bnlgfOqlhpyCUZHlQsqw== + dependencies: + tunnel "^0.0.6" + "@adobe/css-tools@^4.0.1": version "4.0.1" resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.0.1.tgz#b38b444ad3aa5fedbb15f2f746dcd934226a12dd" @@ -398,6 +413,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.2.tgz#dacafadfc6d7654c3051a66d6fe55b6cb2f2a0b3" integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ== +"@babel/parser@^7.21.8": + version "7.22.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea" + integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -1302,6 +1322,13 @@ resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + "@csstools/selector-specificity@^2.0.1": version "2.0.1" resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.1.tgz#b6b8d81780b9a9f6459f4bfe9226ac6aefaefe87" @@ -1395,6 +1422,14 @@ enabled "2.0.x" kuler "^2.0.0" +"@dependents/detective-less@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@dependents/detective-less/-/detective-less-4.1.0.tgz#4a979ee7a6a79eb33602862d6a1263e30f98002e" + integrity sha512-KrkT6qO5NxqNfy68sBl6CTSoJ4SNDIS5iQArkibhlbGU4LaDukZ3q2HIkh8aUKDio6o4itU4xDR7t82Y2eP1Bg== + dependencies: + gonzales-pe "^4.3.0" + node-source-walk "^6.0.1" + "@discoveryjs/json-ext@^0.5.0", "@discoveryjs/json-ext@^0.5.3": version "0.5.5" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz#9283c9ce5b289a3c4f61c12757469e59377f81f3" @@ -2792,7 +2827,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": +"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": version "3.1.0" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== @@ -2815,6 +2850,14 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.17" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" @@ -8088,6 +8131,26 @@ mkdirp "^1.0.4" path-browserify "^1.0.1" +"@tsconfig/node10@^1.0.7": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + +"@tsconfig/node12@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + +"@tsconfig/node14@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + +"@tsconfig/node16@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + "@tsd/typescript@~4.6.3": version "4.6.3" resolved "https://registry.yarnpkg.com/@tsd/typescript/-/typescript-4.6.3.tgz#9b4c8198da7614fe1547436fbd5657cfe8327c1d" @@ -9892,6 +9955,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.54.0.tgz#7d519df01f50739254d89378e0dcac504cab2740" integrity sha512-nExy+fDCBEgqblasfeE3aQ3NuafBUxZxgxXcYfzYRZFHdVvk5q60KhCSkG0noHgHRo/xQ/BOzURLZAafFpTkmQ== +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + "@typescript-eslint/typescript-estree@5.54.0", "@typescript-eslint/typescript-estree@^5.54.0": version "5.54.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.54.0.tgz#f6f3440cabee8a43a0b25fa498213ebb61fdfe99" @@ -9905,6 +9973,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@^5.59.5": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/utils@5.54.0", "@typescript-eslint/utils@^5.10.0": version "5.54.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.54.0.tgz#3db758aae078be7b54b8ea8ea4537ff6cd3fbc21" @@ -9927,6 +10008,14 @@ "@typescript-eslint/types" "5.54.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + "@wdio/logger@^8.6.6": version "8.6.6" resolved "https://registry.yarnpkg.com/@wdio/logger/-/logger-8.6.6.tgz#6f3844a2506730ae1e4151dca0ed0242b5b69b63" @@ -10314,10 +10403,10 @@ acorn-globals@^7.0.0: acorn "^8.1.0" acorn-walk "^8.0.2" -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== +acorn-import-assertions@^1.7.6, acorn-import-assertions@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== acorn-jsx@^5.3.1: version "5.3.2" @@ -10338,7 +10427,7 @@ acorn-walk@^7.0.0, acorn-walk@^7.2.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.2.0: +acorn-walk@^8.0.0, acorn-walk@^8.0.2, acorn-walk@^8.1.1, acorn-walk@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== @@ -10358,10 +10447,15 @@ acorn@^7.0.0, acorn@^7.4.0, acorn@^7.4.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4, acorn@^8.1.0, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== +acorn@^8.0.4, acorn@^8.1.0, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0, acorn@^8.8.2: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + +acorn@^8.4.1: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== address@^1.0.1: version "1.1.2" @@ -10670,6 +10764,11 @@ apidoc-markdown@^7.2.4: update-notifier "^5.1.0" yargs "^17.6.0" +app-module-path@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/app-module-path/-/app-module-path-2.2.0.tgz#641aa55dfb7d6a6f0a8141c4b9c0aa50b6c24dd5" + integrity sha512-gkco+qxENJV+8vFcDiiFhuoSvRXb2a/QPqpSoWhVz829VNJfOTnELbBmPmNKFxf3xdNnw4DWCkzkDaavcX/1YQ== + app-root-dir@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/app-root-dir/-/app-root-dir-1.0.2.tgz#38187ec2dea7577fff033ffcb12172692ff6e118" @@ -10742,6 +10841,16 @@ are-we-there-yet@^3.0.0: delegates "^1.0.0" readable-stream "^3.6.0" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +arg@^5.0.1, arg@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" + integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -10986,6 +11095,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +ast-module-types@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ast-module-types/-/ast-module-types-5.0.0.tgz#32b2b05c56067ff38e95df66f11d6afd6c9ba16b" + integrity sha512-JvqziE0Wc0rXQfma0HZC/aY7URXHFuZV84fJRtP8u+lhp0JYCNd5wJzVXP45t0PH0Mej3ynlzvdyITYIu0G4LQ== + ast-transform@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/ast-transform/-/ast-transform-0.0.0.tgz#74944058887d8283e189d954600947bc98fe0062" @@ -12432,14 +12546,14 @@ chrome-trace-event@^1.0.2: dependencies: tslib "^1.9.0" -chromedriver@^114.0.2: - version "114.0.2" - resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-114.0.2.tgz#1ddaa6738f2b60e6b832a39f791c8c54bf840837" - integrity sha512-v0qrXRBknbxqmtklG7RWOe3TJ/dLaHhtB0jVxE7BAdYERxUjEaNRyqBwoGgVfQDibHCB0swzvzsj158nnfPgZw== +chromedriver@^115.0.1: + version "115.0.1" + resolved "https://registry.yarnpkg.com/chromedriver/-/chromedriver-115.0.1.tgz#76cbf35f16e0c1f5e29ab821fb3b8b06d22c3e40" + integrity sha512-faE6WvIhXfhnoZ3nAxUXYzeDCKy612oPwpkUp0mVkA7fZPg2JHSUiYOQhUYgzHQgGvDWD5Fy2+M2xV55GKHBVQ== dependencies: "@testim/chrome-version" "^1.1.3" axios "^1.4.0" - compare-versions "^5.0.3" + compare-versions "^6.0.0" extract-zip "^2.0.1" https-proxy-agent "^5.0.1" proxy-from-env "^1.1.0" @@ -12475,6 +12589,11 @@ cjs-module-lexer@^1.0.0: resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== +cjs-module-lexer@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== + clamp@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/clamp/-/clamp-1.0.1.tgz#66a0e64011816e37196828fdc8c8c147312c8634" @@ -12846,10 +12965,10 @@ compare-versions@3.5.1: resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.5.1.tgz#26e1f5cf0d48a77eced5046b9f67b6b61075a393" integrity sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg== -compare-versions@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-5.0.3.tgz#a9b34fea217472650ef4a2651d905f42c28ebfd7" - integrity sha512-4UZlZP8Z99MGEY+Ovg/uJxJuvoXuN4M6B3hKaiackiHrgzQFEe3diJi1mf1PNHbFujM7FvLrK2bpgIaImbtZ1A== +compare-versions@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-6.1.0.tgz#3f2131e3ae93577df111dba133e6db876ffe127a" + integrity sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg== component-emitter@^1.2.0, component-emitter@^1.2.1: version "1.2.1" @@ -12969,6 +13088,13 @@ console-log-level@^1.4.1: resolved "https://registry.yarnpkg.com/console-log-level/-/console-log-level-1.4.1.tgz#9c5a6bb9ef1ef65b05aba83028b0ff894cdf630a" integrity sha512-VZzbIORbP+PPcN/gg3DXClTLPLg5Slwd5fL2MIc+o1qZ4BXBvWyc6QxPk6T/Mkr6IVjRpoAGf32XxP3ZWMVRcQ== +console.table@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/console.table/-/console.table-0.10.0.tgz#0917025588875befd70cf2eff4bef2c6e2d75d04" + integrity sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g== + dependencies: + easy-table "1.1.0" + constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -13213,6 +13339,11 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cronstrue@^1.51.0: version "1.51.0" resolved "https://registry.yarnpkg.com/cronstrue/-/cronstrue-1.51.0.tgz#7a63153d61d940344049037628da38a60784c8e2" @@ -14251,6 +14382,16 @@ dependency-check@^4.1.0: read-package-json "^2.0.10" resolve "^1.1.7" +dependency-tree@^10.0.9: + version "10.0.9" + resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-10.0.9.tgz#0c6c0dbeb0c5ec2cf83bf755f30e9cb12e7b4ac7" + integrity sha512-dwc59FRIsht+HfnTVM0BCjJaEWxdq2YAvEDy4/Hn6CwS3CBWMtFnL3aZGAkQn3XCYxk/YcTDE4jX2Q7bFTwCjA== + dependencies: + commander "^10.0.1" + filing-cabinet "^4.1.6" + precinct "^11.0.5" + typescript "^5.0.4" + deprecation@^2.0.0, deprecation@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" @@ -14321,6 +14462,71 @@ detect-port@^1.3.0: address "^1.0.1" debug "^2.6.0" +detective-amd@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/detective-amd/-/detective-amd-5.0.2.tgz#579900f301c160efe037a6377ec7e937434b2793" + integrity sha512-XFd/VEQ76HSpym80zxM68ieB77unNuoMwopU2TFT/ErUk5n4KvUTwW4beafAVUugrjV48l4BmmR0rh2MglBaiA== + dependencies: + ast-module-types "^5.0.0" + escodegen "^2.0.0" + get-amd-module-type "^5.0.1" + node-source-walk "^6.0.1" + +detective-cjs@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/detective-cjs/-/detective-cjs-5.0.1.tgz#836ad51c6de4863efc7c419ec243694f760ff8b2" + integrity sha512-6nTvAZtpomyz/2pmEmGX1sXNjaqgMplhQkskq2MLrar0ZAIkHMrDhLXkRiK2mvbu9wSWr0V5/IfiTrZqAQMrmQ== + dependencies: + ast-module-types "^5.0.0" + node-source-walk "^6.0.0" + +detective-es6@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/detective-es6/-/detective-es6-4.0.1.tgz#38d5d49a6d966e992ef8f2d9bffcfe861a58a88a" + integrity sha512-k3Z5tB4LQ8UVHkuMrFOlvb3GgFWdJ9NqAa2YLUU/jTaWJIm+JJnEh4PsMc+6dfT223Y8ACKOaC0qcj7diIhBKw== + dependencies: + node-source-walk "^6.0.1" + +detective-postcss@^6.1.3: + version "6.1.3" + resolved "https://registry.yarnpkg.com/detective-postcss/-/detective-postcss-6.1.3.tgz#51a2d4419327ad85d0af071c7054c79fafca7e73" + integrity sha512-7BRVvE5pPEvk2ukUWNQ+H2XOq43xENWbH0LcdCE14mwgTBEAMoAx+Fc1rdp76SmyZ4Sp48HlV7VedUnP6GA1Tw== + dependencies: + is-url "^1.2.4" + postcss "^8.4.23" + postcss-values-parser "^6.0.2" + +detective-sass@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/detective-sass/-/detective-sass-5.0.3.tgz#63e54bc9b32f4bdbd9d5002308f9592a3d3a508f" + integrity sha512-YsYT2WuA8YIafp2RVF5CEfGhhyIVdPzlwQgxSjK+TUm3JoHP+Tcorbk3SfG0cNZ7D7+cYWa0ZBcvOaR0O8+LlA== + dependencies: + gonzales-pe "^4.3.0" + node-source-walk "^6.0.1" + +detective-scss@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/detective-scss/-/detective-scss-4.0.3.tgz#79758baa0158f72bfc4481eb7e21cc3b5f1ea6eb" + integrity sha512-VYI6cHcD0fLokwqqPFFtDQhhSnlFWvU614J42eY6G0s8c+MBhi9QAWycLwIOGxlmD8I/XvGSOUV1kIDhJ70ZPg== + dependencies: + gonzales-pe "^4.3.0" + node-source-walk "^6.0.1" + +detective-stylus@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detective-stylus/-/detective-stylus-4.0.0.tgz#ce97b6499becdc291de7b3c11df8c352c1eee46e" + integrity sha512-TfPotjhszKLgFBzBhTOxNHDsutIxx9GTWjrL5Wh7Qx/ydxKhwUrlSFeLIn+ZaHPF+h0siVBkAQSuy6CADyTxgQ== + +detective-typescript@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/detective-typescript/-/detective-typescript-11.1.0.tgz#2deea5364cae1f0d9d3688bc596e662b049438cc" + integrity sha512-Mq8egjnW2NSCkzEb/Az15/JnBI/Ryyl6Po0Y+0mABTFvOS6DAyUGRZqz1nyhu4QJmWWe0zaGs/ITIBeWkvCkGw== + dependencies: + "@typescript-eslint/typescript-estree" "^5.59.5" + ast-module-types "^5.0.0" + node-source-walk "^6.0.1" + typescript "^5.0.4" + detective@^5.0.2: version "5.2.0" resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" @@ -14671,6 +14877,13 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== +easy-table@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/easy-table/-/easy-table-1.1.0.tgz#86f9ab4c102f0371b7297b92a651d5824bc8cb73" + integrity sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA== + optionalDependencies: + wcwidth ">=1.0.1" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -14763,10 +14976,10 @@ elastic-apm-node@3.46.0: traverse "^0.6.6" unicode-byte-truncate "^1.0.0" -elastic-apm-node@^3.49.0: - version "3.49.0" - resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-3.49.0.tgz#89ae052fbd81787ef012fe0f304756d9249584ab" - integrity sha512-6EyysTNdJqBxd13ZyPHaew1IDdiQKvG29K/rvbYZPyNRL4T7Asi8yoVBs3/mfVWOjheLqoxeyPq2EL1lSO/dtg== +elastic-apm-node@^3.49.1: + version "3.49.1" + resolved "https://registry.yarnpkg.com/elastic-apm-node/-/elastic-apm-node-3.49.1.tgz#c000936a1b7f062e4dd502cd3617ebe97d4d9786" + integrity sha512-k1kQ/exFqodZOoZSRJ3Csbdo7dtRs/uORBlRTyV2takYa1OIN7o9dvZwd8+eEPOUz4qaeRyVY8X9X2krk9GO/g== dependencies: "@elastic/ecs-pino-format" "^1.2.0" "@opentelemetry/api" "^1.4.1" @@ -14787,7 +15000,7 @@ elastic-apm-node@^3.49.0: fast-safe-stringify "^2.0.7" fast-stream-to-buffer "^1.0.0" http-headers "^3.0.2" - import-in-the-middle "1.3.5" + import-in-the-middle "1.4.2" is-native "^1.0.1" lru-cache "^6.0.0" measured-reporting "^1.51.1" @@ -14931,6 +15144,14 @@ enhanced-resolve@^5.10.0: graceful-fs "^4.2.4" tapable "^2.2.0" +enhanced-resolve@^5.14.1: + version "5.15.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35" + integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -16234,6 +16455,24 @@ filelist@^1.0.1: dependencies: minimatch "^5.0.1" +filing-cabinet@^4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-4.1.6.tgz#8d6d12cf3a84365bbd94e1cbf07d71c113420dd2" + integrity sha512-C+HZbuQTER36sKzGtUhrAPAoK6+/PrrUhYDBQEh3kBRdsyEhkLbp1ML8S0+6e6gCUrUlid+XmubxJrhvL2g/Zw== + dependencies: + app-module-path "^2.2.0" + commander "^10.0.1" + enhanced-resolve "^5.14.1" + is-relative-path "^1.0.2" + module-definition "^5.0.1" + module-lookup-amd "^8.0.5" + resolve "^1.22.3" + resolve-dependency-path "^3.0.2" + sass-lookup "^5.0.1" + stylus-lookup "^5.0.1" + tsconfig-paths "^4.2.0" + typescript "^5.0.4" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -16282,11 +16521,41 @@ find-cache-dir@^3.2.0, find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-cypress-specs@^1.35.1: + version "1.35.1" + resolved "https://registry.yarnpkg.com/find-cypress-specs/-/find-cypress-specs-1.35.1.tgz#89f633de14ab46c2afc6fee992a470596526f721" + integrity sha512-ngLPf/U/I8jAS6vn5ljClETa6seG+fmr3oXw6BcYX3xVIk7D8jNljHUIJCTDvnK90XOI1cflYGuNFDezhRBNvQ== + dependencies: + "@actions/core" "^1.10.0" + arg "^5.0.1" + console.table "^0.10.0" + debug "^4.3.3" + find-test-names "1.28.13" + globby "^11.1.0" + minimatch "^3.0.4" + pluralize "^8.0.0" + require-and-forget "^1.0.1" + shelljs "^0.8.5" + spec-change "^1.7.1" + ts-node "^10.9.1" + find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== +find-test-names@1.28.13: + version "1.28.13" + resolved "https://registry.yarnpkg.com/find-test-names/-/find-test-names-1.28.13.tgz#871d5585d1f618ed772ffe544ea475ab4657ca83" + integrity sha512-hVatCLbiZmvBwqYNGTkVNbeJwK/8pvkXKQGji+23GzW8fVFHcEaRID77eQYItLKGwa1Tmu0AK2LjcUtuid57FQ== + dependencies: + "@babel/parser" "^7.21.2" + "@babel/plugin-syntax-jsx" "^7.18.6" + acorn-walk "^8.2.0" + debug "^4.3.3" + globby "^11.0.4" + simple-bin-help "^1.8.0" + find-test-names@^1.19.0: version "1.28.6" resolved "https://registry.yarnpkg.com/find-test-names/-/find-test-names-1.28.6.tgz#2840916b42815ce1286bfbfad04cf08f066f727e" @@ -16786,6 +17055,14 @@ geojson-vt@^3.2.1: resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7" integrity sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg== +get-amd-module-type@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-amd-module-type/-/get-amd-module-type-5.0.1.tgz#bef38ea3674e1aa1bda9c59c8b0da598582f73f2" + integrity sha512-jb65zDeHyDjFR1loOVk0HQGM5WNwoGB8aLWy3LKCieMKol0/ProHkhO2X1JxojuN10vbz1qNn09MJ7tNp7qMzw== + dependencies: + ast-module-types "^5.0.0" + node-source-walk "^6.0.1" + get-assigned-identifiers@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" @@ -16811,6 +17088,11 @@ get-nonce@^1.0.0: resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" @@ -16990,7 +17272,7 @@ glob@^10.2.2: minipass "^5.0.0 || ^6.0.2" path-scurry "^1.7.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0, glob@~7.2.0: +glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0, glob@^7.2.3, glob@~7.2.0: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -17166,6 +17448,13 @@ globule@^1.0.0: lodash "~4.17.10" minimatch "~3.0.2" +gonzales-pe@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" + integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== + dependencies: + minimist "^1.2.5" + google-protobuf@^3.6.1: version "3.19.4" resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.19.4.tgz#8d32c3e34be9250956f28c0fb90955d13f311888" @@ -18033,11 +18322,14 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" -import-in-the-middle@1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.3.5.tgz#78384fbcfc7c08faf2b1f61cb94e7dd25651df9c" - integrity sha512-yzHlBqi1EBFrkieAnSt8eTgO5oLSl+YJ7qaOpUH/PMqQOMZoQ/RmDlwnTLQrwYto+gHYjRG+i/IbsB1eDx32NQ== +import-in-the-middle@1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz#2a266676e3495e72c04bbaa5ec14756ba168391b" + integrity sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw== dependencies: + acorn "^8.8.2" + acorn-import-assertions "^1.9.0" + cjs-module-lexer "^1.2.2" module-details-from-path "^1.0.3" import-lazy@^2.1.0: @@ -18195,6 +18487,11 @@ internmap@^1.0.0: resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" @@ -18385,6 +18682,13 @@ is-ci@^3.0.0: dependencies: ci-info "^3.2.0" +is-core-module@^2.12.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" + integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== + dependencies: + has "^1.0.3" + is-core-module@^2.6.0, is-core-module@^2.9.0: version "2.10.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" @@ -18597,6 +18901,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + is-obj@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" @@ -18702,11 +19011,21 @@ is-regex@^1.0.4, is-regex@^1.0.5, is-regex@^1.1.2, is-regex@^1.1.4: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + is-regexp@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-2.1.0.tgz#cd734a56864e23b956bf4e7c66c396a4c0b22c2d" integrity sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA== +is-relative-path@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-relative-path/-/is-relative-path-1.0.2.tgz#091b46a0d67c1ed0fe85f1f8cfdde006bb251d46" + integrity sha512-i1h+y50g+0hRbBD+dbnInl3JlJ702aar58snAeX+MxBAPvzXGej7sYoPMhlnykabt0ZzCJNBEyzMlekuQZN7fA== + is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" @@ -18779,7 +19098,12 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -is-url@^1.2.2: +is-url-superb@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-url-superb/-/is-url-superb-4.0.0.tgz#b54d1d2499bb16792748ac967aa3ecb41a33a8c2" + integrity sha512-GI+WjezhPPcbM+tqE9LnmsY5qqjwHzTvjJ36wxYX5ujNXefSUJ/T17r5bqDV8yLhcgB59KTPNOc9O9cmHTPWsA== + +is-url@^1.2.2, is-url@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== @@ -20152,6 +20476,11 @@ lazy-ass@1.6.0, lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= +lazy-ass@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-2.0.3.tgz#1e8451729f2bebdff1218bb18921566a08f81b36" + integrity sha512-/O3/DoQmI1XAhklDvF1dAjFf/epE8u3lzOZegQfLZ8G7Ud5bTRSZiFOpukHCu6jODrCA4gtIdwUCC7htxcDACA== + lazy-cache@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" @@ -20779,6 +21108,11 @@ make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: dependencies: semver "^6.0.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + make-fetch-happen@^10.0.4: version "10.2.1" resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" @@ -21703,11 +22037,29 @@ mock-fs@^5.1.2: resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-5.1.2.tgz#6fa486e06d00f8793a8d2228de980eff93ce6db7" integrity sha512-YkjQkdLulFrz0vD4BfNQdQRVmgycXTV7ykuHMlyv+C8WCHazpkiQRDthwa02kSyo8wKnY9wRptHfQLgmf0eR+A== +module-definition@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-5.0.1.tgz#62d1194e5d5ea6176b7dc7730f818f466aefa32f" + integrity sha512-kvw3B4G19IXk+BOXnYq/D/VeO9qfHaapMeuS7w7sNUqmGaA6hywdFHMi+VWeR9wUScXM7XjoryTffCZ5B0/8IA== + dependencies: + ast-module-types "^5.0.0" + node-source-walk "^6.0.1" + module-details-from-path@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b" integrity sha1-EUyUlnPiqKNenTV4hSeqN7Z52is= +module-lookup-amd@^8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/module-lookup-amd/-/module-lookup-amd-8.0.5.tgz#aaeea41979105b49339380ca3f7d573db78c32a5" + integrity sha512-vc3rYLjDo5Frjox8NZpiyLXsNWJ5BWshztc/5KSOMzpg9k5cHH652YsJ7VKKmtM4SvaxuE9RkrYGhiSjH3Ehow== + dependencies: + commander "^10.0.1" + glob "^7.2.3" + requirejs "^2.3.6" + requirejs-config-file "^4.0.0" + moment-duration-format@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/moment-duration-format/-/moment-duration-format-2.3.2.tgz#5fa2b19b941b8d277122ff3f87a12895ec0d6212" @@ -21906,6 +22258,11 @@ nanoid@^3.3.1, nanoid@^3.3.4: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + nanomatch@^1.2.9: version "1.2.9" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.9.tgz#879f7150cb2dab7a471259066c104eee6e0fa7c2" @@ -22225,6 +22582,13 @@ node-sass@^8.0.0: stdout-stream "^1.4.0" "true-case-path" "^2.2.1" +node-source-walk@^6.0.0, node-source-walk@^6.0.1, node-source-walk@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/node-source-walk/-/node-source-walk-6.0.2.tgz#ba81bc4bc0f6f05559b084bea10be84c3f87f211" + integrity sha512-jn9vOIK/nfqoFCcpK89/VCVaLg1IHE6UVfDOzvqmANaJ/rWCTEdH8RZ1V278nv2jr36BJdyQXIAavBLXpzdlag== + dependencies: + "@babel/parser" "^7.21.8" + nodemailer@^6.6.2: version "6.6.2" resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.2.tgz#e184c9ed5bee245a3e0bcabc7255866385757114" @@ -23408,6 +23772,11 @@ pluralize@3.1.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-3.1.0.tgz#84213d0a12356069daa84060c559242633161368" integrity sha1-hCE9ChI1YGnaqEBgxVkkJjMWE2g= +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + png-js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/png-js/-/png-js-1.0.0.tgz#e5484f1e8156996e383aceebb3789fd75df1874d" @@ -23748,6 +24117,15 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== +postcss-values-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz#636edc5b86c953896f1bb0d7a7a6615df00fb76f" + integrity sha512-YLJpK0N1brcNJrs9WatuJFtHaV9q5aAOj+S4DI5S7jgHlRfm0PIbDCAFRYMQD5SHq7Fy6xsDhyutgS0QOAs0qw== + dependencies: + color-name "^1.1.4" + is-url-superb "^4.0.0" + quote-unquote "^1.0.0" + postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: version "7.0.39" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" @@ -23765,6 +24143,15 @@ postcss@^8.4.14: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.23: + version "8.4.25" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.25.tgz#4a133f5e379eda7f61e906c3b1aaa9b81292726f" + integrity sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + potpack@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/potpack/-/potpack-2.0.0.tgz#61f4dd2dc4b3d5e996e3698c0ec9426d0e169104" @@ -23795,6 +24182,24 @@ prebuild-install@^7.1.1: tar-fs "^2.0.0" tunnel-agent "^0.6.0" +precinct@^11.0.5: + version "11.0.5" + resolved "https://registry.yarnpkg.com/precinct/-/precinct-11.0.5.tgz#3e15b3486670806f18addb54b8533e23596399ff" + integrity sha512-oHSWLC8cL/0znFhvln26D14KfCQFFn4KOLSw6hmLhd+LQ2SKt9Ljm89but76Pc7flM9Ty1TnXyrA2u16MfRV3w== + dependencies: + "@dependents/detective-less" "^4.1.0" + commander "^10.0.1" + detective-amd "^5.0.2" + detective-cjs "^5.0.1" + detective-es6 "^4.0.1" + detective-postcss "^6.1.3" + detective-sass "^5.0.3" + detective-scss "^4.0.3" + detective-stylus "^4.0.0" + detective-typescript "^11.1.0" + module-definition "^5.0.1" + node-source-walk "^6.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -24285,6 +24690,11 @@ quote-stream@^1.0.1: minimist "^1.1.3" through2 "^2.0.0" +quote-unquote@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/quote-unquote/-/quote-unquote-1.0.0.tgz#67a9a77148effeaf81a4d428404a710baaac8a0b" + integrity sha512-twwRO/ilhlG/FIgYeKGFqyHhoEhqgnKVkcmqMKi2r524gz3ZbDTcyFt38E9xjJI2vT+KbRNHVbnJ/e0I25Azwg== + raf-schd@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/raf-schd/-/raf-schd-4.0.2.tgz#bd44c708188f2e84c810bf55fcea9231bcaed8a0" @@ -25095,6 +25505,13 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + rechoir@^0.7.0: version "0.7.1" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" @@ -25556,6 +25973,13 @@ request-progress@^3.0.0: dependencies: throttleit "^1.0.0" +require-and-forget@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-and-forget/-/require-and-forget-1.0.1.tgz#b535a1b8f0f0dd6a48ab05b0ab15d26135d61142" + integrity sha512-Sea861D/seGo3cptxc857a34Df0oEijXit8Q3IDodiwZMzVmyXrRI9EgQQa3hjkhoEjNzCBvv0t/0fMgebmWLg== + dependencies: + debug "4.3.4" + require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -25585,6 +26009,19 @@ requireindex@~1.2.0: resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== +requirejs-config-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/requirejs-config-file/-/requirejs-config-file-4.0.0.tgz#4244da5dd1f59874038cc1091d078d620abb6ebc" + integrity sha512-jnIre8cbWOyvr8a5F2KuqBnY+SDA4NXr/hzEZJG79Mxm2WiFQz2dzhC8ibtPJS7zkmBEl1mxSwp5HhC1W4qpxw== + dependencies: + esprima "^4.0.0" + stringify-object "^3.2.1" + +requirejs@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.6.tgz#e5093d9601c2829251258c0b9445d4d19fa9e7c9" + integrity sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg== + requires-port@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" @@ -25612,6 +26049,11 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-dependency-path@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/resolve-dependency-path/-/resolve-dependency-path-3.0.2.tgz#012816717bcbe8b846835da11af9d2beb5acef50" + integrity sha512-Tz7zfjhLfsvR39ADOSk9us4421J/1ztVBo4rWUkF38hgHK5m0OCZ3NxFVpqHRkjctnwVa15igEUHFJp8MCS7vA== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -25656,7 +26098,7 @@ resolve@1.1.7: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@^1.1.5, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.3.2, resolve@^1.9.0: +resolve@^1.1.5, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1, resolve@^1.3.2, resolve@^1.9.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -25665,6 +26107,15 @@ resolve@^1.1.5, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.12. path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.3: + version "1.22.3" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.3.tgz#4b4055349ffb962600972da1fdc33c46a4eb3283" + integrity sha512-P8ur/gp/AmbEzjr729bZnLjXK5Z+4P0zhIJgBgzqRih7hL7BOukHGtSTA3ACMY467GRFz3duQsi0bDZdR7DKdw== + dependencies: + is-core-module "^2.12.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + resolve@^2.0.0-next.4: version "2.0.0-next.4" resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" @@ -25963,6 +26414,13 @@ sass-loader@^10.4.1: schema-utils "^3.0.0" semver "^7.3.2" +sass-lookup@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/sass-lookup/-/sass-lookup-5.0.1.tgz#1f01d7ff21e09d8c9dcf8d05b3fca28f2f96e6ed" + integrity sha512-t0X5PaizPc2H4+rCwszAqHZRtr4bugo4pgiCvrBFvIX0XFxnr29g77LJcpyj9A0DcKf7gXMLcgvRjsonYI6x4g== + dependencies: + commander "^10.0.1" + sax@>=0.6.0, sax@^1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -26313,6 +26771,15 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shelljs@^0.8.5: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + side-channel@^1.0.2, side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -26796,6 +27263,17 @@ spdy@^4.0.2: select-hose "^2.0.0" spdy-transport "^3.0.0" +spec-change@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/spec-change/-/spec-change-1.7.1.tgz#3c56185c887a15482f1fbb3362916fc97c8fdb9f" + integrity sha512-bZmtSmS5w6M6Snae+AGp+y89MZ7QG2SZW1v3Au83+YWcZzCu0YtH2hXruJWXg6VdYUpQ3n+m9bRrWmwLaPkFjQ== + dependencies: + arg "^5.0.2" + debug "^4.3.4" + dependency-tree "^10.0.9" + globby "^11.1.0" + lazy-ass "^2.0.3" + specificity@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/specificity/-/specificity-0.4.1.tgz#aab5e645012db08ba182e151165738d00887b019" @@ -27199,6 +27677,15 @@ stringify-entities@^3.0.0, stringify-entities@^3.0.1: is-decimal "^1.0.2" is-hexadecimal "^1.0.0" +stringify-object@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -27401,6 +27888,13 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== +stylus-lookup@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/stylus-lookup/-/stylus-lookup-5.0.1.tgz#3c4d116c3b1e8e1a8169c0d9cd20e608595560f4" + integrity sha512-tLtJEd5AGvnVy4f9UHQMw4bkJJtaAcmo54N+ovQBjDY3DuWyK9Eltxzr5+KG0q4ew6v2EHyuWWNnHeiw/Eo7rQ== + dependencies: + commander "^10.0.1" + success-symbol@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/success-symbol/-/success-symbol-0.1.0.tgz#24022e486f3bf1cdca094283b769c472d3b72897" @@ -28121,6 +28615,25 @@ ts-morph@^13.0.2: "@ts-morph/common" "~0.12.2" code-block-writer "^11.0.0" +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" @@ -28136,6 +28649,15 @@ tsconfig-paths@^3.11.0: minimist "^1.2.0" strip-bom "^3.0.0" +tsconfig-paths@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz#ef78e19039133446d244beac0fd6a1632e2d107c" + integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg== + dependencies: + json5 "^2.2.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + tsd@^0.20.0: version "0.20.0" resolved "https://registry.yarnpkg.com/tsd/-/tsd-0.20.0.tgz#0346321ee3c506545486227e488e753109164248" @@ -28187,7 +28709,7 @@ tunnel-agent@^0.6.0: dependencies: safe-buffer "^5.0.1" -tunnel@0.0.6: +tunnel@0.0.6, tunnel@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== @@ -28329,7 +28851,7 @@ typescript-tuple@^2.2.1: dependencies: typescript-compare "^0.0.2" -typescript@4.6.3, typescript@^3.3.3333, typescript@^4.6.3, typescript@^4.8.4: +typescript@4.6.3, typescript@^3.3.3333, typescript@^4.6.3, typescript@^4.8.4, typescript@^5.0.4: version "4.6.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== @@ -28909,6 +29431,11 @@ uuid@^8.3.0, uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + v8-compile-cache@^2.0.3, v8-compile-cache@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" @@ -29503,7 +30030,7 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.1: +wcwidth@>=1.0.1, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= @@ -30314,6 +30841,11 @@ yazl@^2.5.1: dependencies: buffer-crc32 "~0.2.3" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"